ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitAna/DataTree/interface/Photon.h
Revision: 1.25
Committed: Thu Jun 25 17:04:45 2009 UTC (15 years, 10 months ago) by bendavid
Content type: text/plain
Branch: MAIN
Changes since 1.24: +83 -32 lines
Log Message:
Added and consolidated photon isolation and id for 31X - backwards compatible with 009

File Contents

# User Rev Content
1 loizides 1.1 //--------------------------------------------------------------------------------------------------
2 bendavid 1.25 // $Id: Photon.h,v 1.24 2009/03/18 15:44:32 loizides Exp $
3 loizides 1.1 //
4     // Photon
5     //
6 loizides 1.24 // This class holds the reconstructed photon quantities.
7 loizides 1.1 //
8 loizides 1.2 // Authors: J.Bendavid, C.Loizides
9 loizides 1.1 //--------------------------------------------------------------------------------------------------
10    
11 loizides 1.12 #ifndef MITANA_DATATREE_PHOTON_H
12     #define MITANA_DATATREE_PHOTON_H
13 loizides 1.1
14 loizides 1.24 #include "MitCommon/DataFormats/interface/Vect4M.h"
15 loizides 1.4 #include "MitAna/DataTree/interface/Types.h"
16 bendavid 1.3 #include "MitAna/DataTree/interface/Particle.h"
17     #include "MitAna/DataTree/interface/Conversion.h"
18 loizides 1.11 #include "MitAna/DataCont/interface/RefArray.h"
19 loizides 1.1
20     namespace mithep
21     {
22 bendavid 1.3 class Photon : public Particle
23 loizides 1.1 {
24     public:
25 bendavid 1.25 Photon() : fR9(0),fHadOverEm(0),fEcalRecHitIso(0),fHcalRecHitIso(0), fHcalTowerSumEtDr04(0),
26     fHcalDepth1TowerSumEtDr04(0), fHcalDepth2TowerSumEtDr04(0), fSolidConeTrkIso(0),
27     fHollowConeTrkIso(0),fSolidConeNTrk(0),fHollowConeNTrk(0), fEcalRecHitIsoDr03(0),
28     fHcalTowerSumEtDr03(0), fHcalDepth1TowerSumEtDr03(0), fHcalDepth2TowerSumEtDr03(0),
29     fSolidConeTrkIsoDr03(0), fHollowConeTrkIsoDr03(0),fSolidConeNTrkDr03(0),
30     fHollowConeNTrkDr03(0), fHasPixelSeed(0), fIsEBGap(0),fIsEEGap(0),fIsEBEEGap(0),
31     fIsLooseEM(0),fIsLoosePhoton(0), fIsTightPhoton(0),fIsConverted(0) {}
32 loizides 1.21 Photon(Double_t px, Double_t py, Double_t pz, Double_t e) :
33 loizides 1.24 fMom(FourVector(px,py,pz,e)),
34 bendavid 1.25 fR9(0),fHadOverEm(0),fEcalRecHitIso(0),fHcalRecHitIso(0), fHcalTowerSumEtDr04(0),
35     fHcalDepth1TowerSumEtDr04(0), fHcalDepth2TowerSumEtDr04(0), fSolidConeTrkIso(0),
36     fHollowConeTrkIso(0),fSolidConeNTrk(0),fHollowConeNTrk(0), fEcalRecHitIsoDr03(0),
37     fHcalTowerSumEtDr03(0), fHcalDepth1TowerSumEtDr03(0), fHcalDepth2TowerSumEtDr03(0),
38     fSolidConeTrkIsoDr03(0), fHollowConeTrkIsoDr03(0),fSolidConeNTrkDr03(0),
39     fHollowConeNTrkDr03(0), fHasPixelSeed(0), fIsEBGap(0),fIsEEGap(0),fIsEBEEGap(0),
40     fIsLooseEM(0),fIsLoosePhoton(0), fIsTightPhoton(0),fIsConverted(0) {}
41 loizides 1.2
42 loizides 1.19 const Conversion *ConvCand(UInt_t i) const { return fConversions.At(i); }
43 bendavid 1.25 Double_t EcalRecHitIso() const { return EcalRecHitIsoDr04();} //*DEPRECATED*
44     Double_t EcalRecHitIsoDr03() const { return fEcalRecHitIsoDr03; }
45     Double_t EcalRecHitIsoDr04() const { return fEcalRecHitIso; }
46 sixie 1.16 Double_t HadOverEm() const { return fHadOverEm; }
47 loizides 1.24 Bool_t HasPixelSeed() const { return fHasPixelSeed; }
48 bendavid 1.25 Double_t HcalDepth1TowerSumEtDr03() const { return fHcalDepth1TowerSumEtDr03; }
49     Double_t HcalDepth1TowerSumEtDr04() const { return fHcalDepth1TowerSumEtDr04; }
50     Double_t HcalDepth2TowerSumEtDr03() const { return fHcalDepth2TowerSumEtDr03; }
51     Double_t HcalDepth2TowerSumEtDr04() const { return fHcalDepth2TowerSumEtDr03; }
52     Double_t HcalRecHitIso() const { return fHcalRecHitIso; } //*DEPRECATED*
53     Double_t HcalTowerSumEtDr03() const { return fHcalTowerSumEtDr03;}
54     Double_t HcalTowerSumEtDr04() const { return fHcalTowerSumEtDr03;}
55     UShort_t HollowConeNTrk() const { return HollowConeNTrkDr04(); } //*DEPRECATED*
56     UShort_t HollowConeNTrkDr03() const { return fHollowConeNTrkDr03; }
57     UShort_t HollowConeNTrkDr04() const { return fHollowConeNTrk; }
58     Double_t HollowConeTrkIso() const { return HollowConeTrkIsoDr04(); } //*DEPRECATED*
59     Double_t HollowConeTrkIsoDr03() const { return fHollowConeTrkIsoDr03; }
60     Double_t HollowConeTrkIsoDr04() const { return fHollowConeTrkIso; }
61     Bool_t IsEB() const { return fIsEB; }
62     Bool_t IsEE() const { return fIsEE; }
63 sixie 1.16 Bool_t IsEBGap() const { return fIsEBGap; }
64     Bool_t IsEEGap() const { return fIsEEGap; }
65     Bool_t IsEBEEGap() const { return fIsEBEEGap; }
66 bendavid 1.25 Bool_t IsLooseEM() const { return fIsLooseEM; } //*DEPRECATED*
67 sixie 1.16 Bool_t IsLoosePhoton() const { return fIsLoosePhoton; }
68     Bool_t IsTightPhoton() const { return fIsTightPhoton; }
69     Bool_t IsConverted() const { return fIsConverted; }
70 loizides 1.21 UInt_t NConversions() const { return fConversions.Entries(); }
71     EObjType ObjType() const { return kPhoton; }
72     Double_t R9() const { return fR9; }
73     const SuperCluster *SCluster() const { return fSuperClusterRef.Obj(); }
74 bendavid 1.25 Double_t SolidConeTrkIso() const { return SolidConeTrkIsoDr04(); } //*DEPRECATED*
75     Double_t SolidConeTrkIsoDr03() const { return fSolidConeTrkIsoDr03; }
76     Double_t SolidConeTrkIsoDr04() const { return fSolidConeTrkIso; }
77     UShort_t SolidConeNTrk() const { return SolidConeNTrkDr04(); } //*DEPRECATED*
78     UShort_t SolidConeNTrkDr03() const { return fSolidConeNTrkDr03; }
79     UShort_t SolidConeNTrkDr04() const { return fSolidConeNTrk; }
80 loizides 1.24 void AddConversion(const Conversion *c) { fConversions.Add(c); }
81 loizides 1.21 void SetIsConverted(Bool_t isConv) { fIsConverted = isConv; }
82 loizides 1.2 void SetMom(Double_t px, Double_t py, Double_t pz, Double_t e);
83 bendavid 1.20 void SetSuperCluster(const SuperCluster* sc) { fSuperClusterRef = sc; }
84 sixie 1.16 void SetR9(Double_t x) { fR9 = x; }
85     void SetHadOverEm(Double_t x) { fHadOverEm = x; }
86 loizides 1.24 void SetHasPixelSeed(Bool_t x) { fHasPixelSeed = x; }
87 bendavid 1.25 void SetEcalRecHitIsoDr04(Double_t x) { fEcalRecHitIso = x; }
88     void SetHcalTowerSumEtDr04(Double_t x) { fHcalTowerSumEtDr04 = x; }
89     void SetHcalDepth1TowerSumEtDr04(Double_t x) { fHcalDepth1TowerSumEtDr04 = x; }
90     void SetHcalDepth2TowerSumEtDr04(Double_t x) { fHcalDepth2TowerSumEtDr04 = x; }
91     void SetSolidConeTrkIsoDr04(Double_t x) { fSolidConeTrkIso = x; }
92     void SetHollowConeTrkIsoDr04(Double_t x) { fHollowConeTrkIso = x; }
93     void SetSolidConeNTrkDr04(UShort_t x) { fSolidConeNTrk = x; }
94     void SetHollowConeNTrkDr04(UShort_t x) { fHollowConeNTrk = x; }
95     void SetEcalRecHitIsoDr03(Double_t x) { fEcalRecHitIsoDr03 = x; }
96     void SetHcalTowerSumEtDr03(Double_t x) { fHcalTowerSumEtDr03 = x; }
97     void SetHcalDepth1TowerSumEtDr03(Double_t x) { fHcalDepth1TowerSumEtDr03 = x; }
98     void SetHcalDepth2TowerSumEtDr03(Double_t x) { fHcalDepth2TowerSumEtDr03 = x; }
99     void SetSolidConeTrkIsoDr03(Double_t x) { fSolidConeTrkIsoDr03 = x; }
100     void SetHollowConeTrkIsoDr03(Double_t x) { fHollowConeTrkIsoDr03 = x; }
101     void SetSolidConeNTrkDr03(UShort_t x) { fSolidConeNTrkDr03 = x; }
102     void SetHollowConeNTrkDr03(UShort_t x) { fHollowConeNTrkDr03 = x; }
103     void SetIsEB(Bool_t x) { fIsEB = x; }
104     void SetIsEE(Bool_t x) { fIsEE = x; }
105 sixie 1.16 void SetIsEBGap(Bool_t x) { fIsEBGap = x; }
106     void SetIsEEGap(Bool_t x) { fIsEEGap = x; }
107     void SetIsEBEEGap(Bool_t x) { fIsEBEEGap = x; }
108     void SetIsLooseEM(Bool_t x) { fIsLooseEM = x; }
109     void SetIsLoosePhoton(Bool_t x) { fIsLoosePhoton = x; }
110     void SetIsTightPhoton(Bool_t x) { fIsTightPhoton = x; }
111    
112 loizides 1.1 protected:
113 loizides 1.21 void GetMom() const;
114    
115 loizides 1.24 Vect4M fMom; //four momentum vector
116     Double32_t fR9; //[0,0,14]r9=e3x3/etotal variable
117     Double32_t fHadOverEm; //[0,0,14]hadronic over em fraction
118 bendavid 1.25 Double32_t fEcalRecHitIso; //[0,0,14]ecal rechit based isolation dR 0.4
119     Double32_t fHcalRecHitIso; //[0,0,14] hcal rechit based isolation dR 0.4 - *DEPRECATED*
120     Double32_t fHcalTowerSumEtDr04;//[0,0,14] hcal tower based isolation dR 0.4
121     Double32_t fHcalDepth1TowerSumEtDr04; //[0,0,14]hcal depth1 tower based isolation dR 0.4
122     Double32_t fHcalDepth2TowerSumEtDr04; //[0,0,14]hcal depth2 tower based isolation dR 0.4
123     Double32_t fSolidConeTrkIso; //[0,0,14]sum track pT in cone of dR 0.4
124     Double32_t fHollowConeTrkIso; //[0,0,14]as above excluding the core, dR 0.4
125     UShort_t fSolidConeNTrk; //number of tracks in a cone of dR 0.4
126     UShort_t fHollowConeNTrk; //as above excluding the core, dR 0.4
127     Double32_t fEcalRecHitIsoDr03; //[0,0,14]ecal rechit based isolation dR 0.3
128     Double32_t fHcalTowerSumEtDr03;//[0,0,14] hcal tower based isolation dR 0.3
129     Double32_t fHcalDepth1TowerSumEtDr03; //[0,0,14]hcal depth1 tower based isolation dR 0.3
130     Double32_t fHcalDepth2TowerSumEtDr03; //[0,0,14]hcal depth2 tower based isolation dR 0.3
131     Double32_t fSolidConeTrkIsoDr03; //[0,0,14]sum track pT in cone of dR 0.3
132     Double32_t fHollowConeTrkIsoDr03; //[0,0,14]as above excluding the core, dR 0.3
133     UShort_t fSolidConeNTrkDr03; //number of tracks in a cone of dR 0.3
134     UShort_t fHollowConeNTrkDr03; //as above excluding the core, dR 0.3
135 loizides 1.24 Bool_t fHasPixelSeed; //=true if super cluster has matched seed
136 bendavid 1.25 Bool_t fIsEB; //=true if photon is ECal barrel
137     Bool_t fIsEE; //=true if photon is ECAL endcap
138     Bool_t fIsEBGap; //=true photon is in ECAL barrel crystal gap
139     Bool_t fIsEEGap; //=true photon is in ECAL endcap crystal gap
140 loizides 1.24 Bool_t fIsEBEEGap; //=true photon is in boundary between EB/EE
141 bendavid 1.25 Bool_t fIsLooseEM; //=true if loose em cuts are passed *DEPRECATED*
142     //LooseEM corresponds to supercluster preselection in 3_1_X
143     //so this variable is now always true for photon objects
144 loizides 1.24 Bool_t fIsLoosePhoton; //=true if loose photon cuts are passed
145     Bool_t fIsTightPhoton; //=true if tight photon cuts are passed
146     Bool_t fIsConverted; //=true if photon converted
147     RefArray<Conversion> fConversions; //refs to associated conversion candidates
148     Ref<SuperCluster> fSuperClusterRef; //ref to associated super cluster
149 loizides 1.1
150 bendavid 1.25 ClassDef(Photon,2) // Photon class
151 loizides 1.1 };
152     }
153 loizides 1.2
154     //--------------------------------------------------------------------------------------------------
155 loizides 1.21 inline void mithep::Photon::GetMom() const
156     {
157     // Get momentum values from stored values.
158    
159 loizides 1.24 fCachedMom.SetCoordinates(fMom.Pt(),fMom.Eta(),fMom.Phi(),fMom.M());
160 loizides 1.21 }
161    
162     //--------------------------------------------------------------------------------------------------
163 loizides 1.2 inline void mithep::Photon::SetMom(Double_t px, Double_t py, Double_t pz, Double_t e)
164     {
165 loizides 1.21 // Set momentum vector.
166 loizides 1.2
167 loizides 1.21 fMom.SetXYZT(px, py, pz, e);
168 bendavid 1.22 ClearMom();
169 loizides 1.2 }
170 loizides 1.1 #endif