ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/CITCommon/CommonData/interface/ElectronTree.h
Revision: 1.2
Committed: Sat Jul 21 06:57:23 2012 UTC (12 years, 9 months ago) by sixie
Content type: text/plain
Branch: MAIN
Changes since 1.1: +365 -363 lines
Log Message:
add into citana namespace

File Contents

# User Rev Content
1 sixie 1.1 #ifndef ElectronTree_H
2     #define ElectronTree_H
3    
4     #include "TFile.h"
5     #include "TTree.h"
6     #include "TError.h"
7     #include <cmath>
8     #include "assert.h"
9    
10 sixie 1.2 namespace citana
11     {
12     class ElectronTree {
13    
14     public:
15    
16     /// bit map
17     /// DON'T CHANGE ORDER
18    
19     //*******************************************
20     //=== ElectronTriggerBits ====
21     //*******************************************
22     enum ElectronTriggerBits { kEleTrigger_Ele = 0x000001,
23     kEleTrigger_Ele_CaloIdL_CaloIsoVL = 0x000002,
24     kEleTrigger_Ele_CaloIdT_TrkIdVL_CaloIsoVL_TrkIsoVL = 0x000004
25     };
26    
27     /// variables
28     Float_t fWeight;
29     UInt_t fRunNumber;
30     UInt_t fLumiSectionNumber;
31     UInt_t fEventNumber;
32     Bool_t fEleEventNumberParity;
33     Float_t fElePt;
34     Float_t fEleEta;
35     Float_t fElePhi;
36     Float_t fEleSCEt;
37     Float_t fEleSCEta;
38     Float_t fEleSCPhi;
39     Float_t fEleEcalEnergy;
40     Bool_t fEleIsEcalDriven;
41     UInt_t fEleTriggerBit;
42     Float_t fRho;
43     UInt_t fNVertices;
44    
45     // Conversion and IP
46     Float_t fEleD0;
47     Float_t fEleDZ;
48     Float_t fEleIP3d;
49     Float_t fEleIP3dSig;
50     Bool_t fEleMatchedConversion;
51     Float_t fEleConvDCot;
52     Float_t fEleConvDist;
53     UInt_t fEleNMissHits;
54    
55     // E/P variables
56     Float_t fEleNBrem;
57     Float_t fEleFBrem;
58     Float_t fEleEOverP;
59     Float_t fEleESeedClusterOverPIn;
60     Float_t fEleESeedClusterOverPout;
61     Float_t fEleEEleClusterOverPout;
62     Float_t fEleOneOverEMinusOneOverP;
63    
64     // track cluster matching
65     Float_t fEleDEtaIn;
66     Float_t fEleDPhiIn;
67     Float_t fEledEtaCalo;
68     Float_t fEledPhiCalo;
69    
70     //shower shape
71     Float_t fEleSigmaIEtaIEta;
72     Float_t fEleSigmaIPhiIPhi;
73     Float_t fEleSigmaIEtaIPhi;
74     Float_t fEleSCEtaWidth;
75     Float_t fEleSCPhiWidth;
76     Float_t fEleR9;
77     Float_t fElePreShowerOverRaw;
78     Float_t fEleHoverE;
79    
80     //track quality
81     Float_t fEleGsfTrackChi2OverNdof;
82     Float_t fEleKFTrackChi2OverNDoF;
83     Int_t fEleKFTrackNHits;
84     Int_t fEleKFTrackNLayersWithMeasurement;
85     Float_t fEleOneMinusSeedE1x5OverE5x5;
86    
87     //Isolation Variables
88     Float_t fElePFMVA;
89     Float_t fEleTrkIso03;
90     Float_t fEleEMIso03;
91     Float_t fEleHadIso03;
92     Float_t fEleTrkIso04;
93     Float_t fEleEMIso04;
94     Float_t fEleHadIso04;
95     Float_t fElePFIso04;
96     Float_t fChargedIso_DR0p0To0p1;
97     Float_t fChargedIso_DR0p1To0p2;
98     Float_t fChargedIso_DR0p2To0p3;
99     Float_t fChargedIso_DR0p3To0p4;
100     Float_t fChargedIso_DR0p4To0p5;
101     Float_t fGammaIso_DR0p0To0p1;
102     Float_t fGammaIso_DR0p1To0p2;
103     Float_t fGammaIso_DR0p2To0p3;
104     Float_t fGammaIso_DR0p3To0p4;
105     Float_t fGammaIso_DR0p4To0p5;
106     Float_t fNeutralHadronIso_DR0p0To0p1;
107     Float_t fNeutralHadronIso_DR0p1To0p2;
108     Float_t fNeutralHadronIso_DR0p2To0p3;
109     Float_t fNeutralHadronIso_DR0p3To0p4;
110     Float_t fNeutralHadronIso_DR0p4To0p5;
111    
112     Bool_t fElePassTriggerDenominator;
113    
114     public:
115     /// this is the main element
116     TTree *tree_;
117     TFile *f_;
118 sixie 1.1
119 sixie 1.2 /// hold the names of variables to facilitate things (filled during Init)
120     std::vector<std::string> variables_;
121 sixie 1.1
122 sixie 1.2 /// default constructor
123     ElectronTree() {};
124     /// default destructor
125     ~ElectronTree(){
126     if (f_) f_->Close();
127     };
128 sixie 1.1
129 sixie 1.2 /// initialize varibles and fill list of available variables
130     void InitVariables() {
131     fWeight = 0.0;
132     fRunNumber = 0.0;
133     fLumiSectionNumber = 0.0;
134     fEventNumber = 0.0;
135     fEleEventNumberParity = 0.0;
136     fElePt = 0.0;
137     fEleEta = 0.0;
138     fElePhi = 0.0;
139     fEleSCEt = 0.0;
140     fEleSCEta = 0.0;
141     fEleSCPhi = 0.0;
142     fEleEcalEnergy = 0.0;
143     fEleIsEcalDriven = 0.0;
144     fEleTriggerBit = 0.0;
145     fRho = 0.0;
146     fNVertices = 0.0;
147     fEleD0 = 0.0;
148     fEleDZ = 0.0;
149     fEleIP3d = 0.0;
150     fEleIP3dSig = 0.0;
151     fEleMatchedConversion = 0.0;
152     fEleConvDCot = 0.0;
153     fEleConvDist = 0.0;
154     fEleNMissHits = 0.0;
155     fEleNBrem = 0.0;
156     fEleFBrem = 0.0;
157     fEleEOverP = 0.0;
158     fEleESeedClusterOverPIn = 0.0;
159     fEleESeedClusterOverPout = 0.0;
160     fEleEEleClusterOverPout = 0.0;
161     fEleOneOverEMinusOneOverP = 0.0;
162     fEleDEtaIn = 0.0;
163     fEleDPhiIn = 0.0;
164     fEledEtaCalo = 0.0;
165     fEledPhiCalo = 0.0;
166     fEleSigmaIEtaIEta = 0.0;
167     fEleSigmaIPhiIPhi = 0.0;
168     fEleSigmaIEtaIPhi = 0.0;
169     fEleSCEtaWidth = 0.0;
170     fEleSCPhiWidth = 0.0;
171     fEleR9 = 0.0;
172     fElePreShowerOverRaw = 0.0;
173     fEleHoverE = 0.0;
174     fEleGsfTrackChi2OverNdof = 0.0;
175     fEleKFTrackChi2OverNDoF = 0.0;
176     fEleKFTrackNHits = 0.0;
177     fEleKFTrackNLayersWithMeasurement = 0.0;
178     fEleOneMinusSeedE1x5OverE5x5 = 0.0;
179     fElePFMVA = 0.0;
180     fEleTrkIso03 = 0.0;
181     fEleEMIso03 = 0.0;
182     fEleHadIso03 = 0.0;
183     fEleTrkIso04 = 0.0;
184     fEleEMIso04 = 0.0;
185     fEleHadIso04 = 0.0;
186     fElePFIso04 = 0.0;
187     fChargedIso_DR0p0To0p1 = 0.0;
188     fChargedIso_DR0p1To0p2 = 0.0;
189     fChargedIso_DR0p2To0p3 = 0.0;
190     fChargedIso_DR0p3To0p4 = 0.0;
191     fChargedIso_DR0p4To0p5 = 0.0;
192     fGammaIso_DR0p0To0p1 = 0.0;
193     fGammaIso_DR0p1To0p2 = 0.0;
194     fGammaIso_DR0p2To0p3 = 0.0;
195     fGammaIso_DR0p3To0p4 = 0.0;
196     fGammaIso_DR0p4To0p5 = 0.0;
197     fNeutralHadronIso_DR0p0To0p1 = 0.0;
198     fNeutralHadronIso_DR0p1To0p2 = 0.0;
199     fNeutralHadronIso_DR0p2To0p3 = 0.0;
200     fNeutralHadronIso_DR0p3To0p4 = 0.0;
201     fNeutralHadronIso_DR0p4To0p5 = 0.0;
202     fElePassTriggerDenominator = 0.0;
203     }
204 sixie 1.1
205 sixie 1.2 /// load a ElectronTree
206     void LoadTree(const char* file){
207     f_ = TFile::Open(file);
208     assert(f_);
209     tree_ = dynamic_cast<TTree*>(f_->Get("Electrons"));
210     assert(tree_);
211     }
212 sixie 1.1
213 sixie 1.2 /// create a ElectronTree
214     void CreateTree(){
215     tree_ = new TTree("Electrons","Electrons");
216     f_ = 0;
217    
218     //book the branches
219     tree_->Branch("weight",&fWeight,"weight/F");
220     tree_->Branch("run",&fRunNumber,"run/i");
221     tree_->Branch("lumi",&fLumiSectionNumber,"lumi/i");
222     tree_->Branch("event",&fEventNumber,"event/i");
223     tree_->Branch("EventNumberParity",&fEleEventNumberParity,"EventNumberParity/O");
224     tree_->Branch("pt",&fElePt,"pt/F");
225     tree_->Branch("eta",&fEleEta,"eta/F");
226     tree_->Branch("phi",&fElePhi,"phi/F");
227     tree_->Branch("scEt",&fEleSCEt,"scEt/F");
228     tree_->Branch("scEta",&fEleSCEta,"scEta/F");
229     tree_->Branch("scPhi",&fEleSCPhi,"scPhi/F");
230     tree_->Branch("ecalenergy",&fEleEcalEnergy,"ecalenergy/F");
231     tree_->Branch("ecaldriven",&fEleIsEcalDriven,"ecaldriven/O");
232     tree_->Branch("triggerBit",&fEleTriggerBit,"triggerBit/i");
233     tree_->Branch("rho",&fRho,"rho/F");
234     tree_->Branch("vertices",&fNVertices,"vertices/i");
235     tree_->Branch("d0",&fEleD0,"d0/F");
236     tree_->Branch("dz",&fEleDZ,"dz/F");
237     tree_->Branch("ip3d",&fEleIP3d,"ip3d/F");
238     tree_->Branch("ip3ds",&fEleIP3dSig,"ip3ds/F");
239     tree_->Branch("matchConv",&fEleMatchedConversion,"matchConv/O");
240     tree_->Branch("dcot",&fEleConvDCot,"dcot/F");
241     tree_->Branch("dist",&fEleConvDist,"dist/F");
242     tree_->Branch("missHits",&fEleNMissHits,"NMissHits/i");
243     tree_->Branch("nbrems",&fEleNBrem,"nbrems/F");
244     tree_->Branch("fbrem",&fEleFBrem,"fbrem/F");
245     tree_->Branch("EoP",&fEleEOverP,"EoP/F");
246     tree_->Branch("EoPin",&fEleESeedClusterOverPIn,"EoPin/F");
247     tree_->Branch("ESeedoPout",&fEleESeedClusterOverPout,"ESeedoPout/F");
248     tree_->Branch("EEleoPout",&fEleEEleClusterOverPout,"EEleoPout/F");
249 sixie 1.1 // tree_->Branch("eleEoPout",&fEleEEleClusterOverPout,"eleEoPout/F");
250 sixie 1.2 tree_->Branch("IoEmIoP",&fEleOneOverEMinusOneOverP,"IoEmIoP/F");
251     tree_->Branch("deta",&fEleDEtaIn,"deta/F");
252     tree_->Branch("dphi",&fEleDPhiIn,"dphi/F");
253     tree_->Branch("detacalo",&fEledEtaCalo,"detacalo/F");
254     tree_->Branch("dphicalo",&fEledPhiCalo,"dphicalo/F");
255     tree_->Branch("see",&fEleSigmaIEtaIEta,"see/F");
256     tree_->Branch("spp",&fEleSigmaIPhiIPhi,"spp/F");
257     tree_->Branch("sep",&fEleSigmaIEtaIPhi,"sep/F");
258     tree_->Branch("etawidth",&fEleSCEtaWidth,"etawidth/F");
259     tree_->Branch("phiwidth",&fEleSCPhiWidth,"phiwidth/F");
260     tree_->Branch("R9",&fEleR9,"R9/F");
261     tree_->Branch("PreShowerOverRaw",&fElePreShowerOverRaw,"PreShowerOverRaw/F");
262     tree_->Branch("HoE",&fEleHoverE,"HoE/F");
263     tree_->Branch("gsfchi2",&fEleGsfTrackChi2OverNdof,"gsfchi2/F");
264     tree_->Branch("kfchi2",&fEleKFTrackChi2OverNDoF,"kfchi2/F");
265     tree_->Branch("kfhits",&fEleKFTrackNHits,"kfhits/I");
266     tree_->Branch("kflayers",&fEleKFTrackNLayersWithMeasurement,"kflayers/I");
267     tree_->Branch("OneMinusSeedE1x5OverE5x5",&fEleOneMinusSeedE1x5OverE5x5,"OneMinusSeedE1x5OverE5x5/F");
268     tree_->Branch("PFMVA",&fElePFMVA,"PFMVA/F");
269     tree_->Branch("trkIso03",&fEleTrkIso03,"trkIso03/F");
270     tree_->Branch("ecalIso03",&fEleEMIso03,"ecalIso03/F");
271     tree_->Branch("hcalIso03",&fEleHadIso03,"hcalIso03/F");
272     tree_->Branch("trkIso04",&fEleTrkIso04,"trkIso04/F");
273     tree_->Branch("ecalIso04",&fEleEMIso04,"ecalIso04/F");
274     tree_->Branch("hcalIso04",&fEleHadIso04,"hcalIso04/F");
275     tree_->Branch("pfIso04",&fElePFIso04,"pfIso04/F");
276     tree_->Branch("ChargedIso_DR0p0To0p1",&fChargedIso_DR0p0To0p1,"ChargedIso_DR0p0To0p1/F");
277     tree_->Branch("ChargedIso_DR0p1To0p2",&fChargedIso_DR0p1To0p2,"ChargedIso_DR0p1To0p2/F");
278     tree_->Branch("ChargedIso_DR0p2To0p3",&fChargedIso_DR0p2To0p3,"ChargedIso_DR0p2To0p3/F");
279     tree_->Branch("ChargedIso_DR0p3To0p4",&fChargedIso_DR0p3To0p4,"ChargedIso_DR0p3To0p4/F");
280     tree_->Branch("ChargedIso_DR0p4To0p5",&fChargedIso_DR0p4To0p5,"ChargedIso_DR0p4To0p5/F");
281     tree_->Branch("GammaIso_DR0p0To0p1",&fGammaIso_DR0p0To0p1,"GammaIso_DR0p0To0p1/F");
282     tree_->Branch("GammaIso_DR0p1To0p2",&fGammaIso_DR0p1To0p2,"GammaIso_DR0p1To0p2/F");
283     tree_->Branch("GammaIso_DR0p2To0p3",&fGammaIso_DR0p2To0p3,"GammaIso_DR0p2To0p3/F");
284     tree_->Branch("GammaIso_DR0p3To0p4",&fGammaIso_DR0p3To0p4,"GammaIso_DR0p3To0p4/F");
285     tree_->Branch("GammaIso_DR0p4To0p5",&fGammaIso_DR0p4To0p5,"GammaIso_DR0p4To0p5/F");
286     tree_->Branch("NeutralHadronIso_DR0p0To0p1",&fNeutralHadronIso_DR0p0To0p1,"NeutralHadronIso_DR0p0To0p1/F");
287     tree_->Branch("NeutralHadronIso_DR0p1To0p2",&fNeutralHadronIso_DR0p1To0p2,"NeutralHadronIso_DR0p1To0p2/F");
288     tree_->Branch("NeutralHadronIso_DR0p2To0p3",&fNeutralHadronIso_DR0p2To0p3,"NeutralHadronIso_DR0p2To0p3/F");
289     tree_->Branch("NeutralHadronIso_DR0p3To0p4",&fNeutralHadronIso_DR0p3To0p4,"NeutralHadronIso_DR0p3To0p4/F");
290     tree_->Branch("NeutralHadronIso_DR0p4To0p5",&fNeutralHadronIso_DR0p4To0p5,"NeutralHadronIso_DR0p4To0p5/F");
291     tree_->Branch("PassTriggerDenominator",&fElePassTriggerDenominator,"PassTriggerDenominator/O");
292    
293    
294     }
295    
296     // initialze a ElectronTree
297     void InitTree(){
298     assert(tree_);
299     // don't forget to set pointers to zero before you set address
300     // or you will fully appreciate that "ROOT sucks" :)
301     InitVariables();
302     //Set branch address
303     Int_t currentState = gErrorIgnoreLevel;
304    
305     tree_->SetBranchAddress("weight",&fWeight);
306     tree_->SetBranchAddress("run",&fRunNumber);
307     tree_->SetBranchAddress("lumi",&fLumiSectionNumber);
308     tree_->SetBranchAddress("event",&fEventNumber);
309     tree_->SetBranchAddress("EventNumberParity",&fEleEventNumberParity);
310     tree_->SetBranchAddress("pt",&fElePt);
311     tree_->SetBranchAddress("eta",&fEleEta);
312     tree_->SetBranchAddress("phi",&fElePhi);
313     tree_->SetBranchAddress("scEt",&fEleSCEt);
314     tree_->SetBranchAddress("scEta",&fEleSCEta);
315     tree_->SetBranchAddress("scPhi",&fEleSCPhi);
316     tree_->SetBranchAddress("ecalenergy",&fEleEcalEnergy);
317     tree_->SetBranchAddress("ecaldriven",&fEleIsEcalDriven);
318     tree_->SetBranchAddress("triggerBit",&fEleTriggerBit);
319     tree_->SetBranchAddress("rho",&fRho);
320     tree_->SetBranchAddress("vertices",&fNVertices);
321     tree_->SetBranchAddress("d0",&fEleD0);
322     tree_->SetBranchAddress("dz",&fEleDZ);
323     tree_->SetBranchAddress("ip3d",&fEleIP3d);
324     tree_->SetBranchAddress("ip3ds",&fEleIP3dSig);
325     tree_->SetBranchAddress("matchConv",&fEleMatchedConversion);
326     tree_->SetBranchAddress("dcot",&fEleConvDCot);
327     tree_->SetBranchAddress("dist",&fEleConvDist);
328     tree_->SetBranchAddress("missHits",&fEleNMissHits);
329     tree_->SetBranchAddress("nbrems",&fEleNBrem);
330     tree_->SetBranchAddress("fbrem",&fEleFBrem);
331     tree_->SetBranchAddress("EoP",&fEleEOverP);
332     tree_->SetBranchAddress("EoPin",&fEleESeedClusterOverPIn);
333     tree_->SetBranchAddress("ESeedoPout",&fEleESeedClusterOverPout);
334     tree_->SetBranchAddress("EEleoPout",&fEleEEleClusterOverPout);
335     tree_->SetBranchAddress("IoEmIoP",&fEleOneOverEMinusOneOverP);
336     tree_->SetBranchAddress("deta",&fEleDEtaIn);
337     tree_->SetBranchAddress("dphi",&fEleDPhiIn);
338     tree_->SetBranchAddress("detacalo",&fEledEtaCalo);
339     tree_->SetBranchAddress("dphicalo",&fEledPhiCalo);
340     tree_->SetBranchAddress("see",&fEleSigmaIEtaIEta);
341     tree_->SetBranchAddress("spp",&fEleSigmaIPhiIPhi);
342     tree_->SetBranchAddress("sep",&fEleSigmaIEtaIPhi);
343     tree_->SetBranchAddress("etawidth",&fEleSCEtaWidth);
344     tree_->SetBranchAddress("phiwidth",&fEleSCPhiWidth);
345     tree_->SetBranchAddress("R9",&fEleR9);
346     tree_->SetBranchAddress("PreShowerOverRaw",&fElePreShowerOverRaw);
347     tree_->SetBranchAddress("HoE",&fEleHoverE);
348     tree_->SetBranchAddress("gsfchi2",&fEleGsfTrackChi2OverNdof);
349     tree_->SetBranchAddress("kfchi2",&fEleKFTrackChi2OverNDoF);
350     tree_->SetBranchAddress("kfhits",&fEleKFTrackNHits);
351     tree_->SetBranchAddress("kflayers",&fEleKFTrackNLayersWithMeasurement);
352     tree_->SetBranchAddress("OneMinusSeedE1x5OverE5x5",&fEleOneMinusSeedE1x5OverE5x5);
353     tree_->SetBranchAddress("PFMVA",&fElePFMVA);
354     tree_->SetBranchAddress("trkIso03",&fEleTrkIso03);
355     tree_->SetBranchAddress("ecalIso03",&fEleEMIso03);
356     tree_->SetBranchAddress("hcalIso03",&fEleHadIso03);
357     tree_->SetBranchAddress("trkIso04",&fEleTrkIso04);
358     tree_->SetBranchAddress("ecalIso04",&fEleEMIso04);
359     tree_->SetBranchAddress("hcalIso04",&fEleHadIso04);
360     tree_->SetBranchAddress("pfIso04",&fElePFIso04);
361     tree_->SetBranchAddress("ChargedIso_DR0p0To0p1",&fChargedIso_DR0p0To0p1);
362     tree_->SetBranchAddress("ChargedIso_DR0p1To0p2",&fChargedIso_DR0p1To0p2);
363     tree_->SetBranchAddress("ChargedIso_DR0p2To0p3",&fChargedIso_DR0p2To0p3);
364     tree_->SetBranchAddress("ChargedIso_DR0p3To0p4",&fChargedIso_DR0p3To0p4);
365     tree_->SetBranchAddress("ChargedIso_DR0p4To0p5",&fChargedIso_DR0p4To0p5);
366     tree_->SetBranchAddress("GammaIso_DR0p0To0p1",&fGammaIso_DR0p0To0p1);
367     tree_->SetBranchAddress("GammaIso_DR0p1To0p2",&fGammaIso_DR0p1To0p2);
368     tree_->SetBranchAddress("GammaIso_DR0p2To0p3",&fGammaIso_DR0p2To0p3);
369     tree_->SetBranchAddress("GammaIso_DR0p3To0p4",&fGammaIso_DR0p3To0p4);
370     tree_->SetBranchAddress("GammaIso_DR0p4To0p5",&fGammaIso_DR0p4To0p5);
371     tree_->SetBranchAddress("NeutralHadronIso_DR0p0To0p1",&fNeutralHadronIso_DR0p0To0p1);
372     tree_->SetBranchAddress("NeutralHadronIso_DR0p1To0p2",&fNeutralHadronIso_DR0p1To0p2);
373     tree_->SetBranchAddress("NeutralHadronIso_DR0p2To0p3",&fNeutralHadronIso_DR0p2To0p3);
374     tree_->SetBranchAddress("NeutralHadronIso_DR0p3To0p4",&fNeutralHadronIso_DR0p3To0p4);
375     tree_->SetBranchAddress("NeutralHadronIso_DR0p4To0p5",&fNeutralHadronIso_DR0p4To0p5);
376     tree_->SetBranchAddress("PassTriggerDenominator",&fElePassTriggerDenominator);
377 sixie 1.1
378 sixie 1.2 gErrorIgnoreLevel = currentState;
379     }
380 sixie 1.1
381 sixie 1.2 };
382 sixie 1.1
383 sixie 1.2 }
384 sixie 1.1
385     #endif