43 typedef std::vector<ComputerAndCut>
CutList;
46 double discriminate(
const PFTauRef& thePFTau)
const override;
76 std::vector<edm::ParameterSet> decayModeMap = iConfig.
getParameter<std::vector<edm::ParameterSet> >(
"computers");
80 for (std::vector<edm::ParameterSet>::const_iterator iComputer = decayModeMap.begin(); iComputer != decayModeMap.end();
84 toInsert.
userCut = iComputer->getParameter<
double>(
"cut");
85 CutList::iterator computerJustAdded =
89 std::vector<int> associatedDecayModes = iComputer->getParameter<std::vector<int> >(
"decayModeIndices");
90 for (std::vector<int>::const_iterator iDecayMode = associatedDecayModes.begin();
91 iDecayMode != associatedDecayModes.end();
94 std::pair<DecayModeToCutMap::iterator, bool> insertResult =
95 computerMap_.insert(std::make_pair(*iDecayMode, computerJustAdded));
98 if (insertResult.second ==
false) {
100 <<
"A tau decay mode: " << *iDecayMode <<
" has been mapped to two different MVA implementations, "
101 << insertResult.first->second->computerName <<
" and " << toInsert.
computerName
102 <<
". Please check the appropriate cfi file." << std::endl;
119 float valueToMultiplex = (*targetDiscriminant)[pfTau];
126 if (valueToMultiplex > iterToComputer->second->userCut)
145 vpsd_computers.add<
double>(
"cut");
146 vpsd_computers.add<std::vector<int> >(
"decayModeIndices");
150 desc.addVPSet(
"computers", vpsd_computers);
154 descriptions.
add(
"pfTauDecayModeCutMultiplexer",
desc);