ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitPhysics/Mods/interface/PhotonTreeWriter.h
Revision: 1.4
Committed: Fri Nov 18 00:07:16 2011 UTC (13 years, 5 months ago) by bendavid
Content type: text/plain
Branch: MAIN
Changes since 1.3: +35 -1 lines
Log Message:
8 cat energy smearing and scaling, bdt vertex selection and probability, scaled pt cuts for photons

File Contents

# User Rev Content
1 bendavid 1.1 //--------------------------------------------------------------------------------------------------
2 bendavid 1.4 // $Id: PhotonTreeWriter.h,v 1.3 2011/10/07 09:56:36 bendavid Exp $
3 bendavid 1.1 //
4     // PhotonTreeWriter
5     //
6     // Authors: J. Bendavid
7     //--------------------------------------------------------------------------------------------------
8    
9     #ifndef MITPHYSICS_MODS_PHOTONTREEWRITER_H
10     #define MITPHYSICS_MODS_PHOTONTREEWRITER_H
11    
12     #include "MitAna/TreeMod/interface/BaseMod.h"
13     #include "MitAna/DataTree/interface/PhotonFwd.h"
14     #include "MitAna/DataTree/interface/TrackCol.h"
15     #include "MitAna/DataTree/interface/VertexCol.h"
16     #include "MitAna/DataTree/interface/BeamSpotCol.h"
17     #include "MitAna/DataTree/interface/PFCandidateCol.h"
18     #include "MitAna/DataTree/interface/PileupEnergyDensityCol.h"
19     #include "MitAna/DataTree/interface/DecayParticleCol.h"
20     #include "MitAna/DataTree/interface/ElectronCol.h"
21     #include "MitAna/DataTree/interface/DecayParticleCol.h"
22     #include "MitAna/DataTree/interface/PileupInfoCol.h"
23     #include "MitAna/DataTree/interface/MCParticleCol.h"
24 bendavid 1.2 #include "MitAna/DataTree/interface/SuperClusterCol.h"
25     #include "MitAna/DataTree/interface/PFMetCol.h"
26     #include "MitPhysics/Utils/interface/PhotonFix.h"
27 bendavid 1.1 #include "MitPhysics/Utils/interface/PhotonTools.h"
28    
29     class TNtuple;
30     class TRandom3;
31    
32     namespace mithep
33     {
34    
35     class PhotonTreeWriterPhoton
36     {
37     public:
38 bendavid 1.2 void SetVars(const Photon *p, const DecayParticle *c, const Electron *ele, const SuperCluster *pfsc, const MCParticle *m, PhotonFix &phfixph, PhotonFix &phfixele);
39 bendavid 1.1 Float_t Ecor() const { return ecor; };
40     Float_t Ecorerr() const { return ecorerr; };
41 bendavid 1.2 Float_t Ecorele() const { return ecorele; };
42     Float_t Ecoreleerr() const { return ecoreleerr; };
43 bendavid 1.1
44     private:
45 bendavid 1.2 Bool_t hasphoton;
46 bendavid 1.1 Float_t e;
47     Float_t pt;
48     Float_t eta;
49     Float_t phi;
50     Float_t r9;
51     Float_t e3x3;
52     Float_t e5x5;
53     Float_t sce;
54     Float_t scrawe;
55     Float_t scpse;
56     Float_t sceta;
57     Float_t scphi;
58     UInt_t scnclusters;
59     UInt_t scnhits;
60 bendavid 1.2 Float_t scetawidth;
61     Float_t scphiwidth;
62 bendavid 1.1 Float_t hovere;
63     Float_t sigietaieta;
64     Bool_t isbarrel;
65     Bool_t isr9reco;
66     Bool_t isr9cat;
67 bendavid 1.2 Char_t phcat;
68     Float_t eerr;
69     Float_t eerrsmeared;
70 bendavid 1.3 Float_t esmearing;
71 bendavid 1.1
72     //quantities from seed basic cluster
73     Float_t sigiphiphi;
74     Float_t covietaiphi;
75     Float_t emax;
76     Float_t e2nd;
77     Float_t etop;
78     Float_t ebottom;
79     Float_t eleft;
80     Float_t eright;
81     Float_t e1x3;
82     Float_t e3x1;
83     Float_t e1x5;
84     Float_t e2x2;
85     Float_t e4x4;
86     Float_t e2x5max;
87     Float_t e2x5top;
88     Float_t e2x5bottom;
89     Float_t e2x5left;
90     Float_t e2x5right;
91 bendavid 1.4 Float_t xseed;
92     Float_t yseed;
93     Float_t zseed;
94    
95 bendavid 1.2 Float_t eseed;
96 bendavid 1.4 Float_t etaseed;
97     Float_t phiseed;
98     Int_t ietaseed;
99     Int_t iphiseed;
100     Int_t ixseed;
101     Int_t iyseed;
102     Float_t etacryseed;
103     Float_t phicryseed;
104     Float_t xcryseed;
105     Float_t ycryseed;
106     Float_t thetaaxisseed;
107     Float_t phiaxisseed;
108    
109     //quantities from second basic cluster, if present
110     Float_t ebc2;
111     Float_t etabc2;
112     Float_t phibc2;
113     Int_t ietabc2;
114     Int_t iphibc2;
115     Int_t ixbc2;
116     Int_t iybc2;
117     Float_t etacrybc2;
118     Float_t phicrybc2;
119     Float_t xcrybc2;
120     Float_t ycrybc2;
121     Float_t thetaaxisbc2;
122     Float_t phiaxisbc2;
123 bendavid 1.1
124     //energy correction quantities from PhotonFix
125     Float_t ecor;
126     Float_t ecorerr;
127 bendavid 1.2 Float_t ecorele;
128     Float_t ecoreleerr;
129 bendavid 1.1 Float_t etac;
130     Float_t etas;
131     Float_t etam;
132     Float_t phic;
133     Float_t phis;
134     Float_t phim;
135     Float_t xz;
136     Float_t xc;
137     Float_t xs;
138     Float_t xm;
139     Float_t yz;
140     Float_t yc;
141     Float_t ys;
142     Float_t ym;
143    
144     //conversion quantities
145     Bool_t hasconversion;
146     Float_t convp;
147     Float_t convpt;
148     Float_t conveta;
149     Float_t convphi;
150     Float_t convdeta;
151     Float_t convdphi;
152     Float_t convvtxrho;
153     Float_t convvtxz;
154     Float_t convvtxphi;
155     Float_t convleadpt;
156     Float_t convtrailpt;
157     Float_t convleadtrackpt;
158     Char_t convleadtrackalgo;
159     Char_t convleadtrackalgos;
160     Char_t convleadtrackcharge;
161     Float_t convtrailtrackpt;
162     Char_t convtrailtrackalgo;
163     Char_t convtrailtrackalgos;
164     Char_t trailtrackcharge;
165    
166 bendavid 1.2 //electron quantities
167     Bool_t haselectron;
168     Bool_t eleisecaldriven;
169     Bool_t eleistrackerdriven;
170     Float_t elee;
171     Float_t elept;
172     Float_t eleeta;
173     Float_t elephi;
174     Char_t elecharge;
175     Float_t elefbrem;
176     Float_t eledeta;
177     Float_t eledphi;
178     Float_t elep;
179     Float_t elepin;
180     Float_t elepout;
181    
182     //pf supercluster quantities
183     Bool_t haspfsc;
184     Float_t pfsce;
185     Float_t pfscrawe;
186     Float_t pfsceta;
187     Float_t pfscphi;
188 bendavid 1.1
189     //generator level quantities
190     Bool_t ispromptgen;
191     Float_t gene;
192     Float_t genpt;
193     Float_t geneta;
194     Float_t genphi;
195     Float_t genz;
196    
197    
198    
199     };
200    
201     class PhotonTreeWriterDiphotonEvent
202     {
203     public:
204     Float_t rho;
205     Float_t genHiggspt;
206     Float_t genHiggsZ;
207     Float_t genmass;
208     Float_t gencostheta;
209 bendavid 1.2 Float_t bsX;
210     Float_t bsY;
211     Float_t bsZ;
212     Float_t vtxX;
213     Float_t vtxY;
214 bendavid 1.1 Float_t vtxZ;
215     Int_t nVtx;
216     Int_t numPU;
217     Int_t numPUminus;
218     Int_t numPUplus;
219     Float_t mass;
220 bendavid 1.2 Float_t masserr;
221     Float_t masserrsmeared;
222 bendavid 1.4 Float_t masserrwrongvtx;
223     Float_t masserrsmearedwrongvtx;
224     Float_t vtxprob;
225 bendavid 1.1 Float_t ptgg;
226     Float_t costheta;
227 bendavid 1.2 Float_t massele;
228     Float_t ptee;
229     Float_t costhetaele;
230     Float_t mt;
231     Float_t cosphimet;
232     Float_t mtele;
233     Float_t cosphimetele;
234 bendavid 1.1 UInt_t evt;
235     UInt_t run;
236     UInt_t lumi;
237     UChar_t evtcat;
238 bendavid 1.2 UInt_t nobj;
239     Float_t pfmet;
240     Float_t pfmetphi;
241     Float_t pfmetx;
242     Float_t pfmety;
243     Bool_t ismc;
244 bendavid 1.1
245     //corrected quantities from PhotonFix corrections
246     Float_t masscor;
247     Float_t masscorerr;
248 bendavid 1.2 Float_t masscorele;
249     Float_t masscoreleerr;
250 bendavid 1.1
251     PhotonTreeWriterPhoton photons[2];
252    
253    
254     };
255    
256     class PhotonTreeWriter : public BaseMod
257     {
258     public:
259     PhotonTreeWriter(const char *name ="PhotonTreeWriter",
260     const char *title="Selecting PhotonPairs");
261    
262     ~PhotonTreeWriter();
263    
264     // setting all the input Names
265     void SetInputPhotonsName(const char *n){ fPhotonBranchName= n; }
266     void SetPhotonsFromBranch(bool b) { fPhotonsFromBranch = b; }
267     void SetTrackName(const char *n) { fTrackBranchName = n; }
268     void SetElectronName(const char *n) { fElectronName = n; }
269     void SetConversionName(const char *n) { fConversionName = n; }
270     void SetPUDensityName(const char *n) { fPileUpDenName = n; }
271     void SetPVName(const char *n) { fPVName = n; }
272     void SetPVFromBranch(bool b) { fPVFromBranch = b; }
273     void SetMCParticle(const char *n) { fMCParticleName = n; }
274     void SetPUInfoName(const char *n) { fPileUpName = n; }
275     void SetBeamspotName(const char *n) { fBeamspotName = n; }
276     void SetPFCandName(const char *n) { fPFCandName = n; }
277 bendavid 1.2 void SetSuperClusterName(const char *n) { fSuperClusterName = n; }
278     void SetPhFixDataFile(const char *n) { fPhFixDataFile = n; }
279 bendavid 1.1
280    
281     // set basic Cut variables (FOR PRE-SELECTION)
282    
283     // is Data Or Not?
284     void SetIsData (Bool_t b) { fIsData = b;};
285    
286    
287     void SetInvertElectronVeto(Bool_t b) { fInvertElectronVeto = b; }
288    
289     void SetTupleName(const char* c) { fTupleName = c; }
290     void SetGoodElectronsFromBranch(Bool_t b) { fGoodElectronsFromBranch = b; }
291     void SetGoodElectronName(TString name) { fGoodElectronName = name; }
292     void SetWriteDiphotonTree(Bool_t b) { fWriteDiphotonTree = b; }
293     void SetWriteSingleTree(Bool_t b) { fWriteSingleTree = b; }
294 bendavid 1.2 void SetLoopOnGoodElectrons(Bool_t b) { fLoopOnGoodElectrons = b; }
295     void SetExcludeSinglePrompt(Bool_t b) { fExcludeSinglePrompt = b; }
296     void SetExcludeDoublePrompt(Bool_t b) { fExcludeDoublePrompt = b; }
297 bendavid 1.1
298     protected:
299     void Process();
300     void SlaveBegin();
301    
302     // private auxiliary methods...
303     void FindHiggsPtAndZ(Float_t& pt, Float_t& z, Float_t& mass);
304     Float_t GetEventCat(PhotonTools::CiCBaseLineCats cat1, PhotonTools::CiCBaseLineCats cat2);
305    
306     // Names for the input Collections
307     TString fPhotonBranchName;
308     TString fElectronName;
309     TString fGoodElectronName;
310     TString fConversionName;
311     TString fTrackBranchName;
312     TString fPileUpDenName;
313     TString fPVName;
314     TString fBeamspotName;
315     TString fPFCandName;
316     TString fMCParticleName;
317     TString fPileUpName;
318 bendavid 1.2 TString fSuperClusterName;
319     TString fPFMetName;
320 bendavid 1.1
321     // is it Data or MC?
322     Bool_t fIsData;
323    
324     // in case there's some PV pre-selection
325     Bool_t fPhotonsFromBranch;
326     Bool_t fPVFromBranch;
327     Bool_t fGoodElectronsFromBranch;
328    
329     const PhotonCol *fPhotons;
330     const ElectronCol *fElectrons;
331     const ElectronCol *fGoodElectrons;
332     const DecayParticleCol *fConversions;
333     const TrackCol *fTracks;
334     const PileupEnergyDensityCol *fPileUpDen;
335     const VertexCol *fPV;
336     const BeamSpotCol *fBeamspot;
337     const PFCandidateCol *fPFCands;
338     const MCParticleCol *fMCParticles;
339     const PileupInfoCol *fPileUp;
340 bendavid 1.2 const SuperClusterCol *fSuperClusters;
341     const PFMetCol *fPFMet;
342    
343 bendavid 1.1 // --------------------------------
344 bendavid 1.2 Bool_t fLoopOnGoodElectrons; //primary loop over good electrons collection instead of photons
345 bendavid 1.1 Bool_t fInvertElectronVeto; //=true then invert electron veto (for cic selection only atm)
346     Bool_t fWriteDiphotonTree;
347     Bool_t fWriteSingleTree;
348    
349 bendavid 1.2 Bool_t fExcludeSinglePrompt;
350     Bool_t fExcludeDoublePrompt;
351    
352     TString fPhFixDataFile;
353     PhotonFix fPhfixph;
354     PhotonFix fPhfixele;
355 bendavid 1.1
356     // --------------------------------
357     // validation Tuple
358     TString fTupleName;
359     PhotonTreeWriterDiphotonEvent* fDiphotonEvent;
360     PhotonTreeWriterPhoton* fSinglePhoton;
361     TTree* hCiCTuple;
362     TTree* hCiCTupleSingle;
363    
364     ClassDef(PhotonTreeWriter, 1) // Photon identification module
365     };
366     }
367     #endif