1 #ifndef PhysicsTools_PatUtils_ShiftedParticleProducerT_h
2 #define PhysicsTools_PatUtils_ShiftedParticleProducerT_h
44 if ( cfg.
exists(
"binning") ) {
45 typedef std::vector<edm::ParameterSet> vParameterSet;
46 vParameterSet cfgBinning = cfg.
getParameter<vParameterSet>(
"binning");
47 for ( vParameterSet::const_iterator cfgBinningEntry = cfgBinning.begin();
48 cfgBinningEntry != cfgBinning.end(); ++cfgBinningEntry ) {
52 double uncertainty = cfg.
getParameter<
double>(
"uncertainty");
56 produces<ParticleCollection>();
60 for (
typename std::vector<binningEntryType*>::const_iterator it =
binning_.begin();
75 for (
typename ParticleCollection::const_iterator originalParticle = originalParticles->begin();
76 originalParticle != originalParticles->end(); ++originalParticle ) {
78 double uncertainty = 0.;
79 for (
typename std::vector<binningEntryType*>::iterator binningEntry =
binning_.begin();
80 binningEntry !=
binning_.end(); ++binningEntry ) {
81 if ( (!(*binningEntry)->binSelection_) || (*(*binningEntry)->binSelection_)(*originalParticle) ) {
82 uncertainty = (*binningEntry)->binUncertainty_;
93 T shiftedParticle(*originalParticle);
94 shiftedParticle.setP4(shiftedParticleP4);
96 shiftedParticles->push_back(shiftedParticle);
99 evt.
put(shiftedParticles);
T getParameter(std::string const &) const
binningEntryType(const edm::ParameterSet &cfg)
edm::EDGetTokenT< ParticleCollection > srcToken_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
binningEntryType(double uncertainty)
void produce(edm::Event &evt, const edm::EventSetup &es)
std::vector< binningEntryType * > binning_
bool exists(std::string const ¶meterName) const
checks if a parameter exists
ShiftedParticleProducerT(const edm::ParameterSet &cfg)
StringCutObjectSelector< T > * binSelection_
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
math::XYZTLorentzVector LorentzVector
Lorentz vector.
~ShiftedParticleProducerT()
static unsigned int const shift
std::vector< T > ParticleCollection