ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitPhysics/Mods/interface/PhotonTreeWriter.h
Revision: 1.38
Committed: Sat Sep 14 00:19:00 2013 UTC (11 years, 8 months ago) by veverka
Content type: text/plain
Branch: MAIN
Changes since 1.37: +41 -16 lines
Log Message:
First crack at the VH(had) tag

File Contents

# User Rev Content
1 bendavid 1.1 //--------------------------------------------------------------------------------------------------
2 bendavid 1.37 // $Id: PhotonTreeWriter.h,v 1.36 2013/08/31 07:36:37 veverka Exp $
3 bendavid 1.1 //
4     // PhotonTreeWriter
5     //
6 veverka 1.30 // Authors: J. Bendavid, J. Veverka
7 bendavid 1.1 //--------------------------------------------------------------------------------------------------
8    
9 veverka 1.38 /**
10     * TODO
11     * - Factor out taggers (VHLep, VHHad, ttH) into separate classes
12     * - Factor out transient diphoton-final-state data (phHard, phSoft, selvtx, ..)
13     * into a separate class.
14     */
15    
16    
17 bendavid 1.1 #ifndef MITPHYSICS_MODS_PHOTONTREEWRITER_H
18     #define MITPHYSICS_MODS_PHOTONTREEWRITER_H
19    
20     #include "MitAna/TreeMod/interface/BaseMod.h"
21     #include "MitAna/DataTree/interface/PhotonFwd.h"
22     #include "MitAna/DataTree/interface/TrackCol.h"
23     #include "MitAna/DataTree/interface/VertexCol.h"
24     #include "MitAna/DataTree/interface/BeamSpotCol.h"
25     #include "MitAna/DataTree/interface/PFCandidateCol.h"
26     #include "MitAna/DataTree/interface/PileupEnergyDensityCol.h"
27     #include "MitAna/DataTree/interface/DecayParticleCol.h"
28     #include "MitAna/DataTree/interface/ElectronCol.h"
29 fabstoec 1.10 #include "MitAna/DataTree/interface/MuonCol.h"
30 bendavid 1.1 #include "MitAna/DataTree/interface/DecayParticleCol.h"
31     #include "MitAna/DataTree/interface/PileupInfoCol.h"
32     #include "MitAna/DataTree/interface/MCParticleCol.h"
33 bendavid 1.25 #include "MitAna/DataTree/interface/MCEventInfo.h"
34 bendavid 1.2 #include "MitAna/DataTree/interface/SuperClusterCol.h"
35     #include "MitAna/DataTree/interface/PFMetCol.h"
36 bendavid 1.5 #include "MitAna/DataTree/interface/JetCol.h"
37 fabstoec 1.13 #include "MitAna/DataTree/interface/PFJetCol.h"
38     #include "MitAna/DataTree/interface/GenJetCol.h"
39 veverka 1.35 #include "MitAna/DataTree/interface/Particle.h"
40 bendavid 1.2 #include "MitPhysics/Utils/interface/PhotonFix.h"
41 bendavid 1.1 #include "MitPhysics/Utils/interface/PhotonTools.h"
42 bendavid 1.17 #include "MitPhysics/Utils/interface/MVAMet.h"
43 mingyang 1.24 #include "MitPhysics/Utils/interface/MVAVBF.h"
44 bendavid 1.1
45 fabstoec 1.26 #include "MitPhysics/Utils/interface/VertexTools.h"
46     #include "MitPhysics/Utils/interface/ElectronIDMVA.h"
47    
48 bendavid 1.1 class TNtuple;
49     class TRandom3;
50    
51     namespace mithep
52     {
53 bendavid 1.18
54     class PhotonTreeWriterVtx
55     {
56    
57     public:
58     void SetVars(const Vertex *v, const Photon *p1, const Photon *p2, const PFCandidateCol *pfcands, Int_t idx, Int_t numvtx, Float_t genvtxz);
59    
60     private:
61     Int_t n;
62     Int_t nvtx;
63     Float_t ptgg;
64     Float_t phigg;
65     Float_t etagg;
66     Float_t pxgg;
67     Float_t pygg;
68     Float_t pzgg;
69     Float_t mgg;
70     Float_t zgen;
71     Float_t x;
72     Float_t y;
73     Float_t z;
74     Float_t pt;
75     Float_t phi;
76     Float_t eta;
77     Float_t px;
78     Float_t py;
79     Float_t pz;
80     Float_t sumpt;
81     Float_t sumptsq;
82     Int_t nchalltoward;
83     Int_t nchalltransverse;
84     Int_t nchallaway;
85     Int_t nchcuttoward;
86     Int_t nchcuttransverse;
87     Int_t nchcutaway;
88     };
89    
90 mingyang 1.21 template <int NClus=16>//ming: what's template
91 bendavid 1.1 class PhotonTreeWriterPhoton
92     {
93     public:
94 fabstoec 1.26 void SetVars(const Photon *p, const DecayParticle *c, const Electron *ele, const SuperCluster *pfsc, const MCParticle *m, PhotonFix &phfixph, PhotonFix &phfixele, const TrackCol* trackCol,const VertexCol* vtxCol, const PFCandidateCol* candCol, Double_t _tRho, Bool_t fillclusterarrays, const ElectronCol* els, const DecayParticleCol *convs, const BaseVertex *bs, Bool_t applyElectronVeto=kTRUE, const Vertex* realVtx = NULL);
95 bendavid 1.1 Float_t Ecor() const { return ecor; };
96     Float_t Ecorerr() const { return ecorerr; };
97 bendavid 1.2 Float_t Ecorele() const { return ecorele; };
98 veverka 1.30 Float_t Ecoreleerr() const { return ecoreleerr; };
99 veverka 1.33 Float_t Pt() const {return pt;};
100    
101 bendavid 1.1 private:
102 bendavid 1.5 UChar_t hasphoton;
103 bendavid 1.1 Float_t e;
104     Float_t pt;
105     Float_t eta;
106     Float_t phi;
107     Float_t r9;
108     Float_t e3x3;
109     Float_t e5x5;
110     Float_t sce;
111     Float_t scrawe;
112     Float_t scpse;
113 bendavid 1.17 Float_t scpssigmaxx;
114     Float_t scpssigmayy;
115 bendavid 1.1 Float_t sceta;
116     Float_t scphi;
117 paus 1.9 UInt_t scnclusters;
118     UInt_t scnhits;
119 bendavid 1.2 Float_t scetawidth;
120     Float_t scphiwidth;
121 bendavid 1.1 Float_t hovere;
122 bendavid 1.17 Float_t hoveretower;
123 bendavid 1.1 Float_t sigietaieta;
124 paus 1.9 Bool_t isbarrel;
125     Bool_t isr9reco;
126     Bool_t isr9cat;
127     Char_t phcat;
128 bendavid 1.2 Float_t eerr;
129     Float_t eerrsmeared;
130 bendavid 1.3 Float_t esmearing;
131 bendavid 1.5 Float_t idmva;
132     Float_t ecalisodr03;
133     Float_t hcalisodr03;
134     Float_t trkisohollowdr03;
135 bendavid 1.8 Float_t ecalisodr04;
136     Float_t hcalisodr04;
137     Float_t trkisohollowdr04;
138     Float_t trackiso1;
139     Float_t trackiso2;
140     Float_t combiso1;
141     Float_t combiso2;
142 bendavid 1.23 Bool_t passeleveto;
143    
144 bendavid 1.5 //quantities from seed basic cluster
145 bendavid 1.2 Float_t eseed;
146 bendavid 1.4 Float_t etaseed;
147     Float_t phiseed;
148 paus 1.9 Int_t ietaseed;
149     Int_t iphiseed;
150     Int_t ixseed;
151     Int_t iyseed;
152 bendavid 1.4 Float_t etacryseed;
153     Float_t phicryseed;
154     Float_t xcryseed;
155     Float_t ycryseed;
156     Float_t thetaaxisseed;
157     Float_t phiaxisseed;
158 bendavid 1.5 Float_t sigietaietaseed;
159     Float_t sigiphiphiseed;
160     Float_t covietaiphiseed;
161     Float_t e3x3seed;
162     Float_t e5x5seed;
163     Float_t emaxseed;
164     Float_t e2ndseed;
165     Float_t etopseed;
166     Float_t ebottomseed;
167     Float_t eleftseed;
168     Float_t erightseed;
169     Float_t e1x3seed;
170     Float_t e3x1seed;
171     Float_t e1x5seed;
172     Float_t e2x2seed;
173     Float_t e4x4seed;
174     Float_t e2x5maxseed;
175     Float_t e2x5topseed;
176     Float_t e2x5bottomseed;
177     Float_t e2x5leftseed;
178     Float_t e2x5rightseed;
179     Float_t xseedseed;
180     Float_t yseedseed;
181     Float_t zseedseed;
182     UInt_t nhitsseed;
183    
184 bendavid 1.4 //quantities from second basic cluster, if present
185     Float_t ebc2;
186     Float_t etabc2;
187     Float_t phibc2;
188 paus 1.9 Int_t ietabc2;
189     Int_t iphibc2;
190     Int_t ixbc2;
191     Int_t iybc2;
192 bendavid 1.4 Float_t etacrybc2;
193     Float_t phicrybc2;
194     Float_t xcrybc2;
195     Float_t ycrybc2;
196     Float_t thetaaxisbc2;
197 bendavid 1.5 Float_t phiaxisbc2;
198     Float_t sigietaietabc2;
199     Float_t sigiphiphibc2;
200     Float_t covietaiphibc2;
201     Float_t e3x3bc2;
202     Float_t e5x5bc2;
203     Float_t emaxbc2;
204     Float_t e2ndbc2;
205     Float_t etopbc2;
206     Float_t ebottombc2;
207     Float_t eleftbc2;
208     Float_t erightbc2;
209     Float_t e1x3bc2;
210     Float_t e3x1bc2;
211     Float_t e1x5bc2;
212     Float_t e2x2bc2;
213     Float_t e4x4bc2;
214     Float_t e2x5maxbc2;
215     Float_t e2x5topbc2;
216     Float_t e2x5bottombc2;
217     Float_t e2x5leftbc2;
218     Float_t e2x5rightbc2;
219     Float_t xbc2bc2;
220     Float_t ybc2bc2;
221     Float_t zbc2bc2;
222     UInt_t nhitsbc2;
223    
224     //quantities from lowest energy basic cluster if present
225     Float_t ebclast;
226     Float_t etabclast;
227     Float_t phibclast;
228 paus 1.9 Int_t ietabclast;
229     Int_t iphibclast;
230     Int_t ixbclast;
231     Int_t iybclast;
232 bendavid 1.5 Float_t etacrybclast;
233     Float_t phicrybclast;
234     Float_t xcrybclast;
235     Float_t ycrybclast;
236     Float_t thetaaxisbclast;
237     Float_t phiaxisbclast;
238     Float_t sigietaietabclast;
239     Float_t sigiphiphibclast;
240     Float_t covietaiphibclast;
241     Float_t e3x3bclast;
242     Float_t e5x5bclast;
243     UInt_t nhitsbclast;
244    
245     //quantities from second lowest energy basic cluster if present
246     Float_t ebclast2;
247     Float_t etabclast2;
248     Float_t phibclast2;
249 paus 1.9 Int_t ietabclast2;
250     Int_t iphibclast2;
251     Int_t ixbclast2;
252     Int_t iybclast2;
253 bendavid 1.5 Float_t etacrybclast2;
254     Float_t phicrybclast2;
255     Float_t xcrybclast2;
256     Float_t ycrybclast2;
257     Float_t thetaaxisbclast2;
258     Float_t phiaxisbclast2;
259     Float_t sigietaietabclast2;
260     Float_t sigiphiphibclast2;
261     Float_t covietaiphibclast2;
262     Float_t e3x3bclast2;
263     Float_t e5x5bclast2;
264     UInt_t nhitsbclast2;
265 bendavid 1.1
266     //energy correction quantities from PhotonFix
267     Float_t ecor;
268     Float_t ecorerr;
269 bendavid 1.2 Float_t ecorele;
270     Float_t ecoreleerr;
271 bendavid 1.1 Float_t etac;
272     Float_t etas;
273     Float_t etam;
274     Float_t phic;
275     Float_t phis;
276     Float_t phim;
277     Float_t xz;
278     Float_t xc;
279     Float_t xs;
280     Float_t xm;
281     Float_t yz;
282     Float_t yc;
283     Float_t ys;
284     Float_t ym;
285    
286     //conversion quantities
287 bendavid 1.5 UChar_t hasconversion;
288 bendavid 1.1 Float_t convp;
289     Float_t convpt;
290     Float_t conveta;
291     Float_t convphi;
292     Float_t convdeta;
293     Float_t convdphi;
294     Float_t convvtxrho;
295     Float_t convvtxz;
296     Float_t convvtxphi;
297     Float_t convleadpt;
298     Float_t convtrailpt;
299     Float_t convleadtrackpt;
300 paus 1.9 Char_t convleadtrackalgo;
301     Char_t convleadtrackalgos;
302     Char_t convleadtrackcharge;
303 bendavid 1.1 Float_t convtrailtrackpt;
304 paus 1.9 Char_t convtrailtrackalgo;
305     Char_t convtrailtrackalgos;
306     Char_t trailtrackcharge;
307 bendavid 1.1
308 bendavid 1.2 //electron quantities
309 bendavid 1.5 UChar_t haselectron;
310     UChar_t eleisecaldriven;
311     UChar_t eleistrackerdriven;
312 bendavid 1.2 Float_t elee;
313     Float_t elept;
314     Float_t eleeta;
315     Float_t elephi;
316 paus 1.9 Char_t elecharge;
317 bendavid 1.2 Float_t elefbrem;
318     Float_t eledeta;
319     Float_t eledphi;
320     Float_t elep;
321     Float_t elepin;
322     Float_t elepout;
323    
324     //pf supercluster quantities
325 bendavid 1.5 UChar_t haspfsc;
326 bendavid 1.2 Float_t pfsce;
327     Float_t pfscrawe;
328     Float_t pfsceta;
329     Float_t pfscphi;
330 bendavid 1.17 UInt_t pfscnclusters;
331     UInt_t pfscnhits;
332     Float_t pfscetawidth;
333     Float_t pfscphiwidth;
334     UInt_t pfscnpsclusters;
335 bendavid 1.1
336     //generator level quantities
337 bendavid 1.5 UChar_t ispromptgen;
338 bendavid 1.1 Float_t gene;
339     Float_t genpt;
340     Float_t geneta;
341     Float_t genphi;
342     Float_t genz;
343 bendavid 1.5 Int_t pdgid;
344     Int_t motherpdgid;
345 bendavid 1.17
346 fabstoec 1.19 // -----------------------------------------------------
347     // PF-CiC4 Debug Stuff
348     Float_t pfcic4_tIso1;
349     Float_t pfcic4_tIso2;
350     Float_t pfcic4_tIso3;
351     Float_t pfcic4_covIEtaIEta;
352     Float_t pfcic4_HoE;
353     Float_t pfcic4_R9;
354     Float_t pfcic4_wVtxInd;
355     Float_t pfcic4_ecalIso3;
356     Float_t pfcic4_ecalIso4;
357     Float_t pfcic4_trackIsoSel03;
358     Float_t pfcic4_trackIsoWorst04;
359     Float_t pfcic4_combIso1;
360     Float_t pfcic4_combIso2;
361     // -----------------------------------------------------
362    
363 mingyang 1.21 // -----------------------------------------------------
364     //id mva
365     //2011
366     Float_t idmva_tIso1abs;
367     Float_t idmva_tIso2abs;
368     Float_t idmva_tIso3abs;
369     Float_t idmva_absIsoEcal;
370     Float_t idmva_absIsoHcal;
371     //2012
372     Float_t idmva_CoviEtaiPhi;
373     Float_t idmva_s4ratio;
374     Float_t idmva_GammaIso;
375     Float_t idmva_ChargedIso_selvtx;
376 fabstoec 1.26 Float_t idmva_ChargedIso_0p2_selvtx;
377 mingyang 1.21 Float_t idmva_ChargedIso_worstvtx;
378     Float_t idmva_PsEffWidthSigmaRR;
379    
380 veverka 1.33 Float_t ebcs[NClus];
381 bendavid 1.17 Float_t etabcs[NClus];
382     Float_t phibcs[NClus];
383     Int_t ietabcs[NClus];
384     Int_t iphibcs[NClus];
385     Int_t ixbcs[NClus];
386     Int_t iybcs[NClus];
387     Float_t etacrybcs[NClus];
388     Float_t phicrybcs[NClus];
389     Float_t xcrybcs[NClus];
390     Float_t ycrybcs[NClus];
391     Float_t sigietaietabcs[NClus];
392     Float_t sigiphiphibcs[NClus];
393     Float_t covietaiphibcs[NClus];
394     Float_t sigetaetabcs[NClus];
395     Float_t sigphiphibcs[NClus];
396     Float_t covetaphibcs[NClus];
397     Float_t e3x3bcs[NClus];
398     Float_t e5x5bcs[NClus];
399     Float_t emaxbcs[NClus];
400     Float_t e2ndbcs[NClus];
401     Float_t etopbcs[NClus];
402     Float_t ebottombcs[NClus];
403     Float_t eleftbcs[NClus];
404     Float_t erightbcs[NClus];
405     Float_t e1x3bcs[NClus];
406     Float_t e3x1bcs[NClus];
407     Float_t e1x5bcs[NClus];
408     Float_t e2x2bcs[NClus];
409     Float_t e4x4bcs[NClus];
410     Float_t e2x5maxbcs[NClus];
411     Float_t e2x5topbcs[NClus];
412     Float_t e2x5bottombcs[NClus];
413     Float_t e2x5leftbcs[NClus];
414     Float_t e2x5rightbcs[NClus];
415     UInt_t nhitsbcs[NClus];
416    
417     Float_t epfbcs[NClus];
418     Float_t etapfbcs[NClus];
419     Float_t phipfbcs[NClus];
420     Int_t ietapfbcs[NClus];
421     Int_t iphipfbcs[NClus];
422     Int_t ixpfbcs[NClus];
423     Int_t iypfbcs[NClus];
424     Float_t etacrypfbcs[NClus];
425     Float_t phicrypfbcs[NClus];
426     Float_t xcrypfbcs[NClus];
427     Float_t ycrypfbcs[NClus];
428     Float_t sigietaietapfbcs[NClus];
429     Float_t sigiphiphipfbcs[NClus];
430     Float_t covietaiphipfbcs[NClus];
431     Float_t sigetaetapfbcs[NClus];
432     Float_t sigphiphipfbcs[NClus];
433     Float_t covetaphipfbcs[NClus];
434     Float_t e3x3pfbcs[NClus];
435     Float_t e5x5pfbcs[NClus];
436     Float_t emaxpfbcs[NClus];
437     Float_t e2ndpfbcs[NClus];
438     Float_t etoppfbcs[NClus];
439     Float_t ebottompfbcs[NClus];
440     Float_t eleftpfbcs[NClus];
441     Float_t erightpfbcs[NClus];
442     Float_t e1x3pfbcs[NClus];
443     Float_t e3x1pfbcs[NClus];
444     Float_t e1x5pfbcs[NClus];
445     Float_t e2x2pfbcs[NClus];
446     Float_t e4x4pfbcs[NClus];
447     Float_t e2x5maxpfbcs[NClus];
448     Float_t e2x5toppfbcs[NClus];
449     Float_t e2x5bottompfbcs[NClus];
450     Float_t e2x5leftpfbcs[NClus];
451     Float_t e2x5rightpfbcs[NClus];
452     UInt_t nhitspfbcs[NClus];
453    
454     Float_t epsc[100];
455     Float_t etapsc[100];
456     Float_t phipsc[100];
457     UChar_t planepsc[100];
458    
459    
460 bendavid 1.1 };
461    
462     class PhotonTreeWriterDiphotonEvent
463     {
464     public:
465 fabstoec 1.12 // ------------ BTAG STUFF -------------------
466 fabstoec 1.15 Float_t btagJet1;
467     Float_t btagJet1Pt;
468     Float_t btagJet1Eta;
469     Float_t btagJet2;
470     Float_t btagJet2Pt;
471     Float_t btagJet2Eta;
472 veverka 1.38 // ----------- VH/LEPTON TAG STUFF -------------
473 veverka 1.34 Int_t leptonTag; // flavor-based, Moriond 2013
474 veverka 1.35 Int_t VHLepTag; // MET-based, since legacy paper 2013
475 veverka 1.38 Int_t VHHadTag; // VH hadronic tag
476     // ----------- VERTEX SYNCHING STUFF -------
477 fabstoec 1.26
478     Int_t vtxInd1;
479     Int_t vtxInd2;
480     Int_t vtxInd3;
481    
482     Float_t vtxBestPtbal ;
483     Float_t vtxBestPtasym ;
484     Float_t vtxBestSumpt2 ;
485     Float_t vtxBestP2Conv ;
486    
487     Float_t vtxMva1Z ;
488     Float_t vtxMva2Z ;
489     Float_t vtxMva3Z ;
490    
491     Float_t vtxMva1 ;
492     Float_t vtxMva2 ;
493     Float_t vtxMva3 ;
494    
495     Int_t vtxNleg1 ;
496     Int_t vtxNleg2 ;
497     Int_t vtxConvIdx1 ;
498     Int_t vtxConvIdx2 ;
499     Int_t vtxNconv ;
500    
501     Float_t vtxConv1Z ;
502     Float_t vtxConv1DZ ;
503     Float_t vtxConv1Prob ;
504    
505     Float_t vtxConv2Z ;
506     Float_t vtxConv2DZ ;
507     Float_t vtxConv2Prob ;
508    
509    
510 fabstoec 1.11 // ---------- MUON STUFF --------------------
511     Float_t muonPt;
512     Float_t muonEta;
513     Float_t muDR1;
514     Float_t muDR2;
515     Float_t muIso1;
516     Float_t muIso2;
517     Float_t muIso3;
518     Float_t muIso4;
519     Float_t muD0;
520     Float_t muDZ;
521     Int_t muNhits;
522     Float_t muChi2;
523     Int_t muNpixhits;
524     Int_t muNegs;
525     Int_t muNMatch;
526     // ----------- ELECTRON STUFF --------------
527     Float_t elePt;
528     Float_t eleEta;
529     Float_t eleSCEta;
530     Float_t eleIso1;
531     Float_t eleIso2;
532     Float_t eleIso3;
533     Float_t eleIso4;
534     Float_t eleDist;
535     Float_t eleDcot;
536     Float_t eleCoviee;
537     Float_t eleDphiin;
538     Float_t eleDetain;
539     Float_t eleDR1;
540     Float_t eleDR2;
541     Float_t eleMass1;
542     Float_t eleMass2;
543     Int_t eleNinnerHits;
544 fabstoec 1.26 Float_t eleIdMva;
545 fabstoec 1.11 // -----------------------------------------
546 bendavid 1.1 Float_t rho;
547 bendavid 1.17 Float_t rho25;
548     Float_t rhoold;
549 bendavid 1.1 Float_t genHiggspt;
550     Float_t genHiggsZ;
551     Float_t genmass;
552     Float_t gencostheta;
553 bendavid 1.23 Float_t genz;
554 bendavid 1.2 Float_t bsX;
555     Float_t bsY;
556     Float_t bsZ;
557 bendavid 1.7 Float_t bsSigmaZ;
558 bendavid 1.2 Float_t vtxX;
559     Float_t vtxY;
560 bendavid 1.1 Float_t vtxZ;
561     Int_t nVtx;
562     Int_t numPU;
563     Int_t numPUminus;
564     Int_t numPUplus;
565     Float_t mass;
566 bendavid 1.2 Float_t masserr;
567     Float_t masserrsmeared;
568 bendavid 1.4 Float_t masserrwrongvtx;
569     Float_t masserrsmearedwrongvtx;
570     Float_t vtxprob;
571 bendavid 1.5 Float_t deltamvtx;
572 bendavid 1.1 Float_t ptgg;
573 bendavid 1.5 Float_t etagg;
574     Float_t phigg;
575 bendavid 1.1 Float_t costheta;
576 bendavid 1.2 Float_t massele;
577     Float_t ptee;
578     Float_t costhetaele;
579     Float_t mt;
580     Float_t cosphimet;
581     Float_t mtele;
582     Float_t cosphimetele;
583 bendavid 1.1 UInt_t evt;
584     UInt_t run;
585     UInt_t lumi;
586     UChar_t evtcat;
587 bendavid 1.2 UInt_t nobj;
588 fabstoec 1.13 Double_t fromZ; //added: Heng 2/14/2012
589     Double_t fromW; //added: Heng
590     Float_t zpt; //added: Heng
591     Float_t allZpt; //added: Heng
592     Float_t zEta; //added: Heng
593     Float_t allZEta; //added: Heng
594 fabstoec 1.16
595     //Met stuff
596 fabstoec 1.13 Float_t corrpfmet;
597     Float_t corrpfmetphi;
598     Float_t corrpfmetx;
599     Float_t corrpfmety;
600     Double_t dphiMetgg;
601     Double_t cosdphiMetgg;
602     Double_t dphiPhPh;
603 bendavid 1.2 Float_t pfmet;
604     Float_t pfmetphi;
605     Float_t pfmetx;
606     Float_t pfmety;
607 mtouch 1.20
608 bendavid 1.17
609     Float_t mvametsel;
610     Float_t mvametselphi;
611     Float_t mvametselx;
612     Float_t mvametsely;
613     Float_t mvametselsig;
614    
615     Float_t mvametfirst;
616     Float_t mvametfirstphi;
617     Float_t mvametfirstx;
618     Float_t mvametfirsty;
619     Float_t mvametfirstsig;
620    
621 fabstoec 1.16 Double_t spfMet;
622 bendavid 1.17
623 mingyang 1.24 // ----------- VBF TAG STUFF -------------
624     Int_t vbfTag;
625     Float_t vbfbdt;
626 mtouch 1.20
627 veverka 1.30 // ----------- TTH TAG STUFF -------------
628     Int_t tthTag;
629    
630 mingyang 1.24 // ----------------------------------------
631 bendavid 1.5 UChar_t ismc;
632 bendavid 1.25 Int_t mcprocid;
633 bendavid 1.32 Double_t mcweight;
634 bendavid 1.1
635     //corrected quantities from PhotonFix corrections
636     Float_t masscor;
637     Float_t masscorerr;
638 bendavid 1.2 Float_t masscorele;
639     Float_t masscoreleerr;
640 mingyang 1.28
641     //jet quantities for met phi cut
642     Float_t jetleadNoIDpt;
643     Float_t jetleadNoIDeta;
644     Float_t jetleadNoIDphi;
645     Float_t jetleadNoIDmass;
646    
647 bendavid 1.5 //jet quantities
648     Float_t jet1pt;
649     Float_t jet1eta;
650     Float_t jet1phi;
651     Float_t jet1mass;
652     Float_t jet2pt;
653     Float_t jet2eta;
654     Float_t jet2phi;
655     Float_t jet2mass;
656     Float_t jetcentralpt;
657     Float_t jetcentraleta;
658     Float_t jetcentralphi;
659     Float_t jetcentralmass;
660     Float_t dijetpt;
661     Float_t dijeteta;
662     Float_t dijetphi;
663     Float_t dijetmass;
664     Float_t jetetaplus;
665     Float_t jetetaminus;
666    
667 fabstoec 1.16 // Float_t uncorrjet1pt;
668     // Float_t uncorrjet1eta;
669     // Float_t uncorrjet1phi;
670     // Float_t uncorrjet1mass;
671     // Float_t uncorrjet2pt;
672     // Float_t uncorrjet2eta;
673     // Float_t uncorrjet2phi;
674     // Float_t uncorrjet2mass;
675     // Float_t uncorrjetcentralpt;
676     // Float_t uncorrjetcentraleta;
677     // Float_t uncorrjetcentralphi;
678     // Float_t uncorrjetcentralmass;
679     // Float_t diuncorrjetpt;
680     // Float_t diuncorrjeteta;
681     // Float_t diuncorrjetphi;
682     // Float_t diuncorrjetmass;
683     // Float_t uncorrjetetaplus;
684     // Float_t uncorrjetetaminus;
685    
686 bendavid 1.5 Float_t zeppenfeld;
687     Float_t dphidijetgg;
688    
689 bendavid 1.17 PhotonTreeWriterPhoton<16> photons[2];
690 veverka 1.34 }; // PhotonTreeWriterDiphotonEvent
691 bendavid 1.1
692 veverka 1.36
693 bendavid 1.1 class PhotonTreeWriter : public BaseMod
694     {
695     public:
696 veverka 1.35 enum CounterFlag {kCountNotDefined = -1};
697 bendavid 1.1 PhotonTreeWriter(const char *name ="PhotonTreeWriter",
698     const char *title="Selecting PhotonPairs");
699    
700     ~PhotonTreeWriter();
701    
702     // setting all the input Names
703     void SetInputPhotonsName(const char *n){ fPhotonBranchName= n; }
704     void SetPhotonsFromBranch(bool b) { fPhotonsFromBranch = b; }
705     void SetTrackName(const char *n) { fTrackBranchName = n; }
706     void SetElectronName(const char *n) { fElectronName = n; }
707     void SetConversionName(const char *n) { fConversionName = n; }
708     void SetPUDensityName(const char *n) { fPileUpDenName = n; }
709     void SetPVName(const char *n) { fPVName = n; }
710     void SetPVFromBranch(bool b) { fPVFromBranch = b; }
711     void SetMCParticle(const char *n) { fMCParticleName = n; }
712     void SetPUInfoName(const char *n) { fPileUpName = n; }
713     void SetBeamspotName(const char *n) { fBeamspotName = n; }
714     void SetPFCandName(const char *n) { fPFCandName = n; }
715 bendavid 1.2 void SetSuperClusterName(const char *n) { fSuperClusterName = n; }
716 bendavid 1.5 void SetPFJetName(const char *n) { fPFJetName = n; }
717 fabstoec 1.13 void SetGenJetName(const char *n) { fGenJetName = n; }
718     void SetuncorrPFJetName(const char *n) { funcorrPFJetName = n; }
719 veverka 1.38 void SetPFNoPileUpName(const char *n) { fPFNoPileUpName = n; }
720     void SetPFPileUpName(const char *n) { fPFPileUpName = n; }
721 fabstoec 1.22
722 fabstoec 1.13
723 bendavid 1.5 void SetPFJetsFromBranch(Bool_t b) { fPFJetsFromBranch = b; }
724     void SetEnableJets(Bool_t b) { fEnableJets = b; }
725 veverka 1.38 void SetEnableGenJets(Bool_t b) { fEnableGenJets = b; }
726 bendavid 1.18 void SetApplyJetId(Bool_t b) { fApplyJetId = b; }
727 fabstoec 1.10 void SetApplyLeptonTag(Bool_t b) { fApplyLeptonTag = b; }
728 veverka 1.38 void SetApplyVHLepTag(Bool_t b) { fApplyVHLepTag = b; }
729     void SetApplyVHHadTag(Bool_t b) { fApplyVHHadTag = b; }
730 mingyang 1.24 void SetApplyVBFTag(Bool_t b) { fApplyVBFTag = b; }
731 veverka 1.30 void SetApplyTTHTag(Bool_t b) { fApplyTTHTag = b; }
732 fabstoec 1.12 void SetApplyBTag(Bool_t b) { fApplyBTag = b; }
733 fabstoec 1.14 void SetApplyPFMetCorr(Bool_t b) { fApplyPFMetCorrections = b; }
734 bendavid 1.2 void SetPhFixDataFile(const char *n) { fPhFixDataFile = n; }
735 veverka 1.30 void SetVerbosityLevel(Bool_t b) { fVerbosityLevel = b; }
736 bendavid 1.1
737 fabstoec 1.16
738 fabstoec 1.22
739    
740 bendavid 1.1 // set basic Cut variables (FOR PRE-SELECTION)
741    
742     // is Data Or Not?
743 paus 1.9 void SetIsData (Bool_t b) { fIsData = b; };
744 bendavid 1.1
745    
746 bendavid 1.6 void SetApplyElectronVeto(Bool_t b) { fApplyElectronVeto = b; }
747 bendavid 1.1
748 paus 1.9 void SetTupleName(const char* c) { fTupleName = c; }
749 bendavid 1.1 void SetGoodElectronsFromBranch(Bool_t b) { fGoodElectronsFromBranch = b; }
750 paus 1.9 void SetGoodElectronName(TString name) { fGoodElectronName = name; }
751     void SetWriteDiphotonTree(Bool_t b) { fWriteDiphotonTree = b; }
752     void SetWriteSingleTree(Bool_t b) { fWriteSingleTree = b; }
753     void SetLoopOnGoodElectrons(Bool_t b) { fLoopOnGoodElectrons = b; }
754 bendavid 1.17 void SetEnablePFPhotons(Bool_t b) { fEnablePFPhotons = b; }
755 paus 1.9 void SetExcludeSinglePrompt(Bool_t b) { fExcludeSinglePrompt = b; }
756     void SetExcludeDoublePrompt(Bool_t b) { fExcludeDoublePrompt = b; }
757 bendavid 1.1
758 fabstoec 1.10 void SetLeptonTagElectronsName(TString name) { fLeptonTagElectronsName = name; }
759     void SetLeptonTagMuonsName (TString name) { fLeptonTagMuonsName = name; }
760 veverka 1.35 void SetLeptonTagSoftElectronsName(TString name) { fLeptonTagSoftElectronsName = name; }
761     void SetLeptonTagSoftMuonsName (TString name) { fLeptonTagSoftMuonsName = name; }
762 fabstoec 1.22 void SetFillClusterArrays(Bool_t b) { fFillClusterArrays = b; }
763 fabstoec 1.10
764 fabstoec 1.22 void SetDo2012LepTag(Bool_t b) { fDo2012LepTag = b; }
765 bendavid 1.17
766 bendavid 1.23 void SetBeamspotWidth(Double_t x) { fBeamspotWidth = x; }
767 fabstoec 1.26
768     void SetElectronMVAWeightsSubdet0Pt10To20(TString s)
769     { fElectronMVAWeights_Subdet0Pt10To20 = s; }
770     void SetElectronMVAWeightsSubdet1Pt10To20(TString s)
771     { fElectronMVAWeights_Subdet1Pt10To20 = s; }
772     void SetElectronMVAWeightsSubdet2Pt10To20(TString s)
773     { fElectronMVAWeights_Subdet2Pt10To20 = s; }
774     void SetElectronMVAWeightsSubdet0Pt20ToInf(TString s)
775     { fElectronMVAWeights_Subdet0Pt20ToInf = s; }
776     void SetElectronMVAWeightsSubdet1Pt20ToInf(TString s)
777     { fElectronMVAWeights_Subdet1Pt20ToInf = s; }
778     void SetElectronMVAWeightsSubdet2Pt20ToInf(TString s)
779     { fElectronMVAWeights_Subdet2Pt20ToInf = s; }
780    
781 fabstoec 1.27 void SetDoSynching(bool b) {fDoSynching = b;}
782 fabstoec 1.26
783    
784 bendavid 1.23
785 bendavid 1.1 protected:
786     void Process();
787     void SlaveBegin();
788 veverka 1.38 void SlaveTerminate();
789 veverka 1.33 void Terminate();
790 paus 1.9 // Private auxiliary methods...
791 bendavid 1.1 void FindHiggsPtAndZ(Float_t& pt, Float_t& z, Float_t& mass);
792 paus 1.9 Float_t GetEventCat (PhotonTools::CiCBaseLineCats cat1,
793     PhotonTools::CiCBaseLineCats cat2);
794 veverka 1.34 void ApplyLeptonTag(const Photon *phHard,
795     const Photon *phSoft,
796     const Vertex *selvtx);
797 veverka 1.35 const Muon * GetLeptonTagMuon(const Photon *phHard,
798     const Photon *phSoft);
799     void SetLeptonTagMuonVars(const Photon *phHard,
800     const Photon *phSoft,
801     const Muon *muon);
802     const Electron * GetLeptonTagElectron(const Photon *phHard,
803     const Photon *phSoft);
804     bool MassOfPairIsWithinWindowAroundMZ(
805     const Particle * particle1,
806     const Particle * particle2,
807     Float_t halfWindowSize,
808     Float_t MZ = 91.19
809     );
810     void ApplyVHLepTag(const Photon *phHard,
811     const Photon *phSoft,
812     const Vertex *selvtx);
813 veverka 1.38 void ApplyVHHadTag(const Photon *phHard,
814     const Photon *phSoft,
815     const Vertex *selvtx);
816     void ApplyTTHTag(const Photon *phHard,
817     const Photon *phSoft,
818     const Vertex *selvtx);
819     bool VHLepHasDielectron(const Photon *phHard,
820     const Photon *phSoft);
821     bool VHLepHasDimuon(const Photon *phHard,
822     const Photon *phSoft);
823     UInt_t VHLepNumberOfJets(const Photon *phHard,
824     const Photon *phSoft,
825     const Vertex *selvtx,
826     const Particle *lepton);
827     bool VHHadPassesCommonCuts(const Photon *phHard,
828     const Photon *phSoft,
829     const Vertex *selvtx);
830     UInt_t VHHadNumberOfJets(const Photon *phHard,
831     const Photon *phSoft,
832     const Vertex *selvtx);
833     UInt_t VHHadNumberOfBJets(const Photon *phHard,
834     const Photon *phSoft,
835     const Vertex *selvtx);
836 bendavid 1.1
837     // Names for the input Collections
838     TString fPhotonBranchName;
839 bendavid 1.17 TString fPFPhotonName;
840 bendavid 1.1 TString fElectronName;
841     TString fGoodElectronName;
842     TString fConversionName;
843 fabstoec 1.26 TString fPFConversionName;
844 bendavid 1.1 TString fTrackBranchName;
845     TString fPileUpDenName;
846     TString fPVName;
847     TString fBeamspotName;
848     TString fPFCandName;
849 fabstoec 1.22 TString fPFNoPileUpName; //name of pfnpu collection
850     TString fPFPileUpName; //name of pfpu collection
851    
852 bendavid 1.1 TString fMCParticleName;
853 bendavid 1.25 TString fMCEventInfoName;
854    
855 bendavid 1.1 TString fPileUpName;
856 bendavid 1.2 TString fSuperClusterName;
857     TString fPFMetName;
858 bendavid 1.5 TString fPFJetName;
859 fabstoec 1.10
860 mtouch 1.20
861 fabstoec 1.16 TString funcorrPFJetName;
862 fabstoec 1.13 TString fGenJetName; //added to do pfmet correction 05/01/2012
863    
864 mtouch 1.20
865 fabstoec 1.10 TString fLeptonTagElectronsName;
866     TString fLeptonTagMuonsName;
867 veverka 1.35 TString fLeptonTagSoftElectronsName;
868     TString fLeptonTagSoftMuonsName;
869 fabstoec 1.10
870 bendavid 1.1
871     // is it Data or MC?
872     Bool_t fIsData;
873    
874     // in case there's some PV pre-selection
875     Bool_t fPhotonsFromBranch;
876     Bool_t fPVFromBranch;
877     Bool_t fGoodElectronsFromBranch;
878 bendavid 1.5 Bool_t fPFJetsFromBranch;
879 bendavid 1.1
880 fabstoec 1.26 Bool_t fDoSynching;
881    
882 paus 1.9 const PhotonCol *fPhotons;
883 bendavid 1.17 const PhotonCol *fPFPhotons;
884 paus 1.9 const ElectronCol *fElectrons;
885     const ElectronCol *fGoodElectrons;
886     const DecayParticleCol *fConversions;
887 fabstoec 1.26 const DecayParticleCol *fPFConversions;
888 paus 1.9 const TrackCol *fTracks;
889     const PileupEnergyDensityCol *fPileUpDen;
890     const VertexCol *fPV;
891     const BeamSpotCol *fBeamspot;
892     const PFCandidateCol *fPFCands;
893     const MCParticleCol *fMCParticles;
894 bendavid 1.25 const MCEventInfo *fMCEventInfo;
895 paus 1.9 const PileupInfoCol *fPileUp;
896     const SuperClusterCol *fSuperClusters;
897     const PFMetCol *fPFMet;
898     const JetCol *fPFJets;
899 fabstoec 1.13 const GenJetCol *fGenJets;
900     const PFJetCol *funcorrPFJets;
901 bendavid 1.2
902 fabstoec 1.10 const ElectronCol *fLeptonTagElectrons;
903     const MuonCol *fLeptonTagMuons;
904 veverka 1.35 const ElectronCol *fLeptonTagSoftElectrons;
905     const MuonCol *fLeptonTagSoftMuons;
906 fabstoec 1.22 const PFCandidateCol *fPFNoPileUpCands; //!pfnpu collection
907     const PFCandidateCol *fPFPileUpCands; //!pfpu collection
908 fabstoec 1.10
909 bendavid 1.1 // --------------------------------
910 paus 1.9 Bool_t fLoopOnGoodElectrons; //loop over good elecs instead of photons
911     Bool_t fApplyElectronVeto; //invert elec veto (for cic sel. only atm)
912     Bool_t fWriteDiphotonTree;
913     Bool_t fWriteSingleTree;
914 bendavid 1.1
915 bendavid 1.17 Bool_t fEnablePFPhotons;
916    
917 paus 1.9 Bool_t fExcludeSinglePrompt;
918     Bool_t fExcludeDoublePrompt;
919 bendavid 1.2
920 paus 1.9 Bool_t fEnableJets;
921 mingyang 1.29 Bool_t fEnableGenJets;
922 bendavid 1.18 Bool_t fApplyJetId;
923 fabstoec 1.10
924     Bool_t fApplyLeptonTag;
925 veverka 1.35 Bool_t fApplyVHLepTag;
926 veverka 1.38 Bool_t fApplyVHHadTag;
927 mingyang 1.24 Bool_t fApplyVBFTag;
928 veverka 1.30 Bool_t fApplyTTHTag;
929 fabstoec 1.12 Bool_t fApplyBTag;
930 fabstoec 1.14 Bool_t fApplyPFMetCorrections;
931 fabstoec 1.12
932 bendavid 1.17 Bool_t fFillClusterArrays;
933 bendavid 1.18 Bool_t fFillVertexTree;
934 bendavid 1.17
935 fabstoec 1.22 Bool_t fDo2012LepTag;
936 veverka 1.30
937     Int_t fVerbosityLevel;
938 fabstoec 1.22
939 paus 1.9 TString fPhFixDataFile;
940     PhotonFix fPhfixph;
941     PhotonFix fPhfixele;
942 bendavid 1.23
943     Double_t fBeamspotWidth;
944 veverka 1.30
945 veverka 1.33 TFile *fTmpFile;
946 veverka 1.36
947 bendavid 1.1 // --------------------------------
948 mingyang 1.24 // variables for vbf
949     float jet1pt_vbf;
950     float jet2pt_vbf;
951     float deltajeteta_vbf;
952     float dijetmass_vbf;
953     float zeppenfeld_vbf;
954     float dphidijetgg_vbf;
955     float diphoptOverdiphomass_vbf;
956     float pho1ptOverdiphomass_vbf;
957     float pho2ptOverdiphomass_vbf;
958    
959     // --------------------------------
960 bendavid 1.1 // validation Tuple
961 paus 1.9 TString fTupleName;
962 bendavid 1.1 PhotonTreeWriterDiphotonEvent* fDiphotonEvent;
963 bendavid 1.17 PhotonTreeWriterPhoton<16>* fSinglePhoton;
964 paus 1.9 TTree* hCiCTuple;
965     TTree* hCiCTupleSingle;
966 bendavid 1.1
967 bendavid 1.18 PhotonTreeWriterVtx *fDiphotonVtx;
968     TTree *hVtxTree;
969    
970 bendavid 1.17 MVAMet fMVAMet;
971 bendavid 1.18 JetIDMVA fJetId;
972 mingyang 1.24 MVAVBF fMVAVBF;
973 bendavid 1.17
974 fabstoec 1.26 VertexTools fVtxTools;
975    
976     ElectronIDMVA *fElectronIDMVA;
977     TString fElectronMVAWeights_Subdet0Pt10To20;
978     TString fElectronMVAWeights_Subdet1Pt10To20;
979     TString fElectronMVAWeights_Subdet2Pt10To20;
980     TString fElectronMVAWeights_Subdet0Pt20ToInf;
981     TString fElectronMVAWeights_Subdet1Pt20ToInf;
982     TString fElectronMVAWeights_Subdet2Pt20ToInf;
983    
984     RhoUtilities::RhoType fTheRhoType;
985    
986 bendavid 1.1 ClassDef(PhotonTreeWriter, 1) // Photon identification module
987 mingyang 1.24 };
988 bendavid 1.1 }
989     #endif