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