ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/algomez/FourTop/TreeAnalyzer/interface/StoreTreeVariable.h
Revision: 1.1
Committed: Wed Jan 4 01:01:33 2012 UTC (13 years, 4 months ago) by algomez
Content type: text/plain
Branch: MAIN
Log Message:
add a Tree in Ntuple

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