ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/algomez/FourTop/TreeAnalyzer/interface/StoreTreeVariable.h
Revision: 1.5
Committed: Tue Mar 20 19:58:39 2012 UTC (13 years, 1 month ago) by algomez
Content type: text/plain
Branch: MAIN
Changes since 1.4: +36 -19 lines
Log Message:
new version with more variables

File Contents

# User Rev Content
1 algomez 1.1 #ifndef StoreTreeVariable_h
2     #define StoreTreeVariable_h
3    
4     #include <TFile.h>
5     #include <TTree.h>
6     #include <iostream>
7    
8     #define NMAX 100
9    
10     class StoreTreeVariable {
11    
12     public:
13    
14     StoreTreeVariable();
15    
16     virtual ~StoreTreeVariable();
17    
18     void SetMuonFalse(){StoreMuon = kFALSE;}
19     void SetElectronFalse(){StoreElectron = kFALSE;}
20     void SetJetFalse(){StoreJet = kFALSE;}
21     void SetVertexFalse(){StoreVertex = kFALSE;}
22     void SetTriggerFalse(){StoreTrigger = kFALSE;}
23     void SetMetFalse(){StoreMet = kFALSE;}
24 algomez 1.2 void SetGeneralFalse(){StoreGeneral = kFALSE;}
25 algomez 1.1
26     //typedef struct MuonVariables{
27     typedef struct {
28    
29     //Muon ID Variables
30     Int_t nummuons;
31     Double_t relisolation[NMAX];
32     Double_t d0[NMAX];
33     Int_t hits[NMAX];
34     Int_t trackhits[NMAX];
35     Double_t normalchi2[NMAX];
36     Int_t stations[NMAX];
37     Int_t pixelhits[NMAX];
38     Double_t muonvzwithPV[NMAX];
39     Int_t tightmuon[NMAX];
40     Int_t nloosemuon;
41     Int_t ntightmuon;
42    
43     //Muon Kinematic
44     Double_t pt[NMAX];
45     Double_t eta[NMAX];
46     Double_t phi[NMAX];
47     Double_t e[NMAX];
48    
49     //Muon Jet deltaR
50     Double_t deltaR[NMAX];
51    
52     } MuonVariables;
53    
54    
55     struct ElectronVariables{
56    
57     Int_t elecnum;
58     Int_t nlooseelec;
59     Int_t ntightelec;
60    
61     Double_t d0[NMAX];
62     Double_t elecvzwrtPV[NMAX];
63     Double_t relisolation[NMAX];
64     Double_t pfrelisolation[NMAX];//pfisolation
65     //Electron ID
66     Double_t sigmaIetaIeta[NMAX];
67     Double_t HoE[NMAX];
68     Double_t deltaphisc[NMAX];
69     Double_t deltaetasc[NMAX];
70    
71     //Kinematic
72     Double_t pt[NMAX];
73     Double_t eta[NMAX];
74     Double_t phi[NMAX];
75     Double_t e[NMAX];
76     //deltaR with Electron and jet
77     Double_t deltaR[NMAX];
78    
79     };
80    
81     struct JetVariables{
82    
83     Int_t numjets;
84     //Jet Kinematic
85 algomez 1.4 Double_t jet1pt;
86     Double_t jet2pt;
87     Double_t jet3pt;
88     Double_t jet4pt;
89 algomez 1.5 Double_t deltaRdijet;
90 algomez 1.4 /*Double_t jeteta[NMAX];
91 algomez 1.1 Double_t jetphi[NMAX];
92 algomez 1.4 Double_t jete[NMAX];*/
93 algomez 1.1
94     //mc
95 algomez 1.4 /*
96 algomez 1.1 Int_t jetparton[NMAX];
97    
98     //b tag
99     Double_t jettchp[NMAX];
100     Double_t jettche[NMAX];
101     Double_t jetsvhe[NMAX];
102     Double_t jetsvhp[NMAX];
103 algomez 1.3 Double_t jetcsv[NMAX]; */
104     Int_t numBjets_csvl;
105     Int_t numBjets_csvm;
106     Int_t numBjets_csvt;
107 algomez 1.1
108 algomez 1.5 Double_t jet1CSVLpt;
109     Double_t jet2CSVLpt;
110     Double_t jet3CSVLpt;
111     Double_t jet4CSVLpt;
112     Double_t jet1CSVMpt;
113     Double_t jet2CSVMpt;
114     Double_t jet3CSVMpt;
115     Double_t jet4CSVMpt;
116 algomez 1.1 //Jet Track number
117 algomez 1.3 //Int_t jettracksize[NMAX];
118    
119 algomez 1.1 };
120    
121    
122     struct VertexVariables{
123    
124     Int_t numpvs;
125    
126     };
127    
128     struct TriggerVariables{
129    
130     Int_t triggername;
131     Int_t accept;
132     Int_t prescale;
133    
134     };
135    
136     struct MetVariables{
137    
138 algomez 1.5 Double_t MET;
139     /*
140     Double_t metphi;
141 algomez 1.1 Double_t mht;
142     Double_t neupt;
143     Double_t rho;
144     Double_t sigmarho;
145     Double_t scalefactor;
146     Double_t eventpuweight;
147     Double_t eventpuweightdown;
148     Double_t eventpuweightup;
149     Double_t eventbtagweight; //Event B tag weight
150     Double_t event2btagweight_up; //Event B tag scale factor UP at least 2 TCHPM bjet
151     Double_t event2btagweight_down; //Event B tag scale factor DOWN
152     Double_t event1btagweight_up; //Event B tag scale factor UP at least 1 TCHPM bjet
153     Double_t event1btagweight_down;
154     Double_t eventonly1btagweight_up; //Event B tag scale factor UP at least 1 TCHPM bjet
155     Double_t eventonly1btagweight_down;
156     Double_t event1btagweight; //Event at least one TCHPM btag weight
157     Double_t eventonly1btagweight; //Only have one TCHPM btag weight
158     Double_t eventonly0btagweight; //Only have zero TCHPM btag weight
159    
160     Int_t csvbtagjetnum_up;
161     Int_t csvbtagjetnum_down;
162     Int_t flavorhistory;
163 algomez 1.3 */
164     Double_t Ht;
165     Double_t Stlep;
166     Double_t Stjet;
167 algomez 1.5 Double_t DeltaPhiWW;
168     Double_t DeltaRWW;
169     Double_t DeltaPhiMETWlep;
170     Double_t DeltaPhiMETlep;
171     Double_t DeltaPhiNulep;
172     Double_t LepWPt;
173 algomez 1.2 };
174    
175     struct GeneralVariables {
176 algomez 1.1
177     Int_t Run;
178     Int_t Lumi;
179     Int_t Event;
180 algomez 1.2 Double_t PUWeight;
181 algomez 1.1
182     };
183    
184     TTree* GetStoreTree(){return Top;}
185    
186     MuonVariables *GetMuonVariable(){return &VStoreMuon;}
187     ElectronVariables *GetElectronVariable(){return &VStoreElectron;}
188     JetVariables *GetJetVariable(){return &VStoreJet;}
189     VertexVariables *GetVertexVariable(){return &VStoreVertex;}
190     TriggerVariables *GetTriggerVariable(){return &VStoreTrigger;}
191     MetVariables *GetMetVariable(){return &VStoreMet;}
192 algomez 1.2 GeneralVariables *GetGeneralVariable(){return &VStoreGeneral;}
193 algomez 1.1
194     void InitialAll();
195     void InitialVertex();
196     void InitialMuon();
197     void InitialElectron();
198     void InitialJet();
199     void InitialTrigger();
200     void InitialMet();
201 algomez 1.2 void InitialGeneral();
202 algomez 1.1
203     private:
204    
205     TTree *Top;
206    
207     bool StoreMuon;
208     bool StoreVertex;
209     bool StoreElectron;
210     bool StoreJet;
211     bool StoreTrigger;
212     bool StoreMet;
213 algomez 1.2 bool StoreGeneral;
214 algomez 1.1
215     //V mean variables
216     MuonVariables VStoreMuon;
217     ElectronVariables VStoreElectron;
218     JetVariables VStoreJet;
219     VertexVariables VStoreVertex;
220     TriggerVariables VStoreTrigger;
221     MetVariables VStoreMet;
222 algomez 1.2 GeneralVariables VStoreGeneral;
223 algomez 1.1
224     };
225    
226     #endif
227    
228     StoreTreeVariable::StoreTreeVariable(){
229    
230     Top = new TTree("4Tree","4Tree");
231     Top->SetDirectory(0);
232    
233     StoreMuon = kTRUE;
234     StoreVertex = kTRUE;
235     StoreElectron = kTRUE;
236     StoreJet = kTRUE;
237     StoreTrigger = kTRUE;
238     StoreMet = kTRUE;
239 algomez 1.2 StoreGeneral = kTRUE;
240 algomez 1.1
241     }
242    
243     StoreTreeVariable::~StoreTreeVariable(){
244    
245     }
246    
247     void StoreTreeVariable::InitialMuon(){
248    
249     if(StoreMuon){
250     cout<<"We are initial the Muon Branch"<<endl;
251    
252     Top->Branch("muon_number",&VStoreMuon.nummuons,"nummuons/I");
253     Top->Branch("muon_isolation",VStoreMuon.relisolation,"reisolation[nummuons]/D");
254     Top->Branch("muon_d0",VStoreMuon.d0,"d0[nummuons]/D");
255     Top->Branch("muon_muonhist",VStoreMuon.hits,"hits[nummuons]/I");
256     Top->Branch("muon_trackhits",VStoreMuon.trackhits,"trackhits[nummuons]/I");
257     Top->Branch("muon_normalchi2",VStoreMuon.normalchi2,"normalchi2[nummuons]/D");
258     Top->Branch("muon_muonstations",VStoreMuon.stations,"stations[nummuons]/I");
259     Top->Branch("muon_pixelhits",VStoreMuon.pixelhits,"pixelhits[nummuons]/I");
260     Top->Branch("muon_muonvzwithPV",VStoreMuon.muonvzwithPV,"muonvzwithPV[nummuons]/D");
261     Top->Branch("muon_tightmuon",VStoreMuon.tightmuon,"tightmuon[nummuons]/I");
262     Top->Branch("muon_nloosemuon",&VStoreMuon.nloosemuon,"nloosemuon/I");
263     Top->Branch("muon_ntightmuon",&VStoreMuon.ntightmuon,"ntightmuon/I");
264     Top->Branch("muon_jet_deltaR",VStoreMuon.deltaR,"deltaR[nummuons]/D");
265    
266     //kinematic
267     Top->Branch("muon_pt",VStoreMuon.pt,"pt[nummuons]/D");
268     //Top->Branch("muon_pt",muonpt,"pt[nummuons]/D");
269     Top->Branch("muon_eta",VStoreMuon.eta,"eta[nummuons]/D");
270     Top->Branch("muon_phi",VStoreMuon.phi,"phi[nummuons]/D");
271     Top->Branch("muon_energy",VStoreMuon.e,"e[nummuons]/D");
272    
273     }
274    
275     }
276    
277     void StoreTreeVariable::InitialElectron(){
278    
279     if(StoreElectron){
280    
281     cout<<"We are initial the Electron Branch"<<endl;
282    
283     Top->Branch("electronnum",&VStoreElectron.elecnum,"elecnum/I");
284     //Electrom ID
285     Top->Branch("elec_d0",VStoreElectron.d0,"d0[elecnum]/D");
286     Top->Branch("elec_elecvzwrtPV",VStoreElectron.elecvzwrtPV,"elecivzwrtPV[elecnum]/D");
287     Top->Branch("elec_isolation",VStoreElectron.relisolation,"relisolation[elecnum]/D");
288     Top->Branch("elec_pfisolation",VStoreElectron.pfrelisolation,"pfrelisolation[elecnum]/D");
289     Top->Branch("elec_sigmaIetaIeta",VStoreElectron.sigmaIetaIeta,"sigmaIetaIeta[elecnum]/D");
290     Top->Branch("elec_HoE",VStoreElectron.HoE,"HoE[elecnum]/D");
291     Top->Branch("elec_deltaphisc",VStoreElectron.deltaphisc,"deltaphisc[elecnum]/D");
292     Top->Branch("elec_deltaetasc",VStoreElectron.deltaetasc,"deltaetasc[elecnum]/D");
293     //Electron kinematic
294     Top->Branch("elec_pt",VStoreElectron.pt,"pt[elecnum]/D");
295     Top->Branch("elec_eta",VStoreElectron.eta,"eta[elecnum]/D");
296     Top->Branch("elec_phi",VStoreElectron.phi,"phi[elecnum]/D");
297     Top->Branch("elec_energy",VStoreElectron.e,"e[elecnum]/D");
298     Top->Branch("elec_jet_deltaR",VStoreElectron.deltaR,"deltaR[elecnum]/D");
299    
300     }
301    
302     }
303    
304     void StoreTreeVariable::InitialJet(){
305    
306     if(StoreJet){
307    
308     cout<<"We are initial Jet Branch"<<endl;
309    
310     Top->Branch("jet_number",&VStoreJet.numjets,"numjets/I");
311 algomez 1.4
312     Top->Branch("jet1_pt",&VStoreJet.jet1pt,"jet1pt/D");
313     Top->Branch("jet2_pt",&VStoreJet.jet2pt,"jet2pt/D");
314     Top->Branch("jet3_pt",&VStoreJet.jet3pt,"jet3pt/D");
315     Top->Branch("jet4_pt",&VStoreJet.jet4pt,"jet4pt/D");
316 algomez 1.5 Top->Branch("deltaRdijet",&VStoreJet.deltaRdijet,"deltaRdijet/D");
317 algomez 1.4 /*Top->Branch("jet_eta",VStoreJet.jeteta,"jeteta[numjets]/D");
318 algomez 1.1 Top->Branch("jet_phi",VStoreJet.jetphi,"jetphi[numjets]/D");
319     Top->Branch("jet_energy",VStoreJet.jete,"jete[numjets]/D");
320     Top->Branch("jet_partonflavor",VStoreJet.jetparton,"jetparton[numjets]/I");
321     //btag
322     Top->Branch("jet_btag_trackhighputy",VStoreJet.jettchp,"jettchp[numjets]/D");
323     Top->Branch("jet_btag_trackhigheff",VStoreJet.jettche,"jettche[numjets]/D");
324     Top->Branch("jet_btag_SVhigheff",VStoreJet.jetsvhe,"jetsvhe[numjets]/D");
325     Top->Branch("jet_btag_SVhighputy",VStoreJet.jetsvhp,"jetsvhp[numjets]/D");
326     Top->Branch("jet_btag_csv",VStoreJet.jetcsv,"jetcsv[numjets]/D");
327     */
328 algomez 1.3 Top->Branch("numBjets_csvl",&VStoreJet.numBjets_csvl,"numBjets_csvl/I");
329     Top->Branch("numBjets_csvm",&VStoreJet.numBjets_csvm,"numBjets_csvm/I");
330     Top->Branch("numBjets_csvt",&VStoreJet.numBjets_csvt,"numBjets_csvt/I");
331    
332 algomez 1.5 Top->Branch("jet1CSVLpt",&VStoreJet.jet1CSVLpt,"jet1CSVLpt/D");
333     Top->Branch("jet2CSVLpt",&VStoreJet.jet2CSVLpt,"jet2CSVLpt/D");
334     Top->Branch("jet3CSVLpt",&VStoreJet.jet3CSVLpt,"jet3CSVLpt/D");
335     Top->Branch("jet4CSVLpt",&VStoreJet.jet4CSVLpt,"jet4CSVLpt/D");
336     Top->Branch("jet1CSVMpt",&VStoreJet.jet1CSVMpt,"jet1CSVMpt/D");
337     Top->Branch("jet2CSVMpt",&VStoreJet.jet2CSVMpt,"jet2CSVMpt/D");
338     Top->Branch("jet3CSVMpt",&VStoreJet.jet3CSVMpt,"jet3CSVMpt/D");
339     Top->Branch("jet4CSVMpt",&VStoreJet.jet4CSVMpt,"jet4CSVMpt/D");
340 algomez 1.1 //Jet track size
341     //Top->Branch("jet_tracksize",VStoreJet.jettracksize,"jettracksize[numjets]/I");
342     }
343    
344     }
345    
346     void StoreTreeVariable::InitialMet(){
347    
348     if(StoreMet){
349     cout<<"We are inital Met Branch"<<endl;
350 algomez 1.5
351     Top->Branch("MET",&VStoreMet.MET,"MET/D");
352     /*Top->Branch("MET_phi",&VStoreMet.metphi,"metphi/D");
353 algomez 1.1 Top->Branch("MHT_energy",&VStoreMet.mht,"mht/D");
354     Top->Branch("Neutrinuo_pt",&VStoreMet.neupt,"neupt/D");
355     Top->Branch("pileup_rho",&VStoreMet.rho,"rho/D");
356     Top->Branch("pileup_sigmarho",&VStoreMet.sigmarho,"sigmarho/D");
357     Top->Branch("scalefactor",&VStoreMet.scalefactor,"scalefactor/D");
358     Top->Branch("pileup_reweight",&VStoreMet.eventpuweight,"eventpuweight/D");
359     Top->Branch("pileup_reweightdown",&VStoreMet.eventpuweightdown,"eventpuweightdown/D");
360     Top->Branch("pileup_reweightup",&VStoreMet.eventpuweightup,"eventpuweightup/D");
361     Top->Branch("btagweight",&VStoreMet.eventbtagweight,"eventbtagweight/D");
362     Top->Branch("2btagweight_up",&VStoreMet.event2btagweight_up,"event2btagweight_up/D");
363     Top->Branch("2btagweight_down",&VStoreMet.event2btagweight_down,"event2btagweight_down/D");
364     Top->Branch("1btagweight_up",&VStoreMet.event1btagweight_up,"event1btagweight_up/D");
365     Top->Branch("1btagweight_down",&VStoreMet.event1btagweight_down,"event1btagweight_down/D");
366     Top->Branch("only1btagweight_up",&VStoreMet.eventonly1btagweight_up,"eventonly1btagweight_up/D");
367     Top->Branch("only1btagweight_down",&VStoreMet.eventonly1btagweight_down,"eventonly1btagweight_down/D");
368     Top->Branch("1btagweight",&VStoreMet.event1btagweight,"event1btagweight/D");// at least one btag weight factor
369     Top->Branch("only1btagweight",&VStoreMet.eventonly1btagweight,"eventonly1btagweight/D");// at least one btag weight factor
370     Top->Branch("only0btagweight",&VStoreMet.eventonly0btagweight,"eventonly0btagweight/D");// at least one btag weight factor
371     Top->Branch("csvbtagjetnum_up",&VStoreMet.csvbtagjetnum_up,"csvbtagjetnum_up/I");
372     Top->Branch("csvbtagjetnum_down",&VStoreMet.csvbtagjetnum_down,"csvbtagjetnum_down/I");
373     Top->Branch("flavorhistory",&VStoreMet.flavorhistory,"flavorhistory/I");
374 algomez 1.3 */
375 algomez 1.4 Top->Branch("Ht",&VStoreMet.Ht,"Ht/D");
376 algomez 1.3 Top->Branch("Stlep",&VStoreMet.Stlep,"Stlep/D");
377     Top->Branch("Stjet",&VStoreMet.Stjet,"Stjet/D");
378 algomez 1.5 Top->Branch("DeltaPhiWW",&VStoreMet.DeltaPhiWW,"DeltaPhiWW/D");
379     Top->Branch("DeltaRWW",&VStoreMet.DeltaRWW,"DeltaRWW/D");
380     Top->Branch("DeltaPhiMETWlep",&VStoreMet.DeltaPhiMETWlep,"DeltaPhiMETWlep/D");
381     Top->Branch("DeltaPhiMETlep",&VStoreMet.DeltaPhiMETlep,"DeltaPhiMETlep/D");
382     Top->Branch("DeltaPhiNulep",&VStoreMet.DeltaPhiNulep,"DeltaPhiNulep/D");
383     Top->Branch("LepWPt",&VStoreMet.LepWPt,"LepWPt/D");
384 algomez 1.2 }
385     }
386    
387     void StoreTreeVariable::InitialGeneral(){
388    
389     if(StoreGeneral){
390     cout<<"We are inital General Branch"<<endl;
391    
392     Top->Branch("run",&VStoreGeneral.Run,"Run/I");
393     Top->Branch("lumi",&VStoreGeneral.Lumi,"Lumi/I");
394     Top->Branch("event",&VStoreGeneral.Event,"Event/I");
395     Top->Branch("PUWeight",&VStoreGeneral.PUWeight,"PUWeight/D");
396 algomez 1.1
397     }
398     }
399    
400     void StoreTreeVariable::InitialTrigger(){
401    
402     if(StoreTrigger){
403     cout<<"We are nitial Trigger Bracn"<<endl;
404    
405     Top->Branch("Trigger_Name",&VStoreTrigger.triggername,"triggername/I");
406     Top->Branch("Trigger_accept",&VStoreTrigger.accept,"accept/I");
407     Top->Branch("Trigger_prescale",&VStoreTrigger.prescale,"prescale/I");
408    
409     }
410    
411     }
412    
413     void StoreTreeVariable::InitialVertex(){
414    
415     if(StoreVertex){
416     cout<<"We are inital Vertex Branch"<<endl;
417    
418     Top->Branch("nPVs",&VStoreVertex.numpvs,"numpvs/I");
419    
420     }
421    
422     }
423    
424     void StoreTreeVariable::InitialAll(){
425    
426     InitialVertex();
427     InitialTrigger();
428     InitialMuon();
429     InitialElectron();
430     InitialJet();
431     InitialMet();
432 algomez 1.2 InitialGeneral();
433 algomez 1.1 }