CMS 3D CMS Logo

CentralityProducer.cc
Go to the documentation of this file.
1 //
2 // Original Author: Yetkin Yilmaz, Young Soo Park
3 // Created: Wed Jun 11 15:31:41 CEST 2008
4 //
5 //
6 
7 // system include files
8 #include <memory>
9 #include <iostream>
10 
11 // user include files
17 
23 
25 
29 
37 
43 
44 using namespace std;
45 using namespace edm;
46 using namespace reco;
47 
48 //
49 // class declaration
50 //
51 
52 namespace reco {
54  public:
55  explicit CentralityProducer(const edm::ParameterSet&);
56  ~CentralityProducer() override = default;
57  static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
58 
59  private:
60  void beginJob() override;
61  void produce(edm::StreamID, edm::Event&, const edm::EventSetup&) const override;
62  void endJob() override;
63 
64  // ----------member data ---------------------------
65 
66  const bool produceHFhits_;
67  const bool produceHFtowers_;
68  const bool produceEcalhits_;
69  const bool produceZDChits_;
70  const bool lowGainZDC_;
71  const bool produceETmidRap_;
72  const bool producePixelhits_;
73  const bool doPixelCut_;
74  const bool produceTracks_;
75  const bool producePixelTracks_;
76  const bool producePF_;
77 
78  const double midRapidityRange_;
79  const double trackPtCut_;
80  const double trackEtaCut_;
81  const double hfEtaCut_;
82 
83  const bool isPhase2_;
84  const bool reuseAny_;
85  const bool useQuality_;
87 
99 
103  };
104 
105  //
106  // constants, enums and typedefs
107  //
108 
109  //
110  // static data member definitions
111  //
112 
113  //
114  // constructors and destructor
115  //
116  CentralityProducer::CentralityProducer(const edm::ParameterSet& iConfig)
117  : produceHFhits_(iConfig.getParameter<bool>("produceHFhits")),
118  produceHFtowers_(iConfig.getParameter<bool>("produceHFtowers")),
119  produceEcalhits_(iConfig.getParameter<bool>("produceEcalhits")),
120  produceZDChits_(iConfig.getParameter<bool>("produceZDChits")),
121  lowGainZDC_(iConfig.getParameter<bool>("lowGainZDC")),
122  produceETmidRap_(iConfig.getParameter<bool>("produceETmidRapidity")),
123  producePixelhits_(iConfig.getParameter<bool>("producePixelhits")),
124  doPixelCut_(iConfig.getParameter<bool>("doPixelCut")),
125  produceTracks_(iConfig.getParameter<bool>("produceTracks")),
126  producePixelTracks_(iConfig.getParameter<bool>("producePixelTracks")),
127  producePF_(iConfig.getParameter<bool>("producePF")),
128  midRapidityRange_(iConfig.getParameter<double>("midRapidityRange")),
129  trackPtCut_(iConfig.getParameter<double>("trackPtCut")),
130  trackEtaCut_(iConfig.getParameter<double>("trackEtaCut")),
131  hfEtaCut_(iConfig.getParameter<double>("hfEtaCut")),
132  isPhase2_(iConfig.getParameter<bool>("isPhase2")),
133  reuseAny_(iConfig.getParameter<bool>("reUseCentrality")),
134  useQuality_(iConfig.getParameter<bool>("useQuality")),
135  trackQuality_(TrackBase::qualityByName(iConfig.getParameter<std::string>("trackQuality"))),
136  srcHFhits_(produceHFhits_ ? consumes<HFRecHitCollection>(iConfig.getParameter<edm::InputTag>("srcHFhits"))
138  srcTowers_((produceHFtowers_ || produceETmidRap_)
139  ? consumes<CaloTowerCollection>(iConfig.getParameter<edm::InputTag>("srcTowers"))
141  srcEBhits_(produceEcalhits_ ? consumes<EcalRecHitCollection>(iConfig.getParameter<edm::InputTag>("srcEBhits"))
143  srcEEhits_(produceEcalhits_ ? consumes<EcalRecHitCollection>(iConfig.getParameter<edm::InputTag>("srcEEhits"))
145  srcZDChits_(produceZDChits_ ? consumes<ZDCRecHitCollection>(iConfig.getParameter<edm::InputTag>("srcZDChits"))
147  srcPixelhits_(producePixelhits_
148  ? consumes<SiPixelRecHitCollection>(iConfig.getParameter<edm::InputTag>("srcPixelhits"))
150  srcTracks_(produceTracks_ ? consumes<TrackCollection>(iConfig.getParameter<edm::InputTag>("srcTracks"))
152  srcPixelTracks_(producePixelTracks_
153  ? consumes<TrackCollection>(iConfig.getParameter<edm::InputTag>("srcPixelTracks"))
155  srcPF_(producePF_ ? consumes<reco::CandidateView>(iConfig.getParameter<edm::InputTag>("srcPF"))
157  srcVertex_((produceTracks_ || producePixelTracks_)
158  ? consumes<VertexCollection>(iConfig.getParameter<edm::InputTag>("srcVertex"))
160  reuseTag_(reuseAny_ ? consumes<Centrality>(iConfig.getParameter<edm::InputTag>("srcReUse"))
161  : edm::EDGetTokenT<Centrality>()),
162  caloGeom_(produceEcalhits_ ? esConsumes<CaloGeometry, CaloGeometryRecord>()
164  trackerGeom_(producePixelhits_ ? esConsumes<TrackerGeometry, TrackerDigiGeometryRecord>()
166  trackerTopo_(producePixelhits_ ? esConsumes<TrackerTopology, TrackerTopologyRcd>()
168  produces<Centrality>();
169  }
170 
171  //
172  // member functions
173  //
174 
175  // ------------ method called to produce the data ------------
177  auto creco = std::make_unique<Centrality>();
178  Handle<Centrality> inputCentrality;
179  if (reuseAny_)
180  iEvent.getByToken(reuseTag_, inputCentrality);
181 
182  if (produceHFhits_) {
183  creco->etHFhitSumPlus_ = 0;
184  creco->etHFhitSumMinus_ = 0;
186  iEvent.getByToken(srcHFhits_, hits);
187  for (size_t ihit = 0; ihit < hits->size(); ++ihit) {
188  const HFRecHit& rechit = (*hits)[ihit];
189  if (rechit.id().ieta() > 0)
190  creco->etHFhitSumPlus_ += rechit.energy();
191  if (rechit.id().ieta() < 0)
192  creco->etHFhitSumMinus_ += rechit.energy();
193  }
194  } else {
195  if (reuseAny_) {
196  creco->etHFhitSumMinus_ = inputCentrality->EtHFhitSumMinus();
197  creco->etHFhitSumPlus_ = inputCentrality->EtHFhitSumPlus();
198  }
199  }
200 
202  creco->etHFtowerSumPlus_ = 0;
203  creco->etHFtowerSumMinus_ = 0;
204  creco->etHFtowerSumECutPlus_ = 0;
205  creco->etHFtowerSumECutMinus_ = 0;
206  creco->etMidRapiditySum_ = 0;
207 
209  iEvent.getByToken(srcTowers_, towers);
210 
211  for (size_t i = 0; i < towers->size(); ++i) {
212  const CaloTower& tower = (*towers)[i];
213  double eta = tower.eta();
214  if (produceHFtowers_) {
215  bool isHF = tower.ietaAbs() > (isPhase2_ ? 16 : 29);
216  if (isHF && eta > 0) {
217  creco->etHFtowerSumPlus_ += tower.pt();
218  if (tower.energy() > 1.5)
219  creco->etHFtowerSumECutPlus_ += tower.pt();
220  if (eta > hfEtaCut_)
221  creco->etHFtruncatedPlus_ += tower.pt();
222  } else if (isHF && eta < 0) {
223  creco->etHFtowerSumMinus_ += tower.pt();
224  if (tower.energy() > 1.5)
225  creco->etHFtowerSumECutMinus_ += tower.pt();
226  if (eta < -hfEtaCut_)
227  creco->etHFtruncatedMinus_ += tower.pt();
228  }
229  } else {
230  if (reuseAny_) {
231  creco->etHFtowerSumMinus_ = inputCentrality->EtHFtowerSumMinus();
232  creco->etHFtowerSumPlus_ = inputCentrality->EtHFtowerSumPlus();
233  creco->etHFtowerSumECutMinus_ = inputCentrality->EtHFtowerSumECutMinus();
234  creco->etHFtowerSumECutPlus_ = inputCentrality->EtHFtowerSumECutPlus();
235  creco->etHFtruncatedMinus_ = inputCentrality->EtHFtruncatedMinus();
236  creco->etHFtruncatedPlus_ = inputCentrality->EtHFtruncatedPlus();
237  }
238  }
239  if (produceETmidRap_) {
241  creco->etMidRapiditySum_ += tower.pt() / (midRapidityRange_ * 2.);
242  } else if (reuseAny_)
243  creco->etMidRapiditySum_ = inputCentrality->EtMidRapiditySum();
244  }
245  } else {
246  if (reuseAny_) {
247  creco->etHFtowerSumMinus_ = inputCentrality->EtHFtowerSumMinus();
248  creco->etHFtowerSumPlus_ = inputCentrality->EtHFtowerSumPlus();
249  creco->etHFtowerSumECutMinus_ = inputCentrality->EtHFtowerSumECutMinus();
250  creco->etHFtowerSumECutPlus_ = inputCentrality->EtHFtowerSumECutPlus();
251  creco->etMidRapiditySum_ = inputCentrality->EtMidRapiditySum();
252  }
253  }
254 
255  if (producePF_) {
256  creco->etPFhfSumPlus_ = 0;
257  creco->etPFhfSumMinus_ = 0;
258  for (const auto& pf : iEvent.get(srcPF_)) {
259  if (pf.pdgId() != 1 && pf.pdgId() != 2)
260  continue;
261  if (pf.eta() > 0)
262  creco->etPFhfSumPlus_ += pf.pt();
263  else
264  creco->etPFhfSumMinus_ += pf.pt();
265  }
266  } else if (reuseAny_) {
267  creco->etPFhfSumMinus_ = inputCentrality->EtPFhfSumMinus();
268  creco->etPFhfSumPlus_ = inputCentrality->EtPFhfSumPlus();
269  }
270 
271  if (produceEcalhits_) {
272  creco->etEESumPlus_ = 0;
273  creco->etEESumMinus_ = 0;
274  creco->etEBSum_ = 0;
275 
278  iEvent.getByToken(srcEBhits_, ebHits);
279  iEvent.getByToken(srcEEhits_, eeHits);
280 
282  for (unsigned int i = 0; i < ebHits->size(); ++i) {
283  const EcalRecHit& hit = (*ebHits)[i];
284  const GlobalPoint& pos = cGeo->getPosition(hit.id());
285  double et = hit.energy() * (pos.perp() / pos.mag());
286  creco->etEBSum_ += et;
287  }
288 
289  for (unsigned int i = 0; i < eeHits->size(); ++i) {
290  const EcalRecHit& hit = (*eeHits)[i];
291  const GlobalPoint& pos = cGeo->getPosition(hit.id());
292  double et = hit.energy() * (pos.perp() / pos.mag());
293  if (pos.z() > 0) {
294  creco->etEESumPlus_ += et;
295  } else {
296  creco->etEESumMinus_ += et;
297  }
298  }
299  } else {
300  if (reuseAny_) {
301  creco->etEESumMinus_ = inputCentrality->EtEESumMinus();
302  creco->etEESumPlus_ = inputCentrality->EtEESumPlus();
303  creco->etEBSum_ = inputCentrality->EtEBSum();
304  }
305  }
306 
307  if (producePixelhits_) {
310  creco->pixelMultiplicity_ = 0;
311  const SiPixelRecHitCollection* rechits;
313  iEvent.getByToken(srcPixelhits_, rchts);
314  rechits = rchts.product();
315  int nPixel = 0;
316  int nPixel_plus = 0;
317  int nPixel_minus = 0;
318  for (SiPixelRecHitCollection::const_iterator it = rechits->begin(); it != rechits->end(); it++) {
320  DetId detId = DetId(hits.detId());
321  SiPixelRecHitCollection::const_iterator recHitMatch = rechits->find(detId);
322  const SiPixelRecHitCollection::DetSet recHitRange = *recHitMatch;
323  for (SiPixelRecHitCollection::DetSet::const_iterator recHitIterator = recHitRange.begin();
324  recHitIterator != recHitRange.end();
325  ++recHitIterator) {
326  // add selection if needed, now all hits.
327  const SiPixelRecHit* recHit = &(*recHitIterator);
328  const PixelGeomDetUnit* pixelLayer =
329  dynamic_cast<const PixelGeomDetUnit*>(tGeo->idToDet(recHit->geographicalId()));
330  GlobalPoint gpos = pixelLayer->toGlobal(recHit->localPosition());
331  math::XYZVector rechitPos(gpos.x(), gpos.y(), gpos.z());
332  double eta = rechitPos.eta();
333  int clusterSize = recHit->cluster()->size();
334  unsigned layer = topo->layer(detId);
335  if (doPixelCut_) {
336  if (detId.det() == DetId::Tracker && detId.subdetId() == PixelSubdetector::PixelBarrel) {
337  double abeta = std::abs(eta);
338  if (layer == 1) {
339  if (18 * abeta - 40 > clusterSize)
340  continue;
341  } else if (layer == 2) {
342  if (6 * abeta - 7.2 > clusterSize)
343  continue;
344  } else if (layer == 3 || layer == 4) {
345  if (4 * abeta - 2.4 > clusterSize)
346  continue;
347  }
348  }
349  }
350  nPixel++;
351  if (eta >= 0)
352  nPixel_plus++;
353  else if (eta < 0)
354  nPixel_minus++;
355  }
356  }
357  creco->pixelMultiplicity_ = nPixel;
358  creco->pixelMultiplicityPlus_ = nPixel_plus;
359  creco->pixelMultiplicityMinus_ = nPixel_minus;
360  } else {
361  if (reuseAny_) {
362  creco->pixelMultiplicity_ = inputCentrality->multiplicityPixel();
363  creco->pixelMultiplicityPlus_ = inputCentrality->multiplicityPixelPlus();
364  creco->pixelMultiplicityMinus_ = inputCentrality->multiplicityPixelMinus();
365  }
366  }
367 
368  if (produceTracks_) {
369  double vx = -999.;
370  double vy = -999.;
371  double vz = -999.;
372  double vxError = -999.;
373  double vyError = -999.;
374  double vzError = -999.;
375  math::XYZVector vtxPos(0, 0, 0);
376 
377  Handle<VertexCollection> recoVertices;
378  iEvent.getByToken(srcVertex_, recoVertices);
379  unsigned int daughter = 0;
380  int greatestvtx = 0;
381 
382  for (unsigned int i = 0; i < recoVertices->size(); ++i) {
383  daughter = (*recoVertices)[i].tracksSize();
384  if (daughter > (*recoVertices)[greatestvtx].tracksSize())
385  greatestvtx = i;
386  }
387 
388  if (!recoVertices->empty()) {
389  vx = (*recoVertices)[greatestvtx].position().x();
390  vy = (*recoVertices)[greatestvtx].position().y();
391  vz = (*recoVertices)[greatestvtx].position().z();
392  vxError = (*recoVertices)[greatestvtx].xError();
393  vyError = (*recoVertices)[greatestvtx].yError();
394  vzError = (*recoVertices)[greatestvtx].zError();
395  }
396 
397  vtxPos = math::XYZVector(vx, vy, vz);
398 
400  iEvent.getByToken(srcTracks_, tracks);
401  int nTracks = 0;
402 
403  double trackCounter = 0;
404  double trackCounterEta = 0;
405  double trackCounterEtaPt = 0;
406 
407  for (unsigned int i = 0; i < tracks->size(); ++i) {
408  const Track& track = (*tracks)[i];
409  if (useQuality_ && !track.quality(trackQuality_))
410  continue;
411 
412  if (track.pt() > trackPtCut_)
413  trackCounter++;
414  if (std::abs(track.eta()) < trackEtaCut_) {
415  trackCounterEta++;
416  if (track.pt() > trackPtCut_)
417  trackCounterEtaPt++;
418  }
419 
420  math::XYZPoint v1(vx, vy, vz);
421  double dz = track.dz(v1);
422  double dzsigma2 = track.dzError() * track.dzError() + vzError * vzError;
423  double dxy = track.dxy(v1);
424  double dxysigma2 = track.dxyError() * track.dxyError() + vxError * vyError;
425 
426  const double pterrcut = 0.1;
427  const double dzrelcut = 3.0;
428  const double dxyrelcut = 3.0;
429 
430  if (track.quality(trackQuality_) && track.pt() > 0.4 && std::abs(track.eta()) < 2.4 &&
431  track.ptError() / track.pt() < pterrcut && dz * dz < dzrelcut * dzrelcut * dzsigma2 &&
432  dxy * dxy < dxyrelcut * dxyrelcut * dxysigma2) {
433  nTracks++;
434  }
435  }
436 
437  creco->trackMultiplicity_ = nTracks;
438  creco->ntracksPtCut_ = trackCounter;
439  creco->ntracksEtaCut_ = trackCounterEta;
440  creco->ntracksEtaPtCut_ = trackCounterEtaPt;
441 
442  } else {
443  if (reuseAny_) {
444  creco->trackMultiplicity_ = inputCentrality->Ntracks();
445  creco->ntracksPtCut_ = inputCentrality->NtracksPtCut();
446  creco->ntracksEtaCut_ = inputCentrality->NtracksEtaCut();
447  creco->ntracksEtaPtCut_ = inputCentrality->NtracksEtaPtCut();
448  }
449  }
450 
451  if (producePixelTracks_) {
452  Handle<TrackCollection> pixeltracks;
453  iEvent.getByToken(srcPixelTracks_, pixeltracks);
454  int nPixelTracks = pixeltracks->size();
455  int nPixelTracksPlus = 0;
456  int nPixelTracksMinus = 0;
457 
458  for (auto const& track : *pixeltracks) {
459  if (track.eta() < 0)
460  nPixelTracksMinus++;
461  else
462  nPixelTracksPlus++;
463  }
464  creco->nPixelTracks_ = nPixelTracks;
465  creco->nPixelTracksPlus_ = nPixelTracksPlus;
466  creco->nPixelTracksMinus_ = nPixelTracksMinus;
467  } else {
468  if (reuseAny_) {
469  creco->nPixelTracks_ = inputCentrality->NpixelTracks();
470  creco->nPixelTracksPlus_ = inputCentrality->NpixelTracksPlus();
471  creco->nPixelTracksMinus_ = inputCentrality->NpixelTracksMinus();
472  }
473  }
474 
475  if (produceZDChits_) {
476  creco->zdcSumPlus_ = 0;
477  creco->zdcSumMinus_ = 0;
478 
480  bool zdcAvailable = iEvent.getByToken(srcZDChits_, hits);
481  if (zdcAvailable) {
482  for (size_t ihit = 0; ihit < hits->size(); ++ihit) {
483  const ZDCRecHit& rechit = (*hits)[ihit];
484  if (rechit.id().zside() > 0) {
485  if (lowGainZDC_) {
486  creco->zdcSumPlus_ += rechit.lowGainEnergy();
487  } else {
488  creco->zdcSumPlus_ += rechit.energy();
489  }
490  }
491  if (rechit.id().zside() < 0) {
492  if (lowGainZDC_) {
493  creco->zdcSumMinus_ += rechit.lowGainEnergy();
494  } else {
495  creco->zdcSumMinus_ += rechit.energy();
496  }
497  }
498  }
499  } else {
500  creco->zdcSumPlus_ = -9;
501  creco->zdcSumMinus_ = -9;
502  }
503  } else {
504  if (reuseAny_) {
505  creco->zdcSumMinus_ = inputCentrality->zdcSumMinus();
506  creco->zdcSumPlus_ = inputCentrality->zdcSumPlus();
507  }
508  }
509 
510  iEvent.put(std::move(creco));
511  }
512 
515  desc.add<bool>("produceHFhits", true);
516  desc.add<bool>("produceHFtowers", true);
517  desc.add<bool>("produceEcalhits", true);
518  desc.add<bool>("produceZDChits", true);
519  desc.add<bool>("produceETmidRapidity", true);
520  desc.add<bool>("producePixelhits", true);
521  desc.add<bool>("produceTracks", true);
522  desc.add<bool>("producePixelTracks", true);
523  desc.add<bool>("producePF", true);
524  desc.add<bool>("reUseCentrality", false);
525  desc.add<edm::InputTag>("srcHFhits", edm::InputTag("hfreco"));
526  desc.add<edm::InputTag>("srcTowers", edm::InputTag("towerMaker"));
527  desc.add<edm::InputTag>("srcEBhits", edm::InputTag("ecalRecHit", "EcalRecHitsEB"));
528  desc.add<edm::InputTag>("srcEEhits", edm::InputTag("ecalRecHit", "EcalRecHitsEE"));
529  desc.add<edm::InputTag>("srcZDChits", edm::InputTag("zdcreco"));
530  desc.add<edm::InputTag>("srcPixelhits", edm::InputTag("siPixelRecHits"));
531  desc.add<edm::InputTag>("srcTracks", edm::InputTag("hiGeneralTracks"));
532  desc.add<edm::InputTag>("srcVertex", edm::InputTag("hiSelectedVertex"));
533  desc.add<edm::InputTag>("srcReUse", edm::InputTag("hiCentrality"));
534  desc.add<edm::InputTag>("srcPixelTracks", edm::InputTag("hiPixel3PrimTracks"));
535  desc.add<edm::InputTag>("srcPF", edm::InputTag("particleFlow"));
536  desc.add<bool>("doPixelCut", true);
537  desc.add<bool>("useQuality", true);
538  desc.add<string>("trackQuality", "highPurity");
539  desc.add<double>("trackEtaCut", 2);
540  desc.add<double>("trackPtCut", 1);
541  desc.add<double>("hfEtaCut", 4)->setComment("hf above the absolute value of this cut is used");
542  desc.add<double>("midRapidityRange", 1);
543  desc.add<bool>("lowGainZDC", true);
544  desc.add<bool>("isPhase2", false);
545 
546  descriptions.addDefault(desc);
547  }
548 
549  // ------------ method called once each job just before starting event loop ------------
551 
552  // ------------ method called once each job just after ending the event loop ------------
554 
555  //define this as a plug-in
557 
558 } // namespace reco
ESGetTokenH3DDVariant esConsumes(std::string const &Record, edm::ConsumesCollector &)
Definition: DeDxTools.cc:283
const edm::EDGetTokenT< EcalRecHitCollection > srcEEhits_
const edm::ESGetToken< CaloGeometry, CaloGeometryRecord > caloGeom_
const edm::EDGetTokenT< TrackCollection > srcTracks_
Quality qualityByName(std::string const &name)
const edm::EDGetTokenT< SiPixelRecHitCollection > srcPixelhits_
TrackQuality
track quality
Definition: TrackBase.h:150
size_type size() const
T const * product() const
Definition: Handle.h:70
std::vector< Track > TrackCollection
collection of Tracks
Definition: TrackFwd.h:14
std::vector< Vertex > VertexCollection
collection of Vertex objects
Definition: VertexFwd.h:9
const edm::EDGetTokenT< CaloTowerCollection > srcTowers_
const reco::TrackBase::TrackQuality trackQuality_
const edm::EDGetTokenT< VertexCollection > srcVertex_
const edm::EDGetTokenT< reco::CandidateView > srcPF_
unsigned int layer(const DetId &id) const
constexpr float energy() const
Definition: CaloRecHit.h:29
void beginJob()
Definition: Breakpoints.cc:14
const_iterator end(bool update=false) const
void produce(edm::StreamID, edm::Event &, const edm::EventSetup &) const override
int iEvent
Definition: GenABIO.cc:224
void addDefault(ParameterSetDescription const &psetDescription)
constexpr HcalDetId id() const
Definition: HFRecHit.h:26
GlobalPoint getPosition(const DetId &id) const
Get the position of a given detector id.
Definition: CaloGeometry.cc:50
float lowGainEnergy() const
Definition: ZDCRecHit.h:20
constexpr int ieta() const
get the cell ieta
Definition: HcalDetId.h:155
const edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > trackerTopo_
const edm::EDGetTokenT< ZDCRecHitCollection > srcZDChits_
const edm::EDGetTokenT< TrackCollection > srcPixelTracks_
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
const edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > trackerGeom_
const edm::EDGetTokenT< HFRecHitCollection > srcHFhits_
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
Definition: EventSetup.h:130
const TrackerGeomDet * idToDet(DetId) const override
GlobalPoint toGlobal(const Local2DPoint &lp) const
Conversion to the global R.F. from the R.F. of the GeomDet.
Definition: GeomDet.h:49
unsigned int id
boost::transform_iterator< IterHelp, const_IdIter > const_iterator
Definition: DetId.h:17
const_iterator begin(bool update=false) const
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
XYZVectorD XYZVector
spatial vector with cartesian internal representation
Definition: Vector3D.h:31
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
const edm::EDGetTokenT< Centrality > reuseTag_
bool isHF(int etabin, int depth)
ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< float >, ROOT::Math::GlobalCoordinateSystemTag > GlobalPoint
point in global coordinate system
Definition: Point3D.h:18
fixed size matrix
HcalZDCDetId id() const
get the id
Definition: ZDCRecHit.h:18
HLT enums.
iterator end()
Definition: DetSetNew.h:53
const_iterator find(id_type i, bool update=false) const
const edm::EDGetTokenT< EcalRecHitCollection > srcEBhits_
constexpr int32_t zside() const
get the z-side of the cell (1/-1)
Definition: HcalZDCDetId.h:90
def move(src, dest)
Definition: eostools.py:511
Our base class.
Definition: SiPixelRecHit.h:23
iterator begin()
Definition: DetSetNew.h:51