ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/csander/JetResponse/JetResolutions.h
Revision: 1.1
Committed: Mon Sep 20 08:04:36 2010 UTC (14 years, 7 months ago) by csander
Content type: text/plain
Branch point for: JetResponse, MAIN
Log Message:
Initial revision

File Contents

# User Rev Content
1 csander 1.1 //////////////////////////////////////////////////////////
2     // This class has been automatically generated on
3     // Wed Apr 14 14:19:35 2010 by ROOT version 5.20/00
4     // from TTree DiJetTree/
5     // found on file: Summer09QCDFlat-MC_31X_V9_7TeV-v1_E/Summer09QCDFlat_Pt15to3000MC_31X_V9_7TeV-v1_1.root
6     //////////////////////////////////////////////////////////
7    
8     #ifndef JetResolutions_h
9     #define JetResolutions_h
10    
11     #include <TROOT.h>
12     #include <TChain.h>
13     #include <TFile.h>
14     #include <TSelector.h>
15     #include <TH1F.h>
16     #include <TF1.h>
17     #include <TStyle.h>
18     #include <TLorentzVector.h>
19     #include <TMath.h>
20     #include <TCanvas.h>
21    
22     #include <vector>
23     #include <string>
24     #include <cstring>
25     #include <iostream>
26    
27     using namespace std;
28    
29     class JetResolutions: public TSelector {
30     public:
31     TTree *fChain; //!pointer to the analyzed TTree or TChain
32    
33     // Declaration of leaf types
34     UInt_t RunNumber;
35     UInt_t LumiBlockNumber;
36     UInt_t EventNumber;
37     Bool_t HltPhysicsDelcared;
38     Int_t VtxNTracks;
39     Float_t VtxPosX;
40     Float_t VtxPosY;
41     Float_t VtxPosZ;
42     Float_t VtxNormalizedChi2;
43     Float_t VtxNDof;
44     Bool_t VtxIsFake;
45     Int_t NobjTow;
46     Int_t TowId[1000]; //[NobjTow]
47     Int_t TowId_phi[1000]; //[NobjTow]
48     Int_t TowId_eta[1000]; //[NobjTow]
49     Float_t TowEt[1000]; //[NobjTow]
50     Float_t TowEta[1000]; //[NobjTow]
51     Float_t TowPhi[1000]; //[NobjTow]
52     Float_t TowE[1000]; //[NobjTow]
53     Float_t TowEm[1000]; //[NobjTow]
54     Float_t TowHad[1000]; //[NobjTow]
55     Float_t TowOE[1000]; //[NobjTow]
56     Int_t Tow_jetidx[1000]; //[NobjTow]
57     UInt_t TowNumBadEcalCells[1000]; //[NobjTow]
58     UInt_t TowNumBadHcalCells[1000]; //[NobjTow]
59     UInt_t TowNumProblematicEcalCells[1000]; //[NobjTow]
60     UInt_t TowNumProblematicHcalCells[1000]; //[NobjTow]
61     UInt_t TowNumRecoveredEcalCells[1000]; //[NobjTow]
62     UInt_t TowNumRecoveredHcalCells[1000]; //[NobjTow]
63     Int_t NobjTrack;
64     Int_t TrackTowId[1000]; //[NobjTrack]
65     Int_t TrackTowIdPhi[1000]; //[NobjTrack]
66     Int_t TrackTowIdEta[1000]; //[NobjTrack]
67     Int_t TrackId[1000]; //[NobjTrack]
68     Int_t TrackNHits[1000]; //[NobjTrack]
69     Bool_t TrackQualityL[1000]; //[NobjTrack]
70     Bool_t TrackQualityT[1000]; //[NobjTrack]
71     Bool_t TrackQualityHP[1000]; //[NobjTrack]
72     Float_t TrackChi2[1000]; //[NobjTrack]
73     Float_t TrackPt[1000]; //[NobjTrack]
74     Float_t TrackEta[1000]; //[NobjTrack]
75     Float_t TrackPhi[1000]; //[NobjTrack]
76     Float_t TrackP[1000]; //[NobjTrack]
77     Float_t TrackDR[1000]; //[NobjTrack]
78     Float_t TrackPhiOut[1000]; //[NobjTrack]
79     Float_t TrackEtaOut[1000]; //[NobjTrack]
80     Float_t TrackDROut[1000]; //[NobjTrack]
81     Float_t TrackEMC1[1000]; //[NobjTrack]
82     Float_t TrackEMC3[1000]; //[NobjTrack]
83     Float_t TrackEMC5[1000]; //[NobjTrack]
84     Float_t TrackHAC1[1000]; //[NobjTrack]
85     Float_t TrackHAC3[1000]; //[NobjTrack]
86     Float_t TrackHAC5[1000]; //[NobjTrack]
87     Int_t Track_jetidx[1000]; //[NobjTrack]
88     Float_t MuDR[1000]; //[NobjTrack]
89     Float_t MuDE[1000]; //[NobjTrack]
90     Float_t TrackD0[1000]; //[NobjTrack]
91     Float_t TrackZ0[1000]; //[NobjTrack]
92     Int_t NobjJet;
93     Float_t JetPt[50]; //[NobjJet]
94     Float_t JetPhi[50]; //[NobjJet]
95     Float_t JetEta[50]; //[NobjJet]
96     Float_t JetEt[50]; //[NobjJet]
97     Float_t JetE[50]; //[NobjJet]
98     Int_t JetN90Hits[50]; //[NobjJet]
99     Float_t JetEMF[50]; //[NobjJet]
100     Float_t JetFHPD[50]; //[NobjJet]
101     Float_t JetFRBX[50]; //[NobjJet]
102     Float_t JetEtWeightedSigmaPhi[50]; //[NobjJet]
103     Float_t JetEtWeightedSigmaEta[50]; //[NobjJet]
104     Float_t JetCorrZSP[50]; //[NobjJet]
105     Float_t JetCorrL2[50]; //[NobjJet]
106     Float_t JetCorrL3[50]; //[NobjJet]
107     Float_t JetCorrJPT[50]; //[NobjJet]
108     Float_t JetCorrL2L3[50]; //[NobjJet]
109     Float_t JetCorrL2L3JPT[50]; //[NobjJet]
110     Float_t JetGenJetDeltaR[50]; //[NobjJet]
111     Float_t GenJetPt[50]; //[NobjJet]
112     Float_t GenJetPhi[50]; //[NobjJet]
113     Float_t GenJetEta[50]; //[NobjJet]
114     Float_t GenJetEt[50]; //[NobjJet]
115     Float_t GenJetE[50]; //[NobjJet]
116     Int_t NobjGenJet;
117     Float_t GenJetColPt[50]; //[NobjGenJet]
118     Float_t GenJetColPhi[50]; //[NobjGenJet]
119     Float_t GenJetColEta[50]; //[NobjGenJet]
120     Float_t GenJetColEt[50]; //[NobjGenJet]
121     Float_t GenJetColE[50]; //[NobjGenJet]
122     Float_t GenJetColEmE[50]; //[NobjGenJet]
123     Float_t GenJetColHadE[50]; //[NobjGenJet]
124     Float_t GenJetColInvE[50]; //[NobjGenJet]
125     Float_t GenJetColAuxE[50]; //[NobjGenJet]
126     Int_t GenJetColJetIdx[50]; //[NobjGenJet]
127     Int_t NobjGenJetPart;
128     Float_t GenJetPartE[1000]; //[NobjGenJetPart]
129     Float_t GenJetPartPt[1000]; //[NobjGenJetPart]
130     Float_t GenJetPartEta[1000]; //[NobjGenJetPart]
131     Float_t GenJetPartPhi[1000]; //[NobjGenJetPart]
132     Int_t GenJetPartPDG[1000]; //[NobjGenJetPart]
133     Int_t GenJetPartGenJetColIdx[1000]; //[NobjGenJetPart]
134     Float_t GenPartPt_algo[50]; //[NobjJet]
135     Float_t GenPartPhi_algo[50]; //[NobjJet]
136     Float_t GenPartEta_algo[50]; //[NobjJet]
137     Float_t GenPartEt_algo[50]; //[NobjJet]
138     Float_t GenPartE_algo[50]; //[NobjJet]
139     Float_t GenPartM_algo[50]; //[NobjJet]
140     Int_t GenPartId_algo[50]; //[NobjJet]
141     Float_t GenPartPt_phys[50]; //[NobjJet]
142     Float_t GenPartPhi_phys[50]; //[NobjJet]
143     Float_t GenPartEta_phys[50]; //[NobjJet]
144     Float_t GenPartEt_phys[50]; //[NobjJet]
145     Float_t GenPartE_phys[50]; //[NobjJet]
146     Float_t GenPartM_phys[50]; //[NobjJet]
147     Int_t GenPartId_phys[50]; //[NobjJet]
148     Float_t GenEvtScale;
149     Float_t Met;
150     Float_t MetPhi;
151     Float_t MetSum;
152     Float_t Weight;
153    
154     // List of branches
155     TBranch *b_RunNumber; //!
156     TBranch *b_LumiBlockNumber; //!
157     TBranch *b_EventNumber; //!
158     TBranch *b_HltPhysicsDelcared; //!
159     TBranch *b_VtxNTracks; //!
160     TBranch *b_VtxPosX; //!
161     TBranch *b_VtxPosY; //!
162     TBranch *b_VtxPosZ; //!
163     TBranch *b_VtxNormalizedChi2; //!
164     TBranch *b_VtxNDof; //!
165     TBranch *b_VtxIsFake; //!
166     TBranch *b_NobjTow; //!
167     TBranch *b_TowId; //!
168     TBranch *b_TowId_phi; //!
169     TBranch *b_TowId_eta; //!
170     TBranch *b_TowEt; //!
171     TBranch *b_TowEta; //!
172     TBranch *b_TowPhi; //!
173     TBranch *b_TowE; //!
174     TBranch *b_TowEm; //!
175     TBranch *b_TowHad; //!
176     TBranch *b_TowOE; //!
177     TBranch *b_Tow_jetidx; //!
178     TBranch *b_TowNumBadEcalCells; //!
179     TBranch *b_TowNumBadHcalCells; //!
180     TBranch *b_TowNumProblematicEcalCells; //!
181     TBranch *b_TowNumProblematicHcalCells; //!
182     TBranch *b_TowNumRecoveredEcalCells; //!
183     TBranch *b_TowNumRecoveredHcalCells; //!
184     TBranch *b_NobjTrack; //!
185     TBranch *b_TrackTowId; //!
186     TBranch *b_TrackTowIdPhi; //!
187     TBranch *b_TrackTowIdEta; //!
188     TBranch *b_TrackId; //!
189     TBranch *b_TrackNHits; //!
190     TBranch *b_TrackQualityL; //!
191     TBranch *b_TrackQualityT; //!
192     TBranch *b_TrackQualityHP; //!
193     TBranch *b_TrackChi2; //!
194     TBranch *b_TrackPt; //!
195     TBranch *b_TrackEta; //!
196     TBranch *b_TrackPhi; //!
197     TBranch *b_TrackP; //!
198     TBranch *b_TrackDR; //!
199     TBranch *b_TrackPhiOut; //!
200     TBranch *b_TrackEtaOut; //!
201     TBranch *b_TrackDROut; //!
202     TBranch *b_TrackEMC1; //!
203     TBranch *b_TrackEMC3; //!
204     TBranch *b_TrackEMC5; //!
205     TBranch *b_TrackHAC1; //!
206     TBranch *b_TrackHAC3; //!
207     TBranch *b_TrackHAC5; //!
208     TBranch *b_Track_jetidx; //!
209     TBranch *b_MuDR; //!
210     TBranch *b_MuDE; //!
211     TBranch *b_TrackD0; //!
212     TBranch *b_TrackZ0; //!
213     TBranch *b_NobjJet; //!
214     TBranch *b_JetPt; //!
215     TBranch *b_JetPhi; //!
216     TBranch *b_JetEta; //!
217     TBranch *b_JetEt; //!
218     TBranch *b_JetE; //!
219     TBranch *b_JetN90Hits; //!
220     TBranch *b_JetEMF; //!
221     TBranch *b_JetFHPD; //!
222     TBranch *b_JetFRBX; //!
223     TBranch *b_JetEtWeightedSigmaPhi; //!
224     TBranch *b_JetEtWeightedSigmaEta; //!
225     TBranch *b_JetCorrZSP; //!
226     TBranch *b_JetCorrL2; //!
227     TBranch *b_JetCorrL3; //!
228     TBranch *b_JetCorrJPT; //!
229     TBranch *b_JetCorrL2L3; //!
230     TBranch *b_JetCorrL2L3JPT; //!
231     TBranch *b_JetGenJetDeltaR; //!
232     TBranch *b_GenJetPt; //!
233     TBranch *b_GenJetPhi; //!
234     TBranch *b_GenJetEta; //!
235     TBranch *b_GenJetEt; //!
236     TBranch *b_GenJetE; //!
237     TBranch *b_NobjGenJet; //!
238     TBranch *b_GenJetColPt; //!
239     TBranch *b_GenJetColPhi; //!
240     TBranch *b_GenJetColEta; //!
241     TBranch *b_GenJetColEt; //!
242     TBranch *b_GenJetColE; //!
243     TBranch *b_GenJetColEmE; //!
244     TBranch *b_GenJetColHadE; //!
245     TBranch *b_GenJetColInvE; //!
246     TBranch *b_GenJetColAuxE; //!
247     TBranch *b_GenJetColJetIdx; //!
248     TBranch *b_NobjGenJetPart; //!
249     TBranch *b_GenJetPartE; //!
250     TBranch *b_GenJetPartPt; //!
251     TBranch *b_GenJetPartEta; //!
252     TBranch *b_GenJetPartPhi; //!
253     TBranch *b_GenJetPartPDG; //!
254     TBranch *b_GenJetPartGenJetColIdx; //!
255     TBranch *b_GenPartPt_algo; //!
256     TBranch *b_GenPartPhi_algo; //!
257     TBranch *b_GenPartEta_algo; //!
258     TBranch *b_GenPartEt_algo; //!
259     TBranch *b_GenPartE_algo; //!
260     TBranch *b_GenPartM_algo; //!
261     TBranch *b_GenPartId_algo; //!
262     TBranch *b_GenPartPt_phys; //!
263     TBranch *b_GenPartPhi_phys; //!
264     TBranch *b_GenPartEta_phys; //!
265     TBranch *b_GenPartEt_phys; //!
266     TBranch *b_GenPartE_phys; //!
267     TBranch *b_GenPartM_phys; //!
268     TBranch *b_GenPartId_phys; //!
269     TBranch *b_GenEvtScale; //!
270     TBranch *b_Met; //!
271     TBranch *b_MetPhi; //!
272     TBranch *b_MetSum; //!
273     TBranch *b_Weight; //!
274    
275     JetResolutions(TTree * /*tree*/= 0) {
276     }
277     virtual ~JetResolutions() {
278     }
279     virtual Int_t Version() const {
280     return 2;
281     }
282     virtual void Begin(TTree *tree);
283     virtual void SlaveBegin(TTree *tree);
284     virtual void Init(TTree *tree);
285     virtual Bool_t Notify();
286     virtual Bool_t Process(Long64_t entry);
287     virtual Int_t GetEntry(Long64_t entry, Int_t getall = 0) {
288     return fChain ? fChain->GetTree()->GetEntry(entry, getall) : 0;
289     }
290     virtual void SetOption(const char *option) {
291     fOption = option;
292     }
293     virtual void SetObject(TObject *obj) {
294     fObject = obj;
295     }
296     virtual void SetInputList(TList *input) {
297     fInput = input;
298     }
299     virtual TList *GetOutputList() const {
300     return fOutput;
301     }
302     virtual void SlaveTerminate();
303     virtual void Terminate();
304    
305     //// Members
306     int EBin(const double& e);
307     int PtBin(const double& pt);
308     int EtaBin(const double& eta);
309     vector<vector<TH1F*> > h_JetResPt_Pt;
310     vector<vector<TH1F*> > h_JetResPt_E;
311     vector<vector<TH1F*> > h_JetResEta_Pt;
312     vector<vector<TH1F*> > h_JetResEta_E;
313     vector<vector<TH1F*> > h_JetResPhi_Pt;
314     vector<vector<TH1F*> > h_JetResPhi_E;
315     vector<double> EBinEdges;
316     vector<double> PtBinEdges;
317     vector<double> EtaBinEdges;
318    
319     //ClassDef(JetResolutions,0);
320     };
321    
322     #endif
323    
324     #ifdef JetResolutions_cxx
325     void JetResolutions::Init(TTree *tree)
326     {
327     // The Init() function is called when the selector needs to initialize
328     // a new tree or chain. Typically here the branch addresses and branch
329     // pointers of the tree will be set.
330     // It is normally not necessary to make changes to the generated
331     // code, but the routine can be extended by the user if needed.
332     // Init() will be called many times when running on PROOF
333     // (once per file to be processed).
334    
335     // Set branch addresses and branch pointers
336     if (!tree) return;
337     fChain = tree;
338     //fChain->SetMakeClass(1);
339    
340     fChain->SetBranchAddress("RunNumber", &RunNumber, &b_RunNumber);
341     fChain->SetBranchAddress("LumiBlockNumber", &LumiBlockNumber, &b_LumiBlockNumber);
342     fChain->SetBranchAddress("EventNumber", &EventNumber, &b_EventNumber);
343     fChain->SetBranchAddress("HltPhysicsDelcared", &HltPhysicsDelcared, &b_HltPhysicsDelcared);
344     fChain->SetBranchAddress("VtxNTracks", &VtxNTracks, &b_VtxNTracks);
345     fChain->SetBranchAddress("VtxPosX", &VtxPosX, &b_VtxPosX);
346     fChain->SetBranchAddress("VtxPosY", &VtxPosY, &b_VtxPosY);
347     fChain->SetBranchAddress("VtxPosZ", &VtxPosZ, &b_VtxPosZ);
348     fChain->SetBranchAddress("VtxNormalizedChi2", &VtxNormalizedChi2, &b_VtxNormalizedChi2);
349     fChain->SetBranchAddress("VtxNDof", &VtxNDof, &b_VtxNDof);
350     fChain->SetBranchAddress("VtxIsFake", &VtxIsFake, &b_VtxIsFake);
351     fChain->SetBranchAddress("NobjTow", &NobjTow, &b_NobjTow);
352     fChain->SetBranchAddress("TowId", TowId, &b_TowId);
353     fChain->SetBranchAddress("TowId_phi", TowId_phi, &b_TowId_phi);
354     fChain->SetBranchAddress("TowId_eta", TowId_eta, &b_TowId_eta);
355     fChain->SetBranchAddress("TowEt", TowEt, &b_TowEt);
356     fChain->SetBranchAddress("TowEta", TowEta, &b_TowEta);
357     fChain->SetBranchAddress("TowPhi", TowPhi, &b_TowPhi);
358     fChain->SetBranchAddress("TowE", TowE, &b_TowE);
359     fChain->SetBranchAddress("TowEm", TowEm, &b_TowEm);
360     fChain->SetBranchAddress("TowHad", TowHad, &b_TowHad);
361     fChain->SetBranchAddress("TowOE", TowOE, &b_TowOE);
362     fChain->SetBranchAddress("Tow_jetidx", Tow_jetidx, &b_Tow_jetidx);
363     fChain->SetBranchAddress("TowNumBadEcalCells", TowNumBadEcalCells, &b_TowNumBadEcalCells);
364     fChain->SetBranchAddress("TowNumBadHcalCells", TowNumBadHcalCells, &b_TowNumBadHcalCells);
365     fChain->SetBranchAddress("TowNumProblematicEcalCells", TowNumProblematicEcalCells, &b_TowNumProblematicEcalCells);
366     fChain->SetBranchAddress("TowNumProblematicHcalCells", TowNumProblematicHcalCells, &b_TowNumProblematicHcalCells);
367     fChain->SetBranchAddress("TowNumRecoveredEcalCells", TowNumRecoveredEcalCells, &b_TowNumRecoveredEcalCells);
368     fChain->SetBranchAddress("TowNumRecoveredHcalCells", TowNumRecoveredHcalCells, &b_TowNumRecoveredHcalCells);
369     fChain->SetBranchAddress("NobjTrack", &NobjTrack, &b_NobjTrack);
370     fChain->SetBranchAddress("TrackTowId", TrackTowId, &b_TrackTowId);
371     fChain->SetBranchAddress("TrackTowIdPhi", TrackTowIdPhi, &b_TrackTowIdPhi);
372     fChain->SetBranchAddress("TrackTowIdEta", TrackTowIdEta, &b_TrackTowIdEta);
373     fChain->SetBranchAddress("TrackId", TrackId, &b_TrackId);
374     fChain->SetBranchAddress("TrackNHits", TrackNHits, &b_TrackNHits);
375     fChain->SetBranchAddress("TrackQualityL", TrackQualityL, &b_TrackQualityL);
376     fChain->SetBranchAddress("TrackQualityT", TrackQualityT, &b_TrackQualityT);
377     fChain->SetBranchAddress("TrackQualityHP", TrackQualityHP, &b_TrackQualityHP);
378     fChain->SetBranchAddress("TrackChi2", TrackChi2, &b_TrackChi2);
379     fChain->SetBranchAddress("TrackPt", TrackPt, &b_TrackPt);
380     fChain->SetBranchAddress("TrackEta", TrackEta, &b_TrackEta);
381     fChain->SetBranchAddress("TrackPhi", TrackPhi, &b_TrackPhi);
382     fChain->SetBranchAddress("TrackP", TrackP, &b_TrackP);
383     fChain->SetBranchAddress("TrackDR", TrackDR, &b_TrackDR);
384     fChain->SetBranchAddress("TrackPhiOut", TrackPhiOut, &b_TrackPhiOut);
385     fChain->SetBranchAddress("TrackEtaOut", TrackEtaOut, &b_TrackEtaOut);
386     fChain->SetBranchAddress("TrackDROut", TrackDROut, &b_TrackDROut);
387     fChain->SetBranchAddress("TrackEMC1", TrackEMC1, &b_TrackEMC1);
388     fChain->SetBranchAddress("TrackEMC3", TrackEMC3, &b_TrackEMC3);
389     fChain->SetBranchAddress("TrackEMC5", TrackEMC5, &b_TrackEMC5);
390     fChain->SetBranchAddress("TrackHAC1", TrackHAC1, &b_TrackHAC1);
391     fChain->SetBranchAddress("TrackHAC3", TrackHAC3, &b_TrackHAC3);
392     fChain->SetBranchAddress("TrackHAC5", TrackHAC5, &b_TrackHAC5);
393     fChain->SetBranchAddress("Track_jetidx", Track_jetidx, &b_Track_jetidx);
394     fChain->SetBranchAddress("MuDR", MuDR, &b_MuDR);
395     fChain->SetBranchAddress("MuDE", MuDE, &b_MuDE);
396     fChain->SetBranchAddress("TrackD0", TrackD0, &b_TrackD0);
397     fChain->SetBranchAddress("TrackZ0", TrackZ0, &b_TrackZ0);
398     fChain->SetBranchAddress("NobjJet", &NobjJet, &b_NobjJet);
399     fChain->SetBranchAddress("JetPt", JetPt, &b_JetPt);
400     fChain->SetBranchAddress("JetPhi", JetPhi, &b_JetPhi);
401     fChain->SetBranchAddress("JetEta", JetEta, &b_JetEta);
402     fChain->SetBranchAddress("JetEt", JetEt, &b_JetEt);
403     fChain->SetBranchAddress("JetE", JetE, &b_JetE);
404     fChain->SetBranchAddress("JetN90Hits", JetN90Hits, &b_JetN90Hits);
405     fChain->SetBranchAddress("JetEMF", JetEMF, &b_JetEMF);
406     fChain->SetBranchAddress("JetFHPD", JetFHPD, &b_JetFHPD);
407     fChain->SetBranchAddress("JetFRBX", JetFRBX, &b_JetFRBX);
408     fChain->SetBranchAddress("JetEtWeightedSigmaPhi", JetEtWeightedSigmaPhi, &b_JetEtWeightedSigmaPhi);
409     fChain->SetBranchAddress("JetEtWeightedSigmaEta", JetEtWeightedSigmaEta, &b_JetEtWeightedSigmaEta);
410     fChain->SetBranchAddress("JetCorrZSP", JetCorrZSP, &b_JetCorrZSP);
411     fChain->SetBranchAddress("JetCorrL2", JetCorrL2, &b_JetCorrL2);
412     fChain->SetBranchAddress("JetCorrL3", JetCorrL3, &b_JetCorrL3);
413     fChain->SetBranchAddress("JetCorrJPT", JetCorrJPT, &b_JetCorrJPT);
414     fChain->SetBranchAddress("JetCorrL2L3", JetCorrL2L3, &b_JetCorrL2L3);
415     fChain->SetBranchAddress("JetCorrL2L3JPT", JetCorrL2L3JPT, &b_JetCorrL2L3JPT);
416     fChain->SetBranchAddress("JetGenJetDeltaR", JetGenJetDeltaR, &b_JetGenJetDeltaR);
417     fChain->SetBranchAddress("GenJetPt", GenJetPt, &b_GenJetPt);
418     fChain->SetBranchAddress("GenJetPhi", GenJetPhi, &b_GenJetPhi);
419     fChain->SetBranchAddress("GenJetEta", GenJetEta, &b_GenJetEta);
420     fChain->SetBranchAddress("GenJetEt", GenJetEt, &b_GenJetEt);
421     fChain->SetBranchAddress("GenJetE", GenJetE, &b_GenJetE);
422     fChain->SetBranchAddress("NobjGenJet", &NobjGenJet, &b_NobjGenJet);
423     fChain->SetBranchAddress("GenJetColPt", GenJetColPt, &b_GenJetColPt);
424     fChain->SetBranchAddress("GenJetColPhi", GenJetColPhi, &b_GenJetColPhi);
425     fChain->SetBranchAddress("GenJetColEta", GenJetColEta, &b_GenJetColEta);
426     fChain->SetBranchAddress("GenJetColEt", GenJetColEt, &b_GenJetColEt);
427     fChain->SetBranchAddress("GenJetColE", GenJetColE, &b_GenJetColE);
428     fChain->SetBranchAddress("GenJetColEmE", GenJetColEmE, &b_GenJetColEmE);
429     fChain->SetBranchAddress("GenJetColHadE", GenJetColHadE, &b_GenJetColHadE);
430     fChain->SetBranchAddress("GenJetColInvE", GenJetColInvE, &b_GenJetColInvE);
431     fChain->SetBranchAddress("GenJetColAuxE", GenJetColAuxE, &b_GenJetColAuxE);
432     fChain->SetBranchAddress("GenJetColJetIdx", GenJetColJetIdx, &b_GenJetColJetIdx);
433     fChain->SetBranchAddress("NobjGenJetPart", &NobjGenJetPart, &b_NobjGenJetPart);
434     fChain->SetBranchAddress("GenJetPartE", GenJetPartE, &b_GenJetPartE);
435     fChain->SetBranchAddress("GenJetPartPt", GenJetPartPt, &b_GenJetPartPt);
436     fChain->SetBranchAddress("GenJetPartEta", GenJetPartEta, &b_GenJetPartEta);
437     fChain->SetBranchAddress("GenJetPartPhi", GenJetPartPhi, &b_GenJetPartPhi);
438     fChain->SetBranchAddress("GenJetPartPDG", GenJetPartPDG, &b_GenJetPartPDG);
439     fChain->SetBranchAddress("GenJetPartGenJetColIdx", GenJetPartGenJetColIdx, &b_GenJetPartGenJetColIdx);
440     fChain->SetBranchAddress("GenPartPt_algo", GenPartPt_algo, &b_GenPartPt_algo);
441     fChain->SetBranchAddress("GenPartPhi_algo", GenPartPhi_algo, &b_GenPartPhi_algo);
442     fChain->SetBranchAddress("GenPartEta_algo", GenPartEta_algo, &b_GenPartEta_algo);
443     fChain->SetBranchAddress("GenPartEt_algo", GenPartEt_algo, &b_GenPartEt_algo);
444     fChain->SetBranchAddress("GenPartE_algo", GenPartE_algo, &b_GenPartE_algo);
445     fChain->SetBranchAddress("GenPartM_algo", GenPartM_algo, &b_GenPartM_algo);
446     fChain->SetBranchAddress("GenPartId_algo", GenPartId_algo, &b_GenPartId_algo);
447     fChain->SetBranchAddress("GenPartPt_phys", GenPartPt_phys, &b_GenPartPt_phys);
448     fChain->SetBranchAddress("GenPartPhi_phys", GenPartPhi_phys, &b_GenPartPhi_phys);
449     fChain->SetBranchAddress("GenPartEta_phys", GenPartEta_phys, &b_GenPartEta_phys);
450     fChain->SetBranchAddress("GenPartEt_phys", GenPartEt_phys, &b_GenPartEt_phys);
451     fChain->SetBranchAddress("GenPartE_phys", GenPartE_phys, &b_GenPartE_phys);
452     fChain->SetBranchAddress("GenPartM_phys", GenPartM_phys, &b_GenPartM_phys);
453     fChain->SetBranchAddress("GenPartId_phys", GenPartId_phys, &b_GenPartId_phys);
454     fChain->SetBranchAddress("GenEvtScale", &GenEvtScale, &b_GenEvtScale);
455     fChain->SetBranchAddress("Met", &Met, &b_Met);
456     fChain->SetBranchAddress("MetPhi", &MetPhi, &b_MetPhi);
457     fChain->SetBranchAddress("MetSum", &MetSum, &b_MetSum);
458     fChain->SetBranchAddress("Weight", &Weight, &b_Weight);
459     }
460    
461     Bool_t JetResolutions::Notify()
462     {
463     // The Notify() function is called when a new file is opened. This
464     // can be either for a new TTree in a TChain or when when a new TTree
465     // is started when using PROOF. It is normally not necessary to make changes
466     // to the generated code, but the routine can be extended by the
467     // user if needed. The return value is currently not used.
468    
469     return kTRUE;
470     }
471    
472     //Crystal ball function for signal, parameters are 0:alpha, 1:n, 2:mean, 3:sigma, 4:normalization;
473     Double_t CrystalBall(Double_t *x,Double_t *par) {
474    
475     Double_t t = (x[0]-par[2])/par[3];
476     if (par[0] < 0) t = -t;
477    
478     Double_t absAlpha = fabs((Double_t)par[0]);
479    
480     if (t >= -absAlpha) {
481     return par[4]*exp(-0.5*t*t);
482     }
483     else {
484     Double_t a = TMath::Power(par[1]/absAlpha,par[1])*exp(-0.5*absAlpha*absAlpha);
485     Double_t b = par[1]/absAlpha - absAlpha;
486    
487     return par[4]*(a/TMath::Power(b - t, par[1]));
488     }
489     }
490    
491     //Double sided crystal ball function for signal, parameters are 0:alpha_l, 1:n_l, 2:alpha_r, 3:n_r 4:mean, 5:sigma, 6:normalization;
492     Double_t DSCrystalBall(Double_t *x,Double_t *par) {
493    
494     Double_t t = (x[0]-par[4])/par[5];
495    
496     Double_t absAlpha_l = fabs((Double_t)par[0]);
497     Double_t absAlpha_r = fabs((Double_t)par[2]);
498     Double_t pow_l = fabs((Double_t)par[1]);
499     Double_t pow_r = fabs((Double_t)par[3]);
500    
501     if (t > -absAlpha_l && t < absAlpha_r) {
502     return par[6]*exp(-0.5*t*t);
503     } else if (t <= -absAlpha_l) {
504     Double_t a = TMath::Power(pow_l/absAlpha_l,pow_l)*exp(-0.5*absAlpha_l*absAlpha_l);
505     Double_t b = pow_l/absAlpha_l - absAlpha_l;
506     return par[6]*(a/TMath::Power(b - t, pow_l));
507     } else if (t >= absAlpha_r) {
508     Double_t a = TMath::Power(pow_r/absAlpha_r,pow_r)*exp(-0.5*absAlpha_r*absAlpha_r);
509     Double_t b = pow_r/absAlpha_r - absAlpha_r;
510     return par[6]*(a/TMath::Power(b + t, pow_r));
511     }
512     cout<<"This should never happen!"<<endl;
513     return 0;
514     }
515    
516     #endif // #ifdef JetResolutions_cxx