CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
FTLRecHitProducer.cc
Go to the documentation of this file.
5 
9 
11 
13 
15 public:
16  explicit FTLRecHitProducer(const edm::ParameterSet& ps);
17  ~FTLRecHitProducer() override;
18  void produce(edm::Event& evt, const edm::EventSetup& es) override;
19 
20 private:
23 
24  const std::string ftlbInstance_; // instance name of barrel hits
25  const std::string ftleInstance_; // instance name of endcap hits
26 
27  std::unique_ptr<FTLRecHitAlgoBase> barrel_, endcap_;
28 };
29 
31  : ftlbURecHits_(
32  consumes<FTLUncalibratedRecHitCollection>(ps.getParameter<edm::InputTag>("barrelUncalibratedRecHits"))),
34  consumes<FTLUncalibratedRecHitCollection>(ps.getParameter<edm::InputTag>("endcapUncalibratedRecHits"))),
35  ftlbInstance_(ps.getParameter<std::string>("BarrelHitsName")),
36  ftleInstance_(ps.getParameter<std::string>("EndcapHitsName")) {
37  produces<FTLRecHitCollection>(ftlbInstance_);
38  produces<FTLRecHitCollection>(ftleInstance_);
39 
40  auto sumes = consumesCollector();
41 
42  const edm::ParameterSet& barrel = ps.getParameterSet("barrel");
43  const std::string& barrelAlgo = barrel.getParameter<std::string>("algoName");
44  barrel_ = FTLRecHitAlgoFactory::get()->create(barrelAlgo, barrel, sumes);
45 
46  const edm::ParameterSet& endcap = ps.getParameterSet("endcap");
47  const std::string& endcapAlgo = endcap.getParameter<std::string>("algoName");
48  endcap_ = FTLRecHitAlgoFactory::get()->create(endcapAlgo, endcap, sumes);
49 }
50 
52 
54  // tranparently get things from event setup
55  barrel_->getEventSetup(es);
56  endcap_->getEventSetup(es);
57 
58  barrel_->getEvent(evt);
59  endcap_->getEvent(evt);
60 
61  // prepare output
62  auto barrelRechits = std::make_unique<FTLRecHitCollection>();
63  auto endcapRechits = std::make_unique<FTLRecHitCollection>();
64 
66  evt.getByToken(ftlbURecHits_, hBarrel);
67  barrelRechits->reserve(hBarrel->size() / 2);
68  for (const auto& uhit : *hBarrel) {
69  uint32_t flags = FTLRecHit::kGood;
70  auto rechit = barrel_->makeRecHit(uhit, flags);
71  if (flags == FTLRecHit::kGood)
72  barrelRechits->push_back(std::move(rechit));
73  }
74 
76  evt.getByToken(ftleURecHits_, hEndcap);
77  endcapRechits->reserve(hEndcap->size() / 2);
78  for (const auto& uhit : *hEndcap) {
79  uint32_t flags = FTLRecHit::kGood;
80  auto rechit = endcap_->makeRecHit(uhit, flags);
81  if (flags == FTLRecHit::kGood)
82  endcapRechits->push_back(std::move(rechit));
83  }
84 
85  // put the collection of recunstructed hits in the event
86  evt.put(std::move(barrelRechits), ftlbInstance_);
87  evt.put(std::move(endcapRechits), ftleInstance_);
88 }
89 
T getParameter(std::string const &) const
std::unique_ptr< FTLRecHitAlgoBase > endcap_
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:131
~FTLRecHitProducer() override
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:525
FTLRecHitProducer(const edm::ParameterSet &ps)
const std::string ftleInstance_
std::unique_ptr< FTLRecHitAlgoBase > barrel_
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
const edm::EDGetTokenT< FTLUncalibratedRecHitCollection > ftlbURecHits_
ParameterSet const & getParameterSet(std::string const &) const
const std::string ftlbInstance_
HLT enums.
size_type size() const
void produce(edm::Event &evt, const edm::EventSetup &es) override
def move(src, dest)
Definition: eostools.py:511
const edm::EDGetTokenT< FTLUncalibratedRecHitCollection > ftleURecHits_