33 moduleLabel_(
pset.getParameter<
std::
string>(
"@module_label")),
38 weightGammas_ =
pset.getParameter<
double>(
"WeightECALIsolation");
41 minPtForNoIso_ =
pset.getParameter<
double>(
"minTauPtForNoIso");
45 deltaBetaNeeded_ =
false;
46 weightsNeeded_ =
false;
47 tracksNeeded_ =
false;
48 gammasNeeded_ =
false;
49 storeRawValue_.clear();
50 auto const& rawDefs =
pset.getParameter<std::vector<edm::ParameterSet>>(
"IDdefinitions");
51 std::vector<std::string> idnames;
52 for (
auto const& rawDefsEntry : rawDefs) {
53 idnames.push_back(rawDefsEntry.getParameter<
std::string>(
"IDname"));
55 int numStoreOptions = 0;
56 if (rawDefsEntry.getParameter<
bool>(
"storeRawSumPt")) {
57 storeRawValue_.push_back(SumPt);
60 if (rawDefsEntry.getParameter<
bool>(
"storeRawOccupancy")) {
64 if (rawDefsEntry.getParameter<
bool>(
"storeRawPUsumPt")) {
65 storeRawValue_.push_back(PUsumPt);
68 if (rawDefsEntry.getParameter<
bool>(
"storeRawFootprintCorrection")) {
69 storeRawValue_.push_back(FootPrintCorrection);
73 if (rawDefsEntry.getParameter<
bool>(
"storeRawPhotonSumPt_outsideSignalCone")) {
74 storeRawValue_.push_back(PhotonSumPt);
77 if (numStoreOptions != 1) {
79 <<
"Multiple or none of 'store sum pt' and/or 'store occupancy' options are set."
80 <<
" These options are mutually exclusive.";
83 includeGammas_.push_back(rawDefsEntry.getParameter<
bool>(
"ApplyDiscriminationByECALIsolation"));
84 if (includeGammas_.back())
86 calculateWeights_.push_back(rawDefsEntry.getParameter<
bool>(
"ApplyDiscriminationByWeightedECALIsolation"));
87 if (calculateWeights_.back())
88 weightsNeeded_ =
true;
89 includeTracks_.push_back(rawDefsEntry.getParameter<
bool>(
"ApplyDiscriminationByTrackerIsolation"));
90 if (includeTracks_.back())
92 applyDeltaBetaCorrection_.push_back(rawDefsEntry.getParameter<
bool>(
"applyDeltaBetaCorrection"));
93 if (applyDeltaBetaCorrection_.back())
94 deltaBetaNeeded_ =
true;
95 useAllPFCandsForWeights_.push_back(rawDefsEntry.getParameter<
bool>(
"UseAllPFCandsForWeights"));
98 if (includeGammas_.back() && calculateWeights_.back()) {
100 <<
"Both 'ApplyDiscriminationByECALIsolation' and 'ApplyDiscriminationByWeightedECALIsolation' "
101 <<
"have been set to true. These options are mutually exclusive.";
106 std::vector<edm::ParameterSet> wpDefs =
pset.getParameter<std::vector<edm::ParameterSet>>(
"IDWPdefinitions");
107 for (std::vector<edm::ParameterSet>::iterator wpDefsEntry = wpDefs.begin(); wpDefsEntry != wpDefs.end();
109 maxAbsValue_.push_back(wpDefsEntry->getParameter<std::vector<double>>(
"maximumAbsoluteValues"));
110 maxRelValue_.push_back(wpDefsEntry->getParameter<std::vector<double>>(
"maximumRelativeValues"));
111 offsetRelValue_.push_back(wpDefsEntry->getParameter<std::vector<double>>(
"relativeValueOffsets"));
112 auto refRawIDNames = wpDefsEntry->getParameter<std::vector<std::string>>(
"referenceRawIDNames");
113 if (!maxAbsValue_.back().empty() && maxAbsValue_.back().size() != refRawIDNames.size())
115 <<
"WP configuration: Length of 'maximumAbsoluteValues' does not match length of 'referenceRawIDNames'!";
116 if (!maxRelValue_.back().empty() && maxRelValue_.back().size() != refRawIDNames.size())
118 <<
"WP configuration: Length of 'maximumRelativeValues' does not match length of 'referenceRawIDNames'!";
119 if (!offsetRelValue_.back().empty() && offsetRelValue_.back().size() != refRawIDNames.size())
121 <<
"WP configuration: Length of 'relativeValueOffsets' does not match length of 'referenceRawIDNames'!";
122 else if (offsetRelValue_.back().empty())
123 offsetRelValue_.back().assign(refRawIDNames.size(), 0.0);
124 rawValue_reference_.push_back(std::vector<int>(refRawIDNames.size()));
125 for (
size_t i = 0;
i < refRawIDNames.size();
i++) {
127 for (
size_t j = 0;
j < idnames.size();
j++) {
128 if (refRawIDNames[
i] == idnames[
j]) {
129 rawValue_reference_.back()[
i] =
j;
136 <<
"WP configuration: Requested raw ID '" << refRawIDNames[
i] <<
"' not defined!";
140 customIsoCone_ =
pset.getParameter<
double>(
"customOuterCone");
142 applyFootprintCorrection_ =
pset.getParameter<
bool>(
"applyFootprintCorrection");
145 for (edm::VParameterSet::const_iterator cfgFootprintCorrection = cfgFootprintCorrections.begin();
146 cfgFootprintCorrection != cfgFootprintCorrections.end();
147 ++cfgFootprintCorrection) {
151 footprintCorrections_.push_back(
std::move(footprintCorrection));
162 if (deltaBetaNeeded_ || weightsNeeded_) {
165 std::pair<edm::ParameterSet, edm::ParameterSet> puFactorizedIsoQCuts =
177 puFactorizedIsoQCuts.second.addParameter<
double>(
"minTrackPt",
186 pfCand_token = consumes<edm::View<reco::Candidate>>(pfCandSrc_);
188 vertex_token = consumes<reco::VertexCollection>(vertexSrc_);
189 deltaBetaCollectionCone_ =
pset.getParameter<
double>(
"isoConeSizeForDeltaBeta");
190 std::string deltaBetaFactorFormula =
pset.getParameter<
string>(
"deltaBetaFactor");
191 deltaBetaFormula_.reset(
new TFormula(
"DB_corr", deltaBetaFactorFormula.c_str()));
194 applyRhoCorrection_ =
pset.getParameter<
bool>(
"applyRhoCorrection");
195 if (applyRhoCorrection_) {
197 rho_token = consumes<double>(rhoProducer_);
198 rhoConeSize_ =
pset.getParameter<
double>(
"rhoConeSize");
199 rhoUEOffsetCorrection_ =
pset.getParameter<
double>(
"rhoUEOffsetCorrection");
202 verbosity_ =
pset.getParameter<
int>(
"verbosity");
210 inline double weightedSum(
const std::vector<CandidatePtr>& inColl_,
double eta,
double phi)
const {
212 for (
auto const& inObj_ : inColl_) {
213 double sum = (inObj_->pt() * inObj_->pt()) / (
deltaR2(
eta, phi, inObj_->eta(), inObj_->phi()));
226 std::unique_ptr<tau::RecoTauQualityCuts>
qcuts_;
302 vertexAssociator_->setEvent(
event);
306 if (deltaBetaNeeded_ || weightsNeeded_) {
310 chargedPFCandidatesInEvent_.clear();
311 chargedPFCandidatesInEvent_.reserve(
pfCandidates->size());
313 for (
size_t i = 0;
i < numPFCandidates; ++
i) {
315 if (pfCandidate->
charge() != 0) {
316 chargedPFCandidatesInEvent_.push_back(pfCandidate);
322 event.getByToken(vertex_token,
vertices);
323 size_t nVtxThisEvent =
vertices->size();
324 deltaBetaFactorThisEvent_ = deltaBetaFormula_->Eval(nVtxThisEvent);
327 if (applyRhoCorrection_) {
329 event.getByToken(rho_token, rhoHandle_);
330 rhoThisEvent_ = (*rhoHandle_ - rhoUEOffsetCorrection_) * (3.14159) * rhoConeSize_ * rhoConeSize_;
336 LogDebug(
"discriminate") <<
" tau: Pt = " << pfTau->pt() <<
", eta = " << pfTau->eta() <<
", phi = " << pfTau->phi();
340 std::vector<CandidatePtr> isoCharged_;
341 std::vector<CandidatePtr> isoNeutral_;
342 std::vector<CandidatePtr> isoPU_;
343 std::vector<CandidatePtr> isoPUall_;
346 std::vector<CandidatePtr> chPV_;
347 std::vector<CandidatePtr> chPVall_;
348 isoCharged_.
reserve(pfTau->isolationChargedHadrCands().size());
349 isoNeutral_.reserve(pfTau->isolationGammaCands().size());
350 isoPU_.reserve(
std::min(100UL, chargedPFCandidatesInEvent_.size()));
351 isoPUall_.reserve(
std::min(100UL, chargedPFCandidatesInEvent_.size()));
352 isoNeutralWeight_.
reserve(pfTau->isolationGammaCands().size());
353 isoNeutralWeight_UseAllPFCands_.
reserve(pfTau->isolationGammaCands().size());
355 chPV_.reserve(
std::min(50UL, chargedPFCandidatesInEvent_.size()));
356 chPVall_.reserve(
std::min(50UL, chargedPFCandidatesInEvent_.size()));
363 if (
pv.isNonnull()) {
364 LogTrace(
"discriminate") <<
"pv: x = " <<
pv->position().x() <<
", y = " <<
pv->position().y()
365 <<
", z = " <<
pv->position().z();
367 LogTrace(
"discriminate") <<
"pv: N/A";
369 if (pfTau->leadChargedHadrCand().
isNonnull()) {
370 LogTrace(
"discriminate") <<
"leadPFChargedHadron:"
371 <<
" Pt = " << pfTau->leadChargedHadrCand()->pt() <<
","
372 <<
" eta = " << pfTau->leadChargedHadrCand()->eta() <<
","
373 <<
" phi = " << pfTau->leadChargedHadrCand()->phi();
375 LogTrace(
"discriminate") <<
"leadPFChargedHadron: N/A";
380 if (!(
pv.isNonnull() && pfTau->leadChargedHadrCand().
isNonnull()))
384 qcuts_->setLeadTrack(*pfTau->leadChargedHadrCand());
386 if (deltaBetaNeeded_ || weightsNeeded_) {
387 pileupQcutsGeneralQCuts_->setPV(
pv);
388 pileupQcutsGeneralQCuts_->setLeadTrack(*pfTau->leadChargedHadrCand());
389 pileupQcutsPUTrackSelection_->setPV(
pv);
390 pileupQcutsPUTrackSelection_->setLeadTrack(*pfTau->leadChargedHadrCand());
395 for (
auto const&
cand : pfTau->isolationChargedHadrCands()) {
396 if (qcuts_->filterCandRef(
cand)) {
397 LogTrace(
"discriminate") <<
"adding charged iso cand with pt " <<
cand->pt();
398 isoCharged_.push_back(
cand);
402 if (gammasNeeded_ || weightsNeeded_) {
403 for (
auto const&
cand : pfTau->isolationGammaCands()) {
404 if (qcuts_->filterCandRef(
cand)) {
405 LogTrace(
"discriminate") <<
"adding neutral iso cand with pt " <<
cand->pt();
406 isoNeutral_.push_back(
cand);
415 if (deltaBetaNeeded_ || weightsNeeded_) {
418 std::cout <<
"Initial PFCands: " << chargedPFCandidatesInEvent_.size() << std::endl;
421 std::vector<CandidatePtr> allPU = pileupQcutsPUTrackSelection_->filterCandRefs(chargedPFCandidatesInEvent_,
true);
423 std::vector<CandidatePtr> allNPU = pileupQcutsPUTrackSelection_->filterCandRefs(chargedPFCandidatesInEvent_);
424 LogTrace(
"discriminate") <<
"After track cuts: " << allPU.size();
427 std::vector<CandidatePtr> cleanPU = pileupQcutsGeneralQCuts_->filterCandRefs(allPU);
429 std::vector<CandidatePtr> cleanNPU = pileupQcutsGeneralQCuts_->filterCandRefs(allNPU);
431 LogTrace(
"discriminate") <<
"After cleaning cuts: " << cleanPU.size();
434 DRFilter deltaBetaFilter(pfTau->p4(), 0, deltaBetaCollectionCone_);
435 for (
auto const&
cand : cleanPU) {
436 if (deltaBetaFilter(
cand))
437 isoPU_.push_back(
cand);
440 for (
auto const&
cand : cleanNPU) {
441 if (deltaBetaFilter(
cand))
442 chPV_.push_back(
cand);
444 LogTrace(
"discriminate") <<
"After cone cuts: " << isoPU_.size() <<
" " << chPV_.size();
449 if (weightsNeeded_) {
450 for (
auto const& isoObject : isoNeutral_) {
451 if (isoObject->charge() != 0) {
454 isoNeutralWeight_UseAllPFCands_.
push_back(*isoObject);
458 double eta = isoObject->eta();
459 double phi = isoObject->phi();
461 double sumNPU = 0.5 *
log(weightedSum(chPV_,
eta, phi));
463 double sumPU = 0.5 *
log(weightedSum(isoPU_,
eta, phi));
465 if ((sumNPU + sumPU) > 0)
466 neutral.
setP4(((sumNPU) / (sumNPU + sumPU)) * neutral.
p4());
471 double sumNPU = 0.5 *
log(weightedSum(chPVall_,
eta, phi));
473 double sumPU = 0.5 *
log(weightedSum(isoPUall_,
eta, phi));
475 if ((sumNPU + sumPU) > 0)
476 neutral.
setP4(((sumNPU) / (sumNPU + sumPU)) * neutral.
p4());
478 isoNeutralWeight_UseAllPFCands_.
push_back(neutral);
484 if (customIsoCone_ >= 0.) {
485 DRFilter
filter(pfTau->p4(), 0, customIsoCone_);
486 DRFilter2 filter2(pfTau->p4(), 0, customIsoCone_);
487 std::vector<CandidatePtr> isoCharged_filter;
488 std::vector<CandidatePtr> isoNeutral_filter;
490 for (
auto const& isoObject : isoCharged_) {
492 isoCharged_filter.push_back(isoObject);
494 isoCharged_ = isoCharged_filter;
495 for (
auto const& isoObject : isoNeutral_) {
497 isoNeutral_filter.push_back(isoObject);
499 isoNeutral_ = isoNeutral_filter;
502 for (
auto const& isoObject : isoNeutralWeight_) {
503 if (filter2(isoObject))
504 isoNeutralWeight_filter.
push_back(isoObject);
506 isoNeutralWeight_ = isoNeutralWeight_filter;
510 for (
auto const& isoObject : isoNeutralWeight_UseAllPFCands_) {
511 if (filter2(isoObject))
512 isoNeutralWeight_filter.
push_back(isoObject);
514 isoNeutralWeight_UseAllPFCands_ = isoNeutralWeight_filter;
520 for (
size_t i = 0;
i < includeGammas_.size();
i++) {
522 int neutrals = isoNeutral_.size();
524 if (applyDeltaBetaCorrection_.at(
i)) {
525 neutrals -= TMath::Nint(deltaBetaFactorThisEvent_ * isoPU_.size());
531 int nOccupants = isoCharged_.size() + neutrals;
533 double footprintCorrection_value = 0.;
534 if (applyFootprintCorrection_ || storeRawValue_.at(
i) == FootPrintCorrection) {
535 for (std::vector<std::unique_ptr<FootprintCorrection>>::const_iterator footprintCorrection =
536 footprintCorrections_.begin();
537 footprintCorrection != footprintCorrections_.end();
538 ++footprintCorrection) {
539 if ((*footprintCorrection)->selection_(*pfTau)) {
540 footprintCorrection_value = (*footprintCorrection)->offset_(*pfTau);
548 if (storeRawValue_.at(
i) == SumPt || storeRawValue_.at(
i) == PUsumPt) {
549 double chargedPt = 0.;
550 double neutralPt = 0.;
551 double weightedNeutralPt = 0.;
552 if (includeTracks_.at(
i)) {
553 for (
auto const& isoObject : isoCharged_) {
554 chargedPt += isoObject->pt();
558 if (calculateWeights_.at(
i)) {
559 if (useAllPFCandsForWeights_.at(
i)) {
560 for (
auto const& isoObject : isoNeutralWeight_UseAllPFCands_) {
561 weightedNeutralPt += isoObject.pt();
564 for (
auto const& isoObject : isoNeutralWeight_) {
565 weightedNeutralPt += isoObject.pt();
568 }
else if (includeGammas_.at(
i)) {
569 for (
auto const& isoObject : isoNeutral_) {
570 neutralPt += isoObject->pt();
573 for (
auto const& isoObject : isoPU_) {
574 puPt += isoObject->pt();
576 LogTrace(
"discriminate") <<
"chargedPt = " << chargedPt;
577 LogTrace(
"discriminate") <<
"neutralPt = " << neutralPt;
578 LogTrace(
"discriminate") <<
"weighted neutral Pt = " << weightedNeutralPt;
579 LogTrace(
"discriminate") <<
"puPt = " << puPt <<
" (delta-beta corr. = " << (deltaBetaFactorThisEvent_ * puPt)
582 if (calculateWeights_.at(
i)) {
583 neutralPt = weightedNeutralPt;
586 if (applyDeltaBetaCorrection_.at(
i)) {
587 neutralPt -= (deltaBetaFactorThisEvent_ * puPt);
590 if (applyFootprintCorrection_) {
591 neutralPt -= footprintCorrection_value;
594 if (applyRhoCorrection_) {
595 neutralPt -= rhoThisEvent_;
598 if (neutralPt < 0.) {
602 totalPt = chargedPt + weightGammas_ * neutralPt;
605 double photonSumPt_outsideSignalCone = 0.;
606 if (storeRawValue_.at(
i) == PhotonSumPt) {
607 const std::vector<reco::CandidatePtr>& signalGammas = pfTau->signalGammaCands();
608 for (std::vector<reco::CandidatePtr>::const_iterator signalGamma = signalGammas.begin();
609 signalGamma != signalGammas.end();
611 double dR =
deltaR(pfTau->eta(), pfTau->phi(), (*signalGamma)->eta(), (*signalGamma)->phi());
612 if (
dR > pfTau->signalConeSize())
613 photonSumPt_outsideSignalCone += (*signalGamma)->pt();
618 if (storeRawValue_.at(
i) == SumPt) {
619 result.rawValues.push_back(totalPt);
620 }
else if (storeRawValue_.at(
i) == PUsumPt) {
621 if (applyDeltaBetaCorrection_.at(
i))
622 result.rawValues.push_back(puPt);
623 else if (applyRhoCorrection_)
624 result.rawValues.push_back(rhoThisEvent_);
626 result.rawValues.push_back(0.);
627 }
else if (storeRawValue_.at(
i) ==
Occupancy) {
628 result.rawValues.push_back(nOccupants);
629 }
else if (storeRawValue_.at(
i) == FootPrintCorrection) {
630 result.rawValues.push_back(footprintCorrection_value);
631 }
else if (storeRawValue_.at(
i) == PhotonSumPt) {
632 result.rawValues.push_back(photonSumPt_outsideSignalCone);
635 for (
size_t i = 0;
i < rawValue_reference_.size();
i++) {
637 if (minPtForNoIso_ > 0. && pfTau->pt() > minPtForNoIso_)
638 LogDebug(
"discriminate") <<
"tau pt = " << pfTau->pt() <<
"\t min cutoff pt = " << minPtForNoIso_;
640 for (
size_t j = 0;
j < rawValue_reference_[
i].size();
j++) {
641 double rawValue =
result.rawValues[rawValue_reference_[
i][
j]];
642 LogTrace(
"discriminate") <<
"Iso sum = " << rawValue <<
" (max_abs = " << maxAbsValue_[
i][
j]
643 <<
", max_rel = " << maxRelValue_[
i][
j] <<
", offset_rel = " << offsetRelValue_[
i][
j]
645 if (!maxAbsValue_[
i].
empty() && maxAbsValue_[
i][
j] >= 0.0)
646 pass = rawValue <= maxAbsValue_[
i][
j];
647 if (!maxRelValue_[
i].
empty() && maxRelValue_[
i][
j] >= 0.0)
648 pass = rawValue <= maxRelValue_[
i][
j] * (pfTau->pt() - offsetRelValue_[
i][
j]);
653 result.workingPoints.push_back(pass);
665 pset_signalQualityCuts.
add<
double>(
"maxDeltaZ", 0.4);
666 pset_signalQualityCuts.
add<
double>(
"minTrackPt", 0.5);
667 pset_signalQualityCuts.
add<
double>(
"minTrackVertexWeight", -1.0);
668 pset_signalQualityCuts.
add<
double>(
"maxTrackChi2", 100.0);
669 pset_signalQualityCuts.
add<
unsigned int>(
"minTrackPixelHits", 0);
670 pset_signalQualityCuts.
add<
double>(
"minGammaEt", 1.0);
671 pset_signalQualityCuts.
add<
unsigned int>(
"minTrackHits", 3);
672 pset_signalQualityCuts.
add<
double>(
"minNeutralHadronEt", 30.0);
673 pset_signalQualityCuts.
add<
double>(
"maxTransverseImpactParameter", 0.1);
674 pset_signalQualityCuts.
addOptional<
bool>(
"useTracksInsteadOfPFHadrons");
677 pset_vxAssocQualityCuts.
add<
double>(
"minTrackPt", 0.5);
678 pset_vxAssocQualityCuts.add<
double>(
"minTrackVertexWeight", -1.0);
679 pset_vxAssocQualityCuts.add<
double>(
"maxTrackChi2", 100.0);
680 pset_vxAssocQualityCuts.add<
unsigned int>(
"minTrackPixelHits", 0);
681 pset_vxAssocQualityCuts.add<
double>(
"minGammaEt", 1.0);
682 pset_vxAssocQualityCuts.add<
unsigned int>(
"minTrackHits", 3);
683 pset_vxAssocQualityCuts.add<
double>(
"maxTransverseImpactParameter", 0.1);
684 pset_vxAssocQualityCuts.addOptional<
bool>(
"useTracksInsteadOfPFHadrons");
687 pset_isolationQualityCuts.
add<
double>(
"maxDeltaZ", 0.2);
688 pset_isolationQualityCuts.add<
double>(
"minTrackPt", 1.0);
689 pset_isolationQualityCuts.add<
double>(
"minTrackVertexWeight", -1.0);
690 pset_isolationQualityCuts.add<
double>(
"maxTrackChi2", 100.0);
691 pset_isolationQualityCuts.add<
unsigned int>(
"minTrackPixelHits", 0);
692 pset_isolationQualityCuts.add<
double>(
"minGammaEt", 1.5);
693 pset_isolationQualityCuts.add<
unsigned int>(
"minTrackHits", 8);
694 pset_isolationQualityCuts.add<
double>(
"maxTransverseImpactParameter", 0.03);
695 pset_isolationQualityCuts.addOptional<
bool>(
"useTracksInsteadOfPFHadrons");
701 pset_qualityCuts.
add<
std::string>(
"leadingTrkOrPFCandOption",
"leadPFCand");
702 pset_qualityCuts.add<
std::string>(
"pvFindingAlgo",
"closestInDeltaZ");
704 pset_qualityCuts.add<
bool>(
"vertexTrackFiltering",
false);
705 pset_qualityCuts.add<
bool>(
"recoverLeadingTrk",
false);
710 desc.
add<
double>(
"minTauPtForNoIso", -99.0);
712 desc.
add<
double>(
"rhoConeSize", 0.5);
719 desc.
addVPSet(
"footprintCorrections", vpsd1, {});
723 desc.
add<
bool>(
"applyFootprintCorrection",
false);
729 psd1.
add<
double>(
"cut", 0.5);
735 psd1.
add<
double>(
"cut", 0.5);
741 psd1.
add<
double>(
"cut", 0.5);
748 desc.
add<
int>(
"verbosity", 0);
750 desc.
add<
bool>(
"deltaBetaPUTrackPtCutOverride",
false);
751 desc.
add<
bool>(
"applyRhoCorrection",
false);
753 desc.
add<
double>(
"WeightECALIsolation", 1.0);
754 desc.
add<
double>(
"rhoUEOffsetCorrection", 1.0);
755 desc.
add<
double>(
"deltaBetaPUTrackPtCutOverride_val", -1.5);
756 desc.
add<
double>(
"isoConeSizeForDeltaBeta", 0.5);
757 desc.
add<
double>(
"customOuterCone", -1.0);
762 desc_idlist.
add<
string>(
"IDname");
763 desc_idlist.add<
bool>(
"storeRawSumPt",
false);
764 desc_idlist.add<
bool>(
"storeRawPUsumPt",
false);
765 desc_idlist.add<
bool>(
"storeRawOccupancy",
false);
766 desc_idlist.add<
bool>(
"storeRawFootprintCorrection",
false);
767 desc_idlist.add<
bool>(
"storeRawPhotonSumPt_outsideSignalCone",
false);
768 desc_idlist.add<
bool>(
"ApplyDiscriminationByECALIsolation",
false);
769 desc_idlist.add<
bool>(
"ApplyDiscriminationByWeightedECALIsolation",
false);
770 desc_idlist.add<
bool>(
"ApplyDiscriminationByTrackerIsolation",
false);
771 desc_idlist.add<
bool>(
"applyDeltaBetaCorrection",
false);
772 desc_idlist.add<
bool>(
"UseAllPFCandsForWeights",
false);
773 desc.
addVPSet(
"IDdefinitions", desc_idlist, {});
776 desc_idwplist.
add<
string>(
"IDname");
777 desc_idwplist.
add<std::vector<string>>(
"referenceRawIDNames")
779 "List of raw IDs defined in 'IDdefinitions' to pass all respective conditions defined in "
780 "'maximumAbsoluteValues', 'maximumRelativeValues' , and 'relativeValueOffsets'");
781 desc_idwplist.
add<std::vector<double>>(
"maximumAbsoluteValues", {});
782 desc_idwplist.
add<std::vector<double>>(
"maximumRelativeValues", {});
783 desc_idwplist.
add<std::vector<double>>(
"relativeValueOffsets", {});
784 desc.
addVPSet(
"IDWPdefinitions", desc_idwplist, {});
786 descriptions.
add(
"pfRecoTauDiscriminationByIsolationContainer", desc);