CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Classes | Public Types | Public Member Functions | Private Types | Private Member Functions | Private Attributes
muonisolation::IsolatorByNominalEfficiency Class Reference

#include <IsolatorByNominalEfficiency.h>

Inheritance diagram for muonisolation::IsolatorByNominalEfficiency:
muonisolation::MuIsoBaseIsolator

Classes

class  ConeSizes
 

Public Types

typedef
MuIsoBaseIsolator::DepositContainer 
DepositContainer
 
- Public Types inherited from muonisolation::MuIsoBaseIsolator
typedef std::vector
< DepositAndVetos
DepositContainer
 
enum  ResultType { ISOL_INT_TYPE = 0, ISOL_FLOAT_TYPE, ISOL_BOOL_TYPE, ISOL_INVALID_TYPE }
 
typedef reco::IsoDeposit::Veto Veto
 
typedef reco::IsoDeposit::Vetos Vetos
 

Public Member Functions

Cuts cuts (float nominalEfficiency) const
 
 IsolatorByNominalEfficiency (const std::string &thrFile, const std::vector< std::string > &ceff, const std::vector< double > &weights)
 Constructor. More...
 
 IsolatorByNominalEfficiency (const std::string &thrFile, const std::vector< std::string > &ceff, const std::vector< double > &weights, const std::vector< double > &thresh)
 
Result result (const DepositContainer &deposits, const edm::Event *=nullptr) const override
 Compute the deposit within the cone and return the isolation result. More...
 
 ~IsolatorByNominalEfficiency () override
 
- Public Member Functions inherited from muonisolation::MuIsoBaseIsolator
virtual Result result (const DepositContainer &deposits, const reco::Candidate &muon, const edm::Event *=nullptr) const
 Compute and return the isolation variable, with vetoes and the muon. More...
 
virtual Result result (const DepositContainer &deposits, const reco::Track &muon, const edm::Event *=nullptr) const
 Compute and return the isolation variable, with vetoes and the muon. More...
 
virtual ~MuIsoBaseIsolator ()
 

Private Types

typedef std::multimap< float, int > mapNomEff_Cone
 

Private Member Functions

int bestConeForEfficiencyIndex (float eff_thr) const
 
mapNomEff_Cone cones (const std::vector< std::string > &names)
 
std::string findPath (const std::string &fileName)
 
ResultType resultType () const override
 
virtual double weightedSum (const DepositContainer &deposits, float dRcone) const
 

Private Attributes

mapNomEff_Cone coneForEfficiency
 
ConeSizes theConesInfo
 
std::vector< double > theDepThresholds
 
std::vector< double > theWeights
 
NominalEfficiencyThresholdsthresholds
 

Detailed Description

Definition at line 22 of file IsolatorByNominalEfficiency.h.

Member Typedef Documentation

Definition at line 24 of file IsolatorByNominalEfficiency.h.

typedef std::multimap<float, int> muonisolation::IsolatorByNominalEfficiency::mapNomEff_Cone
private

Definition at line 61 of file IsolatorByNominalEfficiency.h.

Constructor & Destructor Documentation

muonisolation::IsolatorByNominalEfficiency::IsolatorByNominalEfficiency ( const std::string &  thrFile,
const std::vector< std::string > &  ceff,
const std::vector< double > &  weights 
)

Constructor.

muonisolation::IsolatorByNominalEfficiency::IsolatorByNominalEfficiency ( const std::string &  thrFile,
const std::vector< std::string > &  ceff,
const std::vector< double > &  weights,
const std::vector< double > &  thresh 
)
IsolatorByNominalEfficiency::~IsolatorByNominalEfficiency ( )
override

Definition at line 44 of file IsolatorByNominalEfficiency.cc.

References thresholds.

44 { delete thresholds; }

Member Function Documentation

int IsolatorByNominalEfficiency::bestConeForEfficiencyIndex ( float  eff_thr) const
private

Definition at line 107 of file IsolatorByNominalEfficiency.cc.

References coneForEfficiency.

Referenced by cuts(), and result().

107  {
108  //FIXME use upper_bound
109  int best_cone;
110  if (!coneForEfficiency.empty()) {
111  best_cone = (--(coneForEfficiency.end()))->second;
112  } else
113  return 0;
114 
115  mapNomEff_Cone::const_reverse_iterator it;
116  for (it = coneForEfficiency.rbegin(); it != coneForEfficiency.rend(); it++) {
117  if (eff_thr <= (*it).first)
118  best_cone = (*it).second;
119  }
120  return best_cone;
121 }
IsolatorByNominalEfficiency::mapNomEff_Cone IsolatorByNominalEfficiency::cones ( const std::vector< std::string > &  names)
private

Definition at line 46 of file IsolatorByNominalEfficiency.cc.

References result().

46  {
48  for (vector<string>::const_iterator is = usrVec.begin(); is != usrVec.end(); is++) {
49  char* evp = nullptr;
50  int cone = strtol((*is).c_str(), &evp, 10);
51  float effic = strtod(evp + 1, &evp);
52  result.insert(make_pair(effic, cone));
53  }
54  return result;
55 }
Result result(const DepositContainer &deposits, const edm::Event *=nullptr) const override
Compute the deposit within the cone and return the isolation result.
Cuts IsolatorByNominalEfficiency::cuts ( float  nominalEfficiency) const

Definition at line 144 of file IsolatorByNominalEfficiency.cc.

References bestConeForEfficiencyIndex(), muonisolation::NominalEfficiencyThresholds::bins(), PVValHelper::eta, validate-o2o-wbm::f, muonisolation::IsolatorByNominalEfficiency::ConeSizes::size(), theConesInfo, thresholds, and muonisolation::NominalEfficiencyThresholds::thresholdValueForEfficiency().

Referenced by L3NominalEfficiencyConfigurator::cuts().

144  {
145  vector<double> etaBounds = thresholds->bins();
146  vector<double> coneSizes;
147  vector<double> cutvalues;
148  for (vector<double>::const_iterator it = etaBounds.begin(), itEnd = etaBounds.end(); it < itEnd; ++it) {
149  float eta = (*it);
150  int icone = bestConeForEfficiencyIndex(nominalEfficiency);
151  coneSizes.push_back(theConesInfo.size(icone));
152  NominalEfficiencyThresholds::ThresholdLocation location = {eta - 1.e-3f, icone};
153  cutvalues.push_back(thresholds->thresholdValueForEfficiency(location, nominalEfficiency));
154  }
155  return Cuts(etaBounds, coneSizes, cutvalues);
156 }
float thresholdValueForEfficiency(ThresholdLocation location, float eff_thr) const
string IsolatorByNominalEfficiency::findPath ( const std::string &  fileName)
private

Definition at line 57 of file IsolatorByNominalEfficiency.cc.

References validate-o2o-wbm::f, and edm::FileInPath::fullPath().

57  {
58  // FIXME
60  return f.fullPath();
61 }
MuIsoBaseIsolator::Result IsolatorByNominalEfficiency::result ( const DepositContainer deposits,
const edm::Event = nullptr 
) const
overridevirtual

Compute the deposit within the cone and return the isolation result.

Implements muonisolation::MuIsoBaseIsolator.

Definition at line 63 of file IsolatorByNominalEfficiency.cc.

References bestConeForEfficiencyIndex(), HLT_FULL_cff::coneSize, gather_cfg::cout, resultType(), muonisolation::IsolatorByNominalEfficiency::ConeSizes::size(), theConesInfo, thresholds, muonisolation::NominalEfficiencyThresholds::thresholdValueForEfficiency(), muonisolation::MuIsoBaseIsolator::Result::valFloat, and weightedSum().

Referenced by cones().

64  {
65  if (deposits.empty()) {
66  cout << "IsolatorByNominalEfficiency: no deposit" << endl;
67  return Result(resultType()); //FIXME
68  }
69 
70  // To determine the threshold, the direction of the cone of the first
71  // set of deposits is used.
72  // For algorithms where different cone axis definitions are used
73  // for different types deposits (eg. HCAL and ECAL deposits for
74  // calorimeter isolation), the first one is used to determine the threshold
75  // value!
76  float theEta = deposits.back().dep->eta();
77 
78  // Try descending efficiency values to find the point where the candidate
79  // becomes non isolated
80 
81  float nominalEfficiency = 1.;
82  const float deltaeff = 0.005;
83  const float mineff = deltaeff;
84  for (float eff = .995; eff > mineff; eff -= deltaeff) {
85  int cone = bestConeForEfficiencyIndex(eff);
86  float coneSize = theConesInfo.size(cone);
87  NominalEfficiencyThresholds::ThresholdLocation location = {theEta, cone};
88  float thres = thresholds->thresholdValueForEfficiency(location, eff);
89  float sumDep = weightedSum(deposits, coneSize);
90  // cout << " Eff=" << eff
91  // << " eta=" << theEta
92  // << " cone=" << cone
93  // << " dR=" << coneSize
94  // << " thres=" << thres
95  // << " deposit=" << sumDep
96  // << " isolated=" << (sumDep < thres)
97  // << endl;
98  if (sumDep > thres)
99  break;
100  nominalEfficiency = eff;
101  }
102  Result res(resultType());
103  res.valFloat = nominalEfficiency;
104  return res;
105 }
virtual double weightedSum(const DepositContainer &deposits, float dRcone) const
float thresholdValueForEfficiency(ThresholdLocation location, float eff_thr) const
tuple cout
Definition: gather_cfg.py:144
ResultType muonisolation::IsolatorByNominalEfficiency::resultType ( ) const
inlineoverrideprivatevirtual
double IsolatorByNominalEfficiency::weightedSum ( const DepositContainer deposits,
float  dRcone 
) const
privatevirtual

Definition at line 123 of file IsolatorByNominalEfficiency.cc.

References cms::cuda::assert(), theDepThresholds, theWeights, and w.

Referenced by result().

123  {
124  double sumDep = 0;
125 
126  assert(deposits.size() == theWeights.size());
127 
128  vector<double>::const_iterator w = theWeights.begin();
129  vector<double>::const_iterator dThresh = theDepThresholds.begin();
130  for (DepositContainer::const_iterator dep = deposits.begin(); dep != deposits.end(); dep++) {
131  if (dep->vetos != nullptr) {
132  sumDep += dep->dep->depositAndCountWithin(dRcone, *dep->vetos, *dThresh).first * (*w);
133  } else {
134  sumDep += dep->dep->depositAndCountWithin(dRcone, Vetos(), *dThresh).first * (*w);
135  }
136  if (sumDep < 0.)
137  sumDep = 0.;
138  w++;
139  dThresh++;
140  }
141  return sumDep;
142 }
const double w
Definition: UKUtility.cc:23
reco::IsoDeposit::Vetos Vetos
assert(be >=bs)

Member Data Documentation

mapNomEff_Cone muonisolation::IsolatorByNominalEfficiency::coneForEfficiency
private

Definition at line 69 of file IsolatorByNominalEfficiency.h.

Referenced by bestConeForEfficiencyIndex().

ConeSizes muonisolation::IsolatorByNominalEfficiency::theConesInfo
private

Definition at line 73 of file IsolatorByNominalEfficiency.h.

Referenced by cuts(), and result().

std::vector<double> muonisolation::IsolatorByNominalEfficiency::theDepThresholds
private

Definition at line 72 of file IsolatorByNominalEfficiency.h.

Referenced by weightedSum().

std::vector<double> muonisolation::IsolatorByNominalEfficiency::theWeights
private

Definition at line 71 of file IsolatorByNominalEfficiency.h.

Referenced by weightedSum().

NominalEfficiencyThresholds* muonisolation::IsolatorByNominalEfficiency::thresholds
private

Definition at line 70 of file IsolatorByNominalEfficiency.h.

Referenced by cuts(), result(), and ~IsolatorByNominalEfficiency().