CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
SimpleCosmicBONSeeder Class Reference

#include <SimpleCosmicBONSeeder.h>

Inheritance diagram for SimpleCosmicBONSeeder:
edm::stream::EDProducer<>

Public Member Functions

void done ()
 
bool goodTriplet (const GlobalPoint &inner, const GlobalPoint &middle, const GlobalPoint &outer, const double &minRho) const
 
void init (const edm::EventSetup &c)
 
std::pair< GlobalVector, int > pqFromHelixFit (const GlobalPoint &inner, const GlobalPoint &middle, const GlobalPoint &outer, const edm::EventSetup &iSetup) const
 
void produce (edm::Event &e, const edm::EventSetup &c) override
 
bool seeds (TrajectorySeedCollection &output, const edm::EventSetup &iSetup)
 
 SimpleCosmicBONSeeder (const edm::ParameterSet &conf)
 
bool triplets (const edm::Event &e, const edm::EventSetup &c)
 
 ~SimpleCosmicBONSeeder () override
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndRuns () const final
 

Private Member Functions

bool checkCharge (const SiStripRecHit2D &hit, int subdetid) const
 
bool checkCharge (const TrackingRecHit *hit) const
 
void checkNoisyModules (const std::vector< SeedingHitSet::ConstRecHitPointer > &hits, std::vector< bool > &oks) const
 

Private Attributes

std::string builderName
 
std::vector< int32_t > chargeThresholds_
 
ClusterChecker check_
 
bool checkCharge_
 
bool checkMaxHitsPerModule_
 
TkClonerImpl cloner
 
edm::ParameterSet conf_
 
int goodHitsPerSeed_
 
uint32_t helixVerbosity_
 
OrderedHitTriplets hitTriplets
 
edm::ESHandle< MagneticFieldmagfield
 
bool matchedRecHitUsesAnd_
 
std::vector< int32_t > maxHitsPerModule_
 
int32_t maxSeeds_
 
int32_t maxTriplets_
 
bool negativeYOnly
 
double pMin_
 
bool positiveYOnly
 
GlobalTrackingRegion region_
 
double rescaleError_
 
edm::EDGetTokenT< SeedingLayerSetsHitsseedingLayerToken_
 
bool seedOnMiddle_
 
uint32_t seedVerbosity_
 
PropagatorWithMaterialthePropagatorAl
 
PropagatorWithMaterialthePropagatorOp
 
KFUpdatortheUpdator
 
edm::ESHandle< TrackerGeometrytracker
 
uint32_t tripletsVerbosity_
 
edm::ESHandle< TransientTrackingRecHitBuilderTTTRHBuilder
 
bool writeTriplets_
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer<>
typedef CacheContexts< T... > CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T... > HasAbility
 
typedef CacheTypes::LuminosityBlockCache LuminosityBlockCache
 
typedef LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCacheLuminosityBlockContext
 
typedef CacheTypes::LuminosityBlockSummaryCache LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache, GlobalCacheRunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 

Detailed Description

Definition at line 41 of file SimpleCosmicBONSeeder.h.

Constructor & Destructor Documentation

◆ SimpleCosmicBONSeeder()

SimpleCosmicBONSeeder::SimpleCosmicBONSeeder ( const edm::ParameterSet conf)
explicit

Definition at line 25 of file SimpleCosmicBONSeeder.cc.

26  : conf_(conf),
27  seedingLayerToken_(consumes<SeedingLayerSetsHits>(conf.getParameter<edm::InputTag>("TripletsSrc"))),
28  writeTriplets_(conf.getParameter<bool>("writeTriplets")),
29  seedOnMiddle_(conf.existsAs<bool>("seedOnMiddle") ? conf.getParameter<bool>("seedOnMiddle") : false),
30  rescaleError_(conf.existsAs<double>("rescaleError") ? conf.getParameter<double>("rescaleError") : 1.0),
31  tripletsVerbosity_(conf.getUntrackedParameter<uint32_t>("TripletsDebugLevel", 0)),
32  seedVerbosity_(conf.getUntrackedParameter<uint32_t>("seedDebugLevel", 0)),
33  helixVerbosity_(conf.getUntrackedParameter<uint32_t>("helixDebugLevel", 0)),
34  check_(conf.getParameter<edm::ParameterSet>("ClusterCheckPSet"), consumesCollector()),
35  maxTriplets_(conf.getParameter<int32_t>("maxTriplets")),
36  maxSeeds_(conf.getParameter<int32_t>("maxSeeds")) {
37  edm::ParameterSet regionConf = conf_.getParameter<edm::ParameterSet>("RegionPSet");
38  float ptmin = regionConf.getParameter<double>("ptMin");
39  float originradius = regionConf.getParameter<double>("originRadius");
40  float halflength = regionConf.getParameter<double>("originHalfLength");
41  float originz = regionConf.getParameter<double>("originZPosition");
42  region_ = GlobalTrackingRegion(ptmin, originradius, halflength, originz);
43  pMin_ = regionConf.getParameter<double>("pMin");
44 
45  builderName = conf_.getParameter<std::string>("TTRHBuilder");
46 
47  //***top-bottom
48  positiveYOnly = conf_.getParameter<bool>("PositiveYOnly");
49  negativeYOnly = conf_.getParameter<bool>("NegativeYOnly");
50  //***
51 
52  produces<TrajectorySeedCollection>();
53  if (writeTriplets_)
54  produces<edm::OwnVector<TrackingRecHit>>("cosmicTriplets");
55 
56  if (conf.existsAs<edm::ParameterSet>("ClusterChargeCheck")) {
57  edm::ParameterSet cccc = conf.getParameter<edm::ParameterSet>("ClusterChargeCheck");
58  checkCharge_ = cccc.getParameter<bool>("checkCharge");
59  matchedRecHitUsesAnd_ = cccc.getParameter<bool>("matchedRecHitsUseAnd");
60  chargeThresholds_.resize(7, 0);
61  edm::ParameterSet ccct = cccc.getParameter<edm::ParameterSet>("Thresholds");
66  } else {
67  checkCharge_ = false;
68  }
69  if (conf.existsAs<edm::ParameterSet>("HitsPerModuleCheck")) {
70  edm::ParameterSet hpmcc = conf.getParameter<edm::ParameterSet>("HitsPerModuleCheck");
71  checkMaxHitsPerModule_ = hpmcc.getParameter<bool>("checkHitsPerModule");
73  edm::ParameterSet hpmct = hpmcc.getParameter<edm::ParameterSet>("Thresholds");
74  maxHitsPerModule_[StripSubdetector::TIB] = hpmct.getParameter<int32_t>("TIB");
75  maxHitsPerModule_[StripSubdetector::TID] = hpmct.getParameter<int32_t>("TID");
76  maxHitsPerModule_[StripSubdetector::TOB] = hpmct.getParameter<int32_t>("TOB");
77  maxHitsPerModule_[StripSubdetector::TEC] = hpmct.getParameter<int32_t>("TEC");
78  } else {
79  checkMaxHitsPerModule_ = false;
80  }
82  goodHitsPerSeed_ = conf.getParameter<int32_t>("minimumGoodHitsInSeed");
83  } else {
84  goodHitsPerSeed_ = 0;
85  }
86 }

References builderName, chargeThresholds_, checkCharge_, checkMaxHitsPerModule_, conf_, edm::ParameterSet::existsAs(), edm::ParameterSet::getParameter(), goodHitsPerSeed_, matchedRecHitUsesAnd_, SiStripPI::max, maxHitsPerModule_, negativeYOnly, pMin_, positiveYOnly, ptmin, region_, AlCaHLTBitMon_QueryRunRegistry::string, StripSubdetector::TEC, StripSubdetector::TIB, StripSubdetector::TID, StripSubdetector::TOB, and writeTriplets_.

◆ ~SimpleCosmicBONSeeder()

SimpleCosmicBONSeeder::~SimpleCosmicBONSeeder ( )
inlineoverride

Definition at line 45 of file SimpleCosmicBONSeeder.h.

45 {}

Member Function Documentation

◆ checkCharge() [1/2]

bool SimpleCosmicBONSeeder::checkCharge ( const SiStripRecHit2D hit,
int  subdetid 
) const
private

Definition at line 334 of file SimpleCosmicBONSeeder.cc.

334  {
335  const SiStripCluster *clust = hit.cluster().get();
336  int charge = std::accumulate(clust->amplitudes().begin(), clust->amplitudes().end(), int(0));
337  if (tripletsVerbosity_ > 1) {
338  std::cerr << "Hit on " << subdetid << ", charge = " << charge << ", threshold = " << chargeThresholds_[subdetid]
339  << ", detid = " << hit.geographicalId().rawId() << ", firstStrip = " << clust->firstStrip() << std::endl;
340  } else if ((tripletsVerbosity_ == 1) && (charge < chargeThresholds_[subdetid])) {
341  std::cerr << "Hit on " << subdetid << ", charge = " << charge << ", threshold = " << chargeThresholds_[subdetid]
342  << ", detid = " << hit.geographicalId().rawId() << ", firstStrip = " << clust->firstStrip() << std::endl;
343  }
344  return charge > chargeThresholds_[subdetid];
345 }

References SiStripCluster::amplitudes(), beam_dqm_sourceclient-live_cfg::cerr, ALCARECOTkAlJpsiMuMu_cff::charge, chargeThresholds_, SiStripCluster::firstStrip(), createfilelist::int, and tripletsVerbosity_.

◆ checkCharge() [2/2]

bool SimpleCosmicBONSeeder::checkCharge ( const TrackingRecHit hit) const
private

Definition at line 310 of file SimpleCosmicBONSeeder.cc.

310  {
311  DetId detid(hit->geographicalId());
312  if (detid.det() != DetId::Tracker)
313  return false; // should not happen
314  int subdet = detid.subdetId();
315  if (subdet < 3) { // pixel
316  return true;
317  } else {
318  if (typeid(*hit) == typeid(SiStripMatchedRecHit2D)) {
319  const SiStripMatchedRecHit2D *mhit = static_cast<const SiStripMatchedRecHit2D *>(hit);
320  if (matchedRecHitUsesAnd_) {
321  return checkCharge(mhit->monoHit(), subdet) && checkCharge(mhit->stereoHit(), subdet);
322  } else {
323  return checkCharge(mhit->monoHit(), subdet) || checkCharge(mhit->stereoHit(), subdet);
324  }
325  } else if (typeid(*hit) == typeid(SiStripRecHit2D)) {
326  return checkCharge(static_cast<const SiStripRecHit2D &>(*hit), subdet);
327  } else {
328  return true;
329  }
330  }
331 }

References matchedRecHitUsesAnd_, SiStripMatchedRecHit2D::monoHit(), SiStripMatchedRecHit2D::stereoHit(), DetId::subdetId(), and DetId::Tracker.

Referenced by triplets().

◆ checkNoisyModules()

void SimpleCosmicBONSeeder::checkNoisyModules ( const std::vector< SeedingHitSet::ConstRecHitPointer > &  hits,
std::vector< bool > &  oks 
) const
private

Definition at line 347 of file SimpleCosmicBONSeeder.cc.

348  {
350  std::vector<TTRH>::const_iterator it = hits.begin(), start = it, end = hits.end();
351  std::vector<bool>::iterator ok = oks.begin(), okStart = ok;
352  while (start < end) {
353  DetId lastid = (*start)->geographicalId();
354  for (it = start + 1; (it < end) && ((*it)->geographicalId() == lastid); ++it) {
355  ++ok;
356  }
357  if ((it - start) > maxHitsPerModule_[lastid.subdetId()]) {
358  if (tripletsVerbosity_ > 0) {
359  std::cerr << "SimpleCosmicBONSeeder: Marking noisy module " << lastid.rawId() << ", it has " << (it - start)
360  << " rechits"
361  << " (threshold is " << maxHitsPerModule_[lastid.subdetId()] << ")" << std::endl;
362  }
363  std::fill(okStart, ok, false);
364  } else if (tripletsVerbosity_ > 0) {
365  if ((it - start) > std::min(4, maxHitsPerModule_[lastid.subdetId()] / 4)) {
366  std::cerr << "SimpleCosmicBONSeeder: Not marking noisy module " << lastid.rawId() << ", it has " << (it - start)
367  << " rechits"
368  << " (threshold is " << maxHitsPerModule_[lastid.subdetId()] << ")" << std::endl;
369  }
370  }
371  start = it;
372  okStart = ok;
373  }
374 }

References beam_dqm_sourceclient-live_cfg::cerr, end, ntuplemaker::fill, hfClusterShapes_cfi::hits, maxHitsPerModule_, min(), convertSQLiteXML::ok, DetId::rawId(), command_line::start, DetId::subdetId(), and tripletsVerbosity_.

Referenced by triplets().

◆ done()

void SimpleCosmicBONSeeder::done ( )

Definition at line 621 of file SimpleCosmicBONSeeder.cc.

621  {
622  delete thePropagatorAl;
623  delete thePropagatorOp;
624  delete theUpdator;
625 }

References thePropagatorAl, thePropagatorOp, and theUpdator.

Referenced by produce().

◆ goodTriplet()

bool SimpleCosmicBONSeeder::goodTriplet ( const GlobalPoint inner,
const GlobalPoint middle,
const GlobalPoint outer,
const double &  minRho 
) const

Definition at line 376 of file SimpleCosmicBONSeeder.cc.

379  {
380  float dyOM = outer.y() - middle.y(), dyIM = inner.y() - middle.y();
381  if ((dyOM * dyIM > 0) && (fabs(dyOM) > 10) && (fabs(dyIM) > 10)) {
382  if (tripletsVerbosity_ > 2)
383  std::cout << " fail for non coherent dy" << std::endl;
384  return false;
385  }
386  float dzOM = outer.z() - middle.z(), dzIM = inner.z() - middle.z();
387  if ((dzOM * dzIM > 0) && (fabs(dzOM) > 50) && (fabs(dzIM) > 50)) {
388  if (tripletsVerbosity_ > 2)
389  std::cout << " fail for non coherent dz" << std::endl;
390  return false;
391  }
392  if (minRho > 0) {
393  FastCircle theCircle(inner, middle, outer);
394  if (theCircle.rho() < minRho) {
395  if (tripletsVerbosity_ > 2)
396  std::cout << " fail for pt cut" << std::endl;
397  return false;
398  }
399  }
400  return true;
401 }

References gather_cfg::cout, SurfaceOrientation::inner, SurfaceOrientation::outer, FastCircle::rho(), tripletsVerbosity_, PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by triplets().

◆ init()

void SimpleCosmicBONSeeder::init ( const edm::EventSetup c)

◆ pqFromHelixFit()

std::pair< GlobalVector, int > SimpleCosmicBONSeeder::pqFromHelixFit ( const GlobalPoint inner,
const GlobalPoint middle,
const GlobalPoint outer,
const edm::EventSetup iSetup 
) const

Definition at line 403 of file SimpleCosmicBONSeeder.cc.

406  {
407  if (helixVerbosity_ > 0) {
408  std::cout << "DEBUG PZ =====" << std::endl;
409  FastHelix helix(inner, middle, outer, magfield->nominalValue(), &*magfield);
410  GlobalVector gv = helix.stateAtVertex().momentum(); // status on inner hit
411  std::cout << "FastHelix P = " << gv << "\n";
412  std::cout << "FastHelix Q = " << helix.stateAtVertex().charge() << "\n";
413  }
414 
415  // My attempt (with different approx from FastHelix)
416  // 1) fit the circle
417  FastCircle theCircle(inner, middle, outer);
418  double rho = theCircle.rho();
419 
420  // 2) Get the PT
421  GlobalVector tesla = magfield->inTesla(middle);
422  double pt = 0.01 * rho * (0.3 * tesla.z());
423 
424  // 3) Get the PX,PY at OUTER hit (VERTEX)
425  double dx1 = outer.x() - theCircle.x0();
426  double dy1 = outer.y() - theCircle.y0();
427  double py = pt * dx1 / rho, px = -pt * dy1 / rho;
428  if (px * (middle.x() - outer.x()) + py * (middle.y() - outer.y()) < 0.) {
429  px *= -1.;
430  py *= -1.;
431  }
432 
433  // 4) Get the PZ through pz = pT*(dz/d(R*phi)))
434  double dz = inner.z() - outer.z();
435  double sinphi = (dx1 * (inner.y() - theCircle.y0()) - dy1 * (inner.x() - theCircle.x0())) / (rho * rho);
436  double dphi = std::abs(std::asin(sinphi));
437  double pz = pt * dz / (dphi * rho);
438 
439  int myq = ((theCircle.x0() * py - theCircle.y0() * px) / tesla.z()) > 0. ? +1 : -1;
440 
441  std::pair<GlobalVector, int> mypq(GlobalVector(px, py, pz), myq);
442 
443  if (helixVerbosity_ > 1) {
444  std::cout << "Gio: pt = " << pt << std::endl;
445  std::cout << "Gio: dz = " << dz << ", sinphi = " << sinphi << ", dphi = " << dphi
446  << ", dz/drphi = " << (dz / dphi / rho) << std::endl;
447  }
448  if (helixVerbosity_ > 0) {
449  std::cout << "Gio's fit P = " << mypq.first << "\n";
450  std::cout << "Gio's fit Q = " << myq << "\n";
451  }
452 
453  return mypq;
454 }

References funct::abs(), gather_cfg::cout, PVValHelper::dz, helixVerbosity_, SurfaceOrientation::inner, MagneticField::inTesla(), magfield, MagneticField::nominalValue(), SurfaceOrientation::outer, DiDispStaMuonMonitor_cfi::pt, multPhiCorr_741_25nsDY_cfi::px, multPhiCorr_741_25nsDY_cfi::py, rho, FastCircle::rho(), PV3DBase< T, PVType, FrameType >::x(), FastCircle::x0(), PV3DBase< T, PVType, FrameType >::y(), FastCircle::y0(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by seeds(), and triplets().

◆ produce()

void SimpleCosmicBONSeeder::produce ( edm::Event e,
const edm::EventSetup c 
)
override

Definition at line 89 of file SimpleCosmicBONSeeder.cc.

89  {
90  auto output = std::make_unique<TrajectorySeedCollection>();
91  auto outtriplets = std::make_unique<edm::OwnVector<TrackingRecHit>>();
92 
94  if (magfield->inTesla(GlobalPoint(0, 0, 0)).mag() > 0.01) {
95  size_t clustsOrZero = check_.tooManyClusters(ev);
96  if (clustsOrZero) {
97  edm::LogError("TooManyClusters") << "Found too many clusters (" << clustsOrZero << "), bailing out.\n";
98  } else {
99  init(es);
100  bool tripletsOk = triplets(ev, es);
101  if (tripletsOk) {
102  bool seedsOk = seeds(*output, es);
103  if (!seedsOk) {
104  }
105 
106  if (writeTriplets_) {
107  for (OrderedHitTriplets::const_iterator it = hitTriplets.begin(); it != hitTriplets.end(); ++it) {
108  const TrackingRecHit *hit1 = it->inner()->hit();
109  const TrackingRecHit *hit2 = it->middle()->hit();
110  const TrackingRecHit *hit3 = it->outer()->hit();
111  outtriplets->push_back(hit1->clone());
112  outtriplets->push_back(hit2->clone());
113  outtriplets->push_back(hit3->clone());
114  }
115  }
116  }
117  done();
118  }
119  }
120 
121  if (writeTriplets_) {
122  ev.put(std::move(outtriplets), "cosmicTriplets");
123  }
124  ev.put(std::move(output));
125 }

References check_, TrackingRecHit::clone(), done(), ev, edm::EventSetup::get(), get, TrackingRecHit::hit(), hitTriplets, init(), MagneticField::inTesla(), PV3DBase< T, PVType, FrameType >::mag(), magfield, eostools::move(), convertSQLitetoXML_cfg::output, seeds(), ClusterChecker::tooManyClusters(), triplets(), and writeTriplets_.

◆ seeds()

bool SimpleCosmicBONSeeder::seeds ( TrajectorySeedCollection output,
const edm::EventSetup iSetup 
)

Definition at line 456 of file SimpleCosmicBONSeeder.cc.

456  {
458 
459  for (size_t it = 0; it < hitTriplets.size(); it++) {
460  OrderedHitTriplet &trip = hitTriplets.at(it);
461 
463  tracker->idToDet((*(trip.inner())).geographicalId())->surface().toGlobal((*(trip.inner())).localPosition());
464 
465  GlobalPoint middle =
466  tracker->idToDet((*(trip.middle())).geographicalId())->surface().toGlobal((*(trip.middle())).localPosition());
467 
469  tracker->idToDet((*(trip.outer())).geographicalId())->surface().toGlobal((*(trip.outer())).localPosition());
470 
471  if (seedVerbosity_ > 1)
472  std::cout << "Processing triplet " << it << ": " << inner << " + " << middle << " + " << outer << std::endl;
473 
474  if ((outer.y() - inner.y()) * outer.y() < 0) {
476  trip = OrderedHitTriplet(trip.outer(), trip.middle(), trip.inner());
477 
478  if (seedVerbosity_ > 1) {
479  std::cout << "The seed was going away from CMS! swapped in <-> out" << std::endl;
480  std::cout << "Processing swapped triplet " << it << ": " << inner << " + " << middle << " + " << outer
481  << std::endl;
482  }
483  }
484 
485  // First use FastHelix out of the box
486  std::pair<GlobalVector, int> pq = pqFromHelixFit(inner, middle, outer, iSetup);
487  GlobalVector gv = pq.first;
488  float ch = pq.second;
489  float Mom = sqrt(gv.x() * gv.x() + gv.y() * gv.y() + gv.z() * gv.z());
490 
491  if (Mom > 10000 || edm::isNotFinite(Mom)) {
492  if (seedVerbosity_ > 1)
493  std::cout << "Processing triplet " << it << ": fail for momentum." << std::endl;
494  continue;
495  }
496 
497  if (gv.perp() < region_.ptMin()) {
498  if (seedVerbosity_ > 1)
499  std::cout << "Processing triplet " << it << ": fail for pt = " << gv.perp() << " < ptMin = " << region_.ptMin()
500  << std::endl;
501  continue;
502  }
503 
504  const Propagator *propagator = nullptr;
505  if ((outer.y() - inner.y()) > 0) {
506  if (seedVerbosity_ > 1)
507  std::cout << "Processing triplet " << it << ": downgoing." << std::endl;
509  } else {
510  gv = -1 * gv;
511  ch = -1. * ch;
513  if (seedVerbosity_ > 1)
514  std::cout << "Processing triplet " << it << ": upgoing." << std::endl;
515  }
516 
517  if (seedVerbosity_ > 1) {
518  if ((gv.z() * (outer.z() - inner.z()) > 0) && (fabs(outer.z() - inner.z()) > 5) && (fabs(gv.z()) > .01)) {
519  std::cout << "ORRORE: outer.z()-inner.z() = " << (outer.z() - inner.z()) << ", gv.z() = " << gv.z()
520  << std::endl;
521  }
522  }
523 
524  GlobalTrajectoryParameters Gtp(outer, gv, int(ch), &(*magfield));
526  CosmicSeed.rescaleError(100);
527  if (seedVerbosity_ > 2) {
528  std::cout << "Processing triplet " << it << ". start from " << std::endl;
529  std::cout << " X = " << outer << ", P = " << gv << std::endl;
530  std::cout << " Cartesian error (X,P) = \n" << CosmicSeed.cartesianError().matrix() << std::endl;
531  }
532 
534  OrderedHitTriplet seedHits(trip.outer(), trip.middle(), trip.inner());
535  TSOS propagated, updated;
536  bool fail = false;
537  for (size_t ih = 0; ih < 3; ++ih) {
538  if ((ih == 2) && seedOnMiddle_) {
539  if (seedVerbosity_ > 2)
540  std::cout << "Stopping at middle hit, as requested." << std::endl;
541  break;
542  }
543  if (seedVerbosity_ > 2)
544  std::cout << "Processing triplet " << it << ", hit " << ih << "." << std::endl;
545  if (ih == 0) {
546  propagated = propagator->propagate(CosmicSeed, tracker->idToDet((*seedHits[ih]).geographicalId())->surface());
547  } else {
548  propagated = propagator->propagate(updated, tracker->idToDet((*seedHits[ih]).geographicalId())->surface());
549  }
550  if (!propagated.isValid()) {
551  if (seedVerbosity_ > 1)
552  std::cout << "Processing triplet " << it << ", hit " << ih << ": failed propagation." << std::endl;
553  fail = true;
554  break;
555  } else {
556  if (seedVerbosity_ > 2)
557  std::cout << "Processing triplet " << it << ", hit " << ih << ": propagated state = " << propagated;
558  }
559  SeedingHitSet::ConstRecHitPointer tthp = seedHits[ih];
560  auto newtth = static_cast<SeedingHitSet::RecHitPointer>(cloner(*tthp, propagated));
561  updated = theUpdator->update(propagated, *newtth);
562  hits.push_back(newtth);
563  if (!updated.isValid()) {
564  if (seedVerbosity_ > 1)
565  std::cout << "Processing triplet " << it << ", hit " << ih << ": failed update." << std::endl;
566  fail = true;
567  break;
568  } else {
569  if (seedVerbosity_ > 2)
570  std::cout << "Processing triplet " << it << ", hit " << ih << ": updated state = " << updated;
571  }
572  }
573  if (!fail && updated.isValid() && (updated.globalMomentum().perp() < region_.ptMin())) {
574  if (seedVerbosity_ > 1)
575  std::cout << "Processing triplet " << it << ": failed for final pt " << updated.globalMomentum().perp() << " < "
576  << region_.ptMin() << std::endl;
577  fail = true;
578  }
579  if (!fail && updated.isValid() && (updated.globalMomentum().mag() < pMin_)) {
580  if (seedVerbosity_ > 1)
581  std::cout << "Processing triplet " << it << ": failed for final p " << updated.globalMomentum().perp() << " < "
582  << pMin_ << std::endl;
583  fail = true;
584  }
585  if (!fail) {
586  if (rescaleError_ != 1.0) {
587  if (seedVerbosity_ > 2) {
588  std::cout << "Processing triplet " << it << ", rescale error by " << rescaleError_
589  << ": state BEFORE rescaling " << updated;
590  std::cout << " Cartesian error (X,P) before rescaling= \n"
591  << updated.cartesianError().matrix() << std::endl;
592  }
593  updated.rescaleError(rescaleError_);
594  }
595  if (seedVerbosity_ > 0) {
596  std::cout << "Processed triplet " << it << ": success (saved as #" << output.size() << ") : " << inner << " + "
597  << middle << " + " << outer << std::endl;
598  std::cout << " pt = " << updated.globalMomentum().perp() << " eta = " << updated.globalMomentum().eta()
599  << " phi = " << updated.globalMomentum().phi() << " ch = " << updated.charge() << std::endl;
600  if (seedVerbosity_ > 1) {
601  std::cout << " State:" << updated;
602  } else {
603  std::cout << " X = " << updated.globalPosition() << ", P = " << updated.globalMomentum() << std::endl;
604  }
605  std::cout << " Cartesian error (X,P) = \n" << updated.cartesianError().matrix() << std::endl;
606  }
607 
609  updated, (*(seedOnMiddle_ ? trip.middle() : trip.inner())).geographicalId().rawId());
610  output.push_back(TrajectorySeed(PTraj, hits, ((outer.y() - inner.y() > 0) ? alongMomentum : oppositeToMomentum)));
611  if ((maxSeeds_ > 0) && (output.size() > size_t(maxSeeds_))) {
612  output.clear();
613  edm::LogError("TooManySeeds") << "Found too many seeds, bailing out.\n";
614  return false;
615  }
616  }
617  }
618  return true;
619 }

References alongMomentum, FreeTrajectoryState::cartesianError(), cloner, gather_cfg::cout, hfClusterShapes_cfi::hits, hitTriplets, TrackerGeometry::idToDet(), SurfaceOrientation::inner, OrderedHitTriplet::inner(), edm::isNotFinite(), magfield, CartesianTrajectoryError::matrix(), maxSeeds_, OrderedHitTriplet::middle(), oppositeToMomentum, SurfaceOrientation::outer, OrderedHitTriplet::outer(), convertSQLitetoXML_cfg::output, PV3DBase< T, PVType, FrameType >::perp(), trajectoryStateTransform::persistentState(), pMin_, pqFromHelixFit(), TrackCandidateProducer_cfi::propagator, TrackingRegion::ptMin(), region_, FreeTrajectoryState::rescaleError(), rescaleError_, seedOnMiddle_, seedVerbosity_, OrderedHitTriplets::size(), mathSSE::sqrt(), std::swap(), thePropagatorAl, thePropagatorOp, theUpdator, GeomDet::toGlobal(), tracker, KFUpdator::update(), PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by produce().

◆ triplets()

bool SimpleCosmicBONSeeder::triplets ( const edm::Event e,
const edm::EventSetup c 
)

ctfseeding SeedinHits and their iterators

Transient Tracking RecHits (not anymore....)

Checks on the cluster charge and on noisy modules

Now actually filling in the charges for all the clusters

Definition at line 171 of file SimpleCosmicBONSeeder.cc.

171  {
172  hitTriplets.clear();
173  hitTriplets.reserve(0);
175  e.getByToken(seedingLayerToken_, hlayers);
176  const SeedingLayerSetsHits &layers = *hlayers;
177  if (layers.numberOfLayersInSet() != 3)
178  throw cms::Exception("CtfSpecialSeedGenerator")
179  << "You are using " << layers.numberOfLayersInSet() << " layers in set instead of 3 ";
180 
181  double minRho = region_.ptMin() / (0.003 * magfield->inTesla(GlobalPoint(0, 0, 0)).z());
182 
183  for (SeedingLayerSetsHits::LayerSetIndex layerIndex = 0; layerIndex < layers.size(); ++layerIndex) {
186  auto innerHits = region_.hits(es, ls[0]);
187  auto middleHits = region_.hits(es, ls[1]);
188  auto outerHits = region_.hits(es, ls[2]);
189 
190  if (tripletsVerbosity_ > 0) {
191  std::cout << "GenericTripletGenerator iLss = " << seedingLayersToString(ls) << " (" << layerIndex
192  << "): # = " << innerHits.size() << "/" << middleHits.size() << "/" << outerHits.size() << std::endl;
193  }
194 
197  std::vector<TTRH> innerTTRHs, middleTTRHs, outerTTRHs;
198 
200  std::vector<bool> innerOk(innerHits.size(), true);
201  std::vector<bool> middleOk(middleHits.size(), true);
202  std::vector<bool> outerOk(outerHits.size(), true);
203 
204  size_t sizBefore = hitTriplets.size();
206  int idx = 0;
207  for (auto iOuterHit = outerHits.begin(); iOuterHit != outerHits.end(); ++idx, ++iOuterHit) {
208  outerTTRHs.push_back(&(**iOuterHit));
209  if (checkCharge_ && !checkCharge(outerTTRHs.back()->hit()))
210  outerOk[idx] = false;
211  }
212  idx = 0;
213  for (auto iMiddleHit = middleHits.begin(); iMiddleHit != middleHits.end(); ++idx, ++iMiddleHit) {
214  middleTTRHs.push_back(&(**iMiddleHit));
215  if (checkCharge_ && !checkCharge(middleTTRHs.back()->hit()))
216  middleOk[idx] = false;
217  }
218  idx = 0;
219  for (auto iInnerHit = innerHits.begin(); iInnerHit != innerHits.end(); ++idx, ++iInnerHit) {
220  innerTTRHs.push_back(&(**iInnerHit));
221  if (checkCharge_ && !checkCharge(innerTTRHs.back()->hit()))
222  innerOk[idx] = false;
223  }
225  checkNoisyModules(innerTTRHs, innerOk);
226  checkNoisyModules(middleTTRHs, middleOk);
227  checkNoisyModules(outerTTRHs, outerOk);
228  }
229 
230  for (auto iOuterHit = outerHits.begin(); iOuterHit != outerHits.end(); iOuterHit++) {
231  idx = iOuterHit - outerHits.begin();
232  TTRH &outerTTRH = outerTTRHs[idx];
233  GlobalPoint outerpos = outerTTRH->globalPosition(); // this caches by itself
234  bool outerok = outerOk[idx];
235  if (outerok < goodHitsPerSeed_ - 2) {
236  if (tripletsVerbosity_ > 2)
237  std::cout << "Skipping at first hit: " << (outerok) << " < " << (goodHitsPerSeed_ - 2) << std::endl;
238  continue;
239  }
240 
241  for (auto iMiddleHit = middleHits.begin(); iMiddleHit != middleHits.end(); iMiddleHit++) {
242  idx = iMiddleHit - middleHits.begin();
243  TTRH &middleTTRH = middleTTRHs[idx];
244  GlobalPoint middlepos = middleTTRH->globalPosition(); // this caches by itself
245  bool middleok = middleOk[idx];
246  if (outerok + middleok < goodHitsPerSeed_ - 1) {
247  if (tripletsVerbosity_ > 2)
248  std::cout << "Skipping at second hit: " << (outerok + middleok) << " < " << (goodHitsPerSeed_ - 1)
249  << std::endl;
250  continue;
251  }
252 
253  for (auto iInnerHit = innerHits.begin(); iInnerHit != innerHits.end(); iInnerHit++) {
254  idx = iInnerHit - innerHits.begin();
255  TTRH &innerTTRH = innerTTRHs[idx];
256  GlobalPoint innerpos = innerTTRH->globalPosition(); // this caches by itself
257  bool innerok = innerOk[idx];
258  if (outerok + middleok + innerok < goodHitsPerSeed_) {
259  if (tripletsVerbosity_ > 2)
260  std::cout << "Skipping at third hit: " << (outerok + middleok + innerok) << " < " << (goodHitsPerSeed_)
261  << std::endl;
262  continue;
263  }
264 
265  //***top-bottom
266  if (positiveYOnly &&
267  (innerpos.y() < 0 || middlepos.y() < 0 || outerpos.y() < 0 || outerpos.y() < innerpos.y()))
268  continue;
269  if (negativeYOnly &&
270  (innerpos.y() > 0 || middlepos.y() > 0 || outerpos.y() > 0 || outerpos.y() > innerpos.y()))
271  continue;
272  //***
273 
274  if (tripletsVerbosity_ > 2)
275  std::cout << "Trying seed with: " << innerpos << " + " << middlepos << " + " << outerpos << std::endl;
276  if (goodTriplet(innerpos, middlepos, outerpos, minRho)) {
277  OrderedHitTriplet oht(&(**iInnerHit), &(**iMiddleHit), &(**iOuterHit));
278  hitTriplets.push_back(oht);
279  if ((maxTriplets_ > 0) && (hitTriplets.size() > size_t(maxTriplets_))) {
280  hitTriplets.clear(); // clear
281  //OrderedHitTriplets().swap(hitTriplets); // really clear
282  edm::LogError("TooManyTriplets") << "Found too many triplets, bailing out.\n";
283  return false;
284  }
285  if (tripletsVerbosity_ > 3) {
286  std::cout << " accepted seed #" << (hitTriplets.size() - 1) << " w/: " << innerpos << " + " << middlepos
287  << " + " << outerpos << std::endl;
288  }
289  if (tripletsVerbosity_ == 2) {
290  std::cout << " good seed #" << (hitTriplets.size() - 1) << " w/: " << innerpos << " + " << middlepos
291  << " + " << outerpos << std::endl;
292  }
293  if (tripletsVerbosity_ > 3 && (helixVerbosity_ > 0)) { // debug the momentum here too
294  pqFromHelixFit(innerpos, middlepos, outerpos, es);
295  }
296  }
297  }
298  }
299  }
300  if ((tripletsVerbosity_ > 0) && (hitTriplets.size() > sizBefore)) {
301  std::cout << " iLss = " << seedingLayersToString(ls) << " (" << layerIndex
302  << "): # = " << innerHits.size() << "/" << middleHits.size() << "/" << outerHits.size() << ": Found "
303  << (hitTriplets.size() - sizBefore) << " seeds [running total: " << hitTriplets.size() << "]"
304  << std::endl;
305  }
306  }
307  std::sort(hitTriplets.begin(), hitTriplets.end(), HigherInnerHit());
308  return true;
309 }

References checkCharge(), checkCharge_, checkMaxHitsPerModule_, checkNoisyModules(), gather_cfg::cout, MillePedeFileConverter_cfg::e, goodHitsPerSeed_, goodTriplet(), helixVerbosity_, GlobalTrackingRegion::hits(), hitTriplets, charmTagsComputerCvsB_cfi::idx, MagneticField::inTesla(), hgcalTopologyTester_cfi::layers, eostools::ls(), magfield, maxTriplets_, negativeYOnly, positiveYOnly, pqFromHelixFit(), TrackingRegion::ptMin(), region_, seedingLayerToken_, OrderedHitTriplets::size(), tripletsVerbosity_, PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by produce().

Member Data Documentation

◆ builderName

std::string SimpleCosmicBONSeeder::builderName
private

Definition at line 66 of file SimpleCosmicBONSeeder.h.

Referenced by init(), and SimpleCosmicBONSeeder().

◆ chargeThresholds_

std::vector<int32_t> SimpleCosmicBONSeeder::chargeThresholds_
private

Definition at line 94 of file SimpleCosmicBONSeeder.h.

Referenced by checkCharge(), and SimpleCosmicBONSeeder().

◆ check_

ClusterChecker SimpleCosmicBONSeeder::check_
private

Definition at line 86 of file SimpleCosmicBONSeeder.h.

Referenced by produce().

◆ checkCharge_

bool SimpleCosmicBONSeeder::checkCharge_
private

Definition at line 92 of file SimpleCosmicBONSeeder.h.

Referenced by SimpleCosmicBONSeeder(), and triplets().

◆ checkMaxHitsPerModule_

bool SimpleCosmicBONSeeder::checkMaxHitsPerModule_
private

Definition at line 95 of file SimpleCosmicBONSeeder.h.

Referenced by SimpleCosmicBONSeeder(), and triplets().

◆ cloner

TkClonerImpl SimpleCosmicBONSeeder::cloner
private

Definition at line 81 of file SimpleCosmicBONSeeder.h.

Referenced by init(), and seeds().

◆ conf_

edm::ParameterSet SimpleCosmicBONSeeder::conf_
private

Definition at line 65 of file SimpleCosmicBONSeeder.h.

Referenced by SimpleCosmicBONSeeder().

◆ goodHitsPerSeed_

int SimpleCosmicBONSeeder::goodHitsPerSeed_
private

Definition at line 91 of file SimpleCosmicBONSeeder.h.

Referenced by SimpleCosmicBONSeeder(), and triplets().

◆ helixVerbosity_

uint32_t SimpleCosmicBONSeeder::helixVerbosity_
private

Definition at line 76 of file SimpleCosmicBONSeeder.h.

Referenced by pqFromHelixFit(), and triplets().

◆ hitTriplets

OrderedHitTriplets SimpleCosmicBONSeeder::hitTriplets
private

Definition at line 89 of file SimpleCosmicBONSeeder.h.

Referenced by produce(), seeds(), and triplets().

◆ magfield

edm::ESHandle<MagneticField> SimpleCosmicBONSeeder::magfield
private

Definition at line 78 of file SimpleCosmicBONSeeder.h.

Referenced by init(), pqFromHelixFit(), produce(), seeds(), and triplets().

◆ matchedRecHitUsesAnd_

bool SimpleCosmicBONSeeder::matchedRecHitUsesAnd_
private

Definition at line 93 of file SimpleCosmicBONSeeder.h.

Referenced by checkCharge(), and SimpleCosmicBONSeeder().

◆ maxHitsPerModule_

std::vector<int32_t> SimpleCosmicBONSeeder::maxHitsPerModule_
private

Definition at line 96 of file SimpleCosmicBONSeeder.h.

Referenced by checkNoisyModules(), and SimpleCosmicBONSeeder().

◆ maxSeeds_

int32_t SimpleCosmicBONSeeder::maxSeeds_
private

Definition at line 87 of file SimpleCosmicBONSeeder.h.

Referenced by seeds().

◆ maxTriplets_

int32_t SimpleCosmicBONSeeder::maxTriplets_
private

Definition at line 87 of file SimpleCosmicBONSeeder.h.

Referenced by triplets().

◆ negativeYOnly

bool SimpleCosmicBONSeeder::negativeYOnly
private

Definition at line 103 of file SimpleCosmicBONSeeder.h.

Referenced by SimpleCosmicBONSeeder(), and triplets().

◆ pMin_

double SimpleCosmicBONSeeder::pMin_
private

Definition at line 70 of file SimpleCosmicBONSeeder.h.

Referenced by seeds(), and SimpleCosmicBONSeeder().

◆ positiveYOnly

bool SimpleCosmicBONSeeder::positiveYOnly
private

Definition at line 102 of file SimpleCosmicBONSeeder.h.

Referenced by SimpleCosmicBONSeeder(), and triplets().

◆ region_

GlobalTrackingRegion SimpleCosmicBONSeeder::region_
private

Definition at line 69 of file SimpleCosmicBONSeeder.h.

Referenced by seeds(), SimpleCosmicBONSeeder(), and triplets().

◆ rescaleError_

double SimpleCosmicBONSeeder::rescaleError_
private

Definition at line 74 of file SimpleCosmicBONSeeder.h.

Referenced by seeds().

◆ seedingLayerToken_

edm::EDGetTokenT<SeedingLayerSetsHits> SimpleCosmicBONSeeder::seedingLayerToken_
private

Definition at line 68 of file SimpleCosmicBONSeeder.h.

Referenced by triplets().

◆ seedOnMiddle_

bool SimpleCosmicBONSeeder::seedOnMiddle_
private

Definition at line 73 of file SimpleCosmicBONSeeder.h.

Referenced by seeds().

◆ seedVerbosity_

uint32_t SimpleCosmicBONSeeder::seedVerbosity_
private

Definition at line 76 of file SimpleCosmicBONSeeder.h.

Referenced by seeds().

◆ thePropagatorAl

PropagatorWithMaterial* SimpleCosmicBONSeeder::thePropagatorAl
private

Definition at line 83 of file SimpleCosmicBONSeeder.h.

Referenced by done(), init(), and seeds().

◆ thePropagatorOp

PropagatorWithMaterial* SimpleCosmicBONSeeder::thePropagatorOp
private

Definition at line 84 of file SimpleCosmicBONSeeder.h.

Referenced by done(), init(), and seeds().

◆ theUpdator

KFUpdator* SimpleCosmicBONSeeder::theUpdator
private

Definition at line 82 of file SimpleCosmicBONSeeder.h.

Referenced by done(), init(), and seeds().

◆ tracker

edm::ESHandle<TrackerGeometry> SimpleCosmicBONSeeder::tracker
private

Definition at line 79 of file SimpleCosmicBONSeeder.h.

Referenced by init(), and seeds().

◆ tripletsVerbosity_

uint32_t SimpleCosmicBONSeeder::tripletsVerbosity_
private

Definition at line 76 of file SimpleCosmicBONSeeder.h.

Referenced by checkCharge(), checkNoisyModules(), goodTriplet(), and triplets().

◆ TTTRHBuilder

edm::ESHandle<TransientTrackingRecHitBuilder> SimpleCosmicBONSeeder::TTTRHBuilder
private

Definition at line 80 of file SimpleCosmicBONSeeder.h.

Referenced by init().

◆ writeTriplets_

bool SimpleCosmicBONSeeder::writeTriplets_
private

Definition at line 71 of file SimpleCosmicBONSeeder.h.

Referenced by produce(), and SimpleCosmicBONSeeder().

Vector3DBase
Definition: Vector3DBase.h:8
SimpleCosmicBONSeeder::chargeThresholds_
std::vector< int32_t > chargeThresholds_
Definition: SimpleCosmicBONSeeder.h:94
TrackerGeometry::idToDet
const TrackerGeomDet * idToDet(DetId) const override
Definition: TrackerGeometry.cc:193
edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
eostools.ls
def ls(path, rec=False)
Definition: eostools.py:349
KFUpdator::update
TrajectoryStateOnSurface update(const TrajectoryStateOnSurface &, const TrackingRecHit &) const override
Definition: KFUpdator.cc:177
SimpleCosmicBONSeeder::thePropagatorAl
PropagatorWithMaterial * thePropagatorAl
Definition: SimpleCosmicBONSeeder.h:83
MagneticField::inTesla
virtual GlobalVector inTesla(const GlobalPoint &gp) const =0
Field value ad specified global point, in Tesla.
start
Definition: start.py:1
hfClusterShapes_cfi.hits
hits
Definition: hfClusterShapes_cfi.py:5
edm::isNotFinite
constexpr bool isNotFinite(T x)
Definition: isFinite.h:9
PV3DBase::x
T x() const
Definition: PV3DBase.h:59
FastHelix
Definition: FastHelix.h:26
DiDispStaMuonMonitor_cfi.pt
pt
Definition: DiDispStaMuonMonitor_cfi.py:39
convertSQLitetoXML_cfg.output
output
Definition: convertSQLitetoXML_cfg.py:32
min
T min(T a, T b)
Definition: MathUtil.h:58
SimpleCosmicBONSeeder::seedingLayerToken_
edm::EDGetTokenT< SeedingLayerSetsHits > seedingLayerToken_
Definition: SimpleCosmicBONSeeder.h:68
multPhiCorr_741_25nsDY_cfi.py
py
Definition: multPhiCorr_741_25nsDY_cfi.py:12
TrackingRecHit::hit
virtual TrackingRecHit const * hit() const
Definition: TrackingRecHit.h:75
trajectoryStateTransform::persistentState
PTrajectoryStateOnDet persistentState(const TrajectoryStateOnSurface &ts, unsigned int detid)
Definition: TrajectoryStateTransform.cc:14
SimpleCosmicBONSeeder::init
void init(const edm::EventSetup &c)
Definition: SimpleCosmicBONSeeder.cc:127
gather_cfg.cout
cout
Definition: gather_cfg.py:144
SeedingHitSet::ConstRecHitPointer
BaseTrackerRecHit const * ConstRecHitPointer
Definition: SeedingHitSet.h:10
SimpleCosmicBONSeeder::TTTRHBuilder
edm::ESHandle< TransientTrackingRecHitBuilder > TTTRHBuilder
Definition: SimpleCosmicBONSeeder.h:80
SimpleCosmicBONSeeder::seedOnMiddle_
bool seedOnMiddle_
Definition: SimpleCosmicBONSeeder.h:73
TransientRecHitRecord
Definition: TransientRecHitRecord.h:14
SeedingLayerSetsHits
Definition: SeedingLayerSetsHits.h:18
HigherInnerHit
Definition: SimpleCosmicBONSeeder.cc:137
oppositeToMomentum
Definition: PropagationDirection.h:4
SimpleCosmicBONSeeder::checkCharge
bool checkCharge(const TrackingRecHit *hit) const
Definition: SimpleCosmicBONSeeder.cc:310
charmTagsComputerCvsB_cfi.idx
idx
Definition: charmTagsComputerCvsB_cfi.py:108
SimpleCosmicBONSeeder::triplets
bool triplets(const edm::Event &e, const edm::EventSetup &c)
Definition: SimpleCosmicBONSeeder.cc:171
SiStripRecHit2D
Definition: SiStripRecHit2D.h:7
edm::ParameterSet::getUntrackedParameter
T getUntrackedParameter(std::string const &, T const &) const
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:160
GlobalVector
Global3DVector GlobalVector
Definition: GlobalVector.h:10
GlobalTrackingRegion::hits
TrackingRegion::Hits hits(const edm::EventSetup &es, const SeedingLayerSetsHits::SeedingLayer &layer) const override
get hits from layer compatible with region constraints
Definition: GlobalTrackingRegion.cc:29
convertSQLiteXML.ok
bool ok
Definition: convertSQLiteXML.py:98
edm::Handle
Definition: AssociativeIterator.h:50
GlobalTrackingRegion
Definition: GlobalTrackingRegion.h:13
SimpleCosmicBONSeeder::seedVerbosity_
uint32_t seedVerbosity_
Definition: SimpleCosmicBONSeeder.h:76
SimpleCosmicBONSeeder::hitTriplets
OrderedHitTriplets hitTriplets
Definition: SimpleCosmicBONSeeder.h:89
SimpleCosmicBONSeeder::tripletsVerbosity_
uint32_t tripletsVerbosity_
Definition: SimpleCosmicBONSeeder.h:76
end
#define end
Definition: vmac.h:39
SimpleCosmicBONSeeder::done
void done()
Definition: SimpleCosmicBONSeeder.cc:621
SeedingLayerSetsHits::LayerSetIndex
unsigned short LayerSetIndex
Definition: SeedingLayerSetsHits.h:28
TkTransientTrackingRecHitBuilder
Definition: TkTransientTrackingRecHitBuilder.h:15
SiStripCluster::firstStrip
uint16_t firstStrip() const
Definition: SiStripCluster.h:38
SimpleCosmicBONSeeder::cloner
TkClonerImpl cloner
Definition: SimpleCosmicBONSeeder.h:81
SimpleCosmicBONSeeder::pqFromHelixFit
std::pair< GlobalVector, int > pqFromHelixFit(const GlobalPoint &inner, const GlobalPoint &middle, const GlobalPoint &outer, const edm::EventSetup &iSetup) const
Definition: SimpleCosmicBONSeeder.cc:403
PV3DBase::z
T z() const
Definition: PV3DBase.h:61
AlgebraicMatrixID
ROOT::Math::SMatrixIdentity AlgebraicMatrixID
Definition: AlgebraicROOTObjects.h:72
SimpleCosmicBONSeeder::builderName
std::string builderName
Definition: SimpleCosmicBONSeeder.h:66
IdealMagneticFieldRecord
Definition: IdealMagneticFieldRecord.h:11
Propagator
Definition: Propagator.h:44
DetId
Definition: DetId.h:17
SimpleCosmicBONSeeder::maxHitsPerModule_
std::vector< int32_t > maxHitsPerModule_
Definition: SimpleCosmicBONSeeder.h:96
TrajectoryStateOnSurface
Definition: TrajectoryStateOnSurface.h:16
PropagatorWithMaterial
Definition: PropagatorWithMaterial.h:25
SimpleCosmicBONSeeder::checkCharge_
bool checkCharge_
Definition: SimpleCosmicBONSeeder.h:92
CurvilinearTrajectoryError
Definition: CurvilinearTrajectoryError.h:27
TrackCandidateProducer_cfi.propagator
propagator
Definition: TrackCandidateProducer_cfi.py:17
SimpleCosmicBONSeeder::magfield
edm::ESHandle< MagneticField > magfield
Definition: SimpleCosmicBONSeeder.h:78
std::swap
void swap(edm::DataFrameContainer &lhs, edm::DataFrameContainer &rhs)
Definition: DataFrameContainer.h:209
SurfaceOrientation::inner
Definition: Surface.h:19
SimpleCosmicBONSeeder::rescaleError_
double rescaleError_
Definition: SimpleCosmicBONSeeder.h:74
TrackerDigiGeometryRecord
Definition: TrackerDigiGeometryRecord.h:15
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
SimpleCosmicBONSeeder::goodTriplet
bool goodTriplet(const GlobalPoint &inner, const GlobalPoint &middle, const GlobalPoint &outer, const double &minRho) const
Definition: SimpleCosmicBONSeeder.cc:376
MagneticField::nominalValue
int nominalValue() const
The nominal field value for this map in kGauss.
Definition: MagneticField.h:49
SiStripMatchedRecHit2D::stereoHit
SiStripRecHit2D stereoHit() const
Definition: SiStripMatchedRecHit2D.h:25
SimpleCosmicBONSeeder::conf_
edm::ParameterSet conf_
Definition: SimpleCosmicBONSeeder.h:65
SimpleCosmicBONSeeder::thePropagatorOp
PropagatorWithMaterial * thePropagatorOp
Definition: SimpleCosmicBONSeeder.h:84
StripSubdetector::TIB
static constexpr auto TIB
Definition: StripSubdetector.h:16
GlobalTrajectoryParameters
Definition: GlobalTrajectoryParameters.h:15
SimpleCosmicBONSeeder::check_
ClusterChecker check_
Definition: SimpleCosmicBONSeeder.h:86
GlobalPoint
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
TrackingRegion::ptMin
float ptMin() const
minimal pt of interest
Definition: TrackingRegion.h:82
Point3DBase< float, GlobalTag >
OrderedHitTriplet::middle
MiddleRecHit middle() const
Definition: OrderedHitTriplet.h:20
SimpleCosmicBONSeeder::theUpdator
KFUpdator * theUpdator
Definition: SimpleCosmicBONSeeder.h:82
SimpleCosmicBONSeeder::matchedRecHitUsesAnd_
bool matchedRecHitUsesAnd_
Definition: SimpleCosmicBONSeeder.h:93
SimpleCosmicBONSeeder::region_
GlobalTrackingRegion region_
Definition: SimpleCosmicBONSeeder.h:69
SimpleCosmicBONSeeder::seeds
bool seeds(TrajectorySeedCollection &output, const edm::EventSetup &iSetup)
Definition: SimpleCosmicBONSeeder.cc:456
DetId::subdetId
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum)
Definition: DetId.h:48
DDAxes::rho
SimpleCosmicBONSeeder::maxSeeds_
int32_t maxSeeds_
Definition: SimpleCosmicBONSeeder.h:87
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
OrderedHitTriplet::outer
OuterRecHit outer() const
Definition: OrderedHitTriplet.h:21
ALCARECOTkAlJpsiMuMu_cff.charge
charge
Definition: ALCARECOTkAlJpsiMuMu_cff.py:47
ntuplemaker.fill
fill
Definition: ntuplemaker.py:304
SimpleCosmicBONSeeder::pMin_
double pMin_
Definition: SimpleCosmicBONSeeder.h:70
GeomDet::toGlobal
GlobalPoint toGlobal(const Local2DPoint &lp) const
Conversion to the global R.F. from the R.F. of the GeomDet.
Definition: GeomDet.h:49
edm::ParameterSet
Definition: ParameterSet.h:36
edm::LogError
Definition: MessageLogger.h:183
DetId::Tracker
Definition: DetId.h:25
SiStripPI::max
Definition: SiStripPayloadInspectorHelper.h:169
beam_dqm_sourceclient-live_cfg.cerr
cerr
Definition: beam_dqm_sourceclient-live_cfg.py:17
SiStripMatchedRecHit2D::monoHit
SiStripRecHit2D monoHit() const
Definition: SiStripMatchedRecHit2D.h:26
PV3DBase::y
T y() const
Definition: PV3DBase.h:60
SiStripCluster::amplitudes
const std::vector< uint8_t > & amplitudes() const
Definition: SiStripCluster.h:51
createfilelist.int
int
Definition: createfilelist.py:10
SimpleCosmicBONSeeder::writeTriplets_
bool writeTriplets_
Definition: SimpleCosmicBONSeeder.h:71
SimpleCosmicBONSeeder::checkNoisyModules
void checkNoisyModules(const std::vector< SeedingHitSet::ConstRecHitPointer > &hits, std::vector< bool > &oks) const
Definition: SimpleCosmicBONSeeder.cc:347
OrderedHitTriplets::size
unsigned int size() const override
Definition: OrderedHitTriplets.h:13
FastCircle
Definition: FastCircle.h:33
get
#define get
SimpleCosmicBONSeeder::helixVerbosity_
uint32_t helixVerbosity_
Definition: SimpleCosmicBONSeeder.h:76
TrackingRecHit::clone
virtual TrackingRecHit * clone() const =0
TrackingRecHit
Definition: TrackingRecHit.h:21
PV3DBase::mag
T mag() const
Definition: PV3DBase.h:64
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
multPhiCorr_741_25nsDY_cfi.px
px
Definition: multPhiCorr_741_25nsDY_cfi.py:10
SimpleCosmicBONSeeder::negativeYOnly
bool negativeYOnly
Definition: SimpleCosmicBONSeeder.h:103
eostools.move
def move(src, dest)
Definition: eostools.py:511
DetId::rawId
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
StripSubdetector::TEC
static constexpr auto TEC
Definition: StripSubdetector.h:19
FreeTrajectoryState
Definition: FreeTrajectoryState.h:27
SiStripMatchedRecHit2D
Definition: SiStripMatchedRecHit2D.h:8
PVValHelper::dz
Definition: PVValidationHelpers.h:50
SimpleCosmicBONSeeder::tracker
edm::ESHandle< TrackerGeometry > tracker
Definition: SimpleCosmicBONSeeder.h:79
OrderedHitTriplet::inner
InnerRecHit inner() const
Definition: OrderedHitTriplet.h:19
ev
bool ev
Definition: Hydjet2Hadronizer.cc:95
SeedingLayerSetsHits::SeedingLayerSet
Definition: SeedingLayerSetsHits.h:65
StripSubdetector::TOB
static constexpr auto TOB
Definition: StripSubdetector.h:18
SimpleCosmicBONSeeder::goodHitsPerSeed_
int goodHitsPerSeed_
Definition: SimpleCosmicBONSeeder.h:91
ptmin
double ptmin
Definition: HydjetWrapper.h:84
OrderedHitTriplet
Definition: OrderedHitTriplet.h:11
TrajectorySeed
Definition: TrajectorySeed.h:17
cms::Exception
Definition: Exception.h:70
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
PTrajectoryStateOnDet
Definition: PTrajectoryStateOnDet.h:10
command_line.start
start
Definition: command_line.py:167
SurfaceOrientation::outer
Definition: Surface.h:19
SimpleCosmicBONSeeder::checkMaxHitsPerModule_
bool checkMaxHitsPerModule_
Definition: SimpleCosmicBONSeeder.h:95
AlgebraicSymMatrix55
ROOT::Math::SMatrix< double, 5, 5, ROOT::Math::MatRepSym< double, 5 > > AlgebraicSymMatrix55
Definition: AlgebraicROOTObjects.h:23
SiStripCluster
Definition: SiStripCluster.h:9
ClusterChecker::tooManyClusters
size_t tooManyClusters(const edm::Event &e) const
Definition: ClusterChecker.cc:44
PV3DBase::perp
T perp() const
Definition: PV3DBase.h:69
TSOS
TrajectoryStateOnSurface TSOS
Definition: TestHits.cc:19
edm::InputTag
Definition: InputTag.h:15
alongMomentum
Definition: PropagationDirection.h:4
hgcalTopologyTester_cfi.layers
layers
Definition: hgcalTopologyTester_cfi.py:8
KFUpdator
Definition: KFUpdator.h:32
StripSubdetector::TID
static constexpr auto TID
Definition: StripSubdetector.h:17
hit
Definition: SiStripHitEffFromCalibTree.cc:88
SimpleCosmicBONSeeder::maxTriplets_
int32_t maxTriplets_
Definition: SimpleCosmicBONSeeder.h:87
edm::OwnVector< TrackingRecHit >
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37
SimpleCosmicBONSeeder::positiveYOnly
bool positiveYOnly
Definition: SimpleCosmicBONSeeder.h:102