CMS 3D CMS Logo

CkfTrackCandidateMakerBase.cc
Go to the documentation of this file.
7 
12 
14 
19 
25 
27 
29 
32 
34 
35 #include <algorithm>
36 #include <functional>
37 
38 // #define VI_SORTSEED
39 // #define VI_REPRODUCIBLE
40 // #define VI_TBB
41 
42 #include <thread>
43 #ifdef VI_TBB
44 #include "tbb/parallel_for.h"
45 #endif
46 
48 
49 using namespace edm;
50 using namespace std;
51 
52 namespace {
53  std::unique_ptr<BaseCkfTrajectoryBuilder> createBaseCkfTrajectoryBuilder(const edm::ParameterSet& pset,
55  return BaseCkfTrajectoryBuilderFactory::get()->create(pset.getParameter<std::string>("ComponentType"), pset, iC);
56  }
57 } // namespace
58 
59 namespace cms {
60  CkfTrackCandidateMakerBase::CkfTrackCandidateMakerBase(edm::ParameterSet const& conf, edm::ConsumesCollector&& iC)
61  : theTrackCandidateOutput(true),
62  theTrajectoryOutput(false),
63  useSplitting(conf.getParameter<bool>("useHitsSplitting")),
64  doSeedingRegionRebuilding(conf.getParameter<bool>("doSeedingRegionRebuilding")),
65  cleanTrajectoryAfterInOut(conf.getParameter<bool>("cleanTrajectoryAfterInOut")),
66  reverseTrajectories(conf.existsAs<bool>("reverseTrajectories") &&
67  conf.getParameter<bool>("reverseTrajectories")),
68  theMaxNSeeds(conf.getParameter<unsigned int>("maxNSeeds")),
69  theTrajectoryBuilder(
70  createBaseCkfTrajectoryBuilder(conf.getParameter<edm::ParameterSet>("TrajectoryBuilderPSet"), iC)),
71  theTrajectoryCleanerName(conf.getParameter<std::string>("TrajectoryCleaner")),
72  theTrajectoryCleaner(nullptr),
73  theInitialState(std::make_unique<TransientInitialStateEstimator>(
74  conf.getParameter<ParameterSet>("TransientInitialStateEstimatorParameters"))),
75  theMagFieldName(conf.exists("SimpleMagneticField") ? conf.getParameter<std::string>("SimpleMagneticField")
76  : ""),
77  theNavigationSchoolName(conf.getParameter<std::string>("NavigationSchool")),
78  theNavigationSchool(nullptr),
79  maxSeedsBeforeCleaning_(0),
80  theMTELabel(iC.consumes<MeasurementTrackerEvent>(conf.getParameter<edm::InputTag>("MeasurementTrackerEvent"))),
81  skipClusters_(false),
82  phase2skipClusters_(false) {
84 #ifndef VI_REPRODUCIBLE
85  if (conf.exists("maxSeedsBeforeCleaning"))
86  maxSeedsBeforeCleaning_ = conf.getParameter<unsigned int>("maxSeedsBeforeCleaning");
87 #endif
88  if (conf.existsAs<edm::InputTag>("clustersToSkip")) {
89  skipClusters_ = true;
90  maskPixels_ = iC.consumes<PixelClusterMask>(conf.getParameter<edm::InputTag>("clustersToSkip"));
91  maskStrips_ = iC.consumes<StripClusterMask>(conf.getParameter<edm::InputTag>("clustersToSkip"));
92  }
93  //FIXME:: just temporary solution for phase2!
94  if (conf.existsAs<edm::InputTag>("phase2clustersToSkip")) {
95  phase2skipClusters_ = true;
96  maskPixels_ = iC.consumes<PixelClusterMask>(conf.getParameter<edm::InputTag>("phase2clustersToSkip"));
97  maskPhase2OTs_ = iC.consumes<Phase2OTClusterMask>(conf.getParameter<edm::InputTag>("phase2clustersToSkip"));
98  }
99 #ifndef VI_REPRODUCIBLE
100  std::string cleaner = conf.getParameter<std::string>("RedundantSeedCleaner");
101  if (cleaner == "CachingSeedCleanerBySharedInput") {
103  conf.existsAs<int>("numHitsForSeedCleaner") ? conf.getParameter<int>("numHitsForSeedCleaner") : 4;
104  int onlyPixelHits = conf.existsAs<bool>("onlyPixelHitsForSeedCleaner")
105  ? conf.getParameter<bool>("onlyPixelHitsForSeedCleaner")
106  : false;
107  theSeedCleaner = std::make_unique<CachingSeedCleanerBySharedInput>(numHitsForSeedCleaner, onlyPixelHits);
108  } else if (cleaner != "none") {
109  throw cms::Exception("RedundantSeedCleaner not found, please use CachingSeedCleanerBySharedInput ro none",
110  cleaner);
111  }
112 #endif
113 
114 #ifdef VI_REPRODUCIBLE
115  std::cout << "CkfTrackCandidateMaker in reproducible setting" << std::endl;
116  assert(nullptr == theSeedCleaner);
118 #endif
119  }
120 
121  // Virtual destructor needed.
123 
124  void CkfTrackCandidateMakerBase::beginRunBase(edm::Run const& r, EventSetup const& es) { /* no op*/
125  }
126 
128  //services
131  // edm::ESInputTag mfESInputTag(mfName);
132  // es.get<IdealMagneticFieldRecord>().get(mfESInputTag,theMagField );
133 
134  edm::ESHandle<TrajectoryCleaner> trajectoryCleanerH;
135  es.get<TrajectoryCleaner::Record>().get(theTrajectoryCleanerName, trajectoryCleanerH);
136  theTrajectoryCleaner = trajectoryCleanerH.product();
137 
138  edm::ESHandle<NavigationSchool> navigationSchoolH;
139  es.get<NavigationSchoolRecord>().get(theNavigationSchoolName, navigationSchoolH);
140  theNavigationSchool = navigationSchoolH.product();
141  theTrajectoryBuilder->setNavigationSchool(theNavigationSchool);
142  }
143 
144  // Functions that gets called by framework every event
146  // getting objects from the EventSetup
147  setEventSetup(es);
148 
149  // set the correct navigation
150  // NavigationSetter setter( *theNavigationSchool);
151 
152  // propagator
153  edm::ESHandle<Propagator> thePropagator;
154  es.get<TrackingComponentsRecord>().get("AnyDirectionAnalyticalPropagator", thePropagator);
155 
156  // method for Debugging
158 
159  // Step A: set Event for the TrajectoryBuilder
161  e.getByToken(theMTELabel, data);
162 
163  std::unique_ptr<MeasurementTrackerEvent> dataWithMasks;
164  if (skipClusters_) {
166  e.getByToken(maskPixels_, pixelMask);
168  e.getByToken(maskStrips_, stripMask);
169  dataWithMasks = std::make_unique<MeasurementTrackerEvent>(*data, *stripMask, *pixelMask);
170  //std::cout << "Trajectory builder " << conf_.getParameter<std::string>("@module_label") << " created with masks " << std::endl;
171  theTrajectoryBuilder->setEvent(e, es, &*dataWithMasks);
172  } else if (phase2skipClusters_) {
173  //FIXME:just temporary solution for phase2!
175  e.getByToken(maskPixels_, pixelMask);
177  e.getByToken(maskPhase2OTs_, phase2OTMask);
178  dataWithMasks = std::make_unique<MeasurementTrackerEvent>(*data, *pixelMask, *phase2OTMask);
179  //std::cout << "Trajectory builder " << conf_.getParameter<std::string>("@module_label") << " created with phase2 masks " << std::endl;
180  theTrajectoryBuilder->setEvent(e, es, &*dataWithMasks);
181  } else {
182  //std::cout << "Trajectory builder " << conf_.getParameter<std::string>("@module_label") << " created without masks " << std::endl;
183  theTrajectoryBuilder->setEvent(e, es, &*data);
184  }
185  // TISE ES must be set here due to dependence on theTrajectoryBuilder
186  theInitialState->setEventSetup(
187  es, static_cast<TkTransientTrackingRecHitBuilder const*>(theTrajectoryBuilder->hitBuilder())->cloner());
188 
189  // Step B: Retrieve seeds
190 
192  e.getByToken(theSeedLabel, collseed);
193 
194  // Step C: Create empty output collection
195  auto output = std::make_unique<TrackCandidateCollection>();
196  auto outputT = std::make_unique<std::vector<Trajectory>>();
197  auto outputSeedStopInfos = std::make_unique<std::vector<SeedStopInfo>>(collseed->size());
198 
199  if ((*collseed).size() > theMaxNSeeds) {
200  LogError("TooManySeeds") << "Exceeded maximum numeber of seeds! theMaxNSeeds=" << theMaxNSeeds
201  << " nSeed=" << (*collseed).size();
203  e.put(std::move(output));
204  }
205  if (theTrajectoryOutput) {
206  e.put(std::move(outputT));
207  }
208  e.put(std::move(outputSeedStopInfos));
209  return;
210  }
211 
212  // Step D: Invoke the building algorithm
213  if (!(*collseed).empty()) {
214  unsigned int lastCleanResult = 0;
215  std::vector<Trajectory> rawResult;
216  rawResult.reserve(collseed->size() * 4);
217 
218  if (theSeedCleaner)
219  theSeedCleaner->init(&rawResult);
220 
221  // method for debugging
223 
224  // the mutex
225  std::mutex theMutex;
226  using Lock = std::unique_lock<std::mutex>;
227 
228  // Loop over seeds
229  size_t collseed_size = collseed->size();
230 
231  unsigned int indeces[collseed_size];
232  for (auto i = 0U; i < collseed_size; ++i)
233  indeces[i] = i;
234 
235 #ifdef VI_SORTSEED
236  // std::random_shuffle(indeces,indeces+collseed_size);
237 
238  // here only for reference: does not seems to help
239 
240  auto const& seeds = *collseed;
241 
242  float val[collseed_size];
243  for (auto i = 0U; i < collseed_size; ++i) {
244  val[i] = seeds[i].startingState().pt();
245  };
246  // { val[i] = std::abs((*seeds[i].recHits().first).surface()->eta());}
247 
248  /*
249  unsigned long long val[collseed_size];
250  for (auto i=0U; i< collseed_size; ++i) {
251  if (seeds[i].nHits()<2) { val[i]=0; continue;}
252  auto h = seeds[i].recHits().first;
253  auto const & hit = static_cast<BaseTrackerRecHit const&>(*h);
254  val[i] = hit.firstClusterRef().key();
255  if (++h != seeds[i].recHits().second) {
256  auto const & hit = static_cast<BaseTrackerRecHit const&>(*h);
257  val[i] |= (unsigned long long)(hit.firstClusterRef().key())<<32;
258  }
259  }
260  */
261  std::sort(indeces, indeces + collseed_size, [&](unsigned int i, unsigned int j) { return val[i] < val[j]; });
262 
263  // std::cout << spt(indeces[0]) << ' ' << spt(indeces[collseed_size-1]) << std::endl;
264 #endif
265 
266  std::atomic<unsigned int> ntseed(0);
267  auto theLoop = [&](size_t ii) {
268  auto j = indeces[ii];
269 
270  ntseed++;
271 
272  // to be moved inside a par section (how with tbb??)
273  std::vector<Trajectory> theTmpTrajectories;
274 
275  LogDebug("CkfPattern") << "======== Begin to look for trajectories from seed " << j << " ========\n";
276 
277  {
278  Lock lock(theMutex);
279  // Check if seed hits already used by another track
280  if (theSeedCleaner && !theSeedCleaner->good(&((*collseed)[j]))) {
281  LogDebug("CkfTrackCandidateMakerBase") << " Seed cleaning kills seed " << j;
282  (*outputSeedStopInfos)[j].setStopReason(SeedStopReason::SEED_CLEANING);
283  return; // from the lambda!
284  }
285  }
286 
287  // Build trajectory from seed outwards
288  theTmpTrajectories.clear();
289  unsigned int nCandPerSeed = 0;
290  auto const& startTraj =
291  theTrajectoryBuilder->buildTrajectories((*collseed)[j], theTmpTrajectories, nCandPerSeed, nullptr);
292  {
293  Lock lock(theMutex);
294  (*outputSeedStopInfos)[j].setCandidatesPerSeed(nCandPerSeed);
295  if (theTmpTrajectories.empty()) {
296  (*outputSeedStopInfos)[j].setStopReason(SeedStopReason::NO_TRAJECTORY);
297  return; // from the lambda!
298  }
299  }
300 
301  LogDebug("CkfPattern") << "======== In-out trajectory building found " << theTmpTrajectories.size()
302  << " trajectories from seed " << j << " ========\n"
303  << PrintoutHelper::dumpCandidates(theTmpTrajectories);
304 
306  // Select the best trajectory from this seed (declare others invalid)
307  theTrajectoryCleaner->clean(theTmpTrajectories);
308 
309  LogDebug("CkfPattern") << "======== In-out trajectory cleaning gave the following "
310  << theTmpTrajectories.size() << " valid trajectories from seed " << j << " ========\n"
311  << PrintoutHelper::dumpCandidates(theTmpTrajectories);
312  }
313 
314  // Optionally continue building trajectory back through
315  // seed and if possible further inwards.
316 
318  theTrajectoryBuilder->rebuildTrajectories(startTraj, (*collseed)[j], theTmpTrajectories);
319 
320  LogDebug("CkfPattern") << "======== Out-in trajectory building found " << theTmpTrajectories.size()
321  << " valid/invalid trajectories from seed " << j << " ========\n"
322  << PrintoutHelper::dumpCandidates(theTmpTrajectories);
323  if (theTmpTrajectories.empty()) {
324  Lock lock(theMutex);
325  (*outputSeedStopInfos)[j].setStopReason(SeedStopReason::SEED_REGION_REBUILD);
326  return;
327  }
328  }
329 
330  // Select the best trajectory from this seed (after seed region rebuilding, can be more than one)
331  theTrajectoryCleaner->clean(theTmpTrajectories);
332 
333  LogDebug("CkfPattern") << "======== Trajectory cleaning gave the following " << theTmpTrajectories.size()
334  << " valid trajectories from seed " << j << " ========\n"
335  << PrintoutHelper::dumpCandidates(theTmpTrajectories);
336 
337  {
338  Lock lock(theMutex);
339  for (vector<Trajectory>::iterator it = theTmpTrajectories.begin(); it != theTmpTrajectories.end(); it++) {
340  if (it->isValid()) {
341  it->setSeedRef(collseed->refAt(j));
342  (*outputSeedStopInfos)[j].setStopReason(SeedStopReason::NOT_STOPPED);
343  // Store trajectory
344  rawResult.push_back(std::move(*it));
345  // Tell seed cleaner which hits this trajectory used.
346  //TO BE FIXED: this cut should be configurable via cfi file
347  if (theSeedCleaner && rawResult.back().foundHits() > 3)
348  theSeedCleaner->add(&rawResult.back());
349  //if (theSeedCleaner ) theSeedCleaner->add( & (*it) );
350  }
351  }
352  }
353 
354  theTmpTrajectories.clear();
355 
356  LogDebug("CkfPattern") << "rawResult trajectories found so far = " << rawResult.size();
357 
358  {
359  Lock lock(theMutex);
360  if (maxSeedsBeforeCleaning_ > 0 && rawResult.size() > maxSeedsBeforeCleaning_ + lastCleanResult) {
361  theTrajectoryCleaner->clean(rawResult);
362  rawResult.erase(
363  std::remove_if(rawResult.begin() + lastCleanResult, rawResult.end(), std::not_fn(&Trajectory::isValid)),
364  rawResult.end());
365  lastCleanResult = rawResult.size();
366  }
367  }
368  };
369  // end of loop over seeds
370 
371 #ifdef VI_TBB
372  tbb::parallel_for(0UL, collseed_size, 1UL, theLoop);
373 #else
374 #ifdef VI_OMP
375 #pragma omp parallel for schedule(dynamic, 4)
376 #endif
377  for (size_t j = 0; j < collseed_size; j++) {
378  theLoop(j);
379  }
380 #endif
381  assert(ntseed == collseed_size);
382  if (theSeedCleaner)
383  theSeedCleaner->done();
384 
385  // std::cout << "VICkfPattern " << "rawResult trajectories found = " << rawResult.size() << " in " << ntseed << " seeds " << collseed_size << std::endl;
386 
387 #ifdef VI_REPRODUCIBLE
388  // sort trajectory
389  std::sort(rawResult.begin(), rawResult.end(), [](const Trajectory& a, const Trajectory& b) {
390  return a.seedRef().key() < b.seedRef().key();
391  });
392  //{ return a.chiSquared()*b.ndof() < b.chiSquared()*a.ndof();});
393 #endif
394 
395  // Step E: Clean the results to avoid duplicate tracks
396  // Rejected ones just flagged as invalid.
397  theTrajectoryCleaner->clean(rawResult);
398 
399  LogDebug("CkfPattern") << "======== Final cleaning of entire event found " << rawResult.size()
400  << " valid/invalid trajectories =======" << endl
401  << PrintoutHelper::dumpCandidates(rawResult);
402 
403  LogDebug("CkfPattern") << "removing invalid trajectories.";
404 
405  // Assuming here that theLoop() gives at most one Trajectory per seed
406  for (const auto& traj : rawResult) {
407  if (!traj.isValid()) {
408  const auto seedIndex = traj.seedRef().key();
409  if ((*outputSeedStopInfos)[seedIndex].stopReason() == SeedStopReason::NOT_STOPPED) {
410  (*outputSeedStopInfos)[seedIndex].setStopReason(SeedStopReason::FINAL_CLEAN);
411  }
412  }
413  }
414 
415  vector<Trajectory>& unsmoothedResult(rawResult);
416  unsmoothedResult.erase(
417  std::remove_if(unsmoothedResult.begin(), unsmoothedResult.end(), std::not_fn(&Trajectory::isValid)),
418  unsmoothedResult.end());
419  unsmoothedResult.shrink_to_fit();
420  // If requested, reverse the trajectories creating a new 1-hit seed on the last measurement of the track
421  if (reverseTrajectories) {
422  for (auto it = unsmoothedResult.begin(), ed = unsmoothedResult.end(); it != ed; ++it) {
423  // reverse the trajectory only if it has valid hit on the last measurement (should happen)
424  if (it->lastMeasurement().updatedState().isValid() && it->lastMeasurement().recHit().get() != nullptr &&
425  it->lastMeasurement().recHit()->isValid()) {
426  // I can't use reverse in place, because I want to change the seed
427  // 1) reverse propagation direction
428  PropagationDirection direction = it->direction();
429  if (direction == alongMomentum)
430  direction = oppositeToMomentum;
431  else if (direction == oppositeToMomentum)
432  direction = alongMomentum;
433  // 2) make a seed
434  TrajectoryStateOnSurface const& initState = it->lastMeasurement().updatedState();
435  auto initId = it->lastMeasurement().recHitR().rawId();
438  hits.push_back(it->lastMeasurement().recHit()->hit()->clone());
439  // 3) make a trajectory
440  Trajectory trajectory{std::make_shared<TrajectorySeed>(state, std::move(hits), direction), direction};
441  trajectory.setNLoops(it->nLoops());
442  trajectory.setSeedRef(it->seedRef());
443  trajectory.setStopReason(it->stopReason());
444  // 4) push states in reversed order
445  Trajectory::DataContainer& meas = it->measurements();
446  trajectory.reserve(meas.size());
447  for (auto itmeas = meas.rbegin(), endmeas = meas.rend(); itmeas != endmeas; ++itmeas) {
448  trajectory.push(std::move(*itmeas));
449  }
450  // replace
451  (*it) = std::move(trajectory);
452  } else {
453  edm::LogWarning("CkfPattern_InvalidLastMeasurement")
454  << "Last measurement of the trajectory is invalid, cannot reverse it";
455  }
456  }
457  }
458 
459  int viTotHits = 0;
460 
462  // Step F: Convert to TrackCandidates
463  output->reserve(unsmoothedResult.size());
464  Traj2TrackHits t2t(theTrajectoryBuilder->hitBuilder(), true);
465 
466  for (vector<Trajectory>::const_iterator it = unsmoothedResult.begin(); it != unsmoothedResult.end(); ++it) {
467  LogDebug("CkfPattern") << "copying " << (useSplitting ? "splitted" : "un-splitted")
468  << " hits from trajectory";
470  if (it->direction() != alongMomentum)
471  LogDebug("CkfPattern") << "not along momentum... " << std::endl;
472  t2t(*it, recHits, useSplitting);
473 
474  viTotHits += recHits.size();
475 
476  LogDebug("CkfPattern") << "getting initial state.";
477  Trajectory trialTrajectory = (*it);
478  std::pair<TrajectoryStateOnSurface, const GeomDet*> initState;
479  bool failed = false;
480 
481  do {
482  // Drop last hit if previous backFitter was not successful
483  if (failed) {
484  LogDebug("CkfPattern") << "removing last hit";
485  trialTrajectory.pop();
486  LogDebug("CkfPattern") << "hits remaining " << trialTrajectory.foundHits();
487  }
488 
489  // Get inner state
490  const bool doBackFit = (!doSeedingRegionRebuilding) & (!reverseTrajectories);
491  initState = theInitialState->innerState(trialTrajectory, doBackFit);
492 
493  // Check if that was successful
494  failed = (!initState.first.isValid()) || initState.second == nullptr ||
495  edm::isNotFinite(initState.first.globalPosition().x());
496  } while (failed && trialTrajectory.foundHits() > 3);
497 
498  if (failed) {
499  const auto seedIndex = it->seedRef().key();
500  (*outputSeedStopInfos)[seedIndex].setStopReason(SeedStopReason::SMOOTHING_FAILED);
501  continue;
502  }
503 
505  if (useSplitting && (initState.second != recHits.front().det()) && recHits.front().det()) {
506  LogDebug("CkfPattern") << "propagating to hit front in case of splitting.";
507  TrajectoryStateOnSurface&& propagated =
508  thePropagator->propagate(initState.first, recHits.front().det()->surface());
509  if (!propagated.isValid())
510  continue;
511  state = trajectoryStateTransform::persistentState(propagated, recHits.front().rawId());
512  } else
513  state =
514  trajectoryStateTransform::persistentState(initState.first, initState.second->geographicalId().rawId());
515  LogDebug("CkfPattern") << "pushing a TrackCandidate.";
516  output->emplace_back(recHits, it->seed(), state, it->seedRef(), it->nLoops(), (uint8_t)it->stopReason());
517  }
518  } //output trackcandidates
519 
522  LogTrace("CkfPattern|TrackingRegressionTest") << "========== CkfTrackCandidateMaker Info =========="
523  << "number of Seed: " << collseed->size() << '\n'
524  << PrintoutHelper::regressionTest(*tracker, unsmoothedResult);
525 
526  assert(viTotHits >= 0); // just to use it...
527  // std::cout << "VICkfPattern result " << output->size() << " " << viTotHits << std::endl;
528 
529  if (theTrajectoryOutput) {
530  outputT->swap(unsmoothedResult);
531  }
532 
533  } // end of ((*collseed).size()>0)
534 
535  // method for debugging
537 
538  // Step G: write output to file
540  e.put(std::move(output));
541  }
542  if (theTrajectoryOutput) {
543  e.put(std::move(outputT));
544  }
545  e.put(std::move(outputSeedStopInfos));
546  }
547 
548 } // namespace cms
cms::CkfTrackCandidateMakerBase::beginRunBase
virtual void beginRunBase(edm::Run const &, edm::EventSetup const &es)
Definition: CkfTrackCandidateMakerBase.cc:124
edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
cms::CkfTrackCandidateMakerBase::theGeomSearchTracker
edm::ESHandle< GeometricSearchTracker > theGeomSearchTracker
Definition: CkfTrackCandidateMakerBase.h:64
Handle.h
HLT_FULL_cff.doSeedingRegionRebuilding
doSeedingRegionRebuilding
Definition: HLT_FULL_cff.py:170
electrons_cff.bool
bool
Definition: electrons_cff.py:366
NavigationSchoolRecord
Definition: NavigationSchoolRecord.h:12
mps_fire.i
i
Definition: mps_fire.py:428
MeasurementTrackerEvent.h
CkfTrackCandidateMakerBase.h
MessageLogger.h
PrintoutHelper::dumpCandidates
static std::string dumpCandidates(collection &candidates)
Definition: PrintoutHelper.h:69
funct::false
false
Definition: Factorize.h:29
TrackerGeometry.h
TrackCandidateCollection.h
hfClusterShapes_cfi.hits
hits
Definition: hfClusterShapes_cfi.py:5
SeedStopReason::NO_TRAJECTORY
cms::CkfTrackCandidateMakerBase::reverseTrajectories
bool reverseTrajectories
Definition: CkfTrackCandidateMakerBase.h:50
ESHandle.h
TrajectoryCleanerBySharedHits.h
edm::isNotFinite
constexpr bool isNotFinite(T x)
Definition: isFinite.h:9
cms::CkfTrackCandidateMakerBase::theMagFieldName
const std::string theMagFieldName
Definition: CkfTrackCandidateMakerBase.h:62
BaseCkfTrajectoryBuilderFactory.h
convertSQLitetoXML_cfg.output
output
Definition: convertSQLitetoXML_cfg.py:72
edm::Run
Definition: Run.h:45
cms::CkfTrackCandidateMakerBase::theMaxNSeeds
unsigned int theMaxNSeeds
Definition: CkfTrackCandidateMakerBase.h:53
cms::CkfTrackCandidateMakerBase::theSeedCleaner
std::unique_ptr< RedundantSeedCleaner > theSeedCleaner
Definition: CkfTrackCandidateMakerBase.h:69
edm
HLT enums.
Definition: AlignableModifier.h:19
PrintoutHelper::regressionTest
static std::string regressionTest(const TrackerGeometry &tracker, std::vector< Trajectory > &unsmoothedResult)
Definition: PrintoutHelper.cc:73
trajectoryStateTransform::persistentState
PTrajectoryStateOnDet persistentState(const TrajectoryStateOnSurface &ts, unsigned int detid)
Definition: TrajectoryStateTransform.cc:14
gather_cfg.cout
cout
Definition: gather_cfg.py:144
cms::CkfTrackCandidateMakerBase::theTrajectoryOutput
bool theTrajectoryOutput
Definition: CkfTrackCandidateMakerBase.h:46
runEdmFileComparison.failed
failed
Definition: runEdmFileComparison.py:225
SeedStopReason::FINAL_CLEAN
cms::CkfTrackCandidateMakerBase::maskPixels_
edm::EDGetTokenT< PixelClusterMask > maskPixels_
Definition: CkfTrackCandidateMakerBase.h:81
TrackerRecoGeometryRecord.h
oppositeToMomentum
Definition: PropagationDirection.h:4
cms::cuda::assert
assert(be >=bs)
cms::CkfTrackCandidateMakerBase::theMagField
edm::ESHandle< MagneticField > theMagField
Definition: CkfTrackCandidateMakerBase.h:63
edm::ContainerMask
Definition: ContainerMask.h:36
cms::CkfTrackCandidateMakerBase::theTrajectoryCleaner
const TrajectoryCleaner * theTrajectoryCleaner
Definition: CkfTrackCandidateMakerBase.h:58
TrackerRecoGeometryRecord
Definition: TrackerRecoGeometryRecord.h:14
cms::CkfTrackCandidateMakerBase::produceBase
virtual void produceBase(edm::Event &e, const edm::EventSetup &es)
Definition: CkfTrackCandidateMakerBase.cc:145
CkfComponentsRecord.h
edm::ParameterSet::existsAs
bool existsAs(std::string const &parameterName, bool trackiness=true) const
checks if a parameter exists as a given type
Definition: ParameterSet.h:171
Trajectory::foundHits
int foundHits() const
Definition: Trajectory.h:206
TrajectoryCleaner::clean
virtual void clean(TempTrajectoryContainer &) const
Definition: TrajectoryCleaner.cc:5
cms::CkfTrackCandidateMakerBase::skipClusters_
bool skipClusters_
Definition: CkfTrackCandidateMakerBase.h:76
edm::Handle< MeasurementTrackerEvent >
TransientInitialStateEstimator.h
edm::LogWarning
Log< level::Warning, false > LogWarning
Definition: MessageLogger.h:122
cms::CkfTrackCandidateMakerBase::theTrajectoryBuilder
std::unique_ptr< BaseCkfTrajectoryBuilder > theTrajectoryBuilder
Definition: CkfTrackCandidateMakerBase.h:55
cms::CkfTrackCandidateMakerBase::theMTELabel
edm::EDGetTokenT< MeasurementTrackerEvent > theMTELabel
Definition: CkfTrackCandidateMakerBase.h:74
SeedStopReason::NOT_STOPPED
IdealMagneticFieldRecord
Definition: IdealMagneticFieldRecord.h:11
cms::CkfTrackCandidateMakerBase::useSplitting
bool useSplitting
Definition: CkfTrackCandidateMakerBase.h:47
TrajectoryStateOnSurface
Definition: TrajectoryStateOnSurface.h:16
cms::CkfTrackCandidateMakerBase::theTrackCandidateOutput
bool theTrackCandidateOutput
Definition: CkfTrackCandidateMakerBase.h:45
cms::CkfTrackCandidateMakerBase::maskStrips_
edm::EDGetTokenT< StripClusterMask > maskStrips_
Definition: CkfTrackCandidateMakerBase.h:82
edm::EventSetup::get
T get() const
Definition: EventSetup.h:87
cms::CkfTrackCandidateMakerBase::theSeedLabel
edm::EDGetTokenT< edm::View< TrajectorySeed > > theSeedLabel
Definition: CkfTrackCandidateMakerBase.h:73
Trajectory::DataContainer
std::vector< TrajectoryMeasurement > DataContainer
Definition: Trajectory.h:40
cms::CkfTrackCandidateMakerBase::theInitialState
std::unique_ptr< TransientInitialStateEstimator > theInitialState
Definition: CkfTrackCandidateMakerBase.h:60
TrackerDigiGeometryRecord
Definition: TrackerDigiGeometryRecord.h:15
edm::ESHandle
Definition: DTSurvey.h:22
cms::CkfTrackCandidateMakerBase::printHitsDebugger
virtual void printHitsDebugger(edm::Event &e)
Definition: CkfTrackCandidateMakerBase.h:89
HLT_FULL_cff.reverseTrajectories
reverseTrajectories
Definition: HLT_FULL_cff.py:9567
Traj2TrackHits.h
b
double b
Definition: hdecay.h:118
cms::CkfTrackCandidateMakerBase::theTrajectoryCleanerName
std::string theTrajectoryCleanerName
Definition: CkfTrackCandidateMakerBase.h:57
mitigatedMETSequence_cff.U
U
Definition: mitigatedMETSequence_cff.py:36
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
cms::CkfTrackCandidateMakerBase::~CkfTrackCandidateMakerBase
virtual ~CkfTrackCandidateMakerBase() noexcept(false)
Definition: CkfTrackCandidateMakerBase.cc:122
FastTrackerRecHitMaskProducer_cfi.recHits
recHits
Definition: FastTrackerRecHitMaskProducer_cfi.py:8
PbPb_ZMuSkimMuonDPG_cff.tracker
tracker
Definition: PbPb_ZMuSkimMuonDPG_cff.py:60
InitialStep_cff.seeds
seeds
Definition: InitialStep_cff.py:231
edm::ParameterSet::exists
bool exists(std::string const &parameterName) const
checks if a parameter exists
Definition: ParameterSet.cc:681
edm::View
Definition: CaloClusterFwd.h:14
funct::true
true
Definition: Factorize.h:173
CachingSeedCleanerBySharedInput.h
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:233
edm::ParameterSet
Definition: ParameterSet.h:47
a
double a
Definition: hdecay.h:119
cms::CkfTrackCandidateMakerBase::setEventSetup
void setEventSetup(const edm::EventSetup &es)
Initialize EventSetup objects at each event.
Definition: CkfTrackCandidateMakerBase.cc:127
CommonMethods.lock
def lock()
Definition: CommonMethods.py:82
jetUpdater_cfi.sort
sort
Definition: jetUpdater_cfi.py:29
Traj2TrackHits
Definition: Traj2TrackHits.h:16
SeedStopReason::SEED_REGION_REBUILD
TransientInitialStateEstimator
Definition: TransientInitialStateEstimator.h:23
createfilelist.int
int
Definition: createfilelist.py:10
mutex
static std::mutex mutex
Definition: Proxy.cc:8
edm::EventSetup
Definition: EventSetup.h:58
cms::CkfTrackCandidateMakerBase::theNavigationSchool
const NavigationSchool * theNavigationSchool
Definition: CkfTrackCandidateMakerBase.h:67
cms::CkfTrackCandidateMakerBase::theNavigationSchoolName
std::string theNavigationSchoolName
Definition: CkfTrackCandidateMakerBase.h:66
Propagator::propagate
TrajectoryStateOnSurface propagate(STA const &state, SUR const &surface) const
Definition: Propagator.h:50
edm::LogError
Log< level::Error, false > LogError
Definition: MessageLogger.h:123
Trajectory::pop
void pop()
Definition: Trajectory.cc:30
get
#define get
cms::CkfTrackCandidateMakerBase::countSeedsDebugger
virtual void countSeedsDebugger()
Definition: CkfTrackCandidateMakerBase.h:90
alignCSCRings.r
r
Definition: alignCSCRings.py:93
cms::CkfTrackCandidateMakerBase::phase2skipClusters_
bool phase2skipClusters_
Definition: CkfTrackCandidateMakerBase.h:77
cms::CkfTrackCandidateMakerBase::cleanTrajectoryAfterInOut
bool cleanTrajectoryAfterInOut
Definition: CkfTrackCandidateMakerBase.h:49
Trajectory.h
cms::CkfTrackCandidateMakerBase::maxSeedsBeforeCleaning_
unsigned int maxSeedsBeforeCleaning_
Definition: CkfTrackCandidateMakerBase.h:71
ESInputTag.h
heppy_batch.val
val
Definition: heppy_batch.py:351
eostools.move
def move(src, dest)
Definition: eostools.py:511
std
Definition: JetResolutionObject.h:76
RunInfoPI::state
state
Definition: RunInfoPayloadInspectoHelper.h:16
isFinite.h
SeedStopInfo.h
Trajectory
Definition: Trajectory.h:38
TrackingComponentsRecord.h
Exception
Definition: hltDiff.cc:245
PropagationDirection
PropagationDirection
Definition: PropagationDirection.h:4
cms::CkfTrackCandidateMakerBase::maskPhase2OTs_
edm::EDGetTokenT< Phase2OTClusterMask > maskPhase2OTs_
Definition: CkfTrackCandidateMakerBase.h:83
cms::CkfTrackCandidateMakerBase::deleteAssocDebugger
virtual void deleteAssocDebugger()
Definition: CkfTrackCandidateMakerBase.h:91
EventSetup.h
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
TrajectoryStateTransform.h
SeedStopReason::SMOOTHING_FAILED
data
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:79
Trajectory::setNLoops
void setNLoops(signed char value)
Definition: Trajectory.h:331
HLT_FULL_cff.numHitsForSeedCleaner
numHitsForSeedCleaner
Definition: HLT_FULL_cff.py:111377
LogTrace
#define LogTrace(id)
Definition: MessageLogger.h:234
View.h
PTrajectoryStateOnDet
Definition: PTrajectoryStateOnDet.h:10
NavigationSchool.h
NavigationSchoolRecord.h
OwnVector.h
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
edm::Event
Definition: Event.h:73
cms::CkfTrackCandidateMakerBase::doSeedingRegionRebuilding
bool doSeedingRegionRebuilding
Definition: CkfTrackCandidateMakerBase.h:48
cuy.ii
ii
Definition: cuy.py:590
edm::InputTag
Definition: InputTag.h:15
HLT_FULL_cff.cleanTrajectoryAfterInOut
cleanTrajectoryAfterInOut
Definition: HLT_FULL_cff.py:183
edm::ConsumesCollector
Definition: ConsumesCollector.h:45
alongMomentum
Definition: PropagationDirection.h:4
TrajectoryStateOnSurface::isValid
bool isValid() const
Definition: TrajectoryStateOnSurface.h:54
Trajectory::isValid
bool isValid() const
Definition: Trajectory.h:257
muonDTDigis_cfi.pset
pset
Definition: muonDTDigis_cfi.py:27
edm::OwnVector< TrackingRecHit >
cms
Namespace of DDCMS conversion namespace.
Definition: ProducerAnalyzer.cc:21
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37
HLTSiStripMonitoring_cff.MeasurementTrackerEvent
MeasurementTrackerEvent
Definition: HLTSiStripMonitoring_cff.py:224
PrintoutHelper.h
TrackingComponentsRecord
Definition: TrackingComponentsRecord.h:12
SeedStopReason::SEED_CLEANING