CMS 3D CMS Logo

SeedFinderSelector.cc
Go to the documentation of this file.
2 
3 // framework
6 
7 // track reco
21 // data formats
23 
25  : trackingRegion_(nullptr),
26  eventSetup_(nullptr),
27  measurementTracker_(nullptr),
28  measurementTrackerLabel_(cfg.getParameter<std::string>("measurementTracker")) {
29  if (cfg.exists("pixelTripletGeneratorFactory")) {
30  const edm::ParameterSet &tripletConfig = cfg.getParameter<edm::ParameterSet>("pixelTripletGeneratorFactory");
32  tripletConfig.getParameter<std::string>("ComponentName"), tripletConfig, consumesCollector);
33  }
34 
35  if (cfg.exists("MultiHitGeneratorFactory")) {
36  const edm::ParameterSet &tripletConfig = cfg.getParameter<edm::ParameterSet>("MultiHitGeneratorFactory");
38  tripletConfig.getParameter<std::string>("ComponentName"), tripletConfig);
39  }
40 
41  if (cfg.exists("CAHitTripletGeneratorFactory")) {
42  const edm::ParameterSet &tripletConfig = cfg.getParameter<edm::ParameterSet>("CAHitTripletGeneratorFactory");
43  CAHitTriplGenerator_ = std::make_unique<CAHitTripletGenerator>(tripletConfig, consumesCollector);
44  seedingLayers_ = std::make_unique<SeedingLayerSetsBuilder>(
45  cfg,
46  consumesCollector,
47  //calling the new FastSim specific constructor to make SeedingLayerSetsHits pointer for triplet iterations
48  edm::InputTag("fastTrackerRecHits"));
49  layerPairs_ = cfg.getParameter<std::vector<unsigned>>("layerPairs"); //allowed layer pairs for CA triplets
50  }
51 
52  if (cfg.exists("CAHitQuadrupletGeneratorFactory")) {
53  const edm::ParameterSet &quadrupletConfig = cfg.getParameter<edm::ParameterSet>("CAHitQuadrupletGeneratorFactory");
54  CAHitQuadGenerator_ = std::make_unique<CAHitQuadrupletGenerator>(quadrupletConfig, consumesCollector);
55  //calling the new FastSim specific constructor to make SeedingLayerSetsHits pointer for quadruplet iterations
57  std::make_unique<SeedingLayerSetsBuilder>(cfg, consumesCollector, edm::InputTag("fastTrackerRecHits"));
58  layerPairs_ = cfg.getParameter<std::vector<unsigned>>("layerPairs"); //allowed layer pairs for CA quadruplets
59  }
60 
63  throw cms::Exception("FastSimTracking")
64  << "It is forbidden to specify together 'pixelTripletGeneratorFactory', 'CAHitTripletGeneratorFactory' and "
65  "'MultiHitGeneratorFactory' in configuration of SeedFinderSelection";
66  }
69  throw cms::Exception("FastSimTracking")
70  << "It is forbidden to specify 'CAHitQuadrupletGeneratorFactory' together with 'pixelTripletGeneratorFactory', "
71  "'CAHitTripletGeneratorFactory' or 'MultiHitGeneratorFactory' in configuration of SeedFinderSelection";
72  }
73 }
74 
76 
78  eventSetup_ = &es;
79 
80  edm::ESHandle<MeasurementTracker> measurementTrackerHandle;
81  es.get<CkfComponentsRecord>().get(measurementTrackerLabel_, measurementTrackerHandle);
83  measurementTracker_ = &(*measurementTrackerHandle);
84 
85  if (multiHitGenerator_) {
86  multiHitGenerator_->initES(es);
87  }
88 
89  //for CA triplet iterations
91  seedingLayer = seedingLayers_->makeSeedingLayerSetsHitsforFastSim(ev, es);
92  seedingLayerIds = seedingLayers_->layers();
93  CAHitTriplGenerator_->initEvent(ev, es);
94  }
95  //for CA quadruplet iterations
96  if (CAHitQuadGenerator_) {
97  seedingLayer = seedingLayers_->makeSeedingLayerSetsHitsforFastSim(ev, es);
98  seedingLayerIds = seedingLayers_->layers();
99  CAHitQuadGenerator_->initEvent(ev, es);
100  }
101 }
102 
103 bool SeedFinderSelector::pass(const std::vector<const FastTrackerRecHit *> &hits) const {
104  if (!measurementTracker_ || !eventSetup_) {
105  throw cms::Exception("FastSimTracking") << "ERROR: event not initialized";
106  }
107  if (!trackingRegion_) {
108  throw cms::Exception("FastSimTracking") << "ERROR: trackingRegion not set";
109  }
110 
111  // check the inner 2 hits
112  if (hits.size() < 2) {
113  throw cms::Exception("FastSimTracking") << "SeedFinderSelector::pass requires at least 2 hits";
114  }
115  const DetLayer *firstLayer =
116  measurementTracker_->geometricSearchTracker()->detLayer(hits[0]->det()->geographicalId());
117  const DetLayer *secondLayer =
118  measurementTracker_->geometricSearchTracker()->detLayer(hits[1]->det()->geographicalId());
119 
120  std::vector<BaseTrackerRecHit const *> firstHits{hits[0]};
121  std::vector<BaseTrackerRecHit const *> secondHits{hits[1]};
122 
123  const RecHitsSortedInPhi fhm(firstHits, trackingRegion_->origin(), firstLayer);
124  const RecHitsSortedInPhi shm(secondHits, trackingRegion_->origin(), secondLayer);
125 
126  HitDoublets result(fhm, shm);
128  *trackingRegion_, *firstLayer, *secondLayer, fhm, shm, *eventSetup_, 0, result);
129 
130  if (result.empty()) {
131  return false;
132  }
133 
134  // check the inner 3 hits
136  if (hits.size() < 3) {
137  throw cms::Exception("FastSimTracking")
138  << "For the given configuration, SeedFinderSelector::pass requires at least 3 hits";
139  }
140  const DetLayer *thirdLayer =
141  measurementTracker_->geometricSearchTracker()->detLayer(hits[2]->det()->geographicalId());
142  std::vector<const DetLayer *> thirdLayerDetLayer(1, thirdLayer);
143  std::vector<BaseTrackerRecHit const *> thirdHits{hits[2]};
144  const RecHitsSortedInPhi thm(thirdHits, trackingRegion_->origin(), thirdLayer);
145  const RecHitsSortedInPhi *thmp = &thm;
146 
148  OrderedHitTriplets tripletresult;
149  pixelTripletGenerator_->hitTriplets(
150  *trackingRegion_, tripletresult, *eventSetup_, result, &thmp, thirdLayerDetLayer, 1);
151  return !tripletresult.empty();
152  } else if (multiHitGenerator_) {
153  OrderedMultiHits tripletresult;
154  multiHitGenerator_->hitTriplets(
155  *trackingRegion_, tripletresult, *eventSetup_, result, &thmp, thirdLayerDetLayer, 1);
156  return !tripletresult.empty();
157  }
158  //new for Phase1
159  else if (CAHitTriplGenerator_) {
160  if (!seedingLayer)
161  throw cms::Exception("FastSimTracking") << "ERROR: SeedingLayers pointer not set for CATripletGenerator";
162 
164  //constructing IntermediateHitDoublets to be passed onto CAHitTripletGenerator::hitNtuplets()
166  const TrackingRegion &tr_ = *trackingRegion_;
167  auto filler = ihd.beginRegion(&tr_);
168 
169  //forming the SeedingLayerId of the hits
170  std::array<SeedingLayerSetsBuilder::SeedingLayerId, 3> hitPair;
171  hitPair[0] = Layer_tuple(hits[0]);
172  hitPair[1] = Layer_tuple(hits[1]);
173  hitPair[2] = Layer_tuple(hits[2]);
174 
175  //extracting the DetLayer of the hits
176  const DetLayer *fLayer =
177  measurementTracker_->geometricSearchTracker()->detLayer(hits[0]->det()->geographicalId());
178  const DetLayer *sLayer =
179  measurementTracker_->geometricSearchTracker()->detLayer(hits[1]->det()->geographicalId());
180  const DetLayer *tLayer =
181  measurementTracker_->geometricSearchTracker()->detLayer(hits[2]->det()->geographicalId());
182 
183  //converting FastTrackerRecHit hits to BaseTrackerRecHit
184  std::vector<BaseTrackerRecHit const *> fHits{hits[0]};
185  std::vector<BaseTrackerRecHit const *> sHits{hits[1]};
186  std::vector<BaseTrackerRecHit const *> tHits{hits[2]};
187 
188  //forming the SeedingLayerSet for the hit doublets
189  SeedingLayerSetsHits::SeedingLayerSet pairCandidate1, pairCandidate2;
192  for (const auto p : layerPairs_) {
193  pairCandidate = ls.slice(p, p + 2);
194  if (p == 0 && hitPair[0] == seedingLayerIds[pairCandidate[0].index()] &&
195  hitPair[1] == seedingLayerIds[pairCandidate[1].index()])
196  pairCandidate1 = pairCandidate;
197  if (p == 1 && hitPair[1] == seedingLayerIds[pairCandidate[0].index()] &&
198  hitPair[2] == seedingLayerIds[pairCandidate[1].index()])
199  pairCandidate2 = pairCandidate;
200  }
201  }
202 
203  //Important: hits of the layer to be added to LayerHitMapCache
204  auto &layerCache = filler.layerHitMapCache();
205 
206  //doublets for CA triplets from the allowed layer pair combinations:(0,1),(1,2) and storing in filler
207  const RecHitsSortedInPhi &firsthm = *layerCache.add(
208  pairCandidate1[0], std::make_unique<RecHitsSortedInPhi>(fHits, trackingRegion_->origin(), fLayer));
209  const RecHitsSortedInPhi &secondhm = *layerCache.add(
210  pairCandidate1[1], std::make_unique<RecHitsSortedInPhi>(sHits, trackingRegion_->origin(), sLayer));
211  HitDoublets res1(firsthm, secondhm);
213  *trackingRegion_, *fLayer, *sLayer, firsthm, secondhm, *eventSetup_, 0, res1);
214  filler.addDoublets(pairCandidate1, std::move(res1));
215  const RecHitsSortedInPhi &thirdhm = *layerCache.add(
216  pairCandidate2[1], std::make_unique<RecHitsSortedInPhi>(tHits, trackingRegion_->origin(), tLayer));
217  HitDoublets res2(secondhm, thirdhm);
219  *trackingRegion_, *sLayer, *tLayer, secondhm, thirdhm, *eventSetup_, 0, res2);
220  filler.addDoublets(pairCandidate2, std::move(res2));
221 
222  std::vector<OrderedHitSeeds> tripletresult;
223  tripletresult.resize(ihd.regionSize());
224  for (auto &ntuplet : tripletresult)
225  ntuplet.reserve(3);
226  //calling the function from the class, modifies tripletresult
227  CAHitTriplGenerator_->hitNtuplets(ihd, tripletresult, *eventSetup_, *seedingLayer);
228  return !tripletresult[0].empty();
229  }
230  }
231  //new for Phase1
232  if (CAHitQuadGenerator_) {
233  if (hits.size() < 4) {
234  throw cms::Exception("FastSimTracking")
235  << "For the given configuration, SeedFinderSelector::pass requires at least 4 hits";
236  }
237 
238  if (!seedingLayer)
239  throw cms::Exception("FastSimTracking") << "ERROR: SeedingLayers pointer not set for CAHitQuadrupletGenerator";
240 
242  //constructing IntermediateHitDoublets to be passed onto CAHitQuadrupletGenerator::hitNtuplets()
244  const TrackingRegion &tr_ = *trackingRegion_;
245  auto filler = ihd.beginRegion(&tr_);
246 
247  //forming the SeedingLayerId of the hits
248  std::array<SeedingLayerSetsBuilder::SeedingLayerId, 4> hitPair;
249  hitPair[0] = Layer_tuple(hits[0]);
250  hitPair[1] = Layer_tuple(hits[1]);
251  hitPair[2] = Layer_tuple(hits[2]);
252  hitPair[3] = Layer_tuple(hits[3]);
253 
254  //extracting the DetLayer of the hits
255  const DetLayer *fLayer = measurementTracker_->geometricSearchTracker()->detLayer(hits[0]->det()->geographicalId());
256  const DetLayer *sLayer = measurementTracker_->geometricSearchTracker()->detLayer(hits[1]->det()->geographicalId());
257  const DetLayer *tLayer = measurementTracker_->geometricSearchTracker()->detLayer(hits[2]->det()->geographicalId());
258  const DetLayer *frLayer = measurementTracker_->geometricSearchTracker()->detLayer(hits[3]->det()->geographicalId());
259 
260  //converting FastTrackerRecHit hits to BaseTrackerRecHit
261  std::vector<BaseTrackerRecHit const *> fHits{hits[0]};
262  std::vector<BaseTrackerRecHit const *> sHits{hits[1]};
263  std::vector<BaseTrackerRecHit const *> tHits{hits[2]};
264  std::vector<BaseTrackerRecHit const *> frHits{hits[3]};
265 
266  //forming the SeedingLayerSet for the hit doublets
267  SeedingLayerSetsHits::SeedingLayerSet pairCandidate1, pairCandidate2, pairCandidate3;
270  for (const auto p : layerPairs_) {
271  pairCandidate = ls.slice(p, p + 2);
272  if (p == 0 && hitPair[0] == seedingLayerIds[pairCandidate[0].index()] &&
273  hitPair[1] == seedingLayerIds[pairCandidate[1].index()])
274  pairCandidate1 = pairCandidate;
275  if (p == 1 && hitPair[1] == seedingLayerIds[pairCandidate[0].index()] &&
276  hitPair[2] == seedingLayerIds[pairCandidate[1].index()])
277  pairCandidate2 = pairCandidate;
278  if (p == 2 && hitPair[2] == seedingLayerIds[pairCandidate[0].index()] &&
279  hitPair[3] == seedingLayerIds[pairCandidate[1].index()])
280  pairCandidate3 = pairCandidate;
281  }
282  }
283 
284  //Important: hits of the layer to be added to LayerHitMapCache
285  auto &layerCache = filler.layerHitMapCache();
286 
287  //doublets for CA quadruplets from the allowed layer pair combinations:(0,1),(1,2),(2,3) and storing in filler
288  const RecHitsSortedInPhi &firsthm = *layerCache.add(
289  pairCandidate1[0], std::make_unique<RecHitsSortedInPhi>(fHits, trackingRegion_->origin(), fLayer));
290  const RecHitsSortedInPhi &secondhm = *layerCache.add(
291  pairCandidate1[1], std::make_unique<RecHitsSortedInPhi>(sHits, trackingRegion_->origin(), sLayer));
292  HitDoublets res1(firsthm, secondhm);
294  *trackingRegion_, *fLayer, *sLayer, firsthm, secondhm, *eventSetup_, 0, res1);
295  filler.addDoublets(pairCandidate1, std::move(res1));
296  const RecHitsSortedInPhi &thirdhm = *layerCache.add(
297  pairCandidate2[1], std::make_unique<RecHitsSortedInPhi>(tHits, trackingRegion_->origin(), tLayer));
298  HitDoublets res2(secondhm, thirdhm);
300  *trackingRegion_, *sLayer, *tLayer, secondhm, thirdhm, *eventSetup_, 0, res2);
301  filler.addDoublets(pairCandidate2, std::move(res2));
302  const RecHitsSortedInPhi &fourthhm = *layerCache.add(
303  pairCandidate3[1], std::make_unique<RecHitsSortedInPhi>(frHits, trackingRegion_->origin(), frLayer));
304  HitDoublets res3(thirdhm, fourthhm);
306  *trackingRegion_, *tLayer, *frLayer, thirdhm, fourthhm, *eventSetup_, 0, res3);
307  filler.addDoublets(pairCandidate3, std::move(res3));
308 
309  std::vector<OrderedHitSeeds> quadrupletresult;
310  quadrupletresult.resize(ihd.regionSize());
311  for (auto &ntuplet : quadrupletresult)
312  ntuplet.reserve(4);
313  //calling the function from the class, modifies quadrupletresult
314  CAHitQuadGenerator_->hitNtuplets(ihd, quadrupletresult, *eventSetup_, *seedingLayer);
315  return !quadrupletresult[0].empty();
316  }
317 
318  return true;
319 }
320 
321 //new for Phase1
323  const TrackerTopology *const tTopo = trackerTopology.product();
326  int idLayer = 0;
327 
328  if ((hit->det()->geographicalId()).subdetId() == PixelSubdetector::PixelBarrel) {
330  side = TrackerDetSide::Barrel;
331  idLayer = tTopo->pxbLayer(hit->det()->geographicalId());
332  } else if ((hit->det()->geographicalId()).subdetId() == PixelSubdetector::PixelEndcap) {
334  idLayer = tTopo->pxfDisk(hit->det()->geographicalId());
335  if (tTopo->pxfSide(hit->det()->geographicalId()) == 1) {
337  } else {
339  }
340  }
341  return std::make_tuple(subdet, side, idLayer);
342 }
TrackingRegion::origin
GlobalPoint const & origin() const
Definition: TrackingRegion.h:71
edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
GeomDetEnumerators::SubDetector
SubDetector
Definition: GeomDetEnumerators.h:10
eostools.ls
def ls(path, rec=False)
Definition: eostools.py:349
SeedFinderSelector::layerPairs_
std::vector< unsigned > layerPairs_
Definition: SeedFinderSelector.h:53
PixelSubdetector.h
OrderedMultiHits
Definition: OrderedMultiHits.h:8
HitTripletGeneratorFromPairAndLayers.h
HitTripletGeneratorFromPairAndLayersFactory.h
SeedFinderSelector.h
PixelSubdetector::PixelEndcap
Definition: PixelSubdetector.h:11
PixelSubdetector::PixelBarrel
Definition: PixelSubdetector.h:11
hfClusterShapes_cfi.hits
hits
Definition: hfClusterShapes_cfi.py:5
DetLayer
Definition: DetLayer.h:21
TrackerTopology::pxfSide
unsigned int pxfSide(const DetId &id) const
Definition: TrackerTopology.h:192
GeomDetEnumerators::invalidDet
Definition: GeomDetEnumerators.h:31
SeedFinderSelector::SeedFinderSelector
SeedFinderSelector(const edm::ParameterSet &cfg, edm::ConsumesCollector &&consumesCollector)
Definition: SeedFinderSelector.cc:24
TrackerTopology
Definition: TrackerTopology.h:16
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
SeedingLayerSetsHits
Definition: SeedingLayerSetsHits.h:18
MeasurementTracker::geometricSearchTracker
const GeometricSearchTracker * geometricSearchTracker() const
Definition: MeasurementTracker.h:38
SeedFinderSelector::CAHitQuadGenerator_
std::unique_ptr< CAHitQuadrupletGenerator > CAHitQuadGenerator_
Definition: SeedFinderSelector.h:50
FastTrackerRecHit
Definition: FastTrackerRecHit.h:40
IntermediateHitDoublets.h
MultiHitGeneratorFromPairAndLayersFactory.h
CkfComponentsRecord.h
TrackerTopology::pxbLayer
unsigned int pxbLayer(const DetId &id) const
Definition: TrackerTopology.h:144
GeomDetEnumerators::PixelBarrel
Definition: GeomDetEnumerators.h:11
TrackerDetSide::Barrel
SeedFinderSelector::trackingRegion_
const TrackingRegion * trackingRegion_
Definition: SeedFinderSelector.h:45
edm::EventSetup::get
T get() const
Definition: EventSetup.h:73
RecHitsSortedInPhi.h
SeedFinderSelector::~SeedFinderSelector
~SeedFinderSelector()
Definition: SeedFinderSelector.cc:75
CkfComponentsRecord
Definition: CkfComponentsRecord.h:22
GeometricSearchTracker::detLayer
const DetLayer * detLayer(const DetId &id) const
obsolete method. Use idToLayer() instead.
Definition: GeometricSearchTracker.h:53
SeedFinderSelector::measurementTracker_
const MeasurementTracker * measurementTracker_
Definition: SeedFinderSelector.h:47
SeedFinderSelector::pixelTripletGenerator_
std::unique_ptr< HitTripletGeneratorFromPairAndLayers > pixelTripletGenerator_
Definition: SeedFinderSelector.h:43
SeedFinderSelector::multiHitGenerator_
std::unique_ptr< MultiHitGeneratorFromPairAndLayers > multiHitGenerator_
Definition: SeedFinderSelector.h:44
edm::ESHandle< MeasurementTracker >
TrackerDetSide
TrackerDetSide
Definition: TrackerDetSide.h:4
TrackerDetSide::NegEndcap
SeedingLayerSetsBuilder::SeedingLayerId
std::tuple< GeomDetEnumerators::SubDetector, TrackerDetSide, int > SeedingLayerId
Definition: SeedingLayerSetsBuilder.h:33
SeedFinderSelector::pass
bool pass(const std::vector< const FastTrackerRecHit * > &hits) const
Definition: SeedFinderSelector.cc:103
ihd
Definition: IntermediateHitDoublets.h:7
SeedFinderSelector::measurementTrackerLabel_
const std::string measurementTrackerLabel_
Definition: SeedFinderSelector.h:48
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
SeedFinderSelector::eventSetup_
const edm::EventSetup * eventSetup_
Definition: SeedFinderSelector.h:46
RecHitsSortedInPhi
Definition: RecHitsSortedInPhi.h:17
MultiHitGeneratorFromPairAndLayers.h
HitDoublets
Definition: RecHitsSortedInPhi.h:124
edm::ParameterSet
Definition: ParameterSet.h:36
Event.h
SeedFinderSelector::seedingLayer
std::unique_ptr< SeedingLayerSetsHits > seedingLayer
Definition: SeedFinderSelector.h:52
OrderedHitTriplets
Definition: OrderedHitTriplets.h:9
trigObjTnPSource_cfi.filler
filler
Definition: trigObjTnPSource_cfi.py:21
CAHitQuadrupletGenerator.h
TrackerTopology::pxfDisk
unsigned int pxfDisk(const DetId &id) const
Definition: TrackerTopology.h:446
IntermediateHitDoublets
Definition: IntermediateHitDoublets.h:131
edm::EventSetup
Definition: EventSetup.h:57
SeedFinderSelector::Layer_tuple
SeedingLayerSetsBuilder::SeedingLayerId Layer_tuple(const FastTrackerRecHit *hit) const
Definition: SeedFinderSelector.cc:322
get
#define get
SeedFinderSelector::initEvent
void initEvent(const edm::Event &ev, const edm::EventSetup &es)
Definition: SeedFinderSelector.cc:77
looper.cfg
cfg
Definition: looper.py:297
TrackerDetSide::PosEndcap
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
SeedFinderSelector::trackerTopology
edm::ESHandle< TrackerTopology > trackerTopology
Definition: SeedFinderSelector.h:54
CAHitTripletGenerator.h
eostools.move
def move(src, dest)
Definition: eostools.py:511
std
Definition: JetResolutionObject.h:76
HitPairGeneratorFromLayerPair.h
ev
bool ev
Definition: Hydjet2Hadronizer.cc:95
Exception
Definition: hltDiff.cc:246
SeedingLayerSetsHits::SeedingLayerSet
Definition: SeedingLayerSetsHits.h:65
EventSetup.h
OrderedHitSeeds.h
HitPairGeneratorFromLayerPair::doublets
HitDoublets doublets(const TrackingRegion &reg, const edm::Event &ev, const edm::EventSetup &es, Layers layers)
Definition: HitPairGeneratorFromLayerPair.h:24
GeomDetEnumerators::PixelEndcap
Definition: GeomDetEnumerators.h:12
AlignmentPI::index
index
Definition: AlignmentPayloadInspectorHelper.h:46
TrackingRegion
Definition: TrackingRegion.h:38
FastTrackerRecHit.h
mps_fire.result
result
Definition: mps_fire.py:303
SeedFinderSelector::CAHitTriplGenerator_
std::unique_ptr< CAHitTripletGenerator > CAHitTriplGenerator_
Definition: SeedFinderSelector.h:49
SeedFinderSelector::seedingLayers_
std::unique_ptr< SeedingLayerSetsBuilder > seedingLayers_
Definition: SeedFinderSelector.h:51
TrackerTopologyRcd
Definition: TrackerTopologyRcd.h:10
edm::Event
Definition: Event.h:73
SeedFinderSelector::seedingLayerIds
std::vector< SeedingLayerSetsBuilder::SeedingLayerId > seedingLayerIds
Definition: SeedFinderSelector.h:55
edm::InputTag
Definition: InputTag.h:15
edm::ConsumesCollector
Definition: ConsumesCollector.h:39
hgcalTopologyTester_cfi.layers
layers
Definition: hgcalTopologyTester_cfi.py:8
hit
Definition: SiStripHitEffFromCalibTree.cc:88
MeasurementTracker.h