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<> edm::stream::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

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
 
virtual 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)
 
virtual ~SimpleCosmicBONSeeder ()
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
- Public Member Functions inherited from edm::stream::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
virtual ~EDProducerBase ()
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, std::unordered_multimap< std::string, edm::ProductResolverIndex > const &iIndicies, std::string const &moduleLabel)
 
virtual ~ProducerBase () noexcept(false)
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFromEvent () const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Member Functions

bool checkCharge (const TrackingRecHit *hit) const
 
bool checkCharge (const SiStripRecHit2D &hit, int subdetid) 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
 
- Public Types inherited from edm::stream::EDProducerBase
typedef EDProducerAdaptorBase ModuleType
 
- Public Types inherited from edm::ProducerBase
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::stream::EDProducerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

Definition at line 41 of file SimpleCosmicBONSeeder.h.

Constructor & Destructor Documentation

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

Definition at line 25 of file SimpleCosmicBONSeeder.cc.

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

25  :
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 {
38  edm::ParameterSet regionConf = conf_.getParameter<edm::ParameterSet>("RegionPSet");
39  float ptmin = regionConf.getParameter<double>("ptMin");
40  float originradius = regionConf.getParameter<double>("originRadius");
41  float halflength = regionConf.getParameter<double>("originHalfLength");
42  float originz = regionConf.getParameter<double>("originZPosition");
43  region_ = GlobalTrackingRegion(ptmin, originradius, halflength, originz);
44  pMin_ = regionConf.getParameter<double>("pMin");
45 
46  builderName = conf_.getParameter<std::string>("TTRHBuilder");
47 
48  //***top-bottom
49  positiveYOnly=conf_.getParameter<bool>("PositiveYOnly");
50  negativeYOnly=conf_.getParameter<bool>("NegativeYOnly");
51  //***
52 
53  produces<TrajectorySeedCollection>();
54  if (writeTriplets_) 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");
63  chargeThresholds_[StripSubdetector::TID] = ccct.getParameter<int32_t>("TID");
64  chargeThresholds_[StripSubdetector::TOB] = ccct.getParameter<int32_t>("TOB");
65  chargeThresholds_[StripSubdetector::TEC] = ccct.getParameter<int32_t>("TEC");
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  }
81  if (checkCharge_ || checkMaxHitsPerModule_) {
82  goodHitsPerSeed_ = conf.getParameter<int32_t>("minimumGoodHitsInSeed");
83  } else {
84  goodHitsPerSeed_ = 0;
85  }
86 
87 }
T getParameter(std::string const &) const
GlobalTrackingRegion region_
T getUntrackedParameter(std::string const &, T const &) const
bool existsAs(std::string const &parameterName, bool trackiness=true) const
checks if a parameter exists as a given type
Definition: ParameterSet.h:186
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
edm::EDGetTokenT< SeedingLayerSetsHits > seedingLayerToken_
double ptmin
Definition: HydjetWrapper.h:90
std::vector< int32_t > chargeThresholds_
std::vector< int32_t > maxHitsPerModule_
virtual SimpleCosmicBONSeeder::~SimpleCosmicBONSeeder ( )
inlinevirtual

Member Function Documentation

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

Definition at line 312 of file SimpleCosmicBONSeeder.cc.

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

Referenced by triplets().

312  {
313  DetId detid(hit->geographicalId());
314  if (detid.det() != DetId::Tracker) return false; // should not happen
315  int subdet = detid.subdetId();
316  if (subdet < 3) { // pixel
317  return true;
318  } else {
319  if (typeid(*hit) == typeid(SiStripMatchedRecHit2D)) {
320  const SiStripMatchedRecHit2D *mhit = static_cast<const SiStripMatchedRecHit2D *>(hit);
321  if (matchedRecHitUsesAnd_) {
322  return checkCharge(mhit->monoHit(), subdet) && checkCharge(mhit->stereoHit(), subdet);
323  } else {
324  return checkCharge(mhit->monoHit(), subdet) || checkCharge(mhit->stereoHit(), subdet);
325  }
326  } else if (typeid(*hit) == typeid(SiStripRecHit2D)) {
327  return checkCharge(static_cast<const SiStripRecHit2D &>(*hit), subdet);
328  } else {
329  return true;
330  }
331  }
332 }
bool checkCharge(const TrackingRecHit *hit) const
int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:37
Definition: DetId.h:18
SiStripRecHit2D stereoHit() const
SiStripRecHit2D monoHit() const
DetId geographicalId() const
bool SimpleCosmicBONSeeder::checkCharge ( const SiStripRecHit2D hit,
int  subdetid 
) const
private

Definition at line 335 of file SimpleCosmicBONSeeder.cc.

References SiStripCluster::amplitudes(), MessageLogger_cfi::cerr, ALCARECOTkAlJpsiMuMu_cff::charge, chargeThresholds_, SiStripRecHit2D::cluster(), SiStripCluster::firstStrip(), TrackingRecHit::geographicalId(), edm::Ref< C, T, F >::get(), createfilelist::int, DetId::rawId(), and tripletsVerbosity_.

335  {
336  const SiStripCluster *clust = hit.cluster().get();
337  int charge = std::accumulate(clust->amplitudes().begin(), clust->amplitudes().end(), int(0));
338  if (tripletsVerbosity_ > 1) {
339  std::cerr << "Hit on " << subdetid << ", charge = " << charge << ", threshold = " << chargeThresholds_[subdetid]
340  << ", detid = " << hit.geographicalId().rawId() << ", firstStrip = " << clust->firstStrip() << std::endl;
341  } else if ((tripletsVerbosity_ == 1) && (charge < chargeThresholds_[subdetid])) {
342  std::cerr << "Hit on " << subdetid << ", charge = " << charge << ", threshold = " << chargeThresholds_[subdetid]
343  << ", detid = " << hit.geographicalId().rawId() << ", firstStrip = " << clust->firstStrip() << std::endl;
344  }
345  return charge > chargeThresholds_[subdetid];
346 }
uint16_t firstStrip() const
uint32_t rawId() const
get the raw id
Definition: DetId.h:43
ClusterRef cluster() const
T const * get() const
Returns C++ pointer to the item.
Definition: Ref.h:244
std::vector< int32_t > chargeThresholds_
DetId geographicalId() const
const std::vector< uint8_t > & amplitudes() const
void SimpleCosmicBONSeeder::checkNoisyModules ( const std::vector< SeedingHitSet::ConstRecHitPointer > &  hits,
std::vector< bool > &  oks 
) const
private

Definition at line 348 of file SimpleCosmicBONSeeder.cc.

References MessageLogger_cfi::cerr, end, lumiContext::fill, maxHitsPerModule_, min(), convertSQLiteXML::ok, DetId::rawId(), command_line::start, DetId::subdetId(), and tripletsVerbosity_.

Referenced by triplets().

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) << " rechits"
360  << " (threshold is " << maxHitsPerModule_[lastid.subdetId()] << ")" << std::endl;
361  }
362  std::fill(okStart,ok,false);
363  } else if (tripletsVerbosity_ > 0) {
364  if ( (it - start) > std::min(4,maxHitsPerModule_[lastid.subdetId()]/4) ) {
365  std::cerr << "SimpleCosmicBONSeeder: Not marking noisy module " << lastid.rawId() << ", it has " << (it-start) << " rechits"
366  << " (threshold is " << maxHitsPerModule_[lastid.subdetId()] << ")" << std::endl;
367  }
368  }
369  start = it; okStart = ok;
370  }
371 }
Definition: start.py:1
uint32_t rawId() const
get the raw id
Definition: DetId.h:43
BaseTrackerRecHit const * ConstRecHitPointer
Definition: SeedingHitSet.h:11
#define end
Definition: vmac.h:37
T min(T a, T b)
Definition: MathUtil.h:58
int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:37
Definition: DetId.h:18
std::vector< int32_t > maxHitsPerModule_
void SimpleCosmicBONSeeder::done ( )

Definition at line 610 of file SimpleCosmicBONSeeder.cc.

References thePropagatorAl, thePropagatorOp, and theUpdator.

Referenced by produce(), and ~SimpleCosmicBONSeeder().

610  {
611  delete thePropagatorAl;
612  delete thePropagatorOp;
613  delete theUpdator;
614 }
PropagatorWithMaterial * thePropagatorOp
PropagatorWithMaterial * thePropagatorAl
bool SimpleCosmicBONSeeder::goodTriplet ( const GlobalPoint inner,
const GlobalPoint middle,
const GlobalPoint outer,
const double &  minRho 
) const

Definition at line 373 of file SimpleCosmicBONSeeder.cc.

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

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

373  {
374  float dyOM = outer.y() - middle.y(), dyIM = inner.y() - middle.y();
375  if ((dyOM * dyIM > 0) && (fabs(dyOM)>10) && (fabs(dyIM)>10)) {
376  if (tripletsVerbosity_ > 2) std::cout << " fail for non coherent dy" << std::endl;
377  return false;
378  }
379  float dzOM = outer.z() - middle.z(), dzIM = inner.z() - middle.z();
380  if ((dzOM * dzIM > 0) && (fabs(dzOM)>50) && (fabs(dzIM)>50)) {
381  if (tripletsVerbosity_ > 2) std::cout << " fail for non coherent dz" << std::endl;
382  return false;
383  }
384  if (minRho > 0) {
385  FastCircle theCircle(inner,middle,outer);
386  if (theCircle.rho() < minRho) {
387  if (tripletsVerbosity_ > 2) std::cout << " fail for pt cut" << std::endl;
388  return false;
389  }
390  }
391  return true;
392 }
T y() const
Definition: PV3DBase.h:63
T z() const
Definition: PV3DBase.h:64
void SimpleCosmicBONSeeder::init ( const edm::EventSetup c)

Definition at line 130 of file SimpleCosmicBONSeeder.cc.

References alongMomentum, builderName, cloner, edm::EventSetup::get(), magfield, oppositeToMomentum, edm::ESHandle< T >::product(), thePropagatorAl, thePropagatorOp, theUpdator, tracker, and TTTRHBuilder.

Referenced by produce(), and ~SimpleCosmicBONSeeder().

131 {
132  iSetup.get<TrackerDigiGeometryRecord>().get(tracker);
134  cloner = ((TkTransientTrackingRecHitBuilder const *)(TTTRHBuilder.product()))->cloner();
135  // FIXME: these should come from ES too!!
138  theUpdator = new KFUpdator();
139 
140 }
edm::ESHandle< TrackerGeometry > tracker
PropagatorWithMaterial * thePropagatorOp
edm::ESHandle< MagneticField > magfield
edm::ESHandle< TransientTrackingRecHitBuilder > TTTRHBuilder
PropagatorWithMaterial * thePropagatorAl
T const * product() const
Definition: ESHandle.h:86
std::pair< GlobalVector, int > SimpleCosmicBONSeeder::pqFromHelixFit ( const GlobalPoint inner,
const GlobalPoint middle,
const GlobalPoint outer,
const edm::EventSetup iSetup 
) const

Definition at line 395 of file SimpleCosmicBONSeeder.cc.

References funct::abs(), gather_cfg::cout, allConversions_cfi::dz, helixVerbosity_, MagneticField::inTesla(), magfield, MagneticField::nominalValue(), EnergyCorrector::pt, 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(), triplets(), and ~SimpleCosmicBONSeeder().

396  {
397  if (helixVerbosity_ > 0) {
398  std::cout << "DEBUG PZ =====" << std::endl;
399  FastHelix helix(inner,middle,outer,magfield->nominalValue(), &*magfield);
400  GlobalVector gv=helix.stateAtVertex().momentum(); // status on inner hit
401  std::cout << "FastHelix P = " << gv << "\n";
402  std::cout << "FastHelix Q = " << helix.stateAtVertex().charge() << "\n";
403  }
404 
405  // My attempt (with different approx from FastHelix)
406  // 1) fit the circle
407  FastCircle theCircle(inner,middle,outer);
408  double rho = theCircle.rho();
409 
410  // 2) Get the PT
411  GlobalVector tesla = magfield->inTesla(middle);
412  double pt = 0.01 * rho * (0.3*tesla.z());
413 
414  // 3) Get the PX,PY at OUTER hit (VERTEX)
415  double dx1 = outer.x()-theCircle.x0();
416  double dy1 = outer.y()-theCircle.y0();
417  double py = pt*dx1/rho, px = -pt*dy1/rho;
418  if(px*(middle.x() - outer.x()) + py*(middle.y() - outer.y()) < 0.) {
419  px *= -1.; py *= -1.;
420  }
421 
422  // 4) Get the PZ through pz = pT*(dz/d(R*phi)))
423  double dz = inner.z() - outer.z();
424  double sinphi = ( dx1*(inner.y()-theCircle.y0()) - dy1*(inner.x()-theCircle.x0())) / (rho * rho);
425  double dphi = std::abs(std::asin(sinphi));
426  double pz = pt * dz / (dphi * rho);
427 
428  int myq = ((theCircle.x0()*py - theCircle.y0()*px) / tesla.z()) > 0. ? +1 : -1;
429 
430  std::pair<GlobalVector,int> mypq(GlobalVector(px,py,pz),myq);
431 
432  if (helixVerbosity_ > 1) {
433  std::cout << "Gio: pt = " << pt << std::endl;
434  std::cout << "Gio: dz = " << dz << ", sinphi = " << sinphi << ", dphi = " << dphi << ", dz/drphi = " << (dz/dphi/rho) << std::endl;
435  }
436  if (helixVerbosity_ > 0) {
437  std::cout << "Gio's fit P = " << mypq.first << "\n";
438  std::cout << "Gio's fit Q = " << myq << "\n";
439  }
440 
441  return mypq;
442 }
int nominalValue() const
The nominal field value for this map in kGauss.
Definition: MagneticField.h:56
T y() const
Definition: PV3DBase.h:63
T z() const
Definition: PV3DBase.h:64
edm::ESHandle< MagneticField > magfield
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
virtual GlobalVector inTesla(const GlobalPoint &gp) const =0
Field value ad specified global point, in Tesla.
T x() const
Definition: PV3DBase.h:62
Global3DVector GlobalVector
Definition: GlobalVector.h:10
void SimpleCosmicBONSeeder::produce ( edm::Event e,
const edm::EventSetup c 
)
overridevirtual

Definition at line 90 of file SimpleCosmicBONSeeder.cc.

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

Referenced by ~SimpleCosmicBONSeeder().

91 {
92  auto output = std::make_unique<TrajectorySeedCollection>();
93  auto outtriplets = std::make_unique<edm::OwnVector<TrackingRecHit>>();
94 
95  es.get<IdealMagneticFieldRecord>().get(magfield);
96  if (magfield->inTesla(GlobalPoint(0,0,0)).mag() > 0.01) {
97  size_t clustsOrZero = check_.tooManyClusters(ev);
98  if (clustsOrZero) {
99  edm::LogError("TooManyClusters") << "Found too many clusters (" << clustsOrZero << "), bailing out.\n";
100  } else {
101  init(es);
102  bool tripletsOk = triplets(ev,es);
103  if (tripletsOk) {
104 
105  bool seedsOk = seeds(*output,es);
106  if (!seedsOk) { }
107 
108  if (writeTriplets_) {
109  for (OrderedHitTriplets::const_iterator it = hitTriplets.begin(); it != hitTriplets.end(); ++it) {
110  const TrackingRecHit * hit1 = it->inner()->hit();
111  const TrackingRecHit * hit2 = it->middle()->hit();
112  const TrackingRecHit * hit3 = it->outer()->hit();
113  outtriplets->push_back(hit1->clone());
114  outtriplets->push_back(hit2->clone());
115  outtriplets->push_back(hit3->clone());
116  }
117  }
118  }
119  done();
120  }
121  }
122 
123  if (writeTriplets_) {
124  ev.put(std::move(outtriplets), "cosmicTriplets");
125  }
126  ev.put(std::move(output));
127 }
bool triplets(const edm::Event &e, const edm::EventSetup &c)
void init(const edm::EventSetup &c)
OrderedHitTriplets hitTriplets
bool ev
T mag() const
Definition: PV3DBase.h:67
edm::ESHandle< MagneticField > magfield
virtual TrackingRecHit * clone() const =0
size_t tooManyClusters(const edm::Event &e) const
virtual GlobalVector inTesla(const GlobalPoint &gp) const =0
Field value ad specified global point, in Tesla.
virtual TrackingRecHit const * hit() const
bool seeds(TrajectorySeedCollection &output, const edm::EventSetup &iSetup)
def move(src, dest)
Definition: eostools.py:510
bool SimpleCosmicBONSeeder::seeds ( TrajectorySeedCollection output,
const edm::EventSetup iSetup 
)

Definition at line 444 of file SimpleCosmicBONSeeder.cc.

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

Referenced by produce(), and ~SimpleCosmicBONSeeder().

445 {
447 
448  for (size_t it=0;it<hitTriplets.size();it++){
449  OrderedHitTriplet &trip = const_cast<OrderedHitTriplet &>(hitTriplets[it]);
450 
451  GlobalPoint inner = tracker->idToDet((*(trip.inner())).geographicalId())->surface().
452  toGlobal((*(trip.inner())).localPosition());
453 
454  GlobalPoint middle = tracker->idToDet((*(trip.middle())).geographicalId())->surface().
455  toGlobal((*(trip.middle())).localPosition());
456 
457  GlobalPoint outer = tracker->idToDet((*(trip.outer())).geographicalId())->surface().
458  toGlobal((*(trip.outer())).localPosition());
459 
460  if (seedVerbosity_ > 1)
461  std::cout << "Processing triplet " << it << ": " << inner << " + " << middle << " + " << outer << std::endl;
462 
463  if ( (outer.y()-inner.y())*outer.y() < 0 ) {
464  std::swap(inner,outer);
465  trip = OrderedHitTriplet(trip.outer(),trip.middle(),trip.inner());
466 
467 // std::swap(const_cast<ctfseeding::SeedingHit &>(trip.inner()),
468 // const_cast<ctfseeding::SeedingHit &>(trip.outer()) );
469  if (seedVerbosity_ > 1) {
470  std::cout << "The seed was going away from CMS! swapped in <-> out" << std::endl;
471  std::cout << "Processing swapped triplet " << it << ": " << inner << " + " << middle << " + " << outer << std::endl;
472  }
473  }
474 
475  // First use FastHelix out of the box
476  std::pair<GlobalVector,int> pq = pqFromHelixFit(inner,middle,outer,iSetup);
477  GlobalVector gv = pq.first;
478  float ch = pq.second;
479  float Mom = sqrt( gv.x()*gv.x() + gv.y()*gv.y() + gv.z()*gv.z() );
480 
481  if(Mom > 10000 || edm::isNotFinite(Mom)) {
482  if (seedVerbosity_ > 1)
483  std::cout << "Processing triplet " << it << ": fail for momentum." << std::endl;
484  continue;
485  }
486 
487  if (gv.perp() < region_.ptMin()) {
488  if (seedVerbosity_ > 1)
489  std::cout << "Processing triplet " << it << ": fail for pt = " << gv.perp() << " < ptMin = " << region_.ptMin() << std::endl;
490  continue;
491  }
492 
493  const Propagator * propagator = 0;
494  if((outer.y()-inner.y())>0){
495  if (seedVerbosity_ > 1)
496  std::cout << "Processing triplet " << it << ": downgoing." << std::endl;
497  propagator = thePropagatorAl;
498  } else {
499  gv = -1*gv; ch = -1.*ch;
500  propagator = thePropagatorOp;
501  if (seedVerbosity_ > 1)
502  std::cout << "Processing triplet " << it << ": upgoing." << std::endl;
503  }
504 
505  if (seedVerbosity_ > 1) {
506  if (( gv.z() * (outer.z()-inner.z()) > 0 ) && ( fabs(outer.z()-inner.z()) > 5) && (fabs(gv.z()) > .01)) {
507  std::cout << "ORRORE: outer.z()-inner.z() = " << (outer.z()-inner.z()) << ", gv.z() = " << gv.z() << std::endl;
508  }
509  }
510 
511  GlobalTrajectoryParameters Gtp(outer,
512  gv,int(ch),
513  &(*magfield));
514  FreeTrajectoryState CosmicSeed(Gtp,
516  CosmicSeed.rescaleError(100);
517  if (seedVerbosity_ > 2) {
518  std::cout << "Processing triplet " << it << ". start from " << std::endl;
519  std::cout << " X = " << outer << ", P = " << gv << std::endl;
520  std::cout << " Cartesian error (X,P) = \n" << CosmicSeed.cartesianError().matrix() << std::endl;
521  }
522 
524  OrderedHitTriplet seedHits(trip.outer(),trip.middle(),trip.inner());
525  TSOS propagated, updated;
526  bool fail = false;
527  for (size_t ih = 0; ih < 3; ++ih) {
528  if ((ih == 2) && seedOnMiddle_) {
529  if (seedVerbosity_ > 2)
530  std::cout << "Stopping at middle hit, as requested." << std::endl;
531  break;
532  }
533  if (seedVerbosity_ > 2)
534  std::cout << "Processing triplet " << it << ", hit " << ih << "." << std::endl;
535  if (ih == 0) {
536  propagated = propagator->propagate(CosmicSeed, tracker->idToDet((*seedHits[ih]).geographicalId())->surface());
537  } else {
538  propagated = propagator->propagate(updated, tracker->idToDet((*seedHits[ih]).geographicalId())->surface());
539  }
540  if (!propagated.isValid()) {
541  if (seedVerbosity_ > 1)
542  std::cout << "Processing triplet " << it << ", hit " << ih << ": failed propagation." << std::endl;
543  fail = true; break;
544  } else {
545  if (seedVerbosity_ > 2)
546  std::cout << "Processing triplet " << it << ", hit " << ih << ": propagated state = " << propagated;
547  }
548  SeedingHitSet::ConstRecHitPointer tthp = seedHits[ih];
549  auto newtth = static_cast<SeedingHitSet::RecHitPointer>(cloner(*tthp,propagated));
550  updated = theUpdator->update(propagated, *newtth);
551  hits.push_back(newtth);
552  if (!updated.isValid()) {
553  if (seedVerbosity_ > 1)
554  std::cout << "Processing triplet " << it << ", hit " << ih << ": failed update." << std::endl;
555  fail = true; break;
556  } else {
557  if (seedVerbosity_ > 2)
558  std::cout << "Processing triplet " << it << ", hit " << ih << ": updated state = " << updated;
559  }
560  }
561  if (!fail && updated.isValid() && (updated.globalMomentum().perp() < region_.ptMin())) {
562  if (seedVerbosity_ > 1)
563  std::cout << "Processing triplet " << it <<
564  ": failed for final pt " << updated.globalMomentum().perp() << " < " << region_.ptMin() << std::endl;
565  fail = true;
566  }
567  if (!fail && updated.isValid() && (updated.globalMomentum().mag() < pMin_)) {
568  if (seedVerbosity_ > 1)
569  std::cout << "Processing triplet " << it <<
570  ": failed for final p " << updated.globalMomentum().perp() << " < " << pMin_ << std::endl;
571  fail = true;
572  }
573  if (!fail) {
574  if (rescaleError_ != 1.0) {
575  if (seedVerbosity_ > 2) {
576  std::cout << "Processing triplet " << it << ", rescale error by " << rescaleError_ << ": state BEFORE rescaling " << updated;
577  std::cout << " Cartesian error (X,P) before rescaling= \n" << updated.cartesianError().matrix() << std::endl;
578  }
579  updated.rescaleError(rescaleError_);
580  }
581  if (seedVerbosity_ > 0) {
582  std::cout << "Processed triplet " << it << ": success (saved as #"<<output.size()<<") : "
583  << inner << " + " << middle << " + " << outer << std::endl;
584  std::cout << " pt = " << updated.globalMomentum().perp() <<
585  " eta = " << updated.globalMomentum().eta() <<
586  " phi = " << updated.globalMomentum().phi() <<
587  " ch = " << updated.charge() << std::endl;
588  if (seedVerbosity_ > 1) {
589  std::cout << " State:" << updated;
590  } else {
591  std::cout << " X = " << updated.globalPosition() << ", P = " << updated.globalMomentum() << std::endl;
592  }
593  std::cout << " Cartesian error (X,P) = \n" << updated.cartesianError().matrix() << std::endl;
594  }
595 
597  (*(seedOnMiddle_ ? trip.middle() : trip.inner())).geographicalId().rawId());
598  output.push_back(TrajectorySeed(PTraj,hits,
599  ( (outer.y()-inner.y()>0) ? alongMomentum : oppositeToMomentum) ));
600  if ((maxSeeds_ > 0) && (output.size() > size_t(maxSeeds_))) {
601  output.clear();
602  edm::LogError("TooManySeeds") << "Found too many seeds, bailing out.\n";
603  return false;
604  }
605  }
606  }
607  return true;
608 }
GlobalTrackingRegion region_
T perp() const
Definition: PV3DBase.h:72
MiddleRecHit middle() const
ROOT::Math::SMatrixIdentity AlgebraicMatrixID
OrderedHitTriplets hitTriplets
PTrajectoryStateOnDet persistentState(const TrajectoryStateOnSurface &ts, unsigned int detid)
T y() const
Definition: PV3DBase.h:63
ROOT::Math::SMatrix< double, 5, 5, ROOT::Math::MatRepSym< double, 5 > > AlgebraicSymMatrix55
InnerRecHit inner() const
edm::ESHandle< TrackerGeometry > tracker
std::pair< GlobalVector, int > pqFromHelixFit(const GlobalPoint &inner, const GlobalPoint &middle, const GlobalPoint &outer, const edm::EventSetup &iSetup) const
void push_back(D *&d)
Definition: OwnVector.h:290
BaseTrackerRecHit const * ConstRecHitPointer
Definition: SeedingHitSet.h:11
TrajectoryStateOnSurface update(const TrajectoryStateOnSurface &, const TrackingRecHit &) const
Definition: KFUpdator.cc:75
bool isNotFinite(T x)
Definition: isFinite.h:10
void swap(edm::DataFrameContainer &lhs, edm::DataFrameContainer &rhs)
T sqrt(T t)
Definition: SSEVec.h:18
PropagatorWithMaterial * thePropagatorOp
T z() const
Definition: PV3DBase.h:64
edm::ESHandle< MagneticField > magfield
PropagatorWithMaterial * thePropagatorAl
TrajectoryStateOnSurface TSOS
Definition: TestHits.cc:19
float ptMin() const
minimal pt of interest
TrajectoryStateOnSurface propagate(STA const &state, SUR const &surface) const
Definition: Propagator.h:53
OuterRecHit outer() const
def fail(errstr="")
virtual unsigned int size() const
T x() const
Definition: PV3DBase.h:62
const TrackerGeomDet * idToDet(DetId) const
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 175 of file SimpleCosmicBONSeeder.cc.

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

Referenced by produce(), and ~SimpleCosmicBONSeeder().

175  {
176  using namespace ctfseeding;
177 
178  hitTriplets.clear();
179  hitTriplets.reserve(0);
181  e.getByToken(seedingLayerToken_, hlayers);
182  const SeedingLayerSetsHits& layers = *hlayers;
183  if(layers.numberOfLayersInSet() != 3)
184  throw cms::Exception("CtfSpecialSeedGenerator") << "You are using " << layers.numberOfLayersInSet() <<" layers in set instead of 3 ";
185 
186  double minRho = region_.ptMin() / ( 0.003 * magfield->inTesla(GlobalPoint(0,0,0)).z() );
187 
188  for(SeedingLayerSetsHits::LayerSetIndex layerIndex=0; layerIndex < layers.size(); ++layerIndex) {
189  SeedingLayerSetsHits::SeedingLayerSet ls = layers[layerIndex];
191  auto innerHits = region_.hits(es, ls[0]);
192  auto middleHits = region_.hits(es, ls[1]);
193  auto outerHits = region_.hits(es, ls[2]);
194 
195  if (tripletsVerbosity_ > 0) {
196  std::cout << "GenericTripletGenerator iLss = " << seedingLayersToString(ls)
197  << " (" << layerIndex << "): # = "
198  << innerHits.size() << "/" << middleHits.size() << "/" << outerHits.size() << std::endl;
199  }
200 
203  std::vector<TTRH> innerTTRHs, middleTTRHs, outerTTRHs;
204 
206  std::vector<bool> innerOk( innerHits.size(), true);
207  std::vector<bool> middleOk(middleHits.size(), true);
208  std::vector<bool> outerOk( outerHits.size(), true);
209 
210  size_t sizBefore = hitTriplets.size();
212  int idx = 0;
213  for (auto iOuterHit = outerHits.begin(); iOuterHit != outerHits.end(); ++idx, ++iOuterHit){
214  outerTTRHs.push_back(&(**iOuterHit));
215  if (checkCharge_ && !checkCharge(outerTTRHs.back()->hit())) outerOk[idx] = false;
216  }
217  idx = 0;
218  for (auto iMiddleHit = middleHits.begin(); iMiddleHit != middleHits.end(); ++idx, ++iMiddleHit){
219  middleTTRHs.push_back(&(**iMiddleHit));
220  if (checkCharge_ && !checkCharge(middleTTRHs.back()->hit())) middleOk[idx] = false;
221  }
222  idx = 0;
223  for (auto iInnerHit = innerHits.begin(); iInnerHit != innerHits.end(); ++idx, ++iInnerHit){
224  innerTTRHs.push_back(&(**iInnerHit));
225  if (checkCharge_ && !checkCharge(innerTTRHs.back()->hit())) innerOk[idx] = false;
226  }
228  checkNoisyModules(innerTTRHs, innerOk);
229  checkNoisyModules(middleTTRHs, middleOk);
230  checkNoisyModules(outerTTRHs, outerOk);
231  }
232 
233  for (auto iOuterHit = outerHits.begin(); iOuterHit != outerHits.end(); iOuterHit++){
234  idx = iOuterHit - outerHits.begin();
235  TTRH & outerTTRH = outerTTRHs[idx];
236  GlobalPoint outerpos = outerTTRH->globalPosition(); // this caches by itself
237  bool outerok = outerOk[idx];
238  if (outerok < goodHitsPerSeed_ - 2) {
239  if (tripletsVerbosity_ > 2)
240  std::cout << "Skipping at first hit: " << (outerok) << " < " << (goodHitsPerSeed_ - 2) << std::endl;
241  continue;
242  }
243 
244  for (auto iMiddleHit = middleHits.begin(); iMiddleHit != middleHits.end(); iMiddleHit++){
245  idx = iMiddleHit - middleHits.begin();
246  TTRH & middleTTRH = middleTTRHs[idx];
247  GlobalPoint middlepos = middleTTRH->globalPosition(); // this caches by itself
248  bool middleok = middleOk[idx];
249  if (outerok+middleok < goodHitsPerSeed_ - 1) {
250  if (tripletsVerbosity_ > 2)
251  std::cout << "Skipping at second hit: " << (outerok+middleok) << " < " << (goodHitsPerSeed_ - 1) << std::endl;
252  continue;
253  }
254 
255  for (auto iInnerHit = innerHits.begin(); iInnerHit != innerHits.end(); iInnerHit++){
256  idx = iInnerHit - innerHits.begin();
257  TTRH & innerTTRH = innerTTRHs[idx];
258  GlobalPoint innerpos = innerTTRH->globalPosition(); // this caches by itself
259  bool innerok = innerOk[idx];
260  if (outerok+middleok+innerok < goodHitsPerSeed_) {
261  if (tripletsVerbosity_ > 2)
262  std::cout << "Skipping at third hit: " << (outerok+middleok+innerok) << " < " << (goodHitsPerSeed_) << std::endl;
263  continue;
264  }
265 
266  //***top-bottom
267  if (positiveYOnly && (innerpos.y()<0 || middlepos.y()<0 || outerpos.y()<0
268  || outerpos.y() < innerpos.y()
269  ) ) continue;
270  if (negativeYOnly && (innerpos.y()>0 || middlepos.y()>0 || outerpos.y()>0
271  || outerpos.y() > innerpos.y()
272  ) ) continue;
273  //***
274 
275  if (tripletsVerbosity_ > 2) 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/: "
287  << innerpos << " + " << middlepos << " + " << outerpos << std::endl;
288  }
289  if (tripletsVerbosity_ == 2) {
290  std::cout << " good seed #" << (hitTriplets.size()-1) << " w/: "
291  << innerpos << " + " << middlepos << " + " << 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)
302  << " (" << layerIndex << "): # = "
303  << innerHits.size() << "/" << middleHits.size() << "/" << outerHits.size()
304  << ": Found " << (hitTriplets.size() - sizBefore) << " seeds [running total: " << hitTriplets.size() << "]"
305  << std::endl ;
306  }
307 
308  }
309  std::sort(hitTriplets.begin(),hitTriplets.end(),HigherInnerHit());
310  return true;
311 }
GlobalTrackingRegion region_
unsigned short numberOfLayersInSet() const
Get number of layers in each SeedingLayerSets.
std::vector< LayerSetAndLayers > layers(const SeedingLayerSetsHits &sets)
Definition: LayerTriplets.cc:4
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:457
unsigned short LayerSetIndex
OrderedHitTriplets hitTriplets
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
T y() const
Definition: PV3DBase.h:63
bool checkCharge(const TrackingRecHit *hit) const
std::pair< GlobalVector, int > pqFromHelixFit(const GlobalPoint &inner, const GlobalPoint &middle, const GlobalPoint &outer, const edm::EventSetup &iSetup) const
BaseTrackerRecHit const * ConstRecHitPointer
Definition: SeedingHitSet.h:11
T z() const
Definition: PV3DBase.h:64
edm::ESHandle< MagneticField > magfield
edm::EDGetTokenT< SeedingLayerSetsHits > seedingLayerToken_
TrackingRegion::Hits hits(const edm::EventSetup &es, const SeedingLayerSetsHits::SeedingLayer &layer) const override
get hits from layer compatible with region constraints
virtual GlobalVector inTesla(const GlobalPoint &gp) const =0
Field value ad specified global point, in Tesla.
def ls(path, rec=False)
Definition: eostools.py:348
float ptMin() const
minimal pt of interest
bool goodTriplet(const GlobalPoint &inner, const GlobalPoint &middle, const GlobalPoint &outer, const double &minRho) const
void checkNoisyModules(const std::vector< SeedingHitSet::ConstRecHitPointer > &hits, std::vector< bool > &oks) const
virtual unsigned int size() const
unsigned short size() const
Get the number of SeedingLayerSets.

Member Data Documentation

std::string SimpleCosmicBONSeeder::builderName
private

Definition at line 63 of file SimpleCosmicBONSeeder.h.

Referenced by init(), and SimpleCosmicBONSeeder().

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

Definition at line 92 of file SimpleCosmicBONSeeder.h.

Referenced by checkCharge(), and SimpleCosmicBONSeeder().

ClusterChecker SimpleCosmicBONSeeder::check_
private

Definition at line 84 of file SimpleCosmicBONSeeder.h.

Referenced by produce().

bool SimpleCosmicBONSeeder::checkCharge_
private

Definition at line 90 of file SimpleCosmicBONSeeder.h.

Referenced by SimpleCosmicBONSeeder(), and triplets().

bool SimpleCosmicBONSeeder::checkMaxHitsPerModule_
private

Definition at line 93 of file SimpleCosmicBONSeeder.h.

Referenced by SimpleCosmicBONSeeder(), and triplets().

TkClonerImpl SimpleCosmicBONSeeder::cloner
private

Definition at line 78 of file SimpleCosmicBONSeeder.h.

Referenced by init(), and seeds().

edm::ParameterSet SimpleCosmicBONSeeder::conf_
private

Definition at line 62 of file SimpleCosmicBONSeeder.h.

Referenced by SimpleCosmicBONSeeder().

int SimpleCosmicBONSeeder::goodHitsPerSeed_
private

Definition at line 89 of file SimpleCosmicBONSeeder.h.

Referenced by SimpleCosmicBONSeeder(), and triplets().

uint32_t SimpleCosmicBONSeeder::helixVerbosity_
private

Definition at line 73 of file SimpleCosmicBONSeeder.h.

Referenced by pqFromHelixFit(), and triplets().

OrderedHitTriplets SimpleCosmicBONSeeder::hitTriplets
private

Definition at line 87 of file SimpleCosmicBONSeeder.h.

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

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

Definition at line 75 of file SimpleCosmicBONSeeder.h.

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

bool SimpleCosmicBONSeeder::matchedRecHitUsesAnd_
private

Definition at line 91 of file SimpleCosmicBONSeeder.h.

Referenced by checkCharge(), and SimpleCosmicBONSeeder().

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

Definition at line 94 of file SimpleCosmicBONSeeder.h.

Referenced by checkNoisyModules(), and SimpleCosmicBONSeeder().

int32_t SimpleCosmicBONSeeder::maxSeeds_
private

Definition at line 85 of file SimpleCosmicBONSeeder.h.

Referenced by seeds().

int32_t SimpleCosmicBONSeeder::maxTriplets_
private

Definition at line 85 of file SimpleCosmicBONSeeder.h.

Referenced by triplets().

bool SimpleCosmicBONSeeder::negativeYOnly
private

Definition at line 101 of file SimpleCosmicBONSeeder.h.

Referenced by SimpleCosmicBONSeeder(), and triplets().

double SimpleCosmicBONSeeder::pMin_
private

Definition at line 67 of file SimpleCosmicBONSeeder.h.

Referenced by seeds(), and SimpleCosmicBONSeeder().

bool SimpleCosmicBONSeeder::positiveYOnly
private

Definition at line 100 of file SimpleCosmicBONSeeder.h.

Referenced by SimpleCosmicBONSeeder(), and triplets().

GlobalTrackingRegion SimpleCosmicBONSeeder::region_
private

Definition at line 66 of file SimpleCosmicBONSeeder.h.

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

double SimpleCosmicBONSeeder::rescaleError_
private

Definition at line 71 of file SimpleCosmicBONSeeder.h.

Referenced by seeds().

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

Definition at line 65 of file SimpleCosmicBONSeeder.h.

Referenced by triplets().

bool SimpleCosmicBONSeeder::seedOnMiddle_
private

Definition at line 70 of file SimpleCosmicBONSeeder.h.

Referenced by seeds().

uint32_t SimpleCosmicBONSeeder::seedVerbosity_
private

Definition at line 73 of file SimpleCosmicBONSeeder.h.

Referenced by seeds().

PropagatorWithMaterial* SimpleCosmicBONSeeder::thePropagatorAl
private

Definition at line 80 of file SimpleCosmicBONSeeder.h.

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

PropagatorWithMaterial* SimpleCosmicBONSeeder::thePropagatorOp
private

Definition at line 81 of file SimpleCosmicBONSeeder.h.

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

KFUpdator* SimpleCosmicBONSeeder::theUpdator
private

Definition at line 79 of file SimpleCosmicBONSeeder.h.

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

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

Definition at line 76 of file SimpleCosmicBONSeeder.h.

Referenced by init(), and seeds().

uint32_t SimpleCosmicBONSeeder::tripletsVerbosity_
private

Definition at line 73 of file SimpleCosmicBONSeeder.h.

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

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

Definition at line 77 of file SimpleCosmicBONSeeder.h.

Referenced by init().

bool SimpleCosmicBONSeeder::writeTriplets_
private

Definition at line 68 of file SimpleCosmicBONSeeder.h.

Referenced by produce(), and SimpleCosmicBONSeeder().