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

# Content
1 //--------------------------------------------------------------------------------------------------
2 // $Id: PhotonTreeWriter.h,v 1.3 2011/10/07 09:56:36 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 xseed;
92 Float_t yseed;
93 Float_t zseed;
94
95 Float_t eseed;
96 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
124 //energy correction quantities from PhotonFix
125 Float_t ecor;
126 Float_t ecorerr;
127 Float_t ecorele;
128 Float_t ecoreleerr;
129 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 //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
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 Float_t bsX;
210 Float_t bsY;
211 Float_t bsZ;
212 Float_t vtxX;
213 Float_t vtxY;
214 Float_t vtxZ;
215 Int_t nVtx;
216 Int_t numPU;
217 Int_t numPUminus;
218 Int_t numPUplus;
219 Float_t mass;
220 Float_t masserr;
221 Float_t masserrsmeared;
222 Float_t masserrwrongvtx;
223 Float_t masserrsmearedwrongvtx;
224 Float_t vtxprob;
225 Float_t ptgg;
226 Float_t costheta;
227 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 UInt_t evt;
235 UInt_t run;
236 UInt_t lumi;
237 UChar_t evtcat;
238 UInt_t nobj;
239 Float_t pfmet;
240 Float_t pfmetphi;
241 Float_t pfmetx;
242 Float_t pfmety;
243 Bool_t ismc;
244
245 //corrected quantities from PhotonFix corrections
246 Float_t masscor;
247 Float_t masscorerr;
248 Float_t masscorele;
249 Float_t masscoreleerr;
250
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 void SetSuperClusterName(const char *n) { fSuperClusterName = n; }
278 void SetPhFixDataFile(const char *n) { fPhFixDataFile = n; }
279
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 void SetLoopOnGoodElectrons(Bool_t b) { fLoopOnGoodElectrons = b; }
295 void SetExcludeSinglePrompt(Bool_t b) { fExcludeSinglePrompt = b; }
296 void SetExcludeDoublePrompt(Bool_t b) { fExcludeDoublePrompt = b; }
297
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 TString fSuperClusterName;
319 TString fPFMetName;
320
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 const SuperClusterCol *fSuperClusters;
341 const PFMetCol *fPFMet;
342
343 // --------------------------------
344 Bool_t fLoopOnGoodElectrons; //primary loop over good electrons collection instead of photons
345 Bool_t fInvertElectronVeto; //=true then invert electron veto (for cic selection only atm)
346 Bool_t fWriteDiphotonTree;
347 Bool_t fWriteSingleTree;
348
349 Bool_t fExcludeSinglePrompt;
350 Bool_t fExcludeDoublePrompt;
351
352 TString fPhFixDataFile;
353 PhotonFix fPhfixph;
354 PhotonFix fPhfixele;
355
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