23 template<
class TauType,
class TauDiscriminator>
37 double discriminate(
const TauRef&);
46 enum { kNoSegMatch,
kTwoDCut, kMerePresence, kCombined };
54 template<
class TauType,
class TauDiscriminator>
62 std::string discriminatorOption_string = cfg.
getParameter<std::string>(
"discriminatorOption");
76 template<
class TauType,
class TauDiscriminator>
82 template<
class TauType,
class TauDiscriminator>
87 if ( discriminatorOption_ == kNoSegMatch ) {
89 }
else if ( discriminatorOption_ == kTwoDCut ) {
92 if ( (coeffCaloComp_*segmComp + coeffSegmComp_*caloComp) > muonCompCut_ ) decision =
false;
93 }
else if ( discriminatorOption_ == kMerePresence ) {
95 }
else if ( discriminatorOption_ == kCombined ) {
96 unsigned int muonType = 0;
101 bool eta_veto = ( fabs(muon.
eta()) > 2.3 || (fabs(muon.
eta()) > 1.4 && fabs(muon.
eta()) < 1.6) ) ?
true :
false;
102 bool phi_veto = ( muon.
phi() < 0.1 && muon.
phi() > -0.1 ) ?
true :
false;
104 if ( muonType != 1 || muon.
numberOfMatches() > 0 || eta_veto || phi_veto ) decision =
false;
110 template<
class TauType,
class TauDiscriminator>
113 bool decision =
true;
115 for ( reco::MuonCollection::const_iterator
muon = muons_->begin();
120 return (decision ? 1. : 0.);
T getParameter(std::string const &) const
#define DEFINE_FWK_MODULE(type)
bool isTrackerMuon() const
std::vector< TauType > TauCollection
bool exists(std::string const ¶meterName) const
checks if a parameter exists
bool isGlobalMuon() const
edm::Ref< TauCollection > TauRef
TauDiscriminationAgainstMuon< CaloTau, CaloTauDiscriminator > CaloRecoTauDiscriminationAgainstMuon
TauDiscriminationAgainstMuon(const edm::ParameterSet &)
double discriminate(const TauRef &)
virtual double eta() const
momentum pseudorapidity
double deltaR(double eta1, double phi1, double eta2, double phi2)
edm::Ref< TauCollection > TauRef
float segmentCompatibility(const reco::Muon &muon, reco::Muon::ArbitrationType arbitrationType=reco::Muon::SegmentAndTrackArbitration)
bool evaluateMuonVeto(const reco::Muon &)
edm::Handle< reco::MuonCollection > muons_
~TauDiscriminationAgainstMuon()
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
int numberOfMatches(ArbitrationType type=SegmentAndTrackArbitration) const
get number of chambers with matched segments
void beginEvent(const edm::Event &, const edm::EventSetup &)
virtual double phi() const
momentum azimuthal angle
float caloCompatibility() const
edm::InputTag muonSource_