CMS 3D CMS Logo

HGCalRecHitProducer.cc
Go to the documentation of this file.
1 
11 
13 
16 
18 
23 
25 
27 
28  public:
29  explicit HGCalRecHitProducer(const edm::ParameterSet& ps);
30  ~HGCalRecHitProducer() override;
31  void produce(edm::Event& evt, const edm::EventSetup& es) override;
32 
33  private:
34 
38  const std::string eeRechitCollection_; // instance name for HGCEE
39  const std::string hefRechitCollection_; // instance name for HGCHEF
40  const std::string hebRechitCollection_; // instance name for HGCHEB
41 
42  std::unique_ptr<HGCalRecHitWorkerBaseClass> worker_;
43 };
44 
46  eeUncalibRecHitCollection_( consumes<HGCeeUncalibratedRecHitCollection>( ps.getParameter<edm::InputTag>("HGCEEuncalibRecHitCollection") ) ),
47  hefUncalibRecHitCollection_( consumes<HGChefUncalibratedRecHitCollection>( ps.getParameter<edm::InputTag>("HGCHEFuncalibRecHitCollection") ) ),
48  hebUncalibRecHitCollection_( consumes<HGChebUncalibratedRecHitCollection>( ps.getParameter<edm::InputTag>("HGCHEBuncalibRecHitCollection") ) ),
49  eeRechitCollection_( ps.getParameter<std::string>("HGCEErechitCollection") ),
50  hefRechitCollection_( ps.getParameter<std::string>("HGCHEFrechitCollection") ),
51  hebRechitCollection_( ps.getParameter<std::string>("HGCHEBrechitCollection") ) {
52  produces< HGCeeRecHitCollection >(eeRechitCollection_);
53  produces< HGChefRecHitCollection >(hefRechitCollection_);
54  produces< HGChebRecHitCollection >(hebRechitCollection_);
55 
56  const std::string& componentType = ps.getParameter<std::string>("algo");
57  worker_.reset( HGCalRecHitWorkerFactory::get()->create(componentType, ps) );
58 }
59 
61 }
62 
63 void
65  using namespace edm;
66 
70 
71  const HGCeeUncalibratedRecHitCollection* eeUncalibRecHits = nullptr;
72  const HGChefUncalibratedRecHitCollection* hefUncalibRecHits = nullptr;
73  const HGChebUncalibratedRecHitCollection* hebUncalibRecHits = nullptr;
74 
75  // get the HGC uncalib rechit collection
76  evt.getByToken( eeUncalibRecHitCollection_, pHGCeeUncalibRecHits);
77  eeUncalibRecHits = pHGCeeUncalibRecHits.product();
78 
79  evt.getByToken( hefUncalibRecHitCollection_, pHGChefUncalibRecHits);
80  hefUncalibRecHits = pHGChefUncalibRecHits.product();
81 
82  evt.getByToken( hebUncalibRecHitCollection_, pHGChebUncalibRecHits);
83  hebUncalibRecHits = pHGChebUncalibRecHits.product();
84 
85  // collection of rechits to put in the event
86  auto eeRecHits = std::make_unique<HGCeeRecHitCollection>();
87  auto hefRecHits = std::make_unique<HGChefRecHitCollection>();
88  auto hebRecHits = std::make_unique<HGChebRecHitCollection>();
89 
90  worker_->set(es);
91 
92  // loop over uncalibrated rechits to make calibrated ones
93  for(auto it = eeUncalibRecHits->begin(); it != eeUncalibRecHits->end(); ++it) {
94  worker_->run(evt, *it, *eeRecHits);
95  }
96 
97  // loop over uncalibrated rechits to make calibrated ones
98  for(auto it = hefUncalibRecHits->begin(); it != hefUncalibRecHits->end(); ++it) {
99  worker_->run(evt, *it, *hefRecHits);
100  }
101 
102  // loop over uncalibrated rechits to make calibrated ones
103  for(auto it = hebUncalibRecHits->begin(); it != hebUncalibRecHits->end(); ++it) {
104  worker_->run(evt, *it, *hebRecHits);
105  }
106 
107  // sort collections before attempting recovery, to avoid insertion of double recHits
108  eeRecHits->sort();
109  hefRecHits->sort();
110  hebRecHits->sort();
111 
112  // put the collection of recunstructed hits in the event
113  LogInfo("HGCalRecHitInfo") << "total # HGCee calibrated rechits: " << eeRecHits->size();
114  LogInfo("HGCalRecHitInfo") << "total # HGChef calibrated rechits: " << hefRecHits->size();
115  LogInfo("HGCalRecHitInfo") << "total # HGCheb calibrated rechits: " << hebRecHits->size();
116 
117  evt.put(std::move(eeRecHits), eeRechitCollection_);
118  evt.put(std::move(hefRecHits), hefRechitCollection_);
119  evt.put(std::move(hebRecHits), hebRechitCollection_);
120 }
121 
T getParameter(std::string const &) const
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:137
void produce(edm::Event &evt, const edm::EventSetup &es) override
def create(alignables, pedeDump, additionalData, outputFile, config)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:579
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:17
const edm::EDGetTokenT< HGChefUncalibratedRecHitCollection > hefUncalibRecHitCollection_
const edm::EDGetTokenT< HGCeeUncalibratedRecHitCollection > eeUncalibRecHitCollection_
const std::string hefRechitCollection_
const_iterator end() const
const std::string eeRechitCollection_
T const * product() const
Definition: Handle.h:81
HGCalRecHitProducer(const edm::ParameterSet &ps)
const std::string hebRechitCollection_
HLT enums.
std::unique_ptr< HGCalRecHitWorkerBaseClass > worker_
const edm::EDGetTokenT< HGChebUncalibratedRecHitCollection > hebUncalibRecHitCollection_
def move(src, dest)
Definition: eostools.py:510
T get(const Candidate &c)
Definition: component.h:55
const_iterator begin() const