CMS 3D CMS Logo

PFHGCalRecHitCreator.h
Go to the documentation of this file.
1 #ifndef RecoParticleFlow_PFClusterProducer_PFHGCalRecHitCreator_h
2 #define RecoParticleFlow_PFClusterProducer_PFHGCalRecHitCreator_h
3 
5 
9 
15 
22 
24 
25 template <typename DET, PFLayer::Layer Layer, DetId::Detector det, unsigned subdet>
27 public:
29  : PFRecHitCreatorBase(iConfig, cc),
30  recHitToken_(cc.consumes<HGCRecHitCollection>(iConfig.getParameter<edm::InputTag>("src"))),
31  geometryInstance_(iConfig.getParameter<std::string>("geometryInstance")),
33 
34  void importRecHits(std::unique_ptr<reco::PFRecHitCollection>& out,
35  std::unique_ptr<reco::PFRecHitCollection>& cleaned,
36  const edm::Event& iEvent,
37  const edm::EventSetup& iSetup) override {
38  // Setup RecHitTools to properly compute the position of the HGCAL Cells vie their DetIds
40  recHitTools_.setGeometry(*geoHandle);
41 
42  for (unsigned int i = 0; i < qualityTests_.size(); ++i) {
43  qualityTests_.at(i)->beginEvent(iEvent, iSetup);
44  }
45 
47  iEvent.getByToken(recHitToken_, recHitHandle);
48  const HGCRecHitCollection& rechits = *recHitHandle;
49 
50  const CaloGeometry* geom = geoHandle.product();
51 
52  unsigned skipped_rechits = 0;
53  for (const auto& hgrh : rechits) {
54  const DET detid(hgrh.detid());
55 
56  if (det != detid.det() or (subdet != 0 and subdet != detid.subdetId())) {
57  throw cms::Exception("IncorrectHGCSubdetector")
58  << "det expected: " << det << " det gotten: " << detid.det() << " ; "
59  << "subdet expected: " << subdet << " subdet gotten: " << detid.subdetId() << std::endl;
60  }
61 
62  double energy = hgrh.energy();
63  double time = hgrh.time();
64 
65  auto thisCell = geom->getSubdetectorGeometry(det, subdet)->getGeometry(detid);
66 
67  // find rechit geometry
68  if (!thisCell) {
69  LogDebug("PFHGCalRecHitCreator") << "warning detid " << detid.rawId() << " not found in geometry" << std::endl;
70  ++skipped_rechits;
71  continue;
72  }
73 
74  reco::PFRecHit rh(thisCell, detid.rawId(), Layer, energy);
75 
76  bool rcleaned = false;
77  bool keep = true;
78 
79  //Apply Q tests
80  for (unsigned int i = 0; i < qualityTests_.size(); ++i) {
81  if (!qualityTests_.at(i)->test(rh, hgrh, rcleaned)) {
82  keep = false;
83  }
84  }
85 
86  if (keep) {
87  rh.setTime(time);
88  out->push_back(rh);
89  } else if (rcleaned)
90  cleaned->push_back(rh);
91  }
92  edm::LogInfo("HGCalRecHitCreator") << "Skipped " << skipped_rechits << " out of " << rechits.size() << " rechits!"
93  << std::endl;
94  edm::LogInfo("HGCalRecHitCreator") << "Created " << out->size() << " PFRecHits!" << std::endl;
95  }
96 
97 protected:
100 
101 private:
104 };
105 
110 
114 
119 
120 #endif
EcalPreshowerTopology.h
PFHGCalRecHitCreator
Definition: PFHGCalRecHitCreator.h:26
edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
PFRecHitCreatorBase.h
PFHGCalHSiRecHitCreator
PFHGCalRecHitCreator< HGCSiliconDetId, PFLayer::HGCAL, DetId::HGCalHSi, ForwardEmpty > PFHGCalHSiRecHitCreator
Definition: PFHGCalRecHitCreator.h:116
hgcal::RecHitTools
Definition: RecHitTools.h:23
PFHGCalRecHitCreator::geomToken_
edm::ESGetToken< CaloGeometry, CaloGeometryRecord > geomToken_
Definition: PFHGCalRecHitCreator.h:103
mps_fire.i
i
Definition: mps_fire.py:428
PFHGCalRecHitCreator::recHitTools_
hgcal::RecHitTools recHitTools_
Definition: PFHGCalRecHitCreator.h:102
EcalBarrelGeometry.h
CaloNavigator.h
HGCScintillatorDetId.h
PFHGCHEBRecHitCreator
PFHGCalRecHitCreator< HcalDetId, PFLayer::HGCAL, DetId::Hcal, HcalEndcap > PFHGCHEBRecHitCreator
Definition: PFHGCalRecHitCreator.h:113
PFHGCalRecHitCreator::geometryInstance_
std::string geometryInstance_
Definition: PFHGCalRecHitCreator.h:99
edm::EDGetTokenT
Definition: EDGetToken.h:33
edm
HLT enums.
Definition: AlignableModifier.h:19
HGCSiliconDetId.h
HLT_FULL_cff.InputTag
InputTag
Definition: HLT_FULL_cff.py:89301
RecHitTools.h
EcalBarrelTopology.h
protons_cff.time
time
Definition: protons_cff.py:35
edm::SortedCollection
Definition: SortedCollection.h:49
PFHGCalRecHitCreator::PFHGCalRecHitCreator
PFHGCalRecHitCreator(const edm::ParameterSet &iConfig, edm::ConsumesCollector &cc)
Definition: PFHGCalRecHitCreator.h:28
PFHGCEERecHitCreator
PFHGCalRecHitCreator< HGCalDetId, PFLayer::HGCAL, DetId::Forward, HGCEE > PFHGCEERecHitCreator
Definition: PFHGCalRecHitCreator.h:111
PFRecHitCreatorBase
Definition: PFRecHitCreatorBase.h:23
edm::LogInfo
Log< level::Info, false > LogInfo
Definition: MessageLogger.h:125
edm::Handle
Definition: AssociativeIterator.h:50
HcalGeometry.h
LayerTriplets::Layer
SeedingLayerSetsHits::SeedingLayer Layer
Definition: LayerTriplets.h:14
CaloGeometry
Definition: CaloGeometry.h:21
PFHGCalRecHitCreator::importRecHits
void importRecHits(std::unique_ptr< reco::PFRecHitCollection > &out, std::unique_ptr< reco::PFRecHitCollection > &cleaned, const edm::Event &iEvent, const edm::EventSetup &iSetup) override
Definition: PFHGCalRecHitCreator.h:34
TruncatedPyramid.h
PFRecHitCreatorBase::qualityTests_
std::vector< std::unique_ptr< PFRecHitQTestBase > > qualityTests_
Definition: PFRecHitCreatorBase.h:48
edm::ESHandle< CaloGeometry >
relativeConstraints.geom
geom
Definition: relativeConstraints.py:72
HCALHighEnergyHPDFilter_cfi.energy
energy
Definition: HCALHighEnergyHPDFilter_cfi.py:5
runTheMatrix.keep
keep
Definition: runTheMatrix.py:345
HI_PhotonSkim_cff.rechits
rechits
Definition: HI_PhotonSkim_cff.py:76
CaloGeometryRecord.h
PFHGCHEFRecHitCreator
PFHGCalRecHitCreator< HGCalDetId, PFLayer::HGCAL, DetId::Forward, HGCHEF > PFHGCHEFRecHitCreator
Definition: PFHGCalRecHitCreator.h:112
PFHGCalHScRecHitCreator
PFHGCalRecHitCreator< HGCScintillatorDetId, PFLayer::HGCAL, DetId::HGCalHSc, ForwardEmpty > PFHGCalHScRecHitCreator
Definition: PFHGCalRecHitCreator.h:118
CaloSubdetectorGeometry.h
HGCRecHitCollections.h
HGCalGeometry.h
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:233
edm::ParameterSet
Definition: ParameterSet.h:47
EcalEndcapGeometry.h
EcalEndcapTopology.h
iEvent
int iEvent
Definition: GenABIO.cc:224
edm::EventSetup::getHandle
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
Definition: EventSetup.h:155
edm::EventSetup
Definition: EventSetup.h:58
cc
edm::ESGetToken< CaloGeometry, CaloGeometryRecord >
AlCaHLTBitMon_QueryRunRegistry.string
string string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
CaloCellGeometry.h
HGCalDetId.h
std
Definition: JetResolutionObject.h:76
DetId.h
hgcal::RecHitTools::setGeometry
void setGeometry(CaloGeometry const &)
Definition: RecHitTools.cc:68
Exception
Definition: hltDiff.cc:245
CaloGeometry.h
or
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
PFHGCalEERecHitCreator
PFHGCalRecHitCreator< HGCSiliconDetId, PFLayer::HGCAL, DetId::HGCalEE, ForwardEmpty > PFHGCalEERecHitCreator
Definition: PFHGCalRecHitCreator.h:115
reco::PFRecHit
Particle flow rechit (rechit + geometry and topology information). See clustering algorithm in PFClus...
Definition: PFRecHit.h:31
MillePedeFileConverter_cfg.out
out
Definition: MillePedeFileConverter_cfg.py:31
DeDxTools::esConsumes
ESGetTokenH3DDVariant esConsumes(std::string const &Reccord, edm::ConsumesCollector &)
Definition: DeDxTools.cc:283
edm::Event
Definition: Event.h:73
PFHGCalRecHitCreator::recHitToken_
edm::EDGetTokenT< HGCRecHitCollection > recHitToken_
Definition: PFHGCalRecHitCreator.h:98
edm::ConsumesCollector
Definition: ConsumesCollector.h:45