CMS 3D CMS Logo

HitExtractorSTRP.cc
Go to the documentation of this file.
1 #include "HitExtractorSTRP.h"
5 
8 
11 
13 
20 
21 #include <tuple>
22 
23 #include <iostream>
24 
25 using namespace ctfseeding;
26 using namespace std;
27 using namespace edm;
28 
30  TrackerDetSide side,
31  int idLayer,
32  float iminGoodCharge)
33  : theLayerSubDet(subdet),
34  theSide(side),
35  theIdLayer(idLayer),
36  minAbsZ(0),
37  theMinRing(1),
38  theMaxRing(0),
39  hasMatchedHits(false),
40  hasRPhiHits(false),
41  hasStereoHits(false),
42  hasRingSelector(false),
43  hasSimpleRphiHitsCleaner(true) {
44  minGoodCharge = iminGoodCharge;
45  if (minGoodCharge > 0)
46  skipClusters = true;
47 }
48 
51 }
52 
54  hasRingSelector = true;
57 }
58 
60  if (!hasRingSelector)
61  return true;
62  return (ring >= theMinRing) & (ring <= theMaxRing);
63 }
64 
66  DetId id,
67  OmniClusterRef const& clus,
69  if (maskCluster && (stripClusterMask->mask(clus.key())))
70  return true;
71 
72  if
73  UNLIKELY(minGoodCharge <= 0) return false;
75 }
76 
77 std::pair<bool, ProjectedSiStripRecHit2D*> HitExtractorSTRP::skipThis(
78  const TkTransientTrackingRecHitBuilder& ttrhBuilder,
82 
83  assert(dynamic_cast<SiStripMatchedRecHit2D const*>(&matched));
84 
85  auto id = hit.geographicalId();
86  ProjectedSiStripRecHit2D* replaceMe = nullptr;
87  bool rejectSt = skipThis(id, hit.stereoClusterRef(), stripClusterMask);
88  bool rejectMono = skipThis(id, hit.monoClusterRef(), stripClusterMask);
89 
90  if ((!rejectSt) & (!rejectMono)) {
91  // keepit
92  return std::make_pair(false, replaceMe);
93  }
94 
95  if (failProjection || (rejectSt & rejectMono)) {
96  //only skip if both hits are done
97  return std::make_pair(true, replaceMe);
98  }
99 
100  // replace with one
101 
102  auto cloner = ttrhBuilder.cloner();
103  replaceMe = cloner.project(hit, rejectSt, TrajectoryStateOnSurface()).release();
104  if (rejectSt)
105  LogDebug("HitExtractorSTRP") << "a matched hit is partially masked, and the mono hit got projected onto: "
106  << replaceMe->geographicalId().rawId() << " key: " << hit.monoClusterRef().key();
107  else
108  LogDebug("HitExtractorSTRP") << "a matched hit is partially masked, and the stereo hit got projected onto: "
109  << replaceMe->geographicalId().rawId() << " key: " << hit.stereoClusterRef().key();
110 
111  return std::make_pair(true, replaceMe);
112 }
113 
115  const edm::Event& ev,
117  bool matched,
118  unsigned int cleanFrom) const {
119  LogDebug("HitExtractorPIX") << "getting: " << hits.size() << " in input.";
120  edm::Handle<SkipClustersCollection> stripClusterMask;
121  if (maskCluster)
122  ev.getByToken(theSkipClusters, stripClusterMask);
123  unsigned int skipped = 0;
124  unsigned int projected = 0;
125  for (unsigned int iH = cleanFrom; iH < hits.size(); ++iH) {
126  assert(hits[iH]->isValid());
127  auto id = hits[iH]->geographicalId();
128  if (matched) {
129  bool replace;
130  ProjectedSiStripRecHit2D* replaceMe;
131  std::tie(replace, replaceMe) = skipThis(ttrhBuilder, *hits[iH], stripClusterMask);
132  if (replace) {
133  if (!replaceMe) {
134  LogDebug("HitExtractorSTRP") << "skipping a matched hit on :" << hits[iH]->geographicalId().rawId();
135  skipped++;
136  } else
137  projected++;
138  hits[iH].reset(replaceMe);
139  if (replaceMe == nullptr)
140  assert(hits[iH].empty());
141  else
142  assert(hits[iH].isOwn());
143  }
144  } else if (skipThis(id, hits[iH]->firstClusterRef(), stripClusterMask)) {
145  LogDebug("HitExtractorSTRP") << "skipping a hit on :" << hits[iH]->geographicalId().rawId() << " key: ";
146  skipped++;
147  hits[iH].reset();
148  }
149  }
150  // remove empty elements...
151  auto last = std::remove_if(hits.begin() + cleanFrom, hits.end(), [](HitPointer const& p) { return p.empty(); });
152  hits.resize(last - hits.begin());
153 
154  // std::cout << "HitExtractorSTRP " <<"skipped :"<<skipped<<" strip rechits because of clusters and projected: "<<projected << std::endl;
155  LogDebug("HitExtractorSTRP") << "skipped :" << skipped
156  << " strip rechits because of clusters and projected: " << projected;
157 }
158 
160  const edm::Event& ev,
161  const edm::EventSetup& es) const {
163  unsigned int cleanFrom = 0;
164 
165  //Retrieve tracker topology from geometry
166  edm::ESHandle<TrackerTopology> tTopoHandle;
167  es.get<TrackerTopologyRcd>().get(tTopoHandle);
168  const TrackerTopology* const tTopo = tTopoHandle.product();
169 
170  //
171  // TIB
172  //
174  if (hasMatchedHits) {
176  ev.getByToken(theMatchedHits, matchedHits);
177  if (skipClusters)
178  cleanFrom = result.size();
180  if (skipClusters)
181  cleanedOfClusters(ttrhBuilder, ev, result, true, cleanFrom);
182  }
183  if (hasRPhiHits) {
185  ev.getByToken(theRPhiHits, rphiHits);
186  if (hasMatchedHits) {
187  if (!hasSimpleRphiHitsCleaner) { // this is a brutal "cleaning". Add something smarter in the future
188  if (skipClusters)
189  cleanFrom = result.size();
191  if (skipClusters)
192  cleanedOfClusters(ttrhBuilder, ev, result, false, cleanFrom);
193  }
194  } else {
195  if (skipClusters)
196  cleanFrom = result.size();
198  if (skipClusters)
199  cleanedOfClusters(ttrhBuilder, ev, result, false, cleanFrom);
200  }
201  }
202  if (hasStereoHits) {
204  ev.getByToken(theStereoHits, stereoHits);
205  if (skipClusters)
206  cleanFrom = result.size();
208  if (skipClusters)
209  cleanedOfClusters(ttrhBuilder, ev, result, false, cleanFrom);
210  }
211  }
212 
213  //
214  // TID
215  //
217  if (hasMatchedHits) {
219  ev.getByToken(theMatchedHits, matchedHits);
220  if (skipClusters)
221  cleanFrom = result.size();
222  auto getter = tTopo->tidDetIdWheelComparator(static_cast<unsigned int>(theSide), theIdLayer);
223  SiStripMatchedRecHit2DCollection::Range range = matchedHits->equal_range(getter.first, getter.second);
224  for (SiStripMatchedRecHit2DCollection::const_iterator it = range.first; it != range.second; ++it) {
225  int ring = tTopo->tidRing(it->detId());
226  if (!ringRange(ring))
227  continue;
228  for (SiStripMatchedRecHit2DCollection::DetSet::const_iterator hit = it->begin(), end = it->end(); hit != end;
229  ++hit) {
230  result.emplace_back(*hit);
231  }
232  }
233  if (skipClusters)
234  cleanedOfClusters(ttrhBuilder, ev, result, true, cleanFrom);
235  }
236  if (hasRPhiHits) {
238  ev.getByToken(theRPhiHits, rphiHits);
239  if (skipClusters)
240  cleanFrom = result.size();
241  auto getter = tTopo->tidDetIdWheelComparator(static_cast<unsigned int>(theSide), theIdLayer);
242  SiStripRecHit2DCollection::Range range = rphiHits->equal_range(getter.first, getter.second);
243  for (SiStripRecHit2DCollection::const_iterator it = range.first; it != range.second; ++it) {
244  int ring = tTopo->tidRing(it->detId());
245  if (!ringRange(ring))
246  continue;
247  if ((SiStripDetId(it->detId()).partnerDetId() != 0) && hasSimpleRphiHitsCleaner)
248  continue; // this is a brutal "cleaning". Add something smarter in the future
249  for (SiStripRecHit2DCollection::DetSet::const_iterator hit = it->begin(), end = it->end(); hit != end; ++hit) {
250  result.emplace_back(*hit);
251  }
252  }
253  if (skipClusters)
254  cleanedOfClusters(ttrhBuilder, ev, result, false, cleanFrom);
255  }
256  if (hasStereoHits) {
258  ev.getByToken(theStereoHits, stereoHits);
259  if (skipClusters)
260  cleanFrom = result.size();
261  auto getter = tTopo->tidDetIdWheelComparator(static_cast<unsigned int>(theSide), theIdLayer);
262  SiStripRecHit2DCollection::Range range = stereoHits->equal_range(getter.first, getter.second);
263  for (SiStripRecHit2DCollection::const_iterator it = range.first; it != range.second; ++it) {
264  int ring = tTopo->tidRing(it->detId());
265  if (!ringRange(ring))
266  continue;
267  for (SiStripRecHit2DCollection::DetSet::const_iterator hit = it->begin(), end = it->end(); hit != end; ++hit) {
268  result.emplace_back(*hit);
269  }
270  }
271  if (skipClusters)
272  cleanedOfClusters(ttrhBuilder, ev, result, false, cleanFrom);
273  }
274  }
275  //
276  // TOB
277  //
279  if (hasMatchedHits) {
281  ev.getByToken(theMatchedHits, matchedHits);
282  if (skipClusters)
283  cleanFrom = result.size();
284  if (minAbsZ > 0.) {
285  auto getter = tTopo->tobDetIdLayerComparator(theIdLayer);
286  SiStripMatchedRecHit2DCollection::Range range = matchedHits->equal_range(getter.first, getter.second);
287  for (SiStripMatchedRecHit2DCollection::const_iterator it = range.first; it != range.second; ++it) {
288  for (SiStripMatchedRecHit2DCollection::DetSet::const_iterator hit = it->begin(), end = it->end(); hit != end;
289  ++hit) {
290  if (fabs(hit->globalPosition().z()) >= minAbsZ)
291  result.emplace_back(*hit);
292  }
293  }
294  } else {
296  }
297  if (skipClusters)
298  cleanedOfClusters(ttrhBuilder, ev, result, true, cleanFrom);
299  }
300  if (hasRPhiHits) {
302  ev.getByToken(theRPhiHits, rphiHits);
303  if (hasMatchedHits) {
304  if (!hasSimpleRphiHitsCleaner) { // this is a brutal "cleaning". Add something smarter in the future
305  if (skipClusters)
306  cleanFrom = result.size();
308  if (skipClusters)
309  cleanedOfClusters(ttrhBuilder, ev, result, false, cleanFrom);
310  }
311  } else {
312  if (skipClusters)
313  cleanFrom = result.size();
315  if (skipClusters)
316  cleanedOfClusters(ttrhBuilder, ev, result, false, cleanFrom);
317  }
318  }
319  if (hasStereoHits) {
321  ev.getByToken(theStereoHits, stereoHits);
322  if (skipClusters)
323  cleanFrom = result.size();
325  if (skipClusters)
326  cleanedOfClusters(ttrhBuilder, ev, result, false, cleanFrom);
327  }
328  }
329 
330  //
331  // TEC
332  //
334  if (hasMatchedHits) {
336  ev.getByToken(theMatchedHits, matchedHits);
337  if (skipClusters)
338  cleanFrom = result.size();
339  auto getter = tTopo->tecDetIdWheelComparator(static_cast<unsigned int>(theSide), theIdLayer);
340  SiStripMatchedRecHit2DCollection::Range range = matchedHits->equal_range(getter.first, getter.second);
341  for (SiStripMatchedRecHit2DCollection::const_iterator it = range.first; it != range.second; ++it) {
342  int ring = tTopo->tecRing(it->detId());
343  if (!ringRange(ring))
344  continue;
345  for (SiStripMatchedRecHit2DCollection::DetSet::const_iterator hit = it->begin(), end = it->end(); hit != end;
346  ++hit) {
347  result.emplace_back(*hit);
348  }
349  }
350  if (skipClusters)
351  cleanedOfClusters(ttrhBuilder, ev, result, true, cleanFrom);
352  }
353  if (hasRPhiHits) {
355  ev.getByToken(theRPhiHits, rphiHits);
356  if (skipClusters)
357  cleanFrom = result.size();
358  auto getter = tTopo->tecDetIdWheelComparator(static_cast<unsigned int>(theSide), theIdLayer);
359  SiStripRecHit2DCollection::Range range = rphiHits->equal_range(getter.first, getter.second);
360  for (SiStripRecHit2DCollection::const_iterator it = range.first; it != range.second; ++it) {
361  int ring = tTopo->tecRing(it->detId());
362  if (!ringRange(ring))
363  continue;
364  if ((SiStripDetId(it->detId()).partnerDetId() != 0) && hasSimpleRphiHitsCleaner)
365  continue; // this is a brutal "cleaning". Add something smarter in the future
366  for (SiStripRecHit2DCollection::DetSet::const_iterator hit = it->begin(), end = it->end(); hit != end; ++hit) {
367  result.emplace_back(*hit);
368  }
369  }
370  if (skipClusters)
371  cleanedOfClusters(ttrhBuilder, ev, result, false, cleanFrom);
372  }
373  if (hasStereoHits) {
375  ev.getByToken(theStereoHits, stereoHits);
376  if (skipClusters)
377  cleanFrom = result.size();
378  auto getter = tTopo->tecDetIdWheelComparator(static_cast<unsigned int>(theSide), theIdLayer);
379  SiStripRecHit2DCollection::Range range = stereoHits->equal_range(getter.first, getter.second);
380  for (SiStripRecHit2DCollection::const_iterator it = range.first; it != range.second; ++it) {
381  int ring = tTopo->tecRing(it->detId());
382  if (!ringRange(ring))
383  continue;
384  for (SiStripRecHit2DCollection::DetSet::const_iterator hit = it->begin(), end = it->end(); hit != end; ++hit) {
385  result.emplace_back(*hit);
386  }
387  }
388  if (skipClusters)
389  cleanedOfClusters(ttrhBuilder, ev, result, false, cleanFrom);
390  }
391  }
392 
393  LogDebug("HitExtractorSTRP") << " giving: " << result.size() << " out";
394  // std::cout << "HitExtractorSTRP "<<" giving: "<<result.size() << " for charge cut " << minGoodCharge << std::endl;
395  return result;
396 }
muonTagProbeFilters_cff.matched
matched
Definition: muonTagProbeFilters_cff.py:62
edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
GeomDetEnumerators::SubDetector
SubDetector
Definition: GeomDetEnumerators.h:10
FastTimerService_cff.range
range
Definition: FastTimerService_cff.py:34
ctfseeding::HitExtractor::TkHitRef
BaseTrackerRecHit const & TkHitRef
Definition: HitExtractor.h:26
Handle.h
TrackerTopology::tobDetIdLayerComparator
std::pair< DetId, SameLayerComparator > tobDetIdLayerComparator(uint32_t layer) const
Definition: TrackerTopology.h:552
funct::false
false
Definition: Factorize.h:34
ContainerMask.h
ctfseeding::HitExtractorSTRP::hasMatchedHits
bool hasMatchedHits
Definition: HitExtractorSTRP.h:87
ctfseeding::HitExtractor::maskCluster
bool maskCluster
Definition: HitExtractor.h:46
GeomDetEnumerators::TID
Definition: GeomDetEnumerators.h:15
hfClusterShapes_cfi.hits
hits
Definition: hfClusterShapes_cfi.py:5
ESHandle.h
ctfseeding::HitExtractorSTRP::skipThis
std::pair< bool, ProjectedSiStripRecHit2D * > skipThis(const TkTransientTrackingRecHitBuilder &ttrhBuilder, TkHitRef matched, edm::Handle< edm::ContainerMask< edmNew::DetSetVector< SiStripCluster > > > &stripClusterMask) const
Definition: HitExtractorSTRP.cc:77
ctfseeding::HitExtractor::skipClusters
bool skipClusters
Definition: HitExtractor.h:44
TrackerTopology::tibDetIdLayerComparator
std::pair< DetId, SameLayerComparator > tibDetIdLayerComparator(uint32_t layer) const
Definition: TrackerTopology.h:544
edm
HLT enums.
Definition: AlignableModifier.h:19
ctfseeding::HitExtractorSTRP::hits
HitExtractor::Hits hits(const TkTransientTrackingRecHitBuilder &ttrhBuilder, const edm::Event &, const edm::EventSetup &) const override
Definition: HitExtractorSTRP.cc:159
TrackerTopology
Definition: TrackerTopology.h:16
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
GeomDetEnumerators::TIB
Definition: GeomDetEnumerators.h:13
siStripClusterTools::chargePerCM
float chargePerCM(DetId detid, Iter a, Iter b)
Definition: SiStripClusterTools.h:29
ctfseeding::HitExtractorSTRP::failProjection
bool failProjection
Definition: HitExtractorSTRP.h:92
edmNew::DetSetVector::const_iterator
boost::transform_iterator< IterHelp, const_IdIter > const_iterator
Definition: DetSetVectorNew.h:231
ctfseeding::HitExtractorSTRP::theRPhiHits
edm::EDGetTokenT< SiStripRecHit2DCollection > theRPhiHits
Definition: HitExtractorSTRP.h:85
cms::cuda::assert
assert(be >=bs)
mayown_ptr
Definition: mayown_ptr.h:13
GeomDetEnumerators::TOB
Definition: GeomDetEnumerators.h:14
edm::ContainerMask
Definition: ContainerMask.h:36
ctfseeding::HitExtractorSTRP::theStereoHits
edm::EDGetTokenT< SiStripRecHit2DCollection > theStereoHits
Definition: HitExtractorSTRP.h:86
ctfseeding::HitExtractorSTRP::theIdLayer
int theIdLayer
Definition: HitExtractorSTRP.h:80
HLT_2018_cff.minRing
minRing
Definition: HLT_2018_cff.py:44933
TkTransientTrackingRecHitBuilder::cloner
TkClonerImpl cloner() const
Definition: TkTransientTrackingRecHitBuilder.h:37
edm::Handle
Definition: AssociativeIterator.h:50
OmniClusterRef
Definition: OmniClusterRef.h:12
TrackingRecHit::geographicalId
DetId geographicalId() const
Definition: TrackingRecHit.h:120
ProjectedSiStripRecHit2D
Definition: ProjectedSiStripRecHit2D.h:8
TrackerTopology::tidRing
unsigned int tidRing(const DetId &id) const
Definition: TrackerTopology.h:218
end
#define end
Definition: vmac.h:39
TkTransientTrackingRecHitBuilder
Definition: TkTransientTrackingRecHitBuilder.h:15
DetId
Definition: DetId.h:17
ctfseeding::HitExtractorSTRP::hasRingSelector
bool hasRingSelector
Definition: HitExtractorSTRP.h:90
UNLIKELY
#define UNLIKELY(x)
Definition: Likely.h:21
TrajectoryStateOnSurface
Definition: TrajectoryStateOnSurface.h:16
TrackerTopology.h
dqmdumpme.last
last
Definition: dqmdumpme.py:56
OmniClusterRef::cluster_strip
ClusterStripRef cluster_strip() const
Definition: OmniClusterRef.h:44
TrackerTopologyRcd.h
edm::EventSetup::get
T get() const
Definition: EventSetup.h:73
visualization-live-secondInstance_cfg.m
m
Definition: visualization-live-secondInstance_cfg.py:72
edm::ESHandle< TrackerTopology >
TrackerDetSide
TrackerDetSide
Definition: TrackerDetSide.h:4
edm::ConsumesCollector::consumes
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
Definition: ConsumesCollector.h:49
ProjectedRecHit2D.h
ctfseeding::HitExtractorSTRP::ringRange
bool ringRange(int ring) const
Definition: HitExtractorSTRP.cc:59
ctfseeding::HitExtractorSTRP::hasSimpleRphiHitsCleaner
bool hasSimpleRphiHitsCleaner
Definition: HitExtractorSTRP.h:91
SiStripClusterTools.h
hit::z
double z
Definition: SiStripHitEffFromCalibTree.cc:91
ctfseeding::HitExtractorSTRP::useSkipClusters_
void useSkipClusters_(const edm::InputTag &m, edm::ConsumesCollector &iC) override
Definition: HitExtractorSTRP.cc:49
TrackerTopology::tidDetIdWheelComparator
std::pair< DetId, SameLayerComparator > tidDetIdWheelComparator(uint32_t side, uint32_t wheel) const
Definition: TrackerTopology.h:548
edmNew::DetSetVector::equal_range
Range equal_range(id_type i, CMP cmp, bool update=false) const
Definition: DetSetVectorNew.h:584
funct::true
true
Definition: Factorize.h:173
ctfseeding::range2SeedingHits
void range2SeedingHits(DSTV const &dstv, HitExtractor::Hits &v, std::pair< A, B > const &sel)
Definition: HitExtractor.h:54
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:670
ctfseeding::HitExtractorSTRP::hasStereoHits
bool hasStereoHits
Definition: HitExtractorSTRP.h:89
ctfseeding::HitExtractorSTRP::HitExtractorSTRP
HitExtractorSTRP(GeomDetEnumerators::SubDetector subdet, TrackerDetSide side, int idLayer, float iminGoodCharge)
Definition: HitExtractorSTRP.cc:29
Event.h
ctfseeding::HitExtractorSTRP::theMaxRing
int theMaxRing
Definition: HitExtractorSTRP.h:82
GeomDetEnumerators::TEC
Definition: GeomDetEnumerators.h:16
HitExtractorSTRP.h
ctfseeding::HitExtractorSTRP::theSide
TrackerDetSide theSide
Definition: HitExtractorSTRP.h:79
TrackerTopology::tecRing
unsigned int tecRing(const DetId &id) const
ring id
Definition: TrackerTopology.h:217
edm::EventSetup
Definition: EventSetup.h:57
ctfseeding
Definition: SeedingLayerSetsBuilder.h:23
edmNew::DetSetVector::Range
std::pair< const_iterator, const_iterator > Range
Definition: DetSetVectorNew.h:232
ctfseeding::HitExtractorSTRP::cleanedOfClusters
void cleanedOfClusters(const TkTransientTrackingRecHitBuilder &ttrhBuilder, const edm::Event &ev, HitExtractor::Hits &hits, bool matched, unsigned int cleanFrom=0) const
Definition: HitExtractorSTRP.cc:114
get
#define get
ctfseeding::HitExtractorSTRP::theLayerSubDet
const GeomDetEnumerators::SubDetector theLayerSubDet
Definition: HitExtractorSTRP.h:78
ctfseeding::HitExtractor::Hits
std::vector< HitPointer > Hits
Definition: HitExtractor.h:28
ctfseeding::HitExtractorSTRP::useRingSelector
bool useRingSelector() const
Definition: HitExtractorSTRP.h:68
edmNew::DetSetVector
Definition: DetSetNew.h:13
HLT_2018_cff.maxRing
maxRing
Definition: HLT_2018_cff.py:44936
std
Definition: JetResolutionObject.h:76
DetId::rawId
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
TrackerTopology::tecDetIdWheelComparator
std::pair< DetId, SameLayerComparator > tecDetIdWheelComparator(uint32_t side, uint32_t wheel) const
Definition: TrackerTopology.h:540
ctfseeding::HitExtractorSTRP::minAbsZ
double minAbsZ
Definition: HitExtractorSTRP.h:81
SiStripMatchedRecHit2D
Definition: SiStripMatchedRecHit2D.h:8
relativeConstraints.empty
bool empty
Definition: relativeConstraints.py:46
ev
bool ev
Definition: Hydjet2Hadronizer.cc:95
relativeConstraints.ring
ring
Definition: relativeConstraints.py:68
DetLayer.h
EventSetup.h
ctfseeding::HitExtractor::minGoodCharge
float minGoodCharge
Definition: HitExtractor.h:47
ctfseeding::HitExtractorSTRP::theSkipClusters
edm::EDGetTokenT< SkipClustersCollection > theSkipClusters
Definition: HitExtractorSTRP.h:83
TrackingRecHitProjector.h
mps_fire.result
result
Definition: mps_fire.py:303
TrackerTopologyRcd
Definition: TrackerTopologyRcd.h:10
ctfseeding::HitExtractorSTRP::theMinRing
int theMinRing
Definition: HitExtractorSTRP.h:82
SiStripDetId
Detector identifier class for the strip tracker.
Definition: SiStripDetId.h:18
runEdmFileComparison.skipped
skipped
Definition: runEdmFileComparison.py:225
edm::Event
Definition: Event.h:73
OmniClusterRef::key
unsigned int key() const
Definition: OmniClusterRef.h:70
edm::InputTag
Definition: InputTag.h:15
edm::ConsumesCollector
Definition: ConsumesCollector.h:39
hit
Definition: SiStripHitEffFromCalibTree.cc:88
ctfseeding::HitExtractorSTRP::theMatchedHits
edm::EDGetTokenT< SiStripMatchedRecHit2DCollection > theMatchedHits
Definition: HitExtractorSTRP.h:84
ctfseeding::HitExtractorSTRP::hasRPhiHits
bool hasRPhiHits
Definition: HitExtractorSTRP.h:88
python.rootplot.root2matplotlib.replace
def replace(string, replacements)
Definition: root2matplotlib.py:444