ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitPhysics/Mods/interface/PhotonTreeWriter.h
Revision: 1.3
Committed: Fri Oct 7 09:56:36 2011 UTC (13 years, 7 months ago) by bendavid
Content type: text/plain
Branch: MAIN
CVS Tags: Mit_025c, Mit_025b, Mit_025a, Mit_025
Changes since 1.2: +2 -1 lines
Log Message:
misc updates

File Contents

# User Rev Content
1 bendavid 1.1 //--------------------------------------------------------------------------------------------------
2 bendavid 1.3 // $Id: PhotonTreeWriter.h,v 1.2 2011/09/08 15:51:23 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.2 Float_t eseed;
92 bendavid 1.1
93     //energy correction quantities from PhotonFix
94     Float_t ecor;
95     Float_t ecorerr;
96 bendavid 1.2 Float_t ecorele;
97     Float_t ecoreleerr;
98 bendavid 1.1 Float_t etac;
99     Float_t etas;
100     Float_t etam;
101     Float_t phic;
102     Float_t phis;
103     Float_t phim;
104     Float_t xz;
105     Float_t xc;
106     Float_t xs;
107     Float_t xm;
108     Float_t yz;
109     Float_t yc;
110     Float_t ys;
111     Float_t ym;
112    
113     //conversion quantities
114     Bool_t hasconversion;
115     Float_t convp;
116     Float_t convpt;
117     Float_t conveta;
118     Float_t convphi;
119     Float_t convdeta;
120     Float_t convdphi;
121     Float_t convvtxrho;
122     Float_t convvtxz;
123     Float_t convvtxphi;
124     Float_t convleadpt;
125     Float_t convtrailpt;
126     Float_t convleadtrackpt;
127     Char_t convleadtrackalgo;
128     Char_t convleadtrackalgos;
129     Char_t convleadtrackcharge;
130     Float_t convtrailtrackpt;
131     Char_t convtrailtrackalgo;
132     Char_t convtrailtrackalgos;
133     Char_t trailtrackcharge;
134    
135 bendavid 1.2 //electron quantities
136     Bool_t haselectron;
137     Bool_t eleisecaldriven;
138     Bool_t eleistrackerdriven;
139     Float_t elee;
140     Float_t elept;
141     Float_t eleeta;
142     Float_t elephi;
143     Char_t elecharge;
144     Float_t elefbrem;
145     Float_t eledeta;
146     Float_t eledphi;
147     Float_t elep;
148     Float_t elepin;
149     Float_t elepout;
150    
151     //pf supercluster quantities
152     Bool_t haspfsc;
153     Float_t pfsce;
154     Float_t pfscrawe;
155     Float_t pfsceta;
156     Float_t pfscphi;
157 bendavid 1.1
158     //generator level quantities
159     Bool_t ispromptgen;
160     Float_t gene;
161     Float_t genpt;
162     Float_t geneta;
163     Float_t genphi;
164     Float_t genz;
165    
166    
167    
168     };
169    
170     class PhotonTreeWriterDiphotonEvent
171     {
172     public:
173     Float_t rho;
174     Float_t genHiggspt;
175     Float_t genHiggsZ;
176     Float_t genmass;
177     Float_t gencostheta;
178 bendavid 1.2 Float_t bsX;
179     Float_t bsY;
180     Float_t bsZ;
181     Float_t vtxX;
182     Float_t vtxY;
183 bendavid 1.1 Float_t vtxZ;
184     Int_t nVtx;
185     Int_t numPU;
186     Int_t numPUminus;
187     Int_t numPUplus;
188     Float_t mass;
189 bendavid 1.2 Float_t masserr;
190     Float_t masserrsmeared;
191 bendavid 1.1 Float_t ptgg;
192     Float_t costheta;
193 bendavid 1.2 Float_t massele;
194     Float_t ptee;
195     Float_t costhetaele;
196     Float_t mt;
197     Float_t cosphimet;
198     Float_t mtele;
199     Float_t cosphimetele;
200 bendavid 1.1 UInt_t evt;
201     UInt_t run;
202     UInt_t lumi;
203     UChar_t evtcat;
204 bendavid 1.2 UInt_t nobj;
205     Float_t pfmet;
206     Float_t pfmetphi;
207     Float_t pfmetx;
208     Float_t pfmety;
209     Bool_t ismc;
210 bendavid 1.1
211     //corrected quantities from PhotonFix corrections
212     Float_t masscor;
213     Float_t masscorerr;
214 bendavid 1.2 Float_t masscorele;
215     Float_t masscoreleerr;
216 bendavid 1.1
217     PhotonTreeWriterPhoton photons[2];
218    
219    
220     };
221    
222     class PhotonTreeWriter : public BaseMod
223     {
224     public:
225     PhotonTreeWriter(const char *name ="PhotonTreeWriter",
226     const char *title="Selecting PhotonPairs");
227    
228     ~PhotonTreeWriter();
229    
230     // setting all the input Names
231     void SetInputPhotonsName(const char *n){ fPhotonBranchName= n; }
232     void SetPhotonsFromBranch(bool b) { fPhotonsFromBranch = b; }
233     void SetTrackName(const char *n) { fTrackBranchName = n; }
234     void SetElectronName(const char *n) { fElectronName = n; }
235     void SetConversionName(const char *n) { fConversionName = n; }
236     void SetPUDensityName(const char *n) { fPileUpDenName = n; }
237     void SetPVName(const char *n) { fPVName = n; }
238     void SetPVFromBranch(bool b) { fPVFromBranch = b; }
239     void SetMCParticle(const char *n) { fMCParticleName = n; }
240     void SetPUInfoName(const char *n) { fPileUpName = n; }
241     void SetBeamspotName(const char *n) { fBeamspotName = n; }
242     void SetPFCandName(const char *n) { fPFCandName = n; }
243 bendavid 1.2 void SetSuperClusterName(const char *n) { fSuperClusterName = n; }
244     void SetPhFixDataFile(const char *n) { fPhFixDataFile = n; }
245 bendavid 1.1
246    
247     // set basic Cut variables (FOR PRE-SELECTION)
248    
249     // is Data Or Not?
250     void SetIsData (Bool_t b) { fIsData = b;};
251    
252    
253     void SetInvertElectronVeto(Bool_t b) { fInvertElectronVeto = b; }
254    
255     void SetTupleName(const char* c) { fTupleName = c; }
256     void SetGoodElectronsFromBranch(Bool_t b) { fGoodElectronsFromBranch = b; }
257     void SetGoodElectronName(TString name) { fGoodElectronName = name; }
258     void SetWriteDiphotonTree(Bool_t b) { fWriteDiphotonTree = b; }
259     void SetWriteSingleTree(Bool_t b) { fWriteSingleTree = b; }
260 bendavid 1.2 void SetLoopOnGoodElectrons(Bool_t b) { fLoopOnGoodElectrons = b; }
261     void SetExcludeSinglePrompt(Bool_t b) { fExcludeSinglePrompt = b; }
262     void SetExcludeDoublePrompt(Bool_t b) { fExcludeDoublePrompt = b; }
263 bendavid 1.1
264     protected:
265     void Process();
266     void SlaveBegin();
267    
268     // private auxiliary methods...
269     void FindHiggsPtAndZ(Float_t& pt, Float_t& z, Float_t& mass);
270     Float_t GetEventCat(PhotonTools::CiCBaseLineCats cat1, PhotonTools::CiCBaseLineCats cat2);
271    
272     // Names for the input Collections
273     TString fPhotonBranchName;
274     TString fElectronName;
275     TString fGoodElectronName;
276     TString fConversionName;
277     TString fTrackBranchName;
278     TString fPileUpDenName;
279     TString fPVName;
280     TString fBeamspotName;
281     TString fPFCandName;
282     TString fMCParticleName;
283     TString fPileUpName;
284 bendavid 1.2 TString fSuperClusterName;
285     TString fPFMetName;
286 bendavid 1.1
287     // is it Data or MC?
288     Bool_t fIsData;
289    
290     // in case there's some PV pre-selection
291     Bool_t fPhotonsFromBranch;
292     Bool_t fPVFromBranch;
293     Bool_t fGoodElectronsFromBranch;
294    
295     const PhotonCol *fPhotons;
296     const ElectronCol *fElectrons;
297     const ElectronCol *fGoodElectrons;
298     const DecayParticleCol *fConversions;
299     const TrackCol *fTracks;
300     const PileupEnergyDensityCol *fPileUpDen;
301     const VertexCol *fPV;
302     const BeamSpotCol *fBeamspot;
303     const PFCandidateCol *fPFCands;
304     const MCParticleCol *fMCParticles;
305     const PileupInfoCol *fPileUp;
306 bendavid 1.2 const SuperClusterCol *fSuperClusters;
307     const PFMetCol *fPFMet;
308    
309 bendavid 1.1 // --------------------------------
310 bendavid 1.2 Bool_t fLoopOnGoodElectrons; //primary loop over good electrons collection instead of photons
311 bendavid 1.1 Bool_t fInvertElectronVeto; //=true then invert electron veto (for cic selection only atm)
312     Bool_t fWriteDiphotonTree;
313     Bool_t fWriteSingleTree;
314    
315 bendavid 1.2 Bool_t fExcludeSinglePrompt;
316     Bool_t fExcludeDoublePrompt;
317    
318     TString fPhFixDataFile;
319     PhotonFix fPhfixph;
320     PhotonFix fPhfixele;
321 bendavid 1.1
322     // --------------------------------
323     // validation Tuple
324     TString fTupleName;
325     PhotonTreeWriterDiphotonEvent* fDiphotonEvent;
326     PhotonTreeWriterPhoton* fSinglePhoton;
327     TTree* hCiCTuple;
328     TTree* hCiCTupleSingle;
329    
330     ClassDef(PhotonTreeWriter, 1) // Photon identification module
331     };
332     }
333     #endif