59 if (
cfg.exists(
"energyDependency")) {
64 std::unique_ptr<StringCutObjectSelector<reco::Candidate>>
binSelection_;
83 if (
cfg.exists(
"binning")) {
84 typedef std::vector<edm::ParameterSet> vParameterSet;
85 vParameterSet cfgBinning =
cfg.getParameter<vParameterSet>(
"binning");
86 for (vParameterSet::const_iterator cfgBinningEntry = cfgBinning.begin(); cfgBinningEntry != cfgBinning.end();
95 produces<reco::CandidateCollection>();
99 for (std::vector<binningEntryType*>::const_iterator it =
binning_.begin(); it !=
binning_.end(); ++it) {
112 auto shiftedParticles = std::make_unique<reco::CandidateCollection>();
114 for (
unsigned i = 0;
i < originalParticles->
size(); ++
i) {
120 weight = (*weights)[particlePtr];
125 double uncertainty =
getUncShift(weightedParticle);
131 shiftedParticleP4 *= (1. +
shift);
133 std::unique_ptr<reco::Candidate> shiftedParticle = std::make_unique<reco::LeafCandidate>(originalParticle);
134 shiftedParticle->setP4(shiftedParticleP4);
136 shiftedParticles->push_back(shiftedParticle.release());
145 for (std::vector<binningEntryType*>::iterator binningEntry =
binning_.begin(); binningEntry !=
binning_.end();
147 if ((!(*binningEntry)->binSelection_) || (*(*binningEntry)->binSelection_)(originalParticle)) {
148 if ((*binningEntry)->energyDep_)
149 valx = originalParticle.
energy();
151 valx = originalParticle.
pt();
153 valy = originalParticle.
eta();
154 return (*binningEntry)->binUncFormula_->Eval(valx, valy);