1 #ifndef IsolationAlgos_IsolationProducer_h
2 #define IsolationAlgos_IsolationProducer_h
23 template <
typename Alg>
24 struct NullIsolationAlgorithmSetup {
28 template <
typename Alg>
29 struct IsolationAlgorithmSetup {
35 namespace modulesNew {
37 template <
typename C1,
54 template <
typename C1,
typename C2,
typename Alg,
typename OutputCollection,
typename Setup>
57 elementsToken_(consumes<C2>(cfg.
template getParameter<edm::
InputTag>(
"elements"))),
59 produces<OutputCollection>();
62 template <
typename C1,
typename C2,
typename Alg,
typename OutputCollection,
typename Setup>
65 template <
typename C1,
typename C2,
typename Alg,
typename OutputCollection,
typename Setup>
76 ::helper::MasterCollection<C1>
master(
src, evt);
77 auto isolations = std::make_unique<OutputCollection>();
79 typename OutputCollection::Filler filler(*isolations);
80 vector<double> iso(master.size(), -1);
82 for (
typename C1::const_iterator lep =
src->begin(); lep !=
src->end(); ++lep)
83 iso[master.index(i++)] = alg_(*lep, *
elements);
84 filler.insert(master.get(), iso.begin(), iso.end());
edm::EDGetTokenT< C2 > elementsToken_
Master< F > master(const F &f)
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
static void init(Alg &, const edm::EventSetup &)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
S make(const edm::ParameterSet &cfg)
edm::EDGetTokenT< C1 > srcToken_
IsolationProducer(const edm::ParameterSet &)
void produce(edm::Event &, const edm::EventSetup &) override
~IsolationProducer() override
NullIsolationAlgorithmSetup< Alg > type