ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/algomez/FourTop/TreeAnalyzer/interface/StoreTreeVariable.h
Revision: 1.6
Committed: Mon Apr 23 16:01:00 2012 UTC (13 years ago) by algomez
Content type: text/plain
Branch: MAIN
CVS Tags: HEAD
Changes since 1.5: +33 -28 lines
Log Message:
*** empty log message ***

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