126 std::cout <<
"<PFRecoTauDiscriminationAgainstMuon2::discriminate>:" << std::endl;
128 std::cout <<
"tau #" << pfTau.
key() <<
": Pt = " << pfTau->pt() <<
", eta = " << pfTau->eta() <<
", phi = " << pfTau->phi() << std::endl;
133 std::vector<int> numHitsDT(4);
134 std::vector<int> numHitsCSC(4);
135 std::vector<int> numHitsRPC(4);
136 for (
int iStation = 0; iStation < 4; ++iStation ) {
137 numHitsDT[iStation] = 0;
138 numHitsCSC[iStation] = 0;
139 numHitsRPC[iStation] = 0;
148 countHits(*muonRef, numHitsDT, numHitsCSC, numHitsRPC);
154 for (
size_t idxMuon = 0; idxMuon <
numMuons; ++idxMuon ) {
157 if ( pfLeadChargedHadron.
isNonnull() && pfLeadChargedHadron->muonRef().
isNonnull() &&
muon == pfLeadChargedHadron->muonRef() ) {
165 if ( pfTau->jetRef().
isNonnull() ) jetArea = pfTau->jetRef()->jetArea();
166 if ( jetArea > 0. ) {
171 <<
"Jet associated to Tau: Pt = " << pfTau->pt() <<
", eta = " << pfTau->eta() <<
", phi = " << pfTau->phi() <<
" has area = " << jetArea <<
" !!" << std::endl;
177 if ( dR < dRmatch ) {
180 countHits(*
muon, numHitsDT, numHitsCSC, numHitsRPC);
186 std::cout <<
"numMatches = " << numMatches << std::endl;
187 std::cout <<
"numHitsDT = " << format_vint(numHitsDT) << std::endl;
188 std::cout <<
"numHitsCSC = " << format_vint(numHitsCSC) << std::endl;
189 std::cout <<
"numHitsRPC = " << format_vint(numHitsRPC) << std::endl;
192 int numLast2StationsWithHits = 0;
193 for (
int iStation = 2; iStation < 4; ++iStation ) {
194 if ( numHitsDT[iStation] > 0 ) ++numLast2StationsWithHits;
195 if ( numHitsCSC[iStation] > 0 ) ++numLast2StationsWithHits;
196 if ( numHitsRPC[iStation] > 0 ) ++numLast2StationsWithHits;
200 bool passesCaloMuonVeto =
true;
202 double energyECALplusHCAL = pfLeadChargedHadron->ecalEnergy() + pfLeadChargedHadron->hcalEnergy();
204 if ( pfLeadChargedHadron->trackRef().
isNonnull() )
std::cout <<
"decayMode = " << pfTau->decayMode() <<
", energy(ECAL+HCAL) = " << energyECALplusHCAL <<
", leadPFChargedHadronP = " << pfLeadChargedHadron->trackRef()->p() << std::endl;
205 else if ( pfLeadChargedHadron->gsfTrackRef().
isNonnull() )
206 std::cout <<
"decayMode = " << pfTau->decayMode() <<
", energy(ECAL+HCAL) = " << energyECALplusHCAL <<
", leadPFChargedHadronP = " << pfLeadChargedHadron->gsfTrackRef()->p() << std::endl;
210 if ( pfLeadChargedHadron->trackRef().
isNonnull() ) leadTrack = pfLeadChargedHadron->trackRef().
get();
211 else if ( pfLeadChargedHadron->gsfTrackRef().
isNonnull() ) leadTrack = pfLeadChargedHadron->gsfTrackRef().
get();
212 if ( pfTau->decayMode() == 0 && leadTrack && energyECALplusHCAL < (
hop_*leadTrack->
p()) ) passesCaloMuonVeto =
false;
215 double discriminatorValue = 0.;
224 discriminatorValue = pass ? 1.: 0.;
226 if (
verbosity_ )
std::cout <<
"--> returning discriminatorValue = " << discriminatorValue << std::endl;
228 return discriminatorValue;
double p() const
momentum vector magnitude
int maxNumberOfHitsLast2Stations_
bool isNonnull() const
Checks for non-null.
bool isNonnull() const
Checks for non-null.
T const * get() const
Returns C++ pointer to the item.
bool dRmuonMatchLimitedToJetArea_
edm::Handle< reco::MuonCollection > muons_
double deltaR(double eta1, double eta2, double phi1, double phi2)
key_type key() const
Accessor for product key.