1 |
//--------------------------------------------------------------------------------------------------
|
2 |
// $Id: GenFakeableObjsMod.h,v 1.11 2011/01/23 19:00:09 sixie Exp $
|
3 |
//
|
4 |
// GenFakeableObjsMod
|
5 |
//
|
6 |
// 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 |
//
|
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 |
#include "MitAna/DataTree/interface/CollectionsFwd.h"
|
18 |
#include "MitPhysics/Mods/interface/ElectronIDMod.h"
|
19 |
|
20 |
namespace mithep
|
21 |
{
|
22 |
class GenFakeableObjsMod : public BaseMod
|
23 |
{
|
24 |
public:
|
25 |
GenFakeableObjsMod(const char *name="GenFakeableObjsMod",
|
26 |
const char *title="Fake Object Generation Module");
|
27 |
|
28 |
Bool_t GetApplyConversionFilter() const { return fApplyConvFilter; }
|
29 |
Bool_t GetApplyD0Cut() const { return fApplyD0Cut; }
|
30 |
Bool_t GetChargeFilter() const { return fChargeFilter; }
|
31 |
Bool_t GetNWrongHitsMax() const { return fNWrongHitsMax; }
|
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 |
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 |
const char *GetVertexName() const { return fVertexName; }
|
52 |
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 |
const char *GetElFakeableObjsName() const { return fElFakeableObjsName; }
|
59 |
const char *GetMuFakeableObjsName() const { return fMuFakeableObjsName; }
|
60 |
const char *GetMCLeptonsName() const { return fMCLeptonsName; }
|
61 |
const char *GetMCTausName() const { return fMCTausName; }
|
62 |
|
63 |
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 SetNWrongHitsMax(UInt_t n) { fNWrongHitsMax = n; }
|
72 |
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 |
void SetVertexName(const char *name) { fVertexName = name; }
|
87 |
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 |
void SetElFakeableObjsName(const char *name) { fElFakeableObjsName = name; }
|
94 |
void SetMuFakeableObjsName(const char *name) { fMuFakeableObjsName = name; }
|
95 |
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 |
kElFOIso, //"Reco Electron with full isolation"
|
101 |
kElFOLooseIdLooseIso //"Reco Electron with loose id and isolation
|
102 |
};
|
103 |
enum MuonFOType {
|
104 |
kMuFOUndef = 0, //not defined
|
105 |
kMuFOIsoTrack, //"Loosely Isolated Track"
|
106 |
kMuFOGlobal, //"GlobalMuon with loose isolation"
|
107 |
kMuFOTrackerMuon //"TrackerMuon with loose isolation"
|
108 |
};
|
109 |
|
110 |
protected:
|
111 |
void Process();
|
112 |
void SlaveBegin();
|
113 |
|
114 |
Bool_t fApplyConvFilter; //whether remove conversions
|
115 |
UInt_t fNWrongHitsMax; //whether to use wrong hits req for conversion removal
|
116 |
Bool_t fApplyD0Cut; //whether apply d0 cut
|
117 |
Bool_t fChargeFilter; //whether apply GSF and CFT equal requirement
|
118 |
Double_t fD0Cut; //max d0
|
119 |
Double_t fCombIsolationCut; //max isolation
|
120 |
Double_t fTrackIsolationCut; //max isolation
|
121 |
Double_t fEcalIsolationCut; //max isolation
|
122 |
Double_t fHcalIsolationCut; //max isolation
|
123 |
Bool_t fVetoTriggerJet; //whether to veto on the leading jet
|
124 |
Bool_t fVetoGenLeptons; //whether we exclude gen leptons
|
125 |
Bool_t fVetoCleanLeptons; //whether we exclude clean leptons
|
126 |
TString fElectronFOType; //type of electron Fakeable object
|
127 |
TString fMuonFOType; //type of muon Fakeable object
|
128 |
TString fTriggerName; //name of trigger
|
129 |
TString fTriggerObjectsName; //name of trigger objects
|
130 |
TString fElectronBranchName; //name of electron brach (input)
|
131 |
TString fMuonBranchName; //name of muon brach (input)
|
132 |
TString fTrackBranchName; //name of track brach (input)
|
133 |
TString fGsfTrackBranchName; //name of track collection (input)
|
134 |
TString fBarrelSuperClusterBranchName; //name of barrel supercluster branch (input)
|
135 |
TString fEndcapSuperClusterBranchName; //name of endcap supercluster branch (input)
|
136 |
TString fJetBranchName; //name of jet branch (input)
|
137 |
TString fVertexName; //name of vertex branch (input)
|
138 |
TString fConversionBranchName; //name of conversion collection (input)
|
139 |
TString fGoodJetsName; //name of Good jets collection (input)
|
140 |
TString fCleanElectronsName; //name of clean electrons (input)
|
141 |
TString fCleanMuonsName; //name of clean muons (input)
|
142 |
TString fCleanPhotonsName; //name of clean photons (input)
|
143 |
TString fCleanJetsName; //name of clean jets (input)
|
144 |
TString fMCLeptonsName; //name of MC leptons (input)
|
145 |
TString fMCTausName; //name of MC taus (input)
|
146 |
TString fElFakeableObjsName; //name of fakeable objects (output)
|
147 |
TString fMuFakeableObjsName; //name of fakeable objects (output)
|
148 |
ElectronFOType fElFOType; //Electron Fakeable Object type
|
149 |
MuonFOType fMuFOType; //Muon Fakeable Object type
|
150 |
const ElectronCol *fElectrons; //!Electron branch
|
151 |
const MuonCol *fMuons; //!Muon branch
|
152 |
const SuperClusterCol *fBarrelSuperClusters; //!Barrel Supercluster branch
|
153 |
const SuperClusterCol *fEndcapSuperClusters; //!Endcap Supercluster branch
|
154 |
const TrackCol *fTracks; //!Track branch
|
155 |
const TrackCol *fGsfTracks; //!GsfTrack branch
|
156 |
const JetCol *fJets; //!Jet branch
|
157 |
const VertexCol *fVertices; //!Vertex branch
|
158 |
const DecayParticleCol *fConversions; //!conversion collection
|
159 |
ElectronIDMod *electronID; //!electron ID object
|
160 |
|
161 |
ClassDef(GenFakeableObjsMod, 1) // Fakeable objects generation module
|
162 |
};
|
163 |
}
|
164 |
#endif
|