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

# Content
1 //--------------------------------------------------------------------------------------------------
2 // $Id: PhotonTreeWriter.h,v 1.2 2011/09/08 15:51:23 bendavid 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 #include "MitAna/DataTree/interface/SuperClusterCol.h"
25 #include "MitAna/DataTree/interface/PFMetCol.h"
26 #include "MitPhysics/Utils/interface/PhotonFix.h"
27 #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 void SetVars(const Photon *p, const DecayParticle *c, const Electron *ele, const SuperCluster *pfsc, const MCParticle *m, PhotonFix &phfixph, PhotonFix &phfixele);
39 Float_t Ecor() const { return ecor; };
40 Float_t Ecorerr() const { return ecorerr; };
41 Float_t Ecorele() const { return ecorele; };
42 Float_t Ecoreleerr() const { return ecoreleerr; };
43
44 private:
45 Bool_t hasphoton;
46 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 Float_t scetawidth;
61 Float_t scphiwidth;
62 Float_t hovere;
63 Float_t sigietaieta;
64 Bool_t isbarrel;
65 Bool_t isr9reco;
66 Bool_t isr9cat;
67 Char_t phcat;
68 Float_t eerr;
69 Float_t eerrsmeared;
70 Float_t esmearing;
71
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 Float_t eseed;
92
93 //energy correction quantities from PhotonFix
94 Float_t ecor;
95 Float_t ecorerr;
96 Float_t ecorele;
97 Float_t ecoreleerr;
98 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 //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
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 Float_t bsX;
179 Float_t bsY;
180 Float_t bsZ;
181 Float_t vtxX;
182 Float_t vtxY;
183 Float_t vtxZ;
184 Int_t nVtx;
185 Int_t numPU;
186 Int_t numPUminus;
187 Int_t numPUplus;
188 Float_t mass;
189 Float_t masserr;
190 Float_t masserrsmeared;
191 Float_t ptgg;
192 Float_t costheta;
193 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 UInt_t evt;
201 UInt_t run;
202 UInt_t lumi;
203 UChar_t evtcat;
204 UInt_t nobj;
205 Float_t pfmet;
206 Float_t pfmetphi;
207 Float_t pfmetx;
208 Float_t pfmety;
209 Bool_t ismc;
210
211 //corrected quantities from PhotonFix corrections
212 Float_t masscor;
213 Float_t masscorerr;
214 Float_t masscorele;
215 Float_t masscoreleerr;
216
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 void SetSuperClusterName(const char *n) { fSuperClusterName = n; }
244 void SetPhFixDataFile(const char *n) { fPhFixDataFile = n; }
245
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 void SetLoopOnGoodElectrons(Bool_t b) { fLoopOnGoodElectrons = b; }
261 void SetExcludeSinglePrompt(Bool_t b) { fExcludeSinglePrompt = b; }
262 void SetExcludeDoublePrompt(Bool_t b) { fExcludeDoublePrompt = b; }
263
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 TString fSuperClusterName;
285 TString fPFMetName;
286
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 const SuperClusterCol *fSuperClusters;
307 const PFMetCol *fPFMet;
308
309 // --------------------------------
310 Bool_t fLoopOnGoodElectrons; //primary loop over good electrons collection instead of photons
311 Bool_t fInvertElectronVeto; //=true then invert electron veto (for cic selection only atm)
312 Bool_t fWriteDiphotonTree;
313 Bool_t fWriteSingleTree;
314
315 Bool_t fExcludeSinglePrompt;
316 Bool_t fExcludeDoublePrompt;
317
318 TString fPhFixDataFile;
319 PhotonFix fPhfixph;
320 PhotonFix fPhfixele;
321
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