CMS 3D CMS Logo

PixelTripletHLTGenerator.cc
Go to the documentation of this file.
4 
6 #include "ThirdHitRZPrediction.h"
9 
12 #include "ThirdHitCorrection.h"
15 #include <iostream>
16 
19 
22 
24 
26 
27 #include <cstdio>
28 #include <iostream>
29 
32 
33 using namespace std;
34 
37  useFixedPreFiltering(cfg.getParameter<bool>("useFixedPreFiltering")),
38  extraHitRZtolerance(cfg.getParameter<double>("extraHitRZtolerance")),
39  extraHitRPhitolerance(cfg.getParameter<double>("extraHitRPhitolerance")),
40  useMScat(cfg.getParameter<bool>("useMultScattering")),
41  useBend(cfg.getParameter<bool>("useBending")),
42  dphi(useFixedPreFiltering ? cfg.getParameter<double>("phiPreFiltering") : 0) {
43  edm::ParameterSet comparitorPSet = cfg.getParameter<edm::ParameterSet>("SeedComparitorPSet");
44  std::string comparitorName = comparitorPSet.getParameter<std::string>("ComponentName");
45  if (comparitorName != "none") {
46  theComparitor = SeedComparitorFactory::get()->create(comparitorName, comparitorPSet, iC);
47  }
48 }
49 
51 
54  desc.add<double>("extraHitRPhitolerance", 0.032);
55  desc.add<double>("extraHitRZtolerance", 0.037);
56  desc.add<bool>("useMultScattering", true);
57  desc.add<bool>("useBending", true);
58  desc.add<bool>("useFixedPreFiltering", false);
59  desc.add<double>("phiPreFiltering", 0.3);
60 
61  edm::ParameterSetDescription descComparitor;
62  descComparitor.add<std::string>("ComponentName", "none");
63  descComparitor.setAllowAnything(); // until we have moved SeedComparitor too to EDProducers
64  desc.add<edm::ParameterSetDescription>("SeedComparitorPSet", descComparitor);
65 }
66 
69  const edm::Event& ev,
70  const edm::EventSetup& es,
71  const SeedingLayerSetsHits::SeedingLayerSet& pairLayers,
72  const std::vector<SeedingLayerSetsHits::SeedingLayer>& thirdLayers) {
73  auto const& doublets = thePairGenerator->doublets(region, ev, es, pairLayers);
74  if (doublets.empty())
75  return;
76 
78  hitTriplets(region, result, ev, es, doublets, thirdLayers, nullptr, *theLayerCache);
79 }
80 
83  const edm::Event& ev,
84  const edm::EventSetup& es,
85  const HitDoublets& doublets,
86  const std::vector<SeedingLayerSetsHits::SeedingLayer>& thirdLayers,
87  std::vector<int>* tripletLastLayerIndex,
88  LayerCacheType& layerCache) {
89  if (theComparitor)
90  theComparitor->init(ev, es);
91 
92  int size = thirdLayers.size();
93  const RecHitsSortedInPhi* thirdHitMap[size];
94  vector<const DetLayer*> thirdLayerDetLayer(size, nullptr);
95  for (int il = 0; il < size; ++il) {
96  thirdHitMap[il] = &layerCache(thirdLayers[il], region, es);
97  thirdLayerDetLayer[il] = thirdLayers[il].detLayer();
98  }
99  hitTriplets(region, result, es, doublets, thirdHitMap, thirdLayerDetLayer, size, tripletLastLayerIndex);
100 }
101 
104  const edm::EventSetup& es,
105  const HitDoublets& doublets,
106  const RecHitsSortedInPhi** thirdHitMap,
107  const std::vector<const DetLayer*>& thirdLayerDetLayer,
108  const int nThirdLayers) {
109  hitTriplets(region, result, es, doublets, thirdHitMap, thirdLayerDetLayer, nThirdLayers, nullptr);
110 }
111 
114  const edm::EventSetup& es,
115  const HitDoublets& doublets,
116  const RecHitsSortedInPhi** thirdHitMap,
117  const std::vector<const DetLayer*>& thirdLayerDetLayer,
118  const int nThirdLayers,
119  std::vector<int>* tripletLastLayerIndex) {
120  auto outSeq = doublets.detLayer(HitDoublets::outer)->seqNum();
121 
122  float regOffset = region.origin().perp(); //try to take account of non-centrality (?)
123 
125  declareDynArray(ThirdHitCorrection, nThirdLayers, corrections);
126 
128 
129  using NodeInfo = KDTreeNodeInfo<unsigned int, 2>;
130  std::vector<NodeInfo> layerTree; // re-used throughout
131  std::vector<unsigned int> foundNodes; // re-used thoughout
132  foundNodes.reserve(100);
133 
134  declareDynArray(KDTreeLinkerAlgo<unsigned int>, nThirdLayers, hitTree);
135  float rzError[nThirdLayers]; //save maximum errors
136 
137  const float maxDelphi = region.ptMin() < 0.3f ? float(M_PI) / 4.f : float(M_PI) / 8.f; // FIXME move to config??
138  const float maxphi = M_PI + maxDelphi, minphi = -maxphi; // increase to cater for any range
139  const float safePhi = M_PI - maxDelphi; // sideband
140 
141  // fill the prediction vector
142  for (int il = 0; il < nThirdLayers; ++il) {
143  auto const& hits = *thirdHitMap[il];
144  ThirdHitRZPrediction<PixelRecoLineRZ>& pred = preds[il];
145  pred.initLayer(thirdLayerDetLayer[il]);
147 
148  corrections[il].init(es,
149  region.ptMin(),
150  *doublets.detLayer(HitDoublets::inner),
151  *doublets.detLayer(HitDoublets::outer),
152  *thirdLayerDetLayer[il],
153  useMScat,
154  useBend);
155 
156  layerTree.clear();
157  float minv = 999999.0f, maxv = -minv; // Initialise to extreme values in case no hits
158  float maxErr = 0.0f;
159  for (unsigned int i = 0; i != hits.size(); ++i) {
160  auto angle = hits.phi(i);
161  auto v = hits.gv(i);
162  //use (phi,r) for endcaps rather than (phi,z)
163  minv = std::min(minv, v);
164  maxv = std::max(maxv, v);
165  float myerr = hits.dv[i];
166  maxErr = std::max(maxErr, myerr);
167  layerTree.emplace_back(i, angle, v); // save it
168  // populate side-bands
169  if (angle > safePhi)
170  layerTree.emplace_back(i, angle - Geom::ftwoPi(), v);
171  else if (angle < -safePhi)
172  layerTree.emplace_back(i, angle + Geom::ftwoPi(), v);
173  }
174  KDTreeBox phiZ(minphi, maxphi, minv - 0.01f, maxv + 0.01f); // declare our bounds
175  //add fudge factors in case only one hit and also for floating-point inaccuracy
176  hitTree[il].build(layerTree, phiZ); // make KDtree
177  rzError[il] = maxErr; //save error
178  // std::cout << "layer " << thirdLayerDetLayer[il]->seqNum() << " " << layerTree.size() << std::endl;
179  }
180 
181  float imppar = region.originRBound();
182  float imppartmp = region.originRBound() + region.origin().perp();
183  float curv = PixelRecoUtilities::curvature(1.f / region.ptMin(), es);
184 
185  for (std::size_t ip = 0; ip != doublets.size(); ip++) {
186  auto xi = doublets.x(ip, HitDoublets::inner);
187  auto yi = doublets.y(ip, HitDoublets::inner);
188  auto zi = doublets.z(ip, HitDoublets::inner);
189  auto rvi = doublets.rv(ip, HitDoublets::inner);
190  auto xo = doublets.x(ip, HitDoublets::outer);
191  auto yo = doublets.y(ip, HitDoublets::outer);
192  auto zo = doublets.z(ip, HitDoublets::outer);
193  auto rvo = doublets.rv(ip, HitDoublets::outer);
194 
195  auto toPos = std::signbit(zo - zi);
196 
197  PixelRecoPointRZ point1(rvi, zi);
198  PixelRecoPointRZ point2(rvo, zo);
199  PixelRecoLineRZ line(point1, point2);
200  ThirdHitPredictionFromInvParabola predictionRPhi(xi - region.origin().x(),
201  yi - region.origin().y(),
202  xo - region.origin().x(),
203  yo - region.origin().y(),
204  imppar,
205  curv,
207 
208  ThirdHitPredictionFromInvParabola predictionRPhitmp(xi, yi, xo, yo, imppartmp, curv, extraHitRPhitolerance);
209 
210  // printf("++Constr %f %f %f %f %f %f %f\n",xi,yi,xo,yo,imppartmp,curv,extraHitRPhitolerance);
211 
212  // std::cout << ip << ": " << point1.r() << ","<< point1.z() << " "
213  // << point2.r() << ","<< point2.z() <<std::endl;
214 
215  for (int il = 0; il != nThirdLayers; ++il) {
216  const DetLayer* layer = thirdLayerDetLayer[il];
217  auto barrelLayer = layer->isBarrel();
218 
219  if ((!barrelLayer) & (toPos != std::signbit(layer->position().z())))
220  continue;
221 
222  if (hitTree[il].empty())
223  continue; // Don't bother if no hits
224 
225  auto const& hits = *thirdHitMap[il];
226 
227  auto& correction = corrections[il];
228 
229  correction.init(line, point2, outSeq);
230 
231  auto& predictionRZ = preds[il];
232 
233  predictionRZ.initPropagator(&line);
234  Range rzRange = predictionRZ();
235  correction.correctRZRange(rzRange);
236 
237  Range phiRange;
238  if (useFixedPreFiltering) {
239  float phi0 = doublets.phi(ip, HitDoublets::outer);
240  phiRange = Range(phi0 - dphi, phi0 + dphi);
241  } else {
242  Range radius;
243  if (barrelLayer) {
244  radius = predictionRZ.detRange();
245  } else {
246  radius =
247  Range(max(rzRange.min(), predictionRZ.detSize().min()), min(rzRange.max(), predictionRZ.detSize().max()));
248  }
249  if (radius.empty())
250  continue;
251 
252  // std::cout << "++R " << radius.min() << " " << radius.max() << std::endl;
253 
254  auto rPhi1 = predictionRPhitmp(radius.max());
255  bool ok1 = !rPhi1.empty();
256  if (ok1) {
257  correction.correctRPhiRange(rPhi1);
258  rPhi1.first /= radius.max();
259  rPhi1.second /= radius.max();
260  }
261  auto rPhi2 = predictionRPhitmp(radius.min());
262  bool ok2 = !rPhi2.empty();
263  if (ok2) {
264  correction.correctRPhiRange(rPhi2);
265  rPhi2.first /= radius.min();
266  rPhi2.second /= radius.min();
267  }
268 
269  if (ok1) {
270  rPhi1.first = normalizedPhi(rPhi1.first);
271  rPhi1.second = proxim(rPhi1.second, rPhi1.first);
272  if (ok2) {
273  rPhi2.first = proxim(rPhi2.first, rPhi1.first);
274  rPhi2.second = proxim(rPhi2.second, rPhi1.first);
275  phiRange = rPhi1.sum(rPhi2);
276  } else
277  phiRange = rPhi1;
278  } else if (ok2) {
279  rPhi2.first = normalizedPhi(rPhi2.first);
280  rPhi2.second = proxim(rPhi2.second, rPhi2.first);
281  phiRange = rPhi2;
282  } else
283  continue;
284  }
285 
286  constexpr float nSigmaRZ = 3.46410161514f; // std::sqrt(12.f); // ...and continue as before
287  constexpr float nSigmaPhi = 3.f;
288 
289  foundNodes.clear(); // Now recover hits in bounding box...
290  float prmin = phiRange.min(), prmax = phiRange.max();
291 
292  if (prmax - prmin > maxDelphi) {
293  auto prm = phiRange.mean();
294  prmin = prm - 0.5f * maxDelphi;
295  prmax = prm + 0.5f * maxDelphi;
296  }
297 
298  if (barrelLayer) {
299  Range regMax = predictionRZ.detRange();
300  Range regMin = predictionRZ(regMax.min() - regOffset);
301  regMax = predictionRZ(regMax.max() + regOffset);
302  correction.correctRZRange(regMin);
303  correction.correctRZRange(regMax);
304  if (regMax.min() < regMin.min()) {
305  swap(regMax, regMin);
306  }
307  KDTreeBox phiZ(prmin, prmax, regMin.min() - nSigmaRZ * rzError[il], regMax.max() + nSigmaRZ * rzError[il]);
308  hitTree[il].search(phiZ, foundNodes);
309  } else {
310  KDTreeBox phiZ(prmin,
311  prmax,
312  rzRange.min() - regOffset - nSigmaRZ * rzError[il],
313  rzRange.max() + regOffset + nSigmaRZ * rzError[il]);
314  hitTree[il].search(phiZ, foundNodes);
315  }
316 
317  // std::cout << ip << ": " << thirdLayerDetLayer[il]->seqNum() << " " << foundNodes.size() << " " << prmin << " " << prmax << std::endl;
318 
319  // int kk=0;
320  for (auto KDdata : foundNodes) {
321  if (theMaxElement != 0 && result.size() >= theMaxElement) {
322  result.clear();
323  if (tripletLastLayerIndex)
324  tripletLastLayerIndex->clear();
325  edm::LogError("TooManyTriplets") << " number of triples exceeds maximum. no triplets produced.";
326  return;
327  }
328 
329  float p3_u = hits.u[KDdata];
330  float p3_v = hits.v[KDdata];
331  float p3_phi = hits.lphi[KDdata];
332 
333  //if ((kk++)%100==0)
334  //std::cout << kk << ": " << p3_u << " " << p3_v << " " << p3_phi << std::endl;
335 
336  Range allowed = predictionRZ(p3_u);
337  correction.correctRZRange(allowed);
338  float vErr = nSigmaRZ * hits.dv[KDdata];
339  Range hitRange(p3_v - vErr, p3_v + vErr);
340  Range crossingRange = allowed.intersection(hitRange);
341  if (crossingRange.empty())
342  continue;
343 
344  float ir = 1.f / hits.rv(KDdata);
345  // limit error to 90 degree
346  constexpr float maxPhiErr = 0.5 * M_PI;
347  float phiErr = nSigmaPhi * hits.drphi[KDdata] * ir;
348  phiErr = std::min(maxPhiErr, phiErr);
349  bool nook = true;
350  for (int icharge = -1; icharge <= 1; icharge += 2) {
351  Range rangeRPhi = predictionRPhi(hits.rv(KDdata), icharge);
352  if (rangeRPhi.first > rangeRPhi.second)
353  continue; // range is empty
354  correction.correctRPhiRange(rangeRPhi);
355  if (checkPhiInRange(p3_phi, rangeRPhi.first * ir - phiErr, rangeRPhi.second * ir + phiErr, maxPhiErr)) {
356  // insert here check with comparitor
357  OrderedHitTriplet hittriplet(
358  doublets.hit(ip, HitDoublets::inner), doublets.hit(ip, HitDoublets::outer), hits.theHits[KDdata].hit());
359  if (!theComparitor || theComparitor->compatible(hittriplet)) {
360  result.push_back(hittriplet);
361  // to bookkeep the triplets and 3rd layers in triplet EDProducer
362  if (tripletLastLayerIndex)
363  tripletLastLayerIndex->push_back(il);
364  } else {
365  LogDebug("RejectedTriplet") << "rejected triplet from comparitor ";
366  }
367  nook = false;
368  break;
369  }
370  }
371  if (nook)
372  LogDebug("RejectedTriplet") << "rejected triplet from second phicheck " << p3_phi;
373  }
374  }
375  }
376  // std::cout << "triplets " << result.size() << std::endl;
377 }
nSigmaRZ
constexpr double nSigmaRZ
Definition: PixelTripletLargeTipGenerator.cc:43
HitTripletGeneratorFromPairAndLayers::fillDescriptions
static void fillDescriptions(edm::ParameterSetDescription &desc)
Definition: HitTripletGeneratorFromPairAndLayers.cc:14
KDTreeLinkerAlgo.h
HLT_2018_cff.extraHitRPhitolerance
extraHitRPhitolerance
Definition: HLT_2018_cff.py:8543
checkPhiInRange
constexpr bool checkPhiInRange(T phi, T phi1, T phi2, float maxDphi=float(M_PI))
Definition: normalizedPhi.h:33
nSigmaPhi
constexpr float nSigmaPhi
Definition: PixelTripletLargeTipGenerator.cc:44
electrons_cff.bool
bool
Definition: electrons_cff.py:372
mps_fire.i
i
Definition: mps_fire.py:355
edm::ParameterSetDescription::add
ParameterDescriptionBase * add(U const &iLabel, T const &value)
Definition: ParameterSetDescription.h:95
PixelTripletHLTGenerator::extraHitRZtolerance
const float extraHitRZtolerance
Definition: PixelTripletHLTGenerator.h:68
MessageLogger.h
dqmMemoryStats.float
float
Definition: dqmMemoryStats.py:127
TrackerGeometry.h
hfClusterShapes_cfi.hits
hits
Definition: hfClusterShapes_cfi.py:5
ESHandle.h
DetLayer
Definition: DetLayer.h:21
ThirdHitRZPredictionBase::initLayer
void initLayer(const DetLayer *layer)
Definition: ThirdHitRZPredictionBase.cc:17
f
double f[11][100]
Definition: MuScleFitUtils.cc:78
Range
PixelRecoRange< float > Range
Definition: PixelTripletHLTGenerator.cc:31
HitDoublets::outer
Definition: RecHitsSortedInPhi.h:126
ThirdHitCorrection
Definition: ThirdHitCorrection.h:16
min
T min(T a, T b)
Definition: MathUtil.h:58
PixelTripletHLTGenerator::extraHitRPhitolerance
const float extraHitRPhitolerance
Definition: PixelTripletHLTGenerator.h:69
edm::swap
void swap(Association< C > &lhs, Association< C > &rhs)
Definition: Association.h:117
hybridSuperClusters_cfi.xi
xi
Definition: hybridSuperClusters_cfi.py:10
ThirdHitPredictionFromInvParabola.h
PixelTripletHLTGenerator::~PixelTripletHLTGenerator
~PixelTripletHLTGenerator() override
Definition: PixelTripletHLTGenerator.cc:50
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
PixelTripletHLTGenerator::hitTriplets
void hitTriplets(const TrackingRegion &region, OrderedHitTriplets &trs, const edm::Event &ev, const edm::EventSetup &es, const SeedingLayerSetsHits::SeedingLayerSet &pairLayers, const std::vector< SeedingLayerSetsHits::SeedingLayer > &thirdLayers) override
Definition: PixelTripletHLTGenerator.cc:67
cms::cuda::assert
assert(be >=bs)
proxim
constexpr T proxim(T b, T a)
Definition: normalizedPhi.h:14
PixelTripletHLTGenerator::useFixedPreFiltering
const bool useFixedPreFiltering
Definition: PixelTripletHLTGenerator.h:67
findQualityFiles.v
v
Definition: findQualityFiles.py:179
GeometricSearchDet::position
virtual const Surface::PositionType & position() const
Returns position of the surface.
Definition: GeometricSearchDet.h:31
PixelRecoUtilities::curvature
T curvature(T InversePt, const edm::EventSetup &iSetup)
Definition: PixelRecoUtilities.h:42
PixelTripletHLTGenerator::useBend
const bool useBend
Definition: PixelTripletHLTGenerator.h:71
PixelTripletHLTGenerator::PixelTripletHLTGenerator
PixelTripletHLTGenerator(const edm::ParameterSet &cfg, edm::ConsumesCollector &&iC)
Definition: PixelTripletHLTGenerator.h:24
PV3DBase::z
T z() const
Definition: PV3DBase.h:61
HLT_2018_cff.doublets
doublets
Definition: HLT_2018_cff.py:8544
LayerHitMapCache
Definition: LayerHitMapCache.h:14
RecHitsSortedInPhi.h
ThirdHitRZPrediction
Definition: ThirdHitRZPrediction.h:14
HitTripletGeneratorFromPairAndLayers::thePairGenerator
std::unique_ptr< HitPairGeneratorFromLayerPair > thePairGenerator
Definition: HitTripletGeneratorFromPairAndLayers.h:55
HitTripletGeneratorFromPairAndLayers
Definition: HitTripletGeneratorFromPairAndLayers.h:25
normalizedPhi
constexpr T normalizedPhi(T phi)
Definition: normalizedPhi.h:8
KDTreeBox
Definition: KDTreeLinkerAlgo.h:14
declareDynArray
#define declareDynArray(T, n, x)
Definition: DynArray.h:91
KDTreeLinkerAlgo
Definition: KDTreeLinkerAlgo.h:102
RecHitsSortedInPhi::Hit
BaseTrackerRecHit const * Hit
Definition: RecHitsSortedInPhi.h:19
PixelRecoUtilities.h
ParameterSetDescription.h
PixelRecoRange::intersection
PixelRecoRange< T > intersection(const PixelRecoRange< T > &r) const
Definition: PixelRecoRange.h:40
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
PixelTripletHLTGenerator::dphi
const float dphi
Definition: PixelTripletHLTGenerator.h:72
RecHitsSortedInPhi
Definition: RecHitsSortedInPhi.h:17
TrackerDigiGeometryRecord.h
PixelRecoRange< float >
HitDoublets
Definition: RecHitsSortedInPhi.h:124
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:670
edm::ParameterSet
Definition: ParameterSet.h:36
edm::LogError
Definition: MessageLogger.h:183
SeedComparitorFactory.h
SiStripPI::max
Definition: SiStripPayloadInspectorHelper.h:169
OrderedHitTriplets
Definition: OrderedHitTriplets.h:9
Pi.h
pfMETCorrectionType0_cfi.correction
correction
Definition: pfMETCorrectionType0_cfi.py:39
HLT_2018_cff.extraHitRZtolerance
extraHitRZtolerance
Definition: HLT_2018_cff.py:44971
PixelTripletHLTGenerator.h
normalizedPhi.h
PixelRecoLineRZ
Definition: PixelRecoLineRZ.h:12
M_PI
#define M_PI
Definition: BXVectorInputProducer.cc:50
ThirdHitCorrection.h
edm::EventSetup
Definition: EventSetup.h:57
edm::ParameterSetDescription::setAllowAnything
void setAllowAnything()
allow any parameter label/value pairs
Definition: ParameterSetDescription.cc:37
KDTreeNodeInfo
Definition: KDTreeLinkerAlgo.h:34
get
#define get
DynArray.h
PixelRecoPointRZ
Definition: PixelRecoPointRZ.h:6
looper.cfg
cfg
Definition: looper.py:297
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
HitTripletGeneratorFromPairAndLayers::theLayerCache
LayerCacheType * theLayerCache
Definition: HitTripletGeneratorFromPairAndLayers.h:56
SeedComparitor.h
std
Definition: JetResolutionObject.h:76
HitTripletGeneratorFromPairAndLayers::theMaxElement
const unsigned int theMaxElement
Definition: HitTripletGeneratorFromPairAndLayers.h:57
PixelTripletHLTGenerator::theComparitor
std::unique_ptr< SeedComparitor > theComparitor
Definition: PixelTripletHLTGenerator.h:73
HitPairGeneratorFromLayerPair.h
Geom::ftwoPi
constexpr float ftwoPi()
Definition: Pi.h:36
relativeConstraints.empty
bool empty
Definition: relativeConstraints.py:46
ev
bool ev
Definition: Hydjet2Hadronizer.cc:95
HitDoublets::inner
Definition: RecHitsSortedInPhi.h:126
SeedingLayerSetsHits::SeedingLayerSet
Definition: SeedingLayerSetsHits.h:65
CosmicsPD_Skims.radius
radius
Definition: CosmicsPD_Skims.py:135
HLT_2018_cff.region
region
Definition: HLT_2018_cff.py:81479
OrderedHitTriplet
Definition: OrderedHitTriplet.h:11
angle
T angle(T x1, T y1, T z1, T x2, T y2, T z2)
Definition: angle.h:11
PixelTripletHLTGenerator::useMScat
const bool useMScat
Definition: PixelTripletHLTGenerator.h:70
ThirdHitPredictionFromInvParabola
Definition: ThirdHitPredictionFromInvParabola.h:33
pixelrecoutilities::LongitudinalBendingCorrection
Definition: LongitudinalBendingCorrection.h:6
TrackingRegion
Definition: TrackingRegion.h:38
mps_fire.result
result
Definition: mps_fire.py:303
HLT_2018_cff.useFixedPreFiltering
useFixedPreFiltering
Definition: HLT_2018_cff.py:44970
ThirdHitRZPrediction.h
PixelTripletHLTGenerator::fillDescriptions
static void fillDescriptions(edm::ParameterSetDescription &desc)
Definition: PixelTripletHLTGenerator.cc:52
edm::Event
Definition: Event.h:73
mps_splice.line
line
Definition: mps_splice.py:76
edm::ConsumesCollector
Definition: ConsumesCollector.h:39
DetLayer::isBarrel
bool isBarrel() const
Definition: DetLayer.h:31
Hit
SeedingHitSet::ConstRecHitPointer Hit
Definition: SeedGeneratorFromProtoTracksEDProducer.cc:34
findQualityFiles.size
size
Write out results.
Definition: findQualityFiles.py:443
ThirdHitRZPredictionBase::initTolerance
void initTolerance(float tolerance)
Definition: ThirdHitRZPredictionBase.h:29