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

# 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    
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     }