9 #ifndef RECOTAUTAG_RECOTAU_AntiElectronIDCut2_H
10 #define RECOTAUTAG_RECOTAU_AntiElectronIDCut2_H
20 typedef std::pair<double, double>
pdouble;
31 float TauLeadChargedPFCandPt,
32 float TauLeadChargedPFCandEtaAtEcalEntrance,
33 float TauLeadPFChargedHadrEoP,
34 float TauHcal3x3OverPLead,
42 float TauLeadChargedPFCandPt,
43 float TauLeadChargedPFCandEtaAtEcalEntrance,
44 float TauLeadPFChargedHadrEoP,
45 float TauHcal3x3OverPLead,
46 const std::vector<float>& GammasdEta,
47 const std::vector<float>& GammasdPhi,
48 const std::vector<float>& GammasPt
54 float TauLeadChargedPFCandEtaAtEcalEntrance = -99.;
55 float TauLeadChargedPFCandPt = -99.;
56 const std::vector<reco::PFCandidatePtr>& signalPFCands = thePFTau.signalPFCands();
57 for ( std::vector<reco::PFCandidatePtr>::const_iterator pfCandidate = signalPFCands.begin();
58 pfCandidate != signalPFCands.end(); ++pfCandidate ) {
60 if ( (*pfCandidate)->trackRef().isNonnull() ) track = (*pfCandidate)->trackRef().get();
61 else if ( (*pfCandidate)->muonRef().isNonnull() && (*pfCandidate)->muonRef()->innerTrack().isNonnull() ) track = (*pfCandidate)->muonRef()->innerTrack().get();
62 else if ( (*pfCandidate)->muonRef().isNonnull() && (*pfCandidate)->muonRef()->globalTrack().isNonnull() ) track = (*pfCandidate)->muonRef()->globalTrack().get();
63 else if ( (*pfCandidate)->muonRef().isNonnull() && (*pfCandidate)->muonRef()->outerTrack().isNonnull() ) track = (*pfCandidate)->muonRef()->outerTrack().get();
64 else if ( (*pfCandidate)->gsfTrackRef().isNonnull() ) track = (*pfCandidate)->gsfTrackRef().get();
66 if ( track->
pt() > TauLeadChargedPFCandPt ) {
67 TauLeadChargedPFCandEtaAtEcalEntrance = (*pfCandidate)->positionAtECALEntrance().
eta();
68 TauLeadChargedPFCandPt = track->
pt();
73 float TauPt = thePFTau.pt();
74 float TauEta = thePFTau.eta();
76 float TauLeadPFChargedHadrEoP = 0.;
77 if ( thePFTau.leadPFChargedHadrCand()->p() > 0. ) {
79 TauLeadPFChargedHadrEoP = thePFTau.leadPFChargedHadrCand()->ecalEnergy()/thePFTau.leadPFChargedHadrCand()->p();
82 std::vector<float> GammasdEta;
83 std::vector<float> GammasdPhi;
84 std::vector<float> GammasPt;
85 for (
unsigned i = 0 ;
i < thePFTau.signalPFGammaCands().size(); ++
i ) {
87 if ( thePFTau.leadPFChargedHadrCand().isNonnull() ) {
88 GammasdEta.push_back(gamma->eta() - thePFTau.leadPFChargedHadrCand()->eta());
89 GammasdPhi.push_back(gamma->phi() - thePFTau.leadPFChargedHadrCand()->phi());
91 GammasdEta.push_back(gamma->eta() - thePFTau.eta());
92 GammasdPhi.push_back(gamma->phi() - thePFTau.phi());
94 GammasPt.push_back(gamma->pt());
97 float TauHcal3x3OverPLead = thePFTau.hcal3x3OverPLead();
101 TauLeadChargedPFCandPt,
102 TauLeadChargedPFCandEtaAtEcalEntrance,
103 TauLeadPFChargedHadrEoP,
112 float TauLeadPFChargedHadrEoP_max,
113 float TauHcal3x3OverPLead_max,
114 float TauGammaEtaMom_max,
115 float TauGammaPhiMom_max,
116 float TauGammaEnFrac_max
120 float TauLeadPFChargedHadrEoP_max_1,
121 float TauLeadPFChargedHadrEoP_min_2,
122 float TauLeadPFChargedHadrEoP_max_2,
123 float TauHcal3x3OverPLead_max,
124 float TauGammaEtaMom_max,
125 float TauGammaPhiMom_max,
126 float TauGammaEnFrac_max
144 for(
size_t i = 0;
i < etaCracks.size();
i++)
float TauGammaEtaMom_endcap_max_
bool Tau_applyCut_GammaPhiMom_
float TauLeadPFChargedHadrEoP_barrel_max_
std::pair< double, double > pdouble
tuple applyCut_HLTSpecific
void ApplyCut_EcalCrack(bool keepAll_, bool rejectAll_)
float TauGammaEnFrac_barrel_max_
float TauLeadPFChargedHadrEoP_endcap_max1_
bool Tau_applyCut_leadPFChargedHadrEoP_
double Discriminator(float TauPt, float TauEta, float TauLeadChargedPFCandPt, float TauLeadChargedPFCandEtaAtEcalEntrance, float TauLeadPFChargedHadrEoP, float TauHcal3x3OverPLead, float TauGammaEtaMom, float TauGammaPhiMom, float TauGammaEnFrac)
float TauLeadPFChargedHadrEoP_endcap_min2_
bool Tau_applyCut_GammaEnFrac_
tuple applyCut_leadPFChargedHadrEoP
double eta() const
pseudorapidity of momentum vector
void SetBarrelCutValues(float TauLeadPFChargedHadrEoP_min, float TauLeadPFChargedHadrEoP_max, float TauHcal3x3OverPLead_max, float TauGammaEtaMom_max, float TauGammaPhiMom_max, float TauGammaEnFrac_max)
double pt() const
track transverse momentum
tuple applyCut_GammaEnFrac
bool rejectAllInEcalCrack_
bool Tau_applyCut_hcal3x3OverPLead_
bool Tau_applyCut_GammaEtaMom_
std::vector< pdouble > ecalCracks_
float TauGammaPhiMom_endcap_max_
float TauGammaEtaMom_barrel_max_
bool Tau_applyCut_HLTSpecific_
bool isInEcalCrack(double eta) const
float TauLeadPFChargedHadrEoP_endcap_max2_
float TauGammaEnFrac_endcap_max_
float TauGammaPhiMom_barrel_max_
float TauLeadPFChargedHadrEoP_barrel_min_
tuple applyCut_hcal3x3OverPLead
float TauLeadPFChargedHadrEoP_endcap_min1_
void SetEndcapCutValues(float TauLeadPFChargedHadrEoP_min_1, float TauLeadPFChargedHadrEoP_max_1, float TauLeadPFChargedHadrEoP_min_2, float TauLeadPFChargedHadrEoP_max_2, float TauHcal3x3OverPLead_max, float TauGammaEtaMom_max, float TauGammaPhiMom_max, float TauGammaEnFrac_max)
float TauHcal3x3OverPLead_endcap_max_
void SetEcalCracks(const std::vector< pdouble > &etaCracks)
float TauHcal3x3OverPLead_barrel_max_
void ApplyCuts(bool applyCut_hcal3x3OverPLead, bool applyCut_leadPFChargedHadrEoP, bool applyCut_GammaEtaMom, bool applyCut_GammaPhiMom, bool applyCut_GammaEnFrac, bool applyCut_HLTSpecific)
double Discriminator(const T &thePFTau)
tuple applyCut_GammaPhiMom
tuple applyCut_GammaEtaMom