File indexing completed on 2024-04-06 12:27:48
0001 #include "DataFormats/Common/interface/Handle.h"
0002
0003 #include <vector>
0004 #include <string>
0005 #include <atomic>
0006
0007 struct PFRecoTauDiscriminationAgainstMuonConfigSet {
0008 enum { kLoose, kMedium, kTight, kCustom };
0009
0010 PFRecoTauDiscriminationAgainstMuonConfigSet(int dOpt, double hop, int mNOM, bool doCMV, int mNHL2S)
0011 : discriminatorOption(dOpt),
0012 hop(hop),
0013 maxNumberOfMatches(mNOM),
0014 doCaloMuonVeto(doCMV),
0015 maxNumberOfHitsLast2Stations(mNHL2S) {}
0016
0017 int discriminatorOption;
0018 double hop;
0019 int maxNumberOfMatches;
0020 bool doCaloMuonVeto;
0021 int maxNumberOfHitsLast2Stations;
0022 };
0023
0024 struct PFRecoTauDiscriminationAgainstMuon2Helper {
0025 double energyECALplusHCAL_;
0026 const reco::PFCandidatePtr& pfLeadChargedHadron_;
0027 const reco::Track* leadTrack_ = nullptr;
0028 int numStationsWithMatches_ = 0;
0029 int numLast2StationsWithHits_ = 0;
0030
0031 PFRecoTauDiscriminationAgainstMuon2Helper(const bool&,
0032 const std::string&,
0033 const bool,
0034 const double&,
0035 const double&,
0036 const bool&,
0037 std::atomic<unsigned int>&,
0038 const unsigned int&,
0039 const std::vector<int>&,
0040 const std::vector<int>&,
0041 const std::vector<int>&,
0042 const std::vector<int>&,
0043 const std::vector<int>&,
0044 const std::vector<int>&,
0045 const edm::Handle<reco::MuonCollection>&,
0046 const reco::PFTauRef&,
0047 const reco::PFCandidatePtr&);
0048 bool eval(const PFRecoTauDiscriminationAgainstMuonConfigSet&, const reco::PFTauRef&) const;
0049 };