CMS 3D CMS Logo

TauDiscriminantCutMultiplexer.cc
Go to the documentation of this file.
1 /*
2  * TauDiscriminantCutMultiplexerT
3  *
4  * Authors: Evan K. Friis, UW; Sebastian Wozniewski, KIT
5  *
6  * Takes a PFTauDiscriminatorContainer with two raw values: The toMultiplex diescriminator is expected at rawValues[0] and the key (needed by certain discriminators) is expected at rawValues[1].
7  *
8  * The "key" discriminantor is rounded to the nearest integer.
9  *
10  * A set of cuts for different keys on the "toMultiplex" discriminantor is
11  * provided in the config file.
12  *
13  * Both the key and toMultiplex discriminators should map to the same PFTau
14  * collection.
15  *
16  */
22 
25 
26 #include <memory>
27 
32 
33 #include "TGraph.h"
34 #include "TFormula.h"
35 #include "TFile.h"
36 
37 template <class TauType, class TauTypeRef, class ParentClass>
38 class TauDiscriminantCutMultiplexerT : public ParentClass {
39 public:
41 
43  reco::SingleTauDiscriminatorContainer discriminate(const TauTypeRef&) const override;
44  void beginEvent(const edm::Event& event, const edm::EventSetup& eventSetup) override;
45 
46  static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
47 
48 private:
50 
53 
57  double cutValue_;
59  std::unique_ptr<StringObjectFunction<TauType>> cutVariable_;
60  std::unique_ptr<const TGraph> cutFunction_;
62  int mode_;
63  };
64  typedef std::map<int, std::vector<std::unique_ptr<DiscriminantCutEntry>>> DiscriminantCutMap;
69 
71  std::unique_ptr<const TFormula> mvaOutput_normalization_;
72 
74 
78 
80 };
81 
82 namespace {
83  std::unique_ptr<TFile> openInputFile(const edm::FileInPath& inputFileName) {
84  if (inputFileName.location() == edm::FileInPath::Unknown) {
85  throw cms::Exception("TauDiscriminantCutMultiplexerT::loadObjectFromFile")
86  << " Failed to find File = " << inputFileName << " !!\n";
87  }
88  return std::make_unique<TFile>(inputFileName.fullPath().data());
89  }
90 
91  template <typename T>
92  std::unique_ptr<const T> loadObjectFromFile(TFile& inputFile, const std::string& objectName) {
93  const T* object = dynamic_cast<T*>(inputFile.Get(objectName.data()));
94  if (!object)
95  throw cms::Exception("TauDiscriminantCutMultiplexerT::loadObjectFromFile")
96  << " Failed to load Object = " << objectName.data() << " from file = " << inputFile.GetName() << " !!\n";
97  //Need to use TObject::Clone since the type T might be a base class
98  return std::unique_ptr<const T>{static_cast<T*>(object->Clone())};
99  }
100 
101  std::unique_ptr<const TGraph> loadTGraphFromDB(const edm::EventSetup& es,
102  const std::string& graphName,
103  const int& verbosity_ = 0) {
104  if (verbosity_) {
105  std::cout << "<loadTGraphFromDB>:" << std::endl;
106  std::cout << " graphName = " << graphName << std::endl;
107  }
109  es.get<PhysicsTGraphPayloadRcd>().get(graphName, graphPayload);
110  return std::unique_ptr<const TGraph>{new TGraph(*graphPayload.product())};
111  }
112 
113  std::unique_ptr<TFormula> loadTFormulaFromDB(const edm::EventSetup& es,
114  const std::string& formulaName,
115  const TString& newName,
116  const int& verbosity_ = 0) {
117  if (verbosity_) {
118  std::cout << "<loadTFormulaFromDB>:" << std::endl;
119  std::cout << " formulaName = " << formulaName << std::endl;
120  }
122  es.get<PhysicsTFormulaPayloadRcd>().get(formulaName, formulaPayload);
123 
124  if (formulaPayload->formulas().size() == 1 && formulaPayload->limits().size() == 1) {
125  return std::make_unique<TFormula>(newName, formulaPayload->formulas().at(0).data());
126  } else {
127  throw cms::Exception("TauDiscriminantCutMultiplexerT::loadTFormulaFromDB")
128  << "Failed to load TFormula = " << formulaName << " from Database !!\n";
129  }
130  return std::unique_ptr<TFormula>{};
131  }
132 } // namespace
133 
134 template <class TauType, class TauTypeRef, class ParentClass>
136  const edm::ParameterSet& cfg)
137  : ParentClass(cfg),
138  moduleLabel_(cfg.getParameter<std::string>("@module_label")),
139  mvaOutput_normalization_(),
140  isInitialized_(false) {
141  toMultiplex_ = cfg.getParameter<edm::InputTag>("toMultiplex");
142  toMultiplex_token = this->template consumes<reco::TauDiscriminatorContainer>(toMultiplex_);
143 
144  verbosity_ = cfg.getParameter<int>("verbosity");
145 
146  loadMVAfromDB_ = cfg.getParameter<bool>("loadMVAfromDB");
147  if (!loadMVAfromDB_) {
148  inputFileName_ = cfg.getParameter<edm::FileInPath>("inputFileName");
149  }
150  if (verbosity_)
151  std::cout << moduleLabel_ << " loadMVA = " << loadMVAfromDB_ << std::endl;
152  mvaOutputNormalizationName_ = cfg.getParameter<std::string>("mvaOutput_normalization");
153 
154  // Setup our cut map, first raw values then working points
155  typedef std::vector<edm::ParameterSet> VPSet;
156  typedef std::vector<std::string> VString;
157  typedef std::vector<double> VDouble;
158  VString rawValueConfig = cfg.getParameter<VString>("rawValues");
159  for (uint i = 0; i < rawValueConfig.size(); i++) {
160  if (rawValueConfig[i] == "discriminator")
162  else if (rawValueConfig[i] == "category")
164  else
165  throw cms::Exception("TauDiscriminantCutMultiplexerT")
166  << " Configuration Parameter 'rawValues' containes unknown values. Must be 'discriminator' or 'category'!!\n";
167  }
168  n_raws_ = rawValueConfig.size();
169  VPSet mapping = cfg.getParameter<VPSet>("mapping");
170  for (auto const& mappingEntry : mapping) {
171  unsigned category = mappingEntry.getParameter<uint32_t>("category");
172  std::vector<std::unique_ptr<DiscriminantCutEntry>> cutWPs;
173  std::string categoryname = mappingEntry.getParameter<std::string>("cut");
174  bool localWPs = false;
175  bool wpsAsDouble = false;
176  if (mappingEntry.exists("workingPoints")) {
177  localWPs = true;
178  if (mappingEntry.existsAs<VDouble>("workingPoints")) {
179  wpsAsDouble = true;
180  } else if (mappingEntry.existsAs<VString>("workingPoints")) {
181  wpsAsDouble = false;
182  } else {
183  throw cms::Exception("TauDiscriminantCutMultiplexerT")
184  << " Configuration Parameter 'workingPoints' must be filled with cms.string or cms.double!!\n";
185  }
186  } else if (cfg.exists("workingPoints")) {
187  localWPs = false;
188  if (cfg.existsAs<VDouble>("workingPoints")) {
189  wpsAsDouble = true;
190  } else if (cfg.existsAs<VString>("workingPoints")) {
191  wpsAsDouble = false;
192  } else {
193  throw cms::Exception("TauDiscriminantCutMultiplexerT")
194  << " Configuration Parameter 'workingPoints' must be filled with cms.string or cms.double!!\n";
195  }
196  } else {
197  throw cms::Exception("TauDiscriminantCutMultiplexerT")
198  << " Undefined Configuration Parameter 'workingPoints' !!\n";
199  }
200  if (wpsAsDouble) {
201  VDouble workingPoints;
202  if (localWPs)
203  workingPoints = mappingEntry.getParameter<VDouble>("workingPoints");
204  else
205  workingPoints = cfg.getParameter<VDouble>("workingPoints");
206  for (auto const& wp : workingPoints) {
207  std::unique_ptr<DiscriminantCutEntry> cut{new DiscriminantCutEntry()};
208  cut->cutValue_ = wp;
210  cutWPs.push_back(std::move(cut));
211  }
212  } else {
213  VString workingPoints;
214  if (localWPs)
215  workingPoints = mappingEntry.getParameter<VString>("workingPoints");
216  else
217  workingPoints = cfg.getParameter<VString>("workingPoints");
218  for (auto const& wp : workingPoints) {
219  std::unique_ptr<DiscriminantCutEntry> cut{new DiscriminantCutEntry()};
220  cut->cutName_ = categoryname + wp;
221  std::string cutVariable_string = mappingEntry.getParameter<std::string>("variable");
222  cut->cutVariable_.reset(new StringObjectFunction<TauType>(cutVariable_string));
224  cutWPs.push_back(std::move(cut));
225  }
226  }
227  cuts_[category] = std::move(cutWPs);
228  }
229 
230  verbosity_ = cfg.getParameter<int>("verbosity");
231  if (verbosity_)
232  std::cout << "constructed " << moduleLabel_ << std::endl;
233 }
234 
235 template <class TauType, class TauTypeRef, class ParentClass>
237 
238 template <class TauType, class TauTypeRef, class ParentClass>
240  const edm::EventSetup& es) {
241  if (verbosity_)
242  std::cout << " begin! " << moduleLabel_ << " " << isInitialized_ << std::endl;
243  if (!isInitialized_) {
244  //Only open the file once and we can close it when this routine is done
245  // since all objects gotten from the file will have been copied
246  std::unique_ptr<TFile> inputFile;
247  if (!mvaOutputNormalizationName_.empty()) {
248  if (!loadMVAfromDB_) {
249  inputFile = openInputFile(inputFileName_);
250  mvaOutput_normalization_ = loadObjectFromFile<TFormula>(*inputFile, mvaOutputNormalizationName_);
251  } else {
252  auto temp = loadTFormulaFromDB(
253  es, mvaOutputNormalizationName_, Form("%s_mvaOutput_normalization", moduleLabel_.data()), verbosity_);
254  mvaOutput_normalization_ = std::move(temp);
255  }
256  }
257  for (auto const& cutWPs : cuts_) {
258  for (auto const& cut : cutWPs.second) {
259  if (cut->mode_ == DiscriminantCutEntry::kVariableCut) {
260  if (!loadMVAfromDB_) {
261  if (not inputFile) {
262  inputFile = openInputFile(inputFileName_);
263  }
264  if (verbosity_)
265  std::cout << "Loading from file" << inputFileName_ << std::endl;
266  cut->cutFunction_ = loadObjectFromFile<TGraph>(*inputFile, cut->cutName_);
267  } else {
268  if (verbosity_)
269  std::cout << "Loading from DB" << std::endl;
270  cut->cutFunction_ = loadTGraphFromDB(es, cut->cutName_, verbosity_);
271  }
272  }
273  }
274  }
275  isInitialized_ = true;
276  }
277 
278  evt.getByToken(toMultiplex_token, toMultiplexHandle_);
279 }
280 
281 template <class TauType, class TauTypeRef, class ParentClass>
283  const TauTypeRef& tau) const {
284  if (verbosity_) {
285  std::cout << "<TauDiscriminantCutMultiplexerT::discriminate>:" << std::endl;
286  std::cout << " moduleLabel = " << moduleLabel_ << std::endl;
287  }
288 
290  result.rawValues.resize(n_raws_);
291  double disc_result = (*toMultiplexHandle_)[tau].rawValues.at(0);
292  if (verbosity_) {
293  std::cout << "disc_result = " << disc_result << std::endl;
294  }
295  if (raw_discriminator_idx_ >= 0)
296  result.rawValues[raw_discriminator_idx_] = disc_result;
297  if (mvaOutput_normalization_) {
298  disc_result = mvaOutput_normalization_->Eval(disc_result);
299  if (verbosity_) {
300  std::cout << "disc_result (normalized) = " << disc_result << std::endl;
301  }
302  }
303  double key_result = 0.0;
304  if ((*toMultiplexHandle_)[tau].rawValues.size() == 2) {
305  key_result = (*toMultiplexHandle_)[tau].rawValues.at(1);
306  if (raw_category_idx_ >= 0)
307  result.rawValues[raw_category_idx_] = key_result;
308  }
309  typename DiscriminantCutMap::const_iterator cutWPsIter = cuts_.find(std::round(key_result));
310 
311  // Return null if it doesn't exist
312  if (cutWPsIter == cuts_.end()) {
313  return result;
314  }
315  // See if the discriminator passes our cuts
316  for (auto const& cutIter : cutWPsIter->second) {
317  bool passesCuts = false;
318  if (cutIter->mode_ == DiscriminantCutEntry::kFixedCut) {
319  passesCuts = (disc_result > cutIter->cutValue_);
320  if (verbosity_) {
321  std::cout << "cutValue (fixed) = " << cutIter->cutValue_ << " --> passesCuts = " << passesCuts << std::endl;
322  }
323  } else if (cutIter->mode_ == DiscriminantCutEntry::kVariableCut) {
324  double cutVariable = (*cutIter->cutVariable_)(*tau);
325  double xMin, xMax, dummy;
326  cutIter->cutFunction_->GetPoint(0, xMin, dummy);
327  cutIter->cutFunction_->GetPoint(cutIter->cutFunction_->GetN() - 1, xMax, dummy);
328  const double epsilon = 1.e-3;
329  if (cutVariable < (xMin + epsilon))
330  cutVariable = xMin + epsilon;
331  else if (cutVariable > (xMax - epsilon))
332  cutVariable = xMax - epsilon;
333  double cutValue = cutIter->cutFunction_->Eval(cutVariable);
334  passesCuts = (disc_result > cutValue);
335  if (verbosity_) {
336  std::cout << "cutValue (@" << cutVariable << ") = " << cutValue << " --> passesCuts = " << passesCuts
337  << std::endl;
338  }
339  }
340  result.workingPoints.push_back(passesCuts);
341  }
342  return result;
343 }
344 
345 // template specialization to get the correct default config names in the following fillDescriptions
346 template <class TauType>
348  // this generic one shoudl never be called.
349  // these are specialized in TauDiscriminationProducerBase.cc
350  throw cms::Exception("TauDiscriminantCutMultiplexerT")
351  << "Unsupported TauType used. You must use either PFTau or PATTau.";
352 }
353 
354 template <>
355 std::string getDefaultConfigString<reco::PFTau>() {
356  return "recoTauDiscriminantCutMultiplexerDefault";
357 }
358 template <>
359 std::string getDefaultConfigString<pat::Tau>() {
360  return "patTauDiscriminantCutMultiplexerDefault";
361 }
362 
363 template <class TauType, class TauTypeRef, class ParentClass>
365  edm::ConfigurationDescriptions& descriptions) {
366  // recoTauDiscriminantCutMultiplexer
368  desc.add<edm::InputTag>("toMultiplex", edm::InputTag("fixme"));
369  desc.add<int>("verbosity", 0);
370 
371  {
372  edm::ParameterSet pset_mapping;
373  pset_mapping.addParameter<unsigned int>("category", 0);
374  pset_mapping.addParameter<std::string>("cut", "fixme");
375  edm::ParameterSetDescription desc_mapping;
376  desc_mapping.add<unsigned int>("category", 0);
377  desc_mapping.add<std::string>("cut");
378  // it seems the parameter string "variable" exists only when workingPoints are string
379  // see hpsPFTauDiscriminationByVLooseIsolationMVArun2v1DBdR03oldDMwLT in RecoTauTag/Configuration/python/HPSPFTaus_cff.py
380  desc_mapping.addOptional<std::string>("variable")
381  ->setComment("the parameter is required when \"workingPoints\" are string");
382  std::vector<edm::ParameterSet> vpsd_mapping;
383  vpsd_mapping.push_back(pset_mapping);
384  desc.addVPSet("mapping", desc_mapping, vpsd_mapping);
385  }
386 
387  std::vector<std::string> defaultRaws{"discriminator"};
388  desc.add<std::vector<std::string>>("rawValues", defaultRaws);
389  std::vector<double> defaultWP{0.0};
390  desc.addNode(edm::ParameterDescription<std::vector<double>>("workingPoints", defaultWP, true) xor
391  edm::ParameterDescription<std::vector<std::string>>("workingPoints", true));
392  desc.add<edm::FileInPath>("inputFileName", edm::FileInPath("RecoTauTag/RecoTau/data/emptyMVAinputFile"));
393  desc.add<bool>("loadMVAfromDB", true);
394  ParentClass::fillProducerDescriptions(desc); // inherited from the base
395  desc.add<std::string>("mvaOutput_normalization", "");
396  descriptions.add(getDefaultConfigString<TauType>(), desc);
397 }
398 
399 // define our implementations
404 
ConfigurationDescriptions.h
edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
TauDiscriminantCutMultiplexerT::raw_category_idx_
int raw_category_idx_
Definition: TauDiscriminantCutMultiplexer.cc:68
taus_updatedMVAIds_cff.category
category
Definition: taus_updatedMVAIds_cff.py:31
TauDiscriminantCutMultiplexerT::DiscriminantCutEntry::cutName_
std::string cutName_
Definition: TauDiscriminantCutMultiplexer.cc:58
PhysicsTFormulaPayload.h
PDWG_TauSkim_cff.rawValues
rawValues
Definition: PDWG_TauSkim_cff.py:13
resolutioncreator_cfi.object
object
Definition: resolutioncreator_cfi.py:4
mps_fire.i
i
Definition: mps_fire.py:428
TauDiscriminantCutMultiplexerT::isInitialized_
bool isInitialized_
Definition: TauDiscriminantCutMultiplexer.cc:73
edm::ParameterSetDescription::add
ParameterDescriptionBase * add(U const &iLabel, T const &value)
Definition: ParameterSetDescription.h:95
StringObjectFunction
Definition: StringObjectFunction.h:16
PhysicsTGraphPayload.h
funct::false
false
Definition: Factorize.h:29
TauDiscriminationProducerBase.h
TauDiscriminantCutMultiplexerT::cuts_
DiscriminantCutMap cuts_
Definition: TauDiscriminantCutMultiplexer.cc:65
TkAlMuonSelectors_cfi.cut
cut
Definition: TkAlMuonSelectors_cfi.py:5
metsig::tau
Definition: SignAlgoResolutions.h:49
pfClustersFromHGC3DClusters_cfi.wp
wp
Definition: pfClustersFromHGC3DClusters_cfi.py:20
edm::EDGetTokenT
Definition: EDGetToken.h:33
TauDiscriminantCutMultiplexerT::DiscriminantCutMap
std::map< int, std::vector< std::unique_ptr< DiscriminantCutEntry > > > DiscriminantCutMap
Definition: TauDiscriminantCutMultiplexer.cc:64
gather_cfg.cout
cout
Definition: gather_cfg.py:144
HLT_FULL_cff.InputTag
InputTag
Definition: HLT_FULL_cff.py:89287
TauDiscriminantCutMultiplexerT::DiscriminantCutEntry::kVariableCut
Definition: TauDiscriminantCutMultiplexer.cc:61
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
TauDiscriminantCutMultiplexerT::inputFileName_
edm::FileInPath inputFileName_
Definition: TauDiscriminantCutMultiplexer.cc:52
TauDiscriminantCutMultiplexerT::DiscriminantCutEntry
Definition: TauDiscriminantCutMultiplexer.cc:54
TauDiscriminantCutMultiplexerT::DiscriminantCutEntry::DiscriminantCutEntry
DiscriminantCutEntry()
Definition: TauDiscriminantCutMultiplexer.cc:55
TauDiscriminantCutMultiplexerT::loadMVAfromDB_
bool loadMVAfromDB_
Definition: TauDiscriminantCutMultiplexer.cc:51
PhysicsTFormulaPayload::limits
const std::vector< std::pair< float, float > > & limits() const
Definition: PhysicsTFormulaPayload.h:14
edm::Handle
Definition: AssociativeIterator.h:50
groupFilesInBlocks.temp
list temp
Definition: groupFilesInBlocks.py:142
parallelization.uint
uint
Definition: parallelization.py:124
getDefaultConfigString
std::string getDefaultConfigString()
Definition: TauDiscriminantCutMultiplexer.cc:347
geometryDiff.epsilon
int epsilon
Definition: geometryDiff.py:26
FileInPath.h
photonAnalyzer_cfi.xMin
xMin
Definition: photonAnalyzer_cfi.py:82
TauDiscriminantCutMultiplexerT
Definition: TauDiscriminantCutMultiplexer.cc:38
edm::FileInPath
Definition: FileInPath.h:64
edm::EventSetup::get
T get() const
Definition: EventSetup.h:80
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
edm::ConfigurationDescriptions::add
void add(std::string const &label, ParameterSetDescription const &psetDescription)
Definition: ConfigurationDescriptions.cc:57
TauDiscriminantCutMultiplexerT::toMultiplex_token
edm::EDGetTokenT< reco::TauDiscriminatorContainer > toMultiplex_token
Definition: TauDiscriminantCutMultiplexer.cc:77
InefficientDoubleROC.inputFileName
inputFileName
Definition: InefficientDoubleROC.py:437
edm::ESHandle
Definition: DTSurvey.h:22
PhysicsTFormulaPayloadRcd
Definition: PhysicsTFormulaPayloadRcd.h:23
RecoTauDiscriminantCutMultiplexer
TauDiscriminantCutMultiplexerT< reco::PFTau, reco::PFTauRef, PFTauDiscriminationContainerProducerBase > RecoTauDiscriminantCutMultiplexer
Definition: TauDiscriminantCutMultiplexer.cc:401
edm::Event::getByToken
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:531
TauDiscriminantCutMultiplexerT::raw_discriminator_idx_
int raw_discriminator_idx_
Definition: TauDiscriminantCutMultiplexer.cc:67
ParameterSetDescription.h
edm::ConfigurationDescriptions
Definition: ConfigurationDescriptions.h:28
TauDiscriminantCutMultiplexerT::mvaOutput_normalization_
std::unique_ptr< const TFormula > mvaOutput_normalization_
Definition: TauDiscriminantCutMultiplexer.cc:71
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
PhysicsTGraphPayloadRcd.h
edm::ParameterSet
Definition: ParameterSet.h:47
PDWG_TauSkim_cff.workingPoints
workingPoints
Definition: PDWG_TauSkim_cff.py:15
TauDiscriminantCutMultiplexerT::moduleLabel_
std::string moduleLabel_
Definition: TauDiscriminantCutMultiplexer.cc:49
TauDiscriminantCutMultiplexerT::TauDiscriminantCutMultiplexerT
TauDiscriminantCutMultiplexerT(const edm::ParameterSet &pset)
Definition: TauDiscriminantCutMultiplexer.cc:135
TauDiscriminantCutMultiplexerT::toMultiplex_
edm::InputTag toMultiplex_
Definition: TauDiscriminantCutMultiplexer.cc:75
edm::ParameterSet::addParameter
void addParameter(std::string const &name, T const &value)
Definition: ParameterSet.h:135
dtResolutionTest_cfi.inputFile
inputFile
Definition: dtResolutionTest_cfi.py:14
TauDiscriminantCutMultiplexerT::~TauDiscriminantCutMultiplexerT
~TauDiscriminantCutMultiplexerT() override
Definition: TauDiscriminantCutMultiplexer.cc:236
TauDiscriminantCutMultiplexerT::DiscriminantCutEntry::~DiscriminantCutEntry
~DiscriminantCutEntry()
Definition: TauDiscriminantCutMultiplexer.cc:56
TauDiscriminantCutMultiplexerT::discriminate
reco::SingleTauDiscriminatorContainer discriminate(const TauTypeRef &) const override
Definition: TauDiscriminantCutMultiplexer.cc:282
edm::EventSetup
Definition: EventSetup.h:57
get
#define get
TauDiscriminantCutMultiplexerT::mvaOutputNormalizationName_
std::string mvaOutputNormalizationName_
Definition: TauDiscriminantCutMultiplexer.cc:70
TauDiscriminantCutMultiplexerT::DiscriminantCutEntry::mode_
int mode_
Definition: TauDiscriminantCutMultiplexer.cc:62
TauDiscriminantCutMultiplexerT::fillDescriptions
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
Definition: TauDiscriminantCutMultiplexer.cc:364
mps_merge.newName
string newName
Definition: mps_merge.py:86
InputTag.h
looper.cfg
cfg
Definition: looper.py:297
TauDiscriminantCutMultiplexerT::toMultiplexHandle_
edm::Handle< reco::TauDiscriminatorContainer > toMultiplexHandle_
Definition: TauDiscriminantCutMultiplexer.cc:76
TauDiscriminantCutMultiplexerT::DiscriminantCutEntry::cutVariable_
std::unique_ptr< StringObjectFunction< TauType > > cutVariable_
Definition: TauDiscriminantCutMultiplexer.cc:59
PhysicsTGraphPayloadRcd
Definition: PhysicsTGraphPayloadRcd.h:23
TauDiscriminantCutMultiplexerT::beginEvent
void beginEvent(const edm::Event &event, const edm::EventSetup &eventSetup) override
Definition: TauDiscriminantCutMultiplexer.cc:239
submitPVResolutionJobs.desc
string desc
Definition: submitPVResolutionJobs.py:251
HistogramManager_cfi.VPSet
def VPSet(*args)
Definition: HistogramManager_cfi.py:401
TauDiscriminantCutMultiplexerT::DiscriminantCutEntry::kFixedCut
Definition: TauDiscriminantCutMultiplexer.cc:61
eostools.move
def move(src, dest)
Definition: eostools.py:511
std
Definition: JetResolutionObject.h:76
edm::FileInPath::Unknown
Definition: FileInPath.h:66
T
long double T
Definition: Basic3DVectorLD.h:48
Exception
Definition: hltDiff.cc:246
PFTau.h
multiplicitycorr_cfi.xMax
xMax
Definition: multiplicitycorr_cfi.py:5
TauDiscriminantCutMultiplexerT::DiscriminantCutEntry::kUndefined
Definition: TauDiscriminantCutMultiplexer.cc:61
TauDiscriminantCutMultiplexerT::verbosity_
int verbosity_
Definition: TauDiscriminantCutMultiplexer.cc:79
mps_fire.result
result
Definition: mps_fire.py:311
dummy
Definition: DummySelector.h:38
PhysicsTFormulaPayloadRcd.h
event
Definition: event.py:1
edm::Event
Definition: Event.h:73
StringObjectFunction.h
edm::ParameterDescription
Definition: ParameterDescription.h:110
taus_updatedMVAIds_cff.mapping
mapping
Definition: taus_updatedMVAIds_cff.py:29
TauDiscriminantCutMultiplexerT::DiscriminantCutEntry::cutValue_
double cutValue_
Definition: TauDiscriminantCutMultiplexer.cc:57
edm::InputTag
Definition: InputTag.h:15
TauDiscriminantCutMultiplexerT::n_raws_
uint n_raws_
Definition: TauDiscriminantCutMultiplexer.cc:66
PATTauDiscriminantCutMultiplexer
TauDiscriminantCutMultiplexerT< pat::Tau, pat::TauRef, PATTauDiscriminationContainerProducerBase > PATTauDiscriminantCutMultiplexer
Definition: TauDiscriminantCutMultiplexer.cc:403
muonDTDigis_cfi.pset
pset
Definition: muonDTDigis_cfi.py:27
PhysicsTFormulaPayload::formulas
const std::vector< std::string > & formulas() const
Definition: PhysicsTFormulaPayload.h:15
summarizeEdmComparisonLogfiles.objectName
objectName
Definition: summarizeEdmComparisonLogfiles.py:105
TauDiscriminantCutMultiplexerT::DiscriminantCutEntry::cutFunction_
std::unique_ptr< const TGraph > cutFunction_
Definition: TauDiscriminantCutMultiplexer.cc:60
reco::SingleTauDiscriminatorContainer
Definition: TauDiscriminatorContainer.h:9