ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitAna/DataTree/interface/PFTau.h
Revision: 1.12
Committed: Thu Mar 29 23:41:55 2012 UTC (13 years, 1 month ago) by paus
Content type: text/plain
Branch: MAIN
CVS Tags: Mit_029, Mit_029_pre1, Mit_028a, Mit_028, Mit_027a, Mit_027, Mit_026, Mit_025e
Changes since 1.11: +15 -19 lines
Log Message:
Version with working skimming and last 4.4 tag.

File Contents

# Content
1 //--------------------------------------------------------------------------------------------------
2 // $Id: PFTau.h,v 1.11 2012/03/28 12:15:34 paus Exp $
3 //
4 // PFTau
5 //
6 // This class holds information about reconstructed tau based on PFCandidates.
7 //
8 // Authors: J.Bendavid, C.Paus
9 //--------------------------------------------------------------------------------------------------
10
11 #ifndef MITANA_DATATREE_PFTAU_H
12 #define MITANA_DATATREE_PFTAU_H
13
14 #include "MitAna/DataTree/interface/Tau.h"
15 #include "MitAna/DataCont/interface/RefArray.h"
16 #include "MitAna/DataCont/interface/Ref.h"
17 #include "MitAna/DataTree/interface/PFCandidate.h"
18 #include "MitAna/DataTree/interface/BasicCluster.h"
19 #include "MitAna/DataTree/interface/PFJet.h"
20
21 namespace mithep
22 {
23 class PFTau : public Tau
24 {
25 public:
26 PFTau() : fLeadPFCandSignD0Sig(0), fHCalTotalEOverP(0), fHCalMaxEOverP(0),
27 fHCal3x3EOverP(0), fIsoChargedHadronPtSum(0), fIsoGammaEtSum(0),
28 fMaxHCalPFClusterEt(0), fEMFraction(0), fECalStripSumEOverP(0),
29 fBremRecoveryEOverP(0), fElectronPreIDOutput(0), fCaloCompatibility(0),
30 fSegmentCompatibility(0), fElectronPreIDDecision(kFALSE),
31 fMuonDecision(kFALSE),
32 fDiscriminationAgainstElectron(0),
33 fDiscriminationAgainstMuon(0),
34 fDiscriminationByLooseElectronRejection(0),
35 fDiscriminationByMediumElectronRejection(0),
36 fDiscriminationByTightElectronRejection(0),
37 fDiscriminationByMVAElectronRejection(0),
38 fDiscriminationByLooseMuonRejection(0),
39 fDiscriminationByMediumMuonRejection(0),
40 fDiscriminationByTightMuonRejection(0),
41 fDiscriminationByDecayModeFinding(0),
42 fDiscriminationByVLooseIsolation(0), fDiscriminationByLooseIsolation(0),
43 fDiscriminationByMediumIsolation(0), fDiscriminationByTightIsolation(0),
44 fDiscriminationByVLooseCombinedIsolationDBSumPtCorr(0),
45 fDiscriminationByLooseCombinedIsolationDBSumPtCorr(0),
46 fDiscriminationByMediumCombinedIsolationDBSumPtCorr(0),
47 fDiscriminationByTightCombinedIsolationDBSumPtCorr(0),
48 fDiscriminationByRawCombinedIsolationDBSumPtCorr(0) {}
49
50 PFTau(Double_t px, Double_t py, Double_t pz, Double_t e) :
51 Tau(px,py,pz,e),
52 fLeadPFCandSignD0Sig(0), fHCalTotalEOverP(0), fHCalMaxEOverP(0),
53 fHCal3x3EOverP(0), fIsoChargedHadronPtSum(0), fIsoGammaEtSum(0),
54 fMaxHCalPFClusterEt(0), fEMFraction(0), fECalStripSumEOverP(0),
55 fBremRecoveryEOverP(0), fElectronPreIDOutput(0), fCaloCompatibility(0),
56 fSegmentCompatibility(0), fElectronPreIDDecision(kFALSE),
57 fMuonDecision(kFALSE),
58 fDiscriminationAgainstElectron(0),
59 fDiscriminationAgainstMuon(0),
60 fDiscriminationByLooseElectronRejection(0),
61 fDiscriminationByMediumElectronRejection(0),
62 fDiscriminationByTightElectronRejection(0),
63 fDiscriminationByMVAElectronRejection(0),
64 fDiscriminationByLooseMuonRejection(0),
65 fDiscriminationByMediumMuonRejection(0),
66 fDiscriminationByTightMuonRejection(0),
67 fDiscriminationByDecayModeFinding(0),
68 fDiscriminationByVLooseIsolation(0), fDiscriminationByLooseIsolation(0),
69 fDiscriminationByMediumIsolation(0), fDiscriminationByTightIsolation(0),
70 fDiscriminationByVLooseCombinedIsolationDBSumPtCorr(0),
71 fDiscriminationByLooseCombinedIsolationDBSumPtCorr(0),
72 fDiscriminationByMediumCombinedIsolationDBSumPtCorr(0),
73 fDiscriminationByTightCombinedIsolationDBSumPtCorr(0),
74 fDiscriminationByRawCombinedIsolationDBSumPtCorr(0) {}
75
76 void AddIsoPFCand(const PFCandidate *p) { fIsoPFCands.Add(p); }
77 void AddSignalPFCand(const PFCandidate *p)
78 { ClearCharge(); fSignalPFCands.Add(p); }
79 void AddSignalPFChargedHadrCand(const PFCandidate *p) { fSignalPFChargedHadrCands.Add(p); }
80 void AddSignalPFNeutrHadrCand(const PFCandidate *p) { fSignalPFNeutrHadrCands.Add(p); }
81 void AddSignalPFGammaCand(const PFCandidate *p) { fSignalPFGammaCands.Add(p); }
82 Double_t BremRecoveryEOverP() const { return fBremRecoveryEOverP; }
83 Double_t CaloCompatibility() const { return fCaloCompatibility; }
84 Double_t ECalStripSumEOverP() const { return fECalStripSumEOverP; }
85 Double_t EMFraction() const { return fEMFraction; }
86 const Track *ElectronTrack() const { return fElectronTrack.Obj(); }
87 Bool_t ElectronPreIDDecision() const { return fElectronPreIDDecision; }
88 Double_t ElectronPreIDOutput() const { return fElectronPreIDOutput; }
89 Double_t HCal3x3EOverP() const { return fHCal3x3EOverP; }
90 Double_t HCalMaxEOverP() const { return fHCalMaxEOverP; }
91 Double_t HCalTotalEOverP() const { return fHCalTotalEOverP; }
92 Double_t IsoChargedHadronPtSum() const { return fIsoChargedHadronPtSum; }
93 Double_t IsoGammaEtSum() const { return fIsoGammaEtSum; }
94 const PFCandidate *IsoPFCand(UInt_t i) const { return fIsoPFCands.At(i); }
95 const PFCandidate *LeadChargedHadronPFCand() const { return fLeadChargedHadPFCand.Obj(); }
96 const PFCandidate *LeadNeutralHadronPFCand() const { return fLeadNeutralPFCand.Obj(); }
97 const PFCandidate *LeadPFCand() const { return fLeadPFCand.Obj(); }
98 Double_t LeadPFCandSignD0Sig() const { return fLeadPFCandSignD0Sig; }
99 Double_t MaxHCalPFClusterEt() const { return fMaxHCalPFClusterEt; }
100 Bool_t MuonDecision() const { return fMuonDecision; }
101 UInt_t NIsoPFCandS() const { return fIsoPFCands.Entries(); }
102 UInt_t NSignalPFCands() const { return fSignalPFCands.Entries(); }
103 UInt_t NSignalPFChargedHadrCands() const { return fSignalPFChargedHadrCands.Entries(); }
104 UInt_t NSignalPFNeutrHadrCands() const { return fSignalPFNeutrHadrCands.Entries(); }
105 UInt_t NSignalPFGammaCands() const { return fSignalPFGammaCands.Entries(); }
106 EObjType ObjType() const { return kPFTau; }
107 Double_t SegmentCompatibility() const { return fSegmentCompatibility; }
108 Double_t DiscriminationAgainstElectron() const {return fDiscriminationAgainstElectron;}
109 Double_t DiscriminationAgainstMuon() const {return fDiscriminationAgainstMuon;}
110 Double_t DiscriminationByLooseElectronRejection() const {return fDiscriminationByLooseElectronRejection;}
111 Double_t DiscriminationByMediumElectronRejection() const {return fDiscriminationByMediumElectronRejection;}
112 Double_t DiscriminationByTightElectronRejection() const {return fDiscriminationByTightElectronRejection;}
113 Double_t DiscriminationByMVAElectronRejection() const {return fDiscriminationByMVAElectronRejection;}
114 Double_t DiscriminationByLooseMuonRejection() const {return fDiscriminationByLooseMuonRejection;}
115 Double_t DiscriminationByMediumMuonRejection() const {return fDiscriminationByMediumMuonRejection;}
116 Double_t DiscriminationByTightMuonRejection() const {return fDiscriminationByTightMuonRejection;}
117 Double_t DiscriminationByDecayModeFinding() const {return fDiscriminationByDecayModeFinding;}
118 Double_t DiscriminationByVLooseIsolation() const {return fDiscriminationByVLooseIsolation;}
119 Double_t DiscriminationByLooseIsolation() const {return fDiscriminationByLooseIsolation;}
120 Double_t DiscriminationByMediumIsolation() const {return fDiscriminationByMediumIsolation;}
121 Double_t DiscriminationByTightIsolation() const {return fDiscriminationByTightIsolation;}
122 Double_t DiscriminationByVLooseCombinedIsolationDBSumPtCorr() const {return fDiscriminationByVLooseCombinedIsolationDBSumPtCorr;}
123 Double_t DiscriminationByLooseCombinedIsolationDBSumPtCorr() const {return fDiscriminationByLooseCombinedIsolationDBSumPtCorr;}
124 Double_t DiscriminationByMediumCombinedIsolationDBSumPtCorr() const {return fDiscriminationByMediumCombinedIsolationDBSumPtCorr;}
125 Double_t DiscriminationByTightCombinedIsolationDBSumPtCorr() const {return fDiscriminationByTightCombinedIsolationDBSumPtCorr;}
126 Double_t DiscriminationByRawCombinedIsolationDBSumPtCorr() const {return fDiscriminationByRawCombinedIsolationDBSumPtCorr;}
127
128 void SetCharge(Char_t x) { fCharge = x; ClearCharge(); }
129 void SetBremRecoveryEOverP(Double_t x) { fBremRecoveryEOverP = x; }
130 void SetCaloCompatibility(Double_t x) { fCaloCompatibility = x; }
131 void SetECalStripSumEOverP(Double_t x) { fECalStripSumEOverP = x; }
132 void SetEMFraction(Double_t x) { fEMFraction = x; }
133 void SetElectronPreIDDecision(Bool_t b) { fElectronPreIDDecision = b; }
134 void SetElectronPreIDOutput(Double_t x) { fElectronPreIDOutput = x; }
135 void SetElectronTrack(const Track *t) { fElectronTrack = t; }
136 void SetHCal3x3EOverP(Double_t x) { fHCal3x3EOverP = x; }
137 void SetHCalMaxEOverP(Double_t x) { fHCalMaxEOverP = x; }
138 void SetHCalTotalEOverP(Double_t x) { fHCalTotalEOverP = x; }
139 void SetIsoChargedHadronPtSum(Double_t x){ fIsoChargedHadronPtSum = x; }
140 void SetIsoGammaEtSum(Double_t x) { fIsoGammaEtSum = x; }
141 void SetLeadChargedHadronPFCand(const PFCandidate *p)
142 { fLeadChargedHadPFCand = p; }
143 void SetLeadNeutralPFCand(const PFCandidate *p) { fLeadNeutralPFCand = p; }
144 void SetLeadPFCand(const PFCandidate *p) { fLeadPFCand = p; }
145 void SetLeadPFCandSignD0Sig(Double_t x) { fLeadPFCandSignD0Sig = x; }
146 void SetMaxHCalPFClusterEt(Double_t x) { fMaxHCalPFClusterEt = x; }
147 void SetMuonDecision(Bool_t b) { fMuonDecision = b; }
148 void SetPFJet(const PFJet *j) { fPFJet = j; }
149 void SetSegmentCompatibility(Double_t x) { fSegmentCompatibility = x; }
150 const PFCandidate *SignalPFCand(UInt_t i) const { return fSignalPFCands.At(i); }
151 const PFCandidate *SignalPFChargedHadrCand(UInt_t i) const { return fSignalPFChargedHadrCands.At(i); }
152 const PFCandidate *SignalPFNeutrHadrCand(UInt_t i) const { return fSignalPFNeutrHadrCands.At(i); }
153 const PFCandidate *SignalPFGammaCand(UInt_t i) const { return fSignalPFGammaCands.At(i); }
154 const PFJet *SourcePFJet() const { return fPFJet.Obj(); }
155 const Jet *SourceJet() const { return SourcePFJet(); }
156
157 void SetDiscriminationAgainstElectron(Double_t x) {fDiscriminationAgainstElectron = x;}
158 void SetDiscriminationAgainstMuon(Double_t x) {fDiscriminationAgainstMuon = x;}
159 void SetDiscriminationByLooseElectronRejection(Double_t x) {fDiscriminationByLooseElectronRejection = x;}
160 void SetDiscriminationByMediumElectronRejection(Double_t x) {fDiscriminationByMediumElectronRejection = x;}
161 void SetDiscriminationByTightElectronRejection(Double_t x) {fDiscriminationByTightElectronRejection = x;}
162 void SetDiscriminationByMVAElectronRejection(Double_t x) {fDiscriminationByMVAElectronRejection = x;}
163 void SetDiscriminationByLooseMuonRejection(Double_t x) {fDiscriminationByLooseMuonRejection = x;}
164 void SetDiscriminationByMediumMuonRejection(Double_t x) {fDiscriminationByMediumMuonRejection = x;}
165 void SetDiscriminationByTightMuonRejection(Double_t x) {fDiscriminationByTightMuonRejection = x;}
166 void SetDiscriminationByDecayModeFinding(Double_t x) {fDiscriminationByDecayModeFinding = x;}
167 void SetDiscriminationByVLooseIsolation(Double_t x) {fDiscriminationByVLooseIsolation = x;}
168 void SetDiscriminationByLooseIsolation(Double_t x) {fDiscriminationByLooseIsolation = x;}
169 void SetDiscriminationByMediumIsolation(Double_t x) {fDiscriminationByMediumIsolation = x;}
170 void SetDiscriminationByTightIsolation(Double_t x) {fDiscriminationByTightIsolation = x;}
171 void SetDiscriminationByVLooseCombinedIsolationDBSumPtCorr(Double_t x) {fDiscriminationByVLooseCombinedIsolationDBSumPtCorr = x;}
172 void SetDiscriminationByLooseCombinedIsolationDBSumPtCorr(Double_t x) {fDiscriminationByLooseCombinedIsolationDBSumPtCorr = x; }
173 void SetDiscriminationByMediumCombinedIsolationDBSumPtCorr(Double_t x) {fDiscriminationByMediumCombinedIsolationDBSumPtCorr = x;}
174 void SetDiscriminationByTightCombinedIsolationDBSumPtCorr(Double_t x) {fDiscriminationByTightCombinedIsolationDBSumPtCorr = x; }
175 void SetDiscriminationByRawCombinedIsolationDBSumPtCorr(Double_t x) {fDiscriminationByRawCombinedIsolationDBSumPtCorr = x;}
176
177 // Some structural tools
178 void Mark(UInt_t i=1) const;
179
180 protected:
181 Double_t GetCharge() const;
182 Char_t fCharge; //stored charge
183 Double32_t fLeadPFCandSignD0Sig; //[0,0,14]signed lead track D0 significance
184 Double32_t fHCalTotalEOverP; //[0,0,14]total hcal e / lead ch had pfcand mom
185 Double32_t fHCalMaxEOverP; //[0,0,14]max hcal e / lead ch had pfcand. mom
186 Double32_t fHCal3x3EOverP; //[0,0,14]3x3 hcal e / lead ch hadron pfcand. mom
187 Double32_t fIsoChargedHadronPtSum; //[0,0,14]sum pt of sel. ch had pfcands in iso cone
188 Double32_t fIsoGammaEtSum; //[0,0,14]sum et of sel. photon pfcands in iso cone
189 Double32_t fMaxHCalPFClusterEt; //[0,0,14]et of largest et hcal pfcluster
190 Double32_t fEMFraction; //[0,0,14]em energy fraction
191 Double32_t fECalStripSumEOverP; //[0,0,14]simple brem recovery e / lead ch had mom
192 Double32_t fBremRecoveryEOverP; //[0,0,14]brem recovery E / lead charged hadron P
193 Double32_t fElectronPreIDOutput; //[0,0,14]pfel pre id bdt output to be an el
194 Double32_t fCaloCompatibility; //[0,0,14]calo comp. for this tau to be a muon
195 Double32_t fSegmentCompatibility; //[0,0,14]segment comp. for this tau to be a muon
196 Bool_t fElectronPreIDDecision; //pf electron pre id decision
197 Bool_t fMuonDecision; //pf muon id decision
198 Double32_t fDiscriminationAgainstElectron;
199 Double32_t fDiscriminationAgainstMuon;
200 Double32_t fDiscriminationByLooseElectronRejection;
201 Double32_t fDiscriminationByMediumElectronRejection;
202 Double32_t fDiscriminationByTightElectronRejection;
203 Double32_t fDiscriminationByMVAElectronRejection;
204 Double32_t fDiscriminationByLooseMuonRejection;
205 Double32_t fDiscriminationByMediumMuonRejection;
206 Double32_t fDiscriminationByTightMuonRejection;
207 Double32_t fDiscriminationByDecayModeFinding;
208 Double32_t fDiscriminationByVLooseIsolation;
209 Double32_t fDiscriminationByLooseIsolation;
210 Double32_t fDiscriminationByMediumIsolation;
211 Double32_t fDiscriminationByTightIsolation;
212 Double32_t fDiscriminationByVLooseCombinedIsolationDBSumPtCorr;
213 Double32_t fDiscriminationByLooseCombinedIsolationDBSumPtCorr;
214 Double32_t fDiscriminationByMediumCombinedIsolationDBSumPtCorr;
215 Double32_t fDiscriminationByTightCombinedIsolationDBSumPtCorr;
216 Double32_t fDiscriminationByRawCombinedIsolationDBSumPtCorr;
217
218 Ref<PFCandidate> fLeadPFCand; //leading sig pf cand (charged or neutral)
219 Ref<PFCandidate> fLeadChargedHadPFCand; //leading charged hadron signal pf cand
220 Ref<PFCandidate> fLeadNeutralPFCand; //leading neutral signal pf cand
221 Ref<PFJet> fPFJet; //original reconstructed pf jet
222 Ref<Track> fElectronTrack; //track corresp. to pot. matching el cand
223 RefArray<PFCandidate> fSignalPFCands; //selected pf candidates in signal cone
224 RefArray<PFCandidate> fSignalPFChargedHadrCands; //signal pf charged hadron candidates
225 RefArray<PFCandidate> fSignalPFNeutrHadrCands; //signal pf neutral hadron candidates
226 RefArray<PFCandidate> fSignalPFGammaCands; //signal pf gamma candidates
227 RefArray<PFCandidate> fIsoPFCands; //selected pf candidates in isolation annulus
228
229 ClassDef(PFTau, 5) // PFTau class
230 };
231 }
232
233 //--------------------------------------------------------------------------------------------------
234 inline void mithep::PFTau::Mark(UInt_t ib) const
235 {
236 // mark myself
237 mithep::DataObject::Mark(ib);
238 // mark my dependencies if they are there
239 if (fLeadPFCand .IsValid())
240 fLeadPFCand .Obj()->Mark(ib);
241 if (fLeadChargedHadPFCand.IsValid())
242 fLeadChargedHadPFCand.Obj()->Mark(ib);
243 if (fLeadNeutralPFCand .IsValid())
244 fLeadNeutralPFCand .Obj()->Mark(ib);
245 if (fPFJet .IsValid())
246 fPFJet .Obj()->Mark(ib);
247 if (fElectronTrack .IsValid())
248 fElectronTrack .Obj()->Mark(ib);
249
250 fSignalPFCands .Mark(ib);
251 fSignalPFChargedHadrCands.Mark(ib);
252 fSignalPFNeutrHadrCands .Mark(ib);
253 fSignalPFGammaCands .Mark(ib);
254 fIsoPFCands .Mark(ib);
255 }
256
257 //--------------------------------------------------------------------------------------------------
258 inline Double_t mithep::PFTau::GetCharge() const
259 {
260 return fCharge;
261 }
262 #endif