ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitPhysics/Mods/interface/PhotonTreeWriter.h
Revision: 1.1
Committed: Wed Aug 3 17:15:43 2011 UTC (13 years, 9 months ago) by bendavid
Content type: text/plain
Branch: MAIN
CVS Tags: Mit_024b, Mit_024a, Mit_024
Log Message:
Reorganize photon code and add new PhotonTreeWriter class

File Contents

# User Rev Content
1 bendavid 1.1 //--------------------------------------------------------------------------------------------------
2     // $Id: PhotonTreeWriter.h,v 1.6 2011/07/27 17:50:52 fabstoec Exp $
3     //
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    
25     #include "MitPhysics/Utils/interface/PhotonTools.h"
26    
27     class TNtuple;
28     class TRandom3;
29    
30     namespace mithep
31     {
32    
33     class PhotonTreeWriterPhoton
34     {
35     public:
36     void SetVars(const Photon *p, const DecayParticle *c = 0, const MCParticle *m = 0);
37     Float_t Ecor() const { return ecor; };
38     Float_t Ecorerr() const { return ecorerr; };
39    
40     private:
41     Float_t e;
42     Float_t pt;
43     Float_t eta;
44     Float_t phi;
45     Float_t r9;
46     Float_t e3x3;
47     Float_t e5x5;
48     Float_t sce;
49     Float_t scrawe;
50     Float_t scpse;
51     Float_t sceta;
52     Float_t scphi;
53     UInt_t scnclusters;
54     UInt_t scnhits;
55     Float_t hovere;
56     Float_t sigietaieta;
57     Bool_t isbarrel;
58     Bool_t isr9reco;
59     Bool_t isr9cat;
60     UChar_t phcat;
61    
62     //quantities from seed basic cluster
63     Float_t sigiphiphi;
64     Float_t covietaiphi;
65     Float_t emax;
66     Float_t e2nd;
67     Float_t etop;
68     Float_t ebottom;
69     Float_t eleft;
70     Float_t eright;
71     Float_t e1x3;
72     Float_t e3x1;
73     Float_t e1x5;
74     Float_t e2x2;
75     Float_t e4x4;
76     Float_t e2x5max;
77     Float_t e2x5top;
78     Float_t e2x5bottom;
79     Float_t e2x5left;
80     Float_t e2x5right;
81    
82     //energy correction quantities from PhotonFix
83     Float_t ecor;
84     Float_t ecorerr;
85     Float_t etac;
86     Float_t etas;
87     Float_t etam;
88     Float_t phic;
89     Float_t phis;
90     Float_t phim;
91     Float_t xz;
92     Float_t xc;
93     Float_t xs;
94     Float_t xm;
95     Float_t yz;
96     Float_t yc;
97     Float_t ys;
98     Float_t ym;
99    
100     //conversion quantities
101     Bool_t hasconversion;
102     Float_t convp;
103     Float_t convpt;
104     Float_t conveta;
105     Float_t convphi;
106     Float_t convdeta;
107     Float_t convdphi;
108     Float_t convvtxrho;
109     Float_t convvtxz;
110     Float_t convvtxphi;
111     Float_t convleadpt;
112     Float_t convtrailpt;
113     Float_t convleadtrackpt;
114     Char_t convleadtrackalgo;
115     Char_t convleadtrackalgos;
116     Char_t convleadtrackcharge;
117     Float_t convtrailtrackpt;
118     Char_t convtrailtrackalgo;
119     Char_t convtrailtrackalgos;
120     Char_t trailtrackcharge;
121    
122    
123     //generator level quantities
124     Bool_t ispromptgen;
125     Float_t gene;
126     Float_t genpt;
127     Float_t geneta;
128     Float_t genphi;
129     Float_t genz;
130    
131    
132    
133     };
134    
135     class PhotonTreeWriterDiphotonEvent
136     {
137     public:
138     Float_t rho;
139     Float_t genHiggspt;
140     Float_t genHiggsZ;
141     Float_t genmass;
142     Float_t gencostheta;
143     Float_t vtxZ;
144     Int_t nVtx;
145     Int_t numPU;
146     Int_t numPUminus;
147     Int_t numPUplus;
148     Float_t mass;
149     Float_t ptgg;
150     Float_t costheta;
151     UInt_t evt;
152     UInt_t run;
153     UInt_t lumi;
154     UChar_t evtcat;
155    
156     //corrected quantities from PhotonFix corrections
157     Float_t masscor;
158     Float_t masscorerr;
159    
160     PhotonTreeWriterPhoton photons[2];
161    
162    
163     };
164    
165     class PhotonTreeWriter : public BaseMod
166     {
167     public:
168     PhotonTreeWriter(const char *name ="PhotonTreeWriter",
169     const char *title="Selecting PhotonPairs");
170    
171     ~PhotonTreeWriter();
172    
173     // setting all the input Names
174     void SetInputPhotonsName(const char *n){ fPhotonBranchName= n; }
175     void SetPhotonsFromBranch(bool b) { fPhotonsFromBranch = b; }
176     void SetTrackName(const char *n) { fTrackBranchName = n; }
177     void SetElectronName(const char *n) { fElectronName = n; }
178     void SetConversionName(const char *n) { fConversionName = n; }
179     void SetPUDensityName(const char *n) { fPileUpDenName = n; }
180     void SetPVName(const char *n) { fPVName = n; }
181     void SetPVFromBranch(bool b) { fPVFromBranch = b; }
182     void SetMCParticle(const char *n) { fMCParticleName = n; }
183     void SetPUInfoName(const char *n) { fPileUpName = n; }
184     void SetBeamspotName(const char *n) { fBeamspotName = n; }
185     void SetPFCandName(const char *n) { fPFCandName = n; }
186    
187    
188    
189     // set basic Cut variables (FOR PRE-SELECTION)
190    
191     // is Data Or Not?
192     void SetIsData (Bool_t b) { fIsData = b;};
193    
194    
195     void SetInvertElectronVeto(Bool_t b) { fInvertElectronVeto = b; }
196    
197     void SetTupleName(const char* c) { fTupleName = c; }
198     void SetGoodElectronsFromBranch(Bool_t b) { fGoodElectronsFromBranch = b; }
199     void SetGoodElectronName(TString name) { fGoodElectronName = name; }
200     void SetWriteDiphotonTree(Bool_t b) { fWriteDiphotonTree = b; }
201     void SetWriteSingleTree(Bool_t b) { fWriteSingleTree = b; }
202    
203     protected:
204     void Process();
205     void SlaveBegin();
206    
207     // private auxiliary methods...
208     void FindHiggsPtAndZ(Float_t& pt, Float_t& z, Float_t& mass);
209     Float_t GetEventCat(PhotonTools::CiCBaseLineCats cat1, PhotonTools::CiCBaseLineCats cat2);
210    
211     // Names for the input Collections
212     TString fPhotonBranchName;
213     TString fElectronName;
214     TString fGoodElectronName;
215     TString fConversionName;
216     TString fTrackBranchName;
217     TString fPileUpDenName;
218     TString fPVName;
219     TString fBeamspotName;
220     TString fPFCandName;
221     TString fMCParticleName;
222     TString fPileUpName;
223    
224     // is it Data or MC?
225     Bool_t fIsData;
226    
227     // in case there's some PV pre-selection
228     Bool_t fPhotonsFromBranch;
229     Bool_t fPVFromBranch;
230     Bool_t fGoodElectronsFromBranch;
231    
232     const PhotonCol *fPhotons;
233     const ElectronCol *fElectrons;
234     const ElectronCol *fGoodElectrons;
235     const DecayParticleCol *fConversions;
236     const TrackCol *fTracks;
237     const PileupEnergyDensityCol *fPileUpDen;
238     const VertexCol *fPV;
239     const BeamSpotCol *fBeamspot;
240     const PFCandidateCol *fPFCands;
241     const MCParticleCol *fMCParticles;
242     const PileupInfoCol *fPileUp;
243    
244     // --------------------------------
245     Bool_t fInvertElectronVeto; //=true then invert electron veto (for cic selection only atm)
246     Bool_t fWriteDiphotonTree;
247     Bool_t fWriteSingleTree;
248    
249    
250     // --------------------------------
251     // validation Tuple
252     TString fTupleName;
253     PhotonTreeWriterDiphotonEvent* fDiphotonEvent;
254     PhotonTreeWriterPhoton* fSinglePhoton;
255     TTree* hCiCTuple;
256     TTree* hCiCTupleSingle;
257    
258     ClassDef(PhotonTreeWriter, 1) // Photon identification module
259     };
260     }
261     #endif