19 discriminatorOption_ = iConfig.
getParameter<std::string>(
"discriminatorOption");
27 double discriminate(
const PFTauRef& pfTau);
40 if((*thePFTauRef).hasMuonReference() ){
42 MuonRef muonref = (*thePFTauRef).leadPFChargedHadrCand()->muonRef();
43 if (discriminatorOption_ ==
"noSegMatch") {
44 if ( muonref ->numberOfMatches() > 0 ) {
48 else if (discriminatorOption_ ==
"twoDCut") {
50 double calo= muonref->caloCompatibility();
51 double border = calo *
a + seg *
b +
c;
56 else if (discriminatorOption_ ==
"merePresence") decision =
false;
57 else if (discriminatorOption_ ==
"combined") {
58 unsigned int muType = 0;
59 if(muonref->isGlobalMuon()) muType = 1;
60 else if(muonref->isCaloMuon()) muType = 2;
61 else if(muonref->isTrackerMuon()) muType = 3;
62 double muonEnergyFraction = (*thePFTauRef).pfTauTagInfoRef()->pfjetRef()->chargedMuEnergyFraction();
63 bool eta_veto =
false;
64 bool phi_veto =
false;
65 if(fabs(muonref->eta()) > 2.3 || (fabs(muonref->eta()) > 1.4 && fabs(muonref->eta()) < 1.6)) eta_veto =
true;
66 if(muonref->phi() < 0.1 && muonref->phi() > -0.1) phi_veto =
true;
67 if( muType != 1 || muonref ->numberOfMatches() > 0 || eta_veto || phi_veto || muonEnergyFraction > 0.9 ) decision =
false;
74 return (decision ? 1. : 0.);
T getParameter(std::string const &) const
float segmentCompatibility(const reco::Muon &muon, reco::Muon::ArbitrationType arbitrationType=reco::Muon::SegmentAndTrackArbitration)
double discriminate(const PFTauRef &pfTau)
DEFINE_FWK_MODULE(CosmicTrackingParticleSelector)
PFRecoTauDiscriminationAgainstMuon(const edm::ParameterSet &iConfig)
~PFRecoTauDiscriminationAgainstMuon()
std::string discriminatorOption_