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

# User Rev Content
1 bendavid 1.1 //--------------------------------------------------------------------------------------------------
2 paus 1.12 // $Id: PFTau.h,v 1.11 2012/03/28 12:15:34 paus Exp $
3 bendavid 1.1 //
4     // PFTau
5     //
6 loizides 1.2 // This class holds information about reconstructed tau based on PFCandidates.
7 bendavid 1.1 //
8 paus 1.11 // Authors: J.Bendavid, C.Paus
9 bendavid 1.1 //--------------------------------------------------------------------------------------------------
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 loizides 1.2 PFTau() : fLeadPFCandSignD0Sig(0), fHCalTotalEOverP(0), fHCalMaxEOverP(0),
27 bendavid 1.1 fHCal3x3EOverP(0), fIsoChargedHadronPtSum(0), fIsoGammaEtSum(0),
28     fMaxHCalPFClusterEt(0), fEMFraction(0), fECalStripSumEOverP(0),
29 loizides 1.2 fBremRecoveryEOverP(0), fElectronPreIDOutput(0), fCaloCompatibility(0),
30     fSegmentCompatibility(0), fElectronPreIDDecision(kFALSE),
31 mhchan 1.7 fMuonDecision(kFALSE),
32     fDiscriminationAgainstElectron(0),
33     fDiscriminationAgainstMuon(0),
34     fDiscriminationByLooseElectronRejection(0),
35     fDiscriminationByMediumElectronRejection(0),
36     fDiscriminationByTightElectronRejection(0),
37 mhchan 1.9 fDiscriminationByMVAElectronRejection(0),
38 mhchan 1.7 fDiscriminationByLooseMuonRejection(0),
39 mhchan 1.10 fDiscriminationByMediumMuonRejection(0),
40 mhchan 1.7 fDiscriminationByTightMuonRejection(0),
41     fDiscriminationByDecayModeFinding(0),
42     fDiscriminationByVLooseIsolation(0), fDiscriminationByLooseIsolation(0),
43 mhchan 1.8 fDiscriminationByMediumIsolation(0), fDiscriminationByTightIsolation(0),
44     fDiscriminationByVLooseCombinedIsolationDBSumPtCorr(0),
45     fDiscriminationByLooseCombinedIsolationDBSumPtCorr(0),
46     fDiscriminationByMediumCombinedIsolationDBSumPtCorr(0),
47 mhchan 1.9 fDiscriminationByTightCombinedIsolationDBSumPtCorr(0),
48     fDiscriminationByRawCombinedIsolationDBSumPtCorr(0) {}
49 bendavid 1.1
50     PFTau(Double_t px, Double_t py, Double_t pz, Double_t e) :
51     Tau(px,py,pz,e),
52 loizides 1.2 fLeadPFCandSignD0Sig(0), fHCalTotalEOverP(0), fHCalMaxEOverP(0),
53 bendavid 1.1 fHCal3x3EOverP(0), fIsoChargedHadronPtSum(0), fIsoGammaEtSum(0),
54     fMaxHCalPFClusterEt(0), fEMFraction(0), fECalStripSumEOverP(0),
55 loizides 1.2 fBremRecoveryEOverP(0), fElectronPreIDOutput(0), fCaloCompatibility(0),
56     fSegmentCompatibility(0), fElectronPreIDDecision(kFALSE),
57 mhchan 1.7 fMuonDecision(kFALSE),
58     fDiscriminationAgainstElectron(0),
59     fDiscriminationAgainstMuon(0),
60     fDiscriminationByLooseElectronRejection(0),
61     fDiscriminationByMediumElectronRejection(0),
62     fDiscriminationByTightElectronRejection(0),
63 mhchan 1.9 fDiscriminationByMVAElectronRejection(0),
64 mhchan 1.7 fDiscriminationByLooseMuonRejection(0),
65 mhchan 1.10 fDiscriminationByMediumMuonRejection(0),
66 mhchan 1.7 fDiscriminationByTightMuonRejection(0),
67     fDiscriminationByDecayModeFinding(0),
68     fDiscriminationByVLooseIsolation(0), fDiscriminationByLooseIsolation(0),
69 mhchan 1.8 fDiscriminationByMediumIsolation(0), fDiscriminationByTightIsolation(0),
70     fDiscriminationByVLooseCombinedIsolationDBSumPtCorr(0),
71     fDiscriminationByLooseCombinedIsolationDBSumPtCorr(0),
72     fDiscriminationByMediumCombinedIsolationDBSumPtCorr(0),
73 mhchan 1.9 fDiscriminationByTightCombinedIsolationDBSumPtCorr(0),
74     fDiscriminationByRawCombinedIsolationDBSumPtCorr(0) {}
75 loizides 1.2
76 loizides 1.4 void AddIsoPFCand(const PFCandidate *p) { fIsoPFCands.Add(p); }
77     void AddSignalPFCand(const PFCandidate *p)
78     { ClearCharge(); fSignalPFCands.Add(p); }
79 mhchan 1.8 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 loizides 1.3 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 loizides 1.4 UInt_t NSignalPFCands() const { return fSignalPFCands.Entries(); }
103 mhchan 1.8 UInt_t NSignalPFChargedHadrCands() const { return fSignalPFChargedHadrCands.Entries(); }
104     UInt_t NSignalPFNeutrHadrCands() const { return fSignalPFNeutrHadrCands.Entries(); }
105     UInt_t NSignalPFGammaCands() const { return fSignalPFGammaCands.Entries(); }
106 loizides 1.3 EObjType ObjType() const { return kPFTau; }
107     Double_t SegmentCompatibility() const { return fSegmentCompatibility; }
108 mhchan 1.5 Double_t DiscriminationAgainstElectron() const {return fDiscriminationAgainstElectron;}
109     Double_t DiscriminationAgainstMuon() const {return fDiscriminationAgainstMuon;}
110 mhchan 1.7 Double_t DiscriminationByLooseElectronRejection() const {return fDiscriminationByLooseElectronRejection;}
111     Double_t DiscriminationByMediumElectronRejection() const {return fDiscriminationByMediumElectronRejection;}
112     Double_t DiscriminationByTightElectronRejection() const {return fDiscriminationByTightElectronRejection;}
113 mhchan 1.9 Double_t DiscriminationByMVAElectronRejection() const {return fDiscriminationByMVAElectronRejection;}
114 mhchan 1.7 Double_t DiscriminationByLooseMuonRejection() const {return fDiscriminationByLooseMuonRejection;}
115 mhchan 1.10 Double_t DiscriminationByMediumMuonRejection() const {return fDiscriminationByMediumMuonRejection;}
116 mhchan 1.7 Double_t DiscriminationByTightMuonRejection() const {return fDiscriminationByTightMuonRejection;}
117 mhchan 1.5 Double_t DiscriminationByDecayModeFinding() const {return fDiscriminationByDecayModeFinding;}
118 mhchan 1.7 Double_t DiscriminationByVLooseIsolation() const {return fDiscriminationByVLooseIsolation;}
119 mhchan 1.5 Double_t DiscriminationByLooseIsolation() const {return fDiscriminationByLooseIsolation;}
120     Double_t DiscriminationByMediumIsolation() const {return fDiscriminationByMediumIsolation;}
121     Double_t DiscriminationByTightIsolation() const {return fDiscriminationByTightIsolation;}
122 mhchan 1.8 Double_t DiscriminationByVLooseCombinedIsolationDBSumPtCorr() const {return fDiscriminationByVLooseCombinedIsolationDBSumPtCorr;}
123 paus 1.11 Double_t DiscriminationByLooseCombinedIsolationDBSumPtCorr() const {return fDiscriminationByLooseCombinedIsolationDBSumPtCorr;}
124 mhchan 1.8 Double_t DiscriminationByMediumCombinedIsolationDBSumPtCorr() const {return fDiscriminationByMediumCombinedIsolationDBSumPtCorr;}
125     Double_t DiscriminationByTightCombinedIsolationDBSumPtCorr() const {return fDiscriminationByTightCombinedIsolationDBSumPtCorr;}
126 mhchan 1.9 Double_t DiscriminationByRawCombinedIsolationDBSumPtCorr() const {return fDiscriminationByRawCombinedIsolationDBSumPtCorr;}
127 mhchan 1.5
128 mhchan 1.8 void SetCharge(Char_t x) { fCharge = x; ClearCharge(); }
129 loizides 1.3 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 loizides 1.2 void SetLeadChargedHadronPFCand(const PFCandidate *p)
142 loizides 1.3 { 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 mhchan 1.8 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 loizides 1.3 const PFJet *SourcePFJet() const { return fPFJet.Obj(); }
155     const Jet *SourceJet() const { return SourcePFJet(); }
156 bendavid 1.1
157 mhchan 1.5 void SetDiscriminationAgainstElectron(Double_t x) {fDiscriminationAgainstElectron = x;}
158     void SetDiscriminationAgainstMuon(Double_t x) {fDiscriminationAgainstMuon = x;}
159 mhchan 1.7 void SetDiscriminationByLooseElectronRejection(Double_t x) {fDiscriminationByLooseElectronRejection = x;}
160     void SetDiscriminationByMediumElectronRejection(Double_t x) {fDiscriminationByMediumElectronRejection = x;}
161     void SetDiscriminationByTightElectronRejection(Double_t x) {fDiscriminationByTightElectronRejection = x;}
162 mhchan 1.9 void SetDiscriminationByMVAElectronRejection(Double_t x) {fDiscriminationByMVAElectronRejection = x;}
163 mhchan 1.7 void SetDiscriminationByLooseMuonRejection(Double_t x) {fDiscriminationByLooseMuonRejection = x;}
164 mhchan 1.10 void SetDiscriminationByMediumMuonRejection(Double_t x) {fDiscriminationByMediumMuonRejection = x;}
165 mhchan 1.7 void SetDiscriminationByTightMuonRejection(Double_t x) {fDiscriminationByTightMuonRejection = x;}
166 mhchan 1.5 void SetDiscriminationByDecayModeFinding(Double_t x) {fDiscriminationByDecayModeFinding = x;}
167 mhchan 1.7 void SetDiscriminationByVLooseIsolation(Double_t x) {fDiscriminationByVLooseIsolation = x;}
168 mhchan 1.5 void SetDiscriminationByLooseIsolation(Double_t x) {fDiscriminationByLooseIsolation = x;}
169     void SetDiscriminationByMediumIsolation(Double_t x) {fDiscriminationByMediumIsolation = x;}
170     void SetDiscriminationByTightIsolation(Double_t x) {fDiscriminationByTightIsolation = x;}
171 mhchan 1.8 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 mhchan 1.9 void SetDiscriminationByRawCombinedIsolationDBSumPtCorr(Double_t x) {fDiscriminationByRawCombinedIsolationDBSumPtCorr = x;}
176 mhchan 1.5
177 paus 1.11 // Some structural tools
178 paus 1.12 void Mark(UInt_t i=1) const;
179 paus 1.11
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 mhchan 1.5
218 paus 1.11 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 bendavid 1.1
229 mhchan 1.9 ClassDef(PFTau, 5) // PFTau class
230 bendavid 1.1 };
231     }
232 loizides 1.4
233     //--------------------------------------------------------------------------------------------------
234 paus 1.12 inline void mithep::PFTau::Mark(UInt_t ib) const
235 paus 1.11 {
236     // mark myself
237 paus 1.12 mithep::DataObject::Mark(ib);
238 paus 1.11 // mark my dependencies if they are there
239     if (fLeadPFCand .IsValid())
240 paus 1.12 fLeadPFCand .Obj()->Mark(ib);
241 paus 1.11 if (fLeadChargedHadPFCand.IsValid())
242 paus 1.12 fLeadChargedHadPFCand.Obj()->Mark(ib);
243 paus 1.11 if (fLeadNeutralPFCand .IsValid())
244 paus 1.12 fLeadNeutralPFCand .Obj()->Mark(ib);
245 paus 1.11 if (fPFJet .IsValid())
246 paus 1.12 fPFJet .Obj()->Mark(ib);
247 paus 1.11 if (fElectronTrack .IsValid())
248 paus 1.12 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 paus 1.11 }
256    
257     //--------------------------------------------------------------------------------------------------
258 loizides 1.4 inline Double_t mithep::PFTau::GetCharge() const
259     {
260 mhchan 1.8 return fCharge;
261 loizides 1.4 }
262 bendavid 1.1 #endif