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

# Content
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 void SetGeneralFalse(){StoreGeneral = kFALSE;}
25
26 //typedef struct MuonVariables{
27 typedef struct {
28
29 //Muon Kinematic
30 Double_t Muonpt;
31 Double_t Muoneta;
32 Double_t Muonphi;
33 Double_t e[NMAX];
34
35 //Muon Jet deltaR
36 Double_t MuondeltaR;
37
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 Double_t jet1pt;
72 Double_t jet2pt;
73 Double_t jet3pt;
74 Double_t jet4pt;
75 Double_t deltaRmindijet;
76 Double_t deltaRdijet;
77 Double_t deltaRmu2jet;
78 Double_t deltaRmu3jet;
79 Double_t deltaPhidijet;
80 Double_t deltaPhimu2jet;
81 Double_t deltaPhimu3jet;
82 /*Double_t jeteta[NMAX];
83 Double_t jetphi[NMAX];
84 Double_t jete[NMAX];*/
85
86 //mc
87 /*
88 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 Double_t jetcsv[NMAX]; */
96 Int_t numBjets_csvl;
97 Int_t numBjets_csvm;
98 Int_t numBjets_csvt;
99
100 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 //Jet Track number
109 //Int_t jettracksize[NMAX];
110
111 };
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 Double_t MET;
131 Double_t METphi;
132 /*
133 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 */
156 Double_t Ht;
157 Double_t Stlep;
158 Double_t Stjet;
159 Double_t diWdeltaphi;
160 Double_t diWdeltaR;
161 Double_t DeltaPhiWW;
162 Double_t DeltaRWW;
163 Double_t DeltaPhiMETWlep;
164 Double_t DeltaPhiMETlep;
165 Double_t DeltaPhiNulep;
166 Double_t LepWPt;
167 Double_t topmass;
168 Double_t toppt;
169
170 };
171
172 struct GeneralVariables {
173
174 Int_t Run;
175 Int_t Lumi;
176 Int_t Event;
177 Double_t PUWeight;
178
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 GeneralVariables *GetGeneralVariable(){return &VStoreGeneral;}
190
191 void InitialAll();
192 void InitialVertex();
193 void InitialMuon();
194 void InitialElectron();
195 void InitialJet();
196 void InitialTrigger();
197 void InitialMet();
198 void InitialGeneral();
199
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 bool StoreGeneral;
211
212 //V mean variables
213 MuonVariables VStoreMuon;
214 ElectronVariables VStoreElectron;
215 JetVariables VStoreJet;
216 VertexVariables VStoreVertex;
217 TriggerVariables VStoreTrigger;
218 MetVariables VStoreMet;
219 GeneralVariables VStoreGeneral;
220
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 StoreGeneral = kTRUE;
237
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 /*Top->Branch("muon_number",&VStoreMuon.nummuons,"nummuons/I");
250 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 */
263 //kinematic
264 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
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
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 Top->Branch("deltaRdijet",&VStoreJet.deltaRdijet,"deltaRdijet/D");
313 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 /*Top->Branch("jet_eta",VStoreJet.jeteta,"jeteta[numjets]/D");
321 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 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 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 //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
354 Top->Branch("MET",&VStoreMet.MET,"MET/D");
355 /*Top->Branch("MET_phi",&VStoreMet.metphi,"metphi/D");
356 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 */
378 Top->Branch("Ht",&VStoreMet.Ht,"Ht/D");
379 Top->Branch("Stlep",&VStoreMet.Stlep,"Stlep/D");
380 Top->Branch("Stjet",&VStoreMet.Stjet,"Stjet/D");
381 Top->Branch("diWdeltaphi",&VStoreMet.diWdeltaphi,"diWdeltaphi/D");
382 Top->Branch("diWdeltaR",&VStoreMet.diWdeltaR,"diWdeltaR/D");
383 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 Top->Branch("topmass",&VStoreMet.topmass,"topmass/D");
388 Top->Branch("toppt",&VStoreMet.toppt,"toppt/D");
389 }
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
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 InitialGeneral();
438 }