ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitAna/DataTree/interface/PFTau.h
Revision: 1.11
Committed: Wed Mar 28 12:15:34 2012 UTC (13 years, 1 month ago) by paus
Content type: text/plain
Branch: MAIN
Changes since 1.10: +81 -53 lines
Log Message:
Enable skimming.

File Contents

# User Rev Content
1 bendavid 1.1 //--------------------------------------------------------------------------------------------------
2 paus 1.11 // $Id: PFTau.h,v 1.10 2012/03/26 15:26:35 mhchan 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     void Mark() 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 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.11 inline void mithep::PFTau::Mark() const
235     {
236     // mark myself
237     mithep::DataObject::Mark();
238     // mark my dependencies if they are there
239     if (fLeadPFCand .IsValid())
240     fLeadPFCand .Obj()->Mark();
241     if (fLeadChargedHadPFCand.IsValid())
242     fLeadChargedHadPFCand.Obj()->Mark();
243     if (fLeadNeutralPFCand .IsValid())
244     fLeadNeutralPFCand .Obj()->Mark();
245     if (fPFJet .IsValid())
246     fPFJet .Obj()->Mark();
247     if (fElectronTrack .IsValid())
248     fElectronTrack .Obj()->Mark();
249     for (UInt_t i=0; i<fSignalPFCands .Entries(); i++)
250     fSignalPFCands .At(i)->Mark();
251     for (UInt_t i=0; i<fSignalPFChargedHadrCands.Entries(); i++)
252     fSignalPFChargedHadrCands.At(i)->Mark();
253     for (UInt_t i=0; i<fSignalPFNeutrHadrCands .Entries(); i++)
254     fSignalPFNeutrHadrCands .At(i)->Mark();
255     for (UInt_t i=0; i<fSignalPFGammaCands .Entries(); i++)
256     fSignalPFGammaCands .At(i)->Mark();
257     for (UInt_t i=0; i<fIsoPFCands .Entries(); i++)
258     fIsoPFCands .At(i)->Mark();
259     }
260    
261     //--------------------------------------------------------------------------------------------------
262 loizides 1.4 inline Double_t mithep::PFTau::GetCharge() const
263     {
264 mhchan 1.8 return fCharge;
265 loizides 1.4 }
266 bendavid 1.1 #endif