1 |
loizides |
1.1 |
//--------------------------------------------------------------------------------------------------
|
2 |
ceballos |
1.10 |
// $Id: GenFakeableObjsMod.h,v 1.9 2010/05/12 19:05:26 ceballos Exp $
|
3 |
loizides |
1.1 |
//
|
4 |
|
|
// GenFakeableObjsMod
|
5 |
|
|
//
|
6 |
phedex |
1.5 |
// This Module generates a collection of Electron and Muon Fakeable Objects. The exact definition
|
7 |
|
|
// of the electron and muon fakeable objects can be specified according to the ElectronFOType
|
8 |
|
|
// and MuonFOType enum types.
|
9 |
loizides |
1.1 |
//
|
10 |
|
|
// Authors: S.Xie
|
11 |
|
|
//--------------------------------------------------------------------------------------------------
|
12 |
|
|
|
13 |
|
|
#ifndef MITPHYSICS_FAKEMODS_GENFAKEABLEOBJSMOD_H
|
14 |
|
|
#define MITPHYSICS_FAKEMODS_GENFAKEABLEOBJSMOD_H
|
15 |
|
|
|
16 |
|
|
#include "MitAna/TreeMod/interface/BaseMod.h"
|
17 |
loizides |
1.3 |
#include "MitAna/DataTree/interface/CollectionsFwd.h"
|
18 |
ceballos |
1.7 |
#include "MitPhysics/Mods/interface/ElectronIDMod.h"
|
19 |
loizides |
1.1 |
|
20 |
|
|
namespace mithep
|
21 |
|
|
{
|
22 |
|
|
class GenFakeableObjsMod : public BaseMod
|
23 |
|
|
{
|
24 |
|
|
public:
|
25 |
|
|
GenFakeableObjsMod(const char *name="GenFakeableObjsMod",
|
26 |
loizides |
1.3 |
const char *title="Fake Object Generation Module");
|
27 |
loizides |
1.1 |
|
28 |
ceballos |
1.7 |
Bool_t GetApplyConversionFilter() const { return fApplyConvFilter; }
|
29 |
|
|
Bool_t GetApplyD0Cut() const { return fApplyD0Cut; }
|
30 |
|
|
Bool_t GetChargeFilter() const { return fChargeFilter; }
|
31 |
|
|
Bool_t GetWrongHitsRequirement() const { return fWrongHitsRequirement; }
|
32 |
|
|
Double_t GetD0Cut() const { return fD0Cut; }
|
33 |
|
|
Double_t GetCombIsolationCut() const { return fCombIsolationCut; }
|
34 |
|
|
Double_t GetTrackIsolationCut() const { return fTrackIsolationCut; }
|
35 |
|
|
Double_t GetEcalIsolationCut() const { return fEcalIsolationCut; }
|
36 |
|
|
Double_t GetHcalIsolationCut() const { return fHcalIsolationCut; }
|
37 |
loizides |
1.1 |
Bool_t GetVetoTriggerJet() const { return fVetoTriggerJet; }
|
38 |
|
|
Bool_t GetVetoGenLeptons() const { return fVetoGenLeptons; }
|
39 |
|
|
Bool_t GetVetoCleanLeptons() const { return fVetoCleanLeptons; }
|
40 |
|
|
const char *GetElectronsName() const { return fElectronBranchName; }
|
41 |
|
|
const char *GetMuonsName() const { return fMuonBranchName; }
|
42 |
|
|
const char *GetElectronFOType() const { return fElectronFOType; }
|
43 |
|
|
const char *GetMuonFOType() const { return fMuonFOType; }
|
44 |
|
|
const char *GetTriggerName() const { return fTriggerName; }
|
45 |
|
|
const char *GetTriggerObjectsName() const { return fTriggerObjectsName; }
|
46 |
|
|
const char *GetTrackName() const { return fTrackBranchName; }
|
47 |
|
|
const char *GetGsfTrackBranchName() const { return fGsfTrackBranchName; }
|
48 |
|
|
const char *GetBarrelSuperClustersName() const { return fBarrelSuperClusterBranchName; }
|
49 |
|
|
const char *GetEndcapSuperClustersName() const { return fEndcapSuperClusterBranchName; }
|
50 |
|
|
const char *GetJetBranchName() const { return fJetBranchName; }
|
51 |
ceballos |
1.10 |
const char *GetVertexName() const { return fVertexName; }
|
52 |
loizides |
1.1 |
const char *GetConversionBranchName() const { return fConversionBranchName; }
|
53 |
|
|
const char *GetGoodJetsName() const { return fGoodJetsName; }
|
54 |
|
|
const char *GetCleanElectronsName() const { return fCleanElectronsName; }
|
55 |
|
|
const char *GetCleanMuonsName() const { return fCleanMuonsName; }
|
56 |
|
|
const char *GetCleanPhotonsName() const { return fCleanPhotonsName; }
|
57 |
|
|
const char *GetCleanJetsName() const { return fCleanJetsName; }
|
58 |
phedex |
1.2 |
const char *GetElFakeableObjsName() const { return fElFakeableObjsName; }
|
59 |
|
|
const char *GetMuFakeableObjsName() const { return fMuFakeableObjsName; }
|
60 |
loizides |
1.1 |
const char *GetMCLeptonsName() const { return fMCLeptonsName; }
|
61 |
|
|
const char *GetMCTausName() const { return fMCTausName; }
|
62 |
|
|
|
63 |
ceballos |
1.7 |
void SetApplyConversionFilter(Bool_t b) { fApplyConvFilter = b; }
|
64 |
|
|
void SetApplyD0Cut(Bool_t b) { fApplyD0Cut = b; }
|
65 |
|
|
void SetD0Cut(Double_t cut) { fD0Cut = cut; }
|
66 |
|
|
void SetCombIsolationCut(Double_t cut) { fCombIsolationCut = cut; }
|
67 |
|
|
void SetTrackIsolationCut(Double_t cut) { fTrackIsolationCut = cut; }
|
68 |
|
|
void SetEcalIsolationCut(Double_t cut) { fEcalIsolationCut = cut; }
|
69 |
|
|
void SetHcalIsolationCut(Double_t cut) { fHcalIsolationCut = cut; }
|
70 |
|
|
void SetChargeFilter(Bool_t b) { fChargeFilter = b; }
|
71 |
|
|
void SetWrongHitsRequirement(Bool_t b) { fWrongHitsRequirement = b; }
|
72 |
loizides |
1.1 |
void SetVetoTriggerJet(Bool_t b) { fVetoTriggerJet = b; }
|
73 |
|
|
void SetVetoGenLeptons(Bool_t b) { fVetoGenLeptons = b; }
|
74 |
|
|
void SetVetoCleanLeptons(Bool_t b) { fVetoCleanLeptons = b; }
|
75 |
|
|
void SetElectronFOType(const char *name) { fElectronFOType = name; }
|
76 |
|
|
void SetMuonFOType(const char *name) { fMuonFOType = name; }
|
77 |
|
|
void SetTriggerName(const char *name) { fTriggerName = name; }
|
78 |
|
|
void SetTriggerObjectsName(const char *name) { fTriggerObjectsName = name; }
|
79 |
|
|
void SetElectronBranchName(const char *name) { fElectronBranchName = name; }
|
80 |
|
|
void SetMuonBranchName(const char *name) { fMuonBranchName = name; }
|
81 |
|
|
void SetTrackBranchName(const char *name) { fTrackBranchName = name; }
|
82 |
|
|
void SetGsfTrackBranchName(const char *name) { fGsfTrackBranchName = name; }
|
83 |
|
|
void SetBarrelSuperClusterBranchName(const char *name) { fBarrelSuperClusterBranchName=name; }
|
84 |
|
|
void SetEndcapSuperClusterBranchName(const char *name) { fEndcapSuperClusterBranchName=name; }
|
85 |
|
|
void SetJetBranchName(const char *name) { fJetBranchName = name; }
|
86 |
ceballos |
1.10 |
void SetVertexName(const char *name) { fVertexName = name; }
|
87 |
loizides |
1.1 |
void SetConversionBranchName(const char *name) { fConversionBranchName = name; }
|
88 |
|
|
void SetGoodJetsName(const char *name) { fGoodJetsName = name; }
|
89 |
|
|
void SetCleanElectronsName(const char *name) { fCleanElectronsName = name; }
|
90 |
|
|
void SetCleanMuonsName(const char *name) { fCleanMuonsName = name; }
|
91 |
|
|
void SetCleanPhotonsName(const char *name) { fCleanPhotonsName = name; }
|
92 |
|
|
void SetCleanJetsName(const char *name) { fCleanJetsName = name; }
|
93 |
phedex |
1.2 |
void SetElFakeableObjsName(const char *name) { fElFakeableObjsName = name; }
|
94 |
|
|
void SetMuFakeableObjsName(const char *name) { fMuFakeableObjsName = name; }
|
95 |
loizides |
1.1 |
void SetMCLeptonsName(const char *name) { fMCLeptonsName = name; }
|
96 |
|
|
void SetMCTausName(const char *name) { fMCTausName = name; }
|
97 |
|
|
|
98 |
|
|
enum ElectronFOType {
|
99 |
|
|
kElFOUndef = 0, //not defined
|
100 |
|
|
kElFOGsfPlusSC, //"Gsf Track matched to Super Cluster"
|
101 |
|
|
kElFOReco, //"Reco Electron with loose isolation"
|
102 |
|
|
kElFOLoose //"Loose Electron with loose isolation"
|
103 |
|
|
};
|
104 |
|
|
enum MuonFOType {
|
105 |
|
|
kMuFOUndef = 0, //not defined
|
106 |
|
|
kMuFOIsoTrack, //"Loosely Isolated Track"
|
107 |
|
|
kMuFOGlobal, //"GlobalMuon with loose isolation"
|
108 |
|
|
kMuFOTrackerMuon //"TrackerMuon with loose isolation"
|
109 |
|
|
};
|
110 |
|
|
|
111 |
|
|
protected:
|
112 |
|
|
void Process();
|
113 |
|
|
void SlaveBegin();
|
114 |
|
|
|
115 |
ceballos |
1.7 |
Bool_t fApplyConvFilter; //whether remove conversions
|
116 |
|
|
Bool_t fWrongHitsRequirement; //whether to use wrong hits req for conversion removal
|
117 |
|
|
Bool_t fApplyD0Cut; //whether apply d0 cut
|
118 |
|
|
Bool_t fChargeFilter; //whether apply GSF and CFT equal requirement
|
119 |
|
|
Double_t fD0Cut; //max d0
|
120 |
|
|
Double_t fCombIsolationCut; //max isolation
|
121 |
|
|
Double_t fTrackIsolationCut; //max isolation
|
122 |
|
|
Double_t fEcalIsolationCut; //max isolation
|
123 |
|
|
Double_t fHcalIsolationCut; //max isolation
|
124 |
loizides |
1.1 |
Bool_t fVetoTriggerJet; //whether to veto on the leading jet
|
125 |
|
|
Bool_t fVetoGenLeptons; //whether we exclude gen leptons
|
126 |
|
|
Bool_t fVetoCleanLeptons; //whether we exclude clean leptons
|
127 |
|
|
TString fElectronFOType; //type of electron Fakeable object
|
128 |
|
|
TString fMuonFOType; //type of muon Fakeable object
|
129 |
|
|
TString fTriggerName; //name of trigger
|
130 |
|
|
TString fTriggerObjectsName; //name of trigger objects
|
131 |
|
|
TString fElectronBranchName; //name of electron brach (input)
|
132 |
|
|
TString fMuonBranchName; //name of muon brach (input)
|
133 |
|
|
TString fTrackBranchName; //name of track brach (input)
|
134 |
|
|
TString fGsfTrackBranchName; //name of track collection (input)
|
135 |
|
|
TString fBarrelSuperClusterBranchName; //name of barrel supercluster branch (input)
|
136 |
|
|
TString fEndcapSuperClusterBranchName; //name of endcap supercluster branch (input)
|
137 |
|
|
TString fJetBranchName; //name of jet branch (input)
|
138 |
ceballos |
1.10 |
TString fVertexName; //name of vertex branch (input)
|
139 |
loizides |
1.1 |
TString fConversionBranchName; //name of conversion collection (input)
|
140 |
|
|
TString fGoodJetsName; //name of Good jets collection (input)
|
141 |
|
|
TString fCleanElectronsName; //name of clean electrons (input)
|
142 |
|
|
TString fCleanMuonsName; //name of clean muons (input)
|
143 |
|
|
TString fCleanPhotonsName; //name of clean photons (input)
|
144 |
|
|
TString fCleanJetsName; //name of clean jets (input)
|
145 |
|
|
TString fMCLeptonsName; //name of MC leptons (input)
|
146 |
|
|
TString fMCTausName; //name of MC taus (input)
|
147 |
phedex |
1.2 |
TString fElFakeableObjsName; //name of fakeable objects (output)
|
148 |
|
|
TString fMuFakeableObjsName; //name of fakeable objects (output)
|
149 |
phedex |
1.5 |
ElectronFOType fElFOType; //Electron Fakeable Object type
|
150 |
|
|
MuonFOType fMuFOType; //Muon Fakeable Object type
|
151 |
loizides |
1.1 |
const ElectronCol *fElectrons; //!Electron branch
|
152 |
|
|
const MuonCol *fMuons; //!Muon branch
|
153 |
|
|
const SuperClusterCol *fBarrelSuperClusters; //!Barrel Supercluster branch
|
154 |
|
|
const SuperClusterCol *fEndcapSuperClusters; //!Endcap Supercluster branch
|
155 |
|
|
const TrackCol *fTracks; //!Track branch
|
156 |
|
|
const TrackCol *fGsfTracks; //!GsfTrack branch
|
157 |
|
|
const JetCol *fJets; //!Jet branch
|
158 |
|
|
const VertexCol *fVertices; //!Vertex branch
|
159 |
|
|
const DecayParticleCol *fConversions; //!conversion collection
|
160 |
ceballos |
1.9 |
ElectronIDMod *electronID; //!electron ID object
|
161 |
loizides |
1.1 |
|
162 |
phedex |
1.5 |
ClassDef(GenFakeableObjsMod, 1) // Fakeable objects generation module
|
163 |
loizides |
1.1 |
};
|
164 |
|
|
}
|
165 |
|
|
#endif
|