ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/algomez/FourTop/TreeAnalyzer/interface/StoreTreeVariable.h
Revision: 1.2
Committed: Fri Jan 6 16:41:29 2012 UTC (13 years, 3 months ago) by algomez
Content type: text/plain
Branch: MAIN
Changes since 1.1: +33 -23 lines
Log Message:
fixing b discriminant and include spectator values and puweights

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 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 /*Double_t jetpt[NMAX];
86 Double_t jeteta[NMAX];
87 Double_t jetphi[NMAX];
88 Double_t jete[NMAX];
89
90 //mc
91 Int_t jetparton[NMAX];
92
93 //b tag
94 Double_t jettchp[NMAX];
95 Double_t jettche[NMAX];
96 Double_t jetsvhe[NMAX];
97 Double_t jetsvhp[NMAX];
98 Double_t jetcsv[NMAX];
99
100 //Jet Track number
101 Int_t jettracksize[NMAX];
102 */
103
104 // B discriminator
105 Double_t bdisc_1st;
106 Double_t bdisc_2nd;
107 Double_t bdisc_3rd;
108 Double_t bdisc_4th;
109
110 };
111
112
113 struct VertexVariables{
114
115 Int_t numpvs;
116
117 };
118
119 struct TriggerVariables{
120
121 Int_t triggername;
122 Int_t accept;
123 Int_t prescale;
124
125 };
126
127 struct MetVariables{
128
129 Double_t met;
130 Double_t metphi;
131 Double_t mht;
132 Double_t neupt;
133 Double_t rho;
134 Double_t sigmarho;
135 Double_t scalefactor;
136 Double_t eventpuweight;
137 Double_t eventpuweightdown;
138 Double_t eventpuweightup;
139 Double_t eventbtagweight; //Event B tag weight
140 Double_t event2btagweight_up; //Event B tag scale factor UP at least 2 TCHPM bjet
141 Double_t event2btagweight_down; //Event B tag scale factor DOWN
142 Double_t event1btagweight_up; //Event B tag scale factor UP at least 1 TCHPM bjet
143 Double_t event1btagweight_down;
144 Double_t eventonly1btagweight_up; //Event B tag scale factor UP at least 1 TCHPM bjet
145 Double_t eventonly1btagweight_down;
146 Double_t event1btagweight; //Event at least one TCHPM btag weight
147 Double_t eventonly1btagweight; //Only have one TCHPM btag weight
148 Double_t eventonly0btagweight; //Only have zero TCHPM btag weight
149
150 Int_t csvbtagjetnum_up;
151 Int_t csvbtagjetnum_down;
152 Int_t flavorhistory;
153 };
154
155 struct GeneralVariables {
156
157 Int_t Run;
158 Int_t Lumi;
159 Int_t Event;
160 Double_t PUWeight;
161
162 };
163
164 TTree* GetStoreTree(){return Top;}
165
166 MuonVariables *GetMuonVariable(){return &VStoreMuon;}
167 ElectronVariables *GetElectronVariable(){return &VStoreElectron;}
168 JetVariables *GetJetVariable(){return &VStoreJet;}
169 VertexVariables *GetVertexVariable(){return &VStoreVertex;}
170 TriggerVariables *GetTriggerVariable(){return &VStoreTrigger;}
171 MetVariables *GetMetVariable(){return &VStoreMet;}
172 GeneralVariables *GetGeneralVariable(){return &VStoreGeneral;}
173
174 void InitialAll();
175 void InitialVertex();
176 void InitialMuon();
177 void InitialElectron();
178 void InitialJet();
179 void InitialTrigger();
180 void InitialMet();
181 void InitialGeneral();
182
183 private:
184
185 TTree *Top;
186
187 bool StoreMuon;
188 bool StoreVertex;
189 bool StoreElectron;
190 bool StoreJet;
191 bool StoreTrigger;
192 bool StoreMet;
193 bool StoreGeneral;
194
195 //V mean variables
196 MuonVariables VStoreMuon;
197 ElectronVariables VStoreElectron;
198 JetVariables VStoreJet;
199 VertexVariables VStoreVertex;
200 TriggerVariables VStoreTrigger;
201 MetVariables VStoreMet;
202 GeneralVariables VStoreGeneral;
203
204 };
205
206 #endif
207
208 StoreTreeVariable::StoreTreeVariable(){
209
210 Top = new TTree("4Tree","4Tree");
211 Top->SetDirectory(0);
212
213 StoreMuon = kTRUE;
214 StoreVertex = kTRUE;
215 StoreElectron = kTRUE;
216 StoreJet = kTRUE;
217 StoreTrigger = kTRUE;
218 StoreMet = kTRUE;
219 StoreGeneral = kTRUE;
220
221 }
222
223 StoreTreeVariable::~StoreTreeVariable(){
224
225 }
226
227 void StoreTreeVariable::InitialMuon(){
228
229 if(StoreMuon){
230 cout<<"We are initial the Muon Branch"<<endl;
231
232 Top->Branch("muon_number",&VStoreMuon.nummuons,"nummuons/I");
233 Top->Branch("muon_isolation",VStoreMuon.relisolation,"reisolation[nummuons]/D");
234 Top->Branch("muon_d0",VStoreMuon.d0,"d0[nummuons]/D");
235 Top->Branch("muon_muonhist",VStoreMuon.hits,"hits[nummuons]/I");
236 Top->Branch("muon_trackhits",VStoreMuon.trackhits,"trackhits[nummuons]/I");
237 Top->Branch("muon_normalchi2",VStoreMuon.normalchi2,"normalchi2[nummuons]/D");
238 Top->Branch("muon_muonstations",VStoreMuon.stations,"stations[nummuons]/I");
239 Top->Branch("muon_pixelhits",VStoreMuon.pixelhits,"pixelhits[nummuons]/I");
240 Top->Branch("muon_muonvzwithPV",VStoreMuon.muonvzwithPV,"muonvzwithPV[nummuons]/D");
241 Top->Branch("muon_tightmuon",VStoreMuon.tightmuon,"tightmuon[nummuons]/I");
242 Top->Branch("muon_nloosemuon",&VStoreMuon.nloosemuon,"nloosemuon/I");
243 Top->Branch("muon_ntightmuon",&VStoreMuon.ntightmuon,"ntightmuon/I");
244 Top->Branch("muon_jet_deltaR",VStoreMuon.deltaR,"deltaR[nummuons]/D");
245
246 //kinematic
247 Top->Branch("muon_pt",VStoreMuon.pt,"pt[nummuons]/D");
248 //Top->Branch("muon_pt",muonpt,"pt[nummuons]/D");
249 Top->Branch("muon_eta",VStoreMuon.eta,"eta[nummuons]/D");
250 Top->Branch("muon_phi",VStoreMuon.phi,"phi[nummuons]/D");
251 Top->Branch("muon_energy",VStoreMuon.e,"e[nummuons]/D");
252
253 }
254
255 }
256
257 void StoreTreeVariable::InitialElectron(){
258
259 if(StoreElectron){
260
261 cout<<"We are initial the Electron Branch"<<endl;
262
263 Top->Branch("electronnum",&VStoreElectron.elecnum,"elecnum/I");
264 //Electrom ID
265 Top->Branch("elec_d0",VStoreElectron.d0,"d0[elecnum]/D");
266 Top->Branch("elec_elecvzwrtPV",VStoreElectron.elecvzwrtPV,"elecivzwrtPV[elecnum]/D");
267 Top->Branch("elec_isolation",VStoreElectron.relisolation,"relisolation[elecnum]/D");
268 Top->Branch("elec_pfisolation",VStoreElectron.pfrelisolation,"pfrelisolation[elecnum]/D");
269 Top->Branch("elec_sigmaIetaIeta",VStoreElectron.sigmaIetaIeta,"sigmaIetaIeta[elecnum]/D");
270 Top->Branch("elec_HoE",VStoreElectron.HoE,"HoE[elecnum]/D");
271 Top->Branch("elec_deltaphisc",VStoreElectron.deltaphisc,"deltaphisc[elecnum]/D");
272 Top->Branch("elec_deltaetasc",VStoreElectron.deltaetasc,"deltaetasc[elecnum]/D");
273 //Electron kinematic
274 Top->Branch("elec_pt",VStoreElectron.pt,"pt[elecnum]/D");
275 Top->Branch("elec_eta",VStoreElectron.eta,"eta[elecnum]/D");
276 Top->Branch("elec_phi",VStoreElectron.phi,"phi[elecnum]/D");
277 Top->Branch("elec_energy",VStoreElectron.e,"e[elecnum]/D");
278 Top->Branch("elec_jet_deltaR",VStoreElectron.deltaR,"deltaR[elecnum]/D");
279
280 }
281
282 }
283
284 void StoreTreeVariable::InitialJet(){
285
286 if(StoreJet){
287
288 cout<<"We are initial Jet Branch"<<endl;
289
290 Top->Branch("jet_number",&VStoreJet.numjets,"numjets/I");
291 /*
292 Top->Branch("jet_pt",VStoreJet.jetpt,"jetpt[numjets]/D");
293 Top->Branch("jet_eta",VStoreJet.jeteta,"jeteta[numjets]/D");
294 Top->Branch("jet_phi",VStoreJet.jetphi,"jetphi[numjets]/D");
295 Top->Branch("jet_energy",VStoreJet.jete,"jete[numjets]/D");
296 Top->Branch("jet_partonflavor",VStoreJet.jetparton,"jetparton[numjets]/I");
297 //btag
298 Top->Branch("jet_btag_trackhighputy",VStoreJet.jettchp,"jettchp[numjets]/D");
299 Top->Branch("jet_btag_trackhigheff",VStoreJet.jettche,"jettche[numjets]/D");
300 Top->Branch("jet_btag_SVhigheff",VStoreJet.jetsvhe,"jetsvhe[numjets]/D");
301 Top->Branch("jet_btag_SVhighputy",VStoreJet.jetsvhp,"jetsvhp[numjets]/D");
302 Top->Branch("jet_btag_csv",VStoreJet.jetcsv,"jetcsv[numjets]/D");
303 */
304 //b discriminant
305 Top->Branch("jet_bdisc_1st",&VStoreJet.bdisc_1st,"bdisc_1st/D");
306 Top->Branch("jet_bdisc_2nd",&VStoreJet.bdisc_2nd,"bdisc_2nd/D");
307 Top->Branch("jet_bdisc_3rd",&VStoreJet.bdisc_3rd,"bdisc_3rd/D");
308 Top->Branch("jet_bdisc_4th",&VStoreJet.bdisc_4th,"bdisc_4th/D");
309
310 //Jet track size
311 //Top->Branch("jet_tracksize",VStoreJet.jettracksize,"jettracksize[numjets]/I");
312
313 }
314
315 }
316
317 void StoreTreeVariable::InitialMet(){
318
319 if(StoreMet){
320 cout<<"We are inital Met Branch"<<endl;
321
322 Top->Branch("MET_energy",&VStoreMet.met,"met/D");
323 Top->Branch("MET_phi",&VStoreMet.metphi,"metphi/D");
324 Top->Branch("MHT_energy",&VStoreMet.mht,"mht/D");
325 Top->Branch("Neutrinuo_pt",&VStoreMet.neupt,"neupt/D");
326 Top->Branch("pileup_rho",&VStoreMet.rho,"rho/D");
327 Top->Branch("pileup_sigmarho",&VStoreMet.sigmarho,"sigmarho/D");
328 Top->Branch("scalefactor",&VStoreMet.scalefactor,"scalefactor/D");
329 Top->Branch("pileup_reweight",&VStoreMet.eventpuweight,"eventpuweight/D");
330 Top->Branch("pileup_reweightdown",&VStoreMet.eventpuweightdown,"eventpuweightdown/D");
331 Top->Branch("pileup_reweightup",&VStoreMet.eventpuweightup,"eventpuweightup/D");
332 Top->Branch("btagweight",&VStoreMet.eventbtagweight,"eventbtagweight/D");
333 Top->Branch("2btagweight_up",&VStoreMet.event2btagweight_up,"event2btagweight_up/D");
334 Top->Branch("2btagweight_down",&VStoreMet.event2btagweight_down,"event2btagweight_down/D");
335 Top->Branch("1btagweight_up",&VStoreMet.event1btagweight_up,"event1btagweight_up/D");
336 Top->Branch("1btagweight_down",&VStoreMet.event1btagweight_down,"event1btagweight_down/D");
337 Top->Branch("only1btagweight_up",&VStoreMet.eventonly1btagweight_up,"eventonly1btagweight_up/D");
338 Top->Branch("only1btagweight_down",&VStoreMet.eventonly1btagweight_down,"eventonly1btagweight_down/D");
339 Top->Branch("1btagweight",&VStoreMet.event1btagweight,"event1btagweight/D");// at least one btag weight factor
340 Top->Branch("only1btagweight",&VStoreMet.eventonly1btagweight,"eventonly1btagweight/D");// at least one btag weight factor
341 Top->Branch("only0btagweight",&VStoreMet.eventonly0btagweight,"eventonly0btagweight/D");// at least one btag weight factor
342 Top->Branch("csvbtagjetnum_up",&VStoreMet.csvbtagjetnum_up,"csvbtagjetnum_up/I");
343 Top->Branch("csvbtagjetnum_down",&VStoreMet.csvbtagjetnum_down,"csvbtagjetnum_down/I");
344 Top->Branch("flavorhistory",&VStoreMet.flavorhistory,"flavorhistory/I");
345
346 }
347 }
348
349 void StoreTreeVariable::InitialGeneral(){
350
351 if(StoreGeneral){
352 cout<<"We are inital General Branch"<<endl;
353
354 Top->Branch("run",&VStoreGeneral.Run,"Run/I");
355 Top->Branch("lumi",&VStoreGeneral.Lumi,"Lumi/I");
356 Top->Branch("event",&VStoreGeneral.Event,"Event/I");
357 Top->Branch("PUWeight",&VStoreGeneral.PUWeight,"PUWeight/D");
358
359 }
360 }
361
362 void StoreTreeVariable::InitialTrigger(){
363
364 if(StoreTrigger){
365 cout<<"We are nitial Trigger Bracn"<<endl;
366
367 Top->Branch("Trigger_Name",&VStoreTrigger.triggername,"triggername/I");
368 Top->Branch("Trigger_accept",&VStoreTrigger.accept,"accept/I");
369 Top->Branch("Trigger_prescale",&VStoreTrigger.prescale,"prescale/I");
370
371 }
372
373 }
374
375 void StoreTreeVariable::InitialVertex(){
376
377 if(StoreVertex){
378 cout<<"We are inital Vertex Branch"<<endl;
379
380 Top->Branch("nPVs",&VStoreVertex.numpvs,"numpvs/I");
381
382 }
383
384 }
385
386 void StoreTreeVariable::InitialAll(){
387
388 InitialVertex();
389 InitialTrigger();
390 InitialMuon();
391 InitialElectron();
392 InitialJet();
393 InitialMet();
394 InitialGeneral();
395 }