CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
SimpleCosmicBONSeeder Class Reference

#include <SimpleCosmicBONSeeder.h>

Inheritance diagram for SimpleCosmicBONSeeder:
edm::EDProducer edm::ProducerBase 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)
 
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::EDProducer
 EDProducer ()
 
virtual ~EDProducer ()
 
- Public Member Functions inherited from edm::ProducerBase
 ProducerBase ()
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
boost::function< void(const
BranchDescription &)> 
registrationCallback () const
 used by the fwk to register list of products More...
 
virtual ~ProducerBase ()
 

Private Member Functions

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

Private Attributes

std::string builderName
 
std::vector< int32_t > chargeThresholds_
 
ClusterChecker check_
 
bool checkCharge_
 
bool checkMaxHitsPerModule_
 
edm::ParameterSet conf_
 
int goodHitsPerSeed_
 
uint32_t helixVerbosity_
 
OrderedHitTriplets hitTriplets
 
std::vector< std::string > layerTripletNames_
 
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_
 
bool seedOnMiddle_
 
uint32_t seedVerbosity_
 
SeedingLayerSetsBuilder theLsb
 
PropagatorWithMaterialthePropagatorAl
 
PropagatorWithMaterialthePropagatorOp
 
KFUpdatortheUpdator
 
edm::ESHandle< TrackerGeometrytracker
 
TrajectoryStateTransform transformer
 
uint32_t tripletsVerbosity_
 
edm::ESHandle
< TransientTrackingRecHitBuilder
TTTRHBuilder
 
bool writeTriplets_
 

Additional Inherited Members

- Public Types inherited from edm::EDProducer
typedef EDProducer ModuleType
 
typedef WorkerT< EDProducerWorkerType
 
- Public Types inherited from edm::ProducerBase
typedef
ProductRegistryHelper::TypeLabelList 
TypeLabelList
 
- Static Public Member Functions inherited from edm::EDProducer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::EDProducer
CurrentProcessingContext const * currentContext () const
 
- Protected Member Functions inherited from edm::ProducerBase
template<class TProducer , class TMethod >
void callWhenNewProductsRegistered (TProducer *iProd, TMethod iMethod)
 

Detailed Description

Definition at line 38 of file SimpleCosmicBONSeeder.h.

Constructor & Destructor Documentation

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

Definition at line 16 of file SimpleCosmicBONSeeder.cc.

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

16  :
17  conf_(conf),
18  theLsb(conf.getParameter<edm::ParameterSet>("TripletsPSet")),
19  writeTriplets_(conf.getParameter<bool>("writeTriplets")),
20  seedOnMiddle_(conf.existsAs<bool>("seedOnMiddle") ? conf.getParameter<bool>("seedOnMiddle") : false),
21  rescaleError_(conf.existsAs<double>("rescaleError") ? conf.getParameter<double>("rescaleError") : 1.0),
22  tripletsVerbosity_(conf.getParameter<edm::ParameterSet>("TripletsPSet").getUntrackedParameter<uint32_t>("debugLevel",0)),
23  seedVerbosity_(conf.getUntrackedParameter<uint32_t>("seedDebugLevel",0)),
24  helixVerbosity_(conf.getUntrackedParameter<uint32_t>("helixDebugLevel",0)),
25  check_(conf.getParameter<edm::ParameterSet>("ClusterCheckPSet")),
26  maxTriplets_(conf.getParameter<int32_t>("maxTriplets")),
27  maxSeeds_(conf.getParameter<int32_t>("maxSeeds"))
28 {
29  edm::ParameterSet regionConf = conf_.getParameter<edm::ParameterSet>("RegionPSet");
30  float ptmin = regionConf.getParameter<double>("ptMin");
31  float originradius = regionConf.getParameter<double>("originRadius");
32  float halflength = regionConf.getParameter<double>("originHalfLength");
33  float originz = regionConf.getParameter<double>("originZPosition");
34  region_ = GlobalTrackingRegion(ptmin, originradius, halflength, originz);
35  pMin_ = regionConf.getParameter<double>("pMin");
36 
37  builderName = conf_.getParameter<std::string>("TTRHBuilder");
38 
39  //***top-bottom
40  positiveYOnly=conf_.getParameter<bool>("PositiveYOnly");
41  negativeYOnly=conf_.getParameter<bool>("NegativeYOnly");
42  //***
43 
44  produces<TrajectorySeedCollection>();
45  if (writeTriplets_) produces<edm::OwnVector<TrackingRecHit> >("cosmicTriplets");
46 
47  layerTripletNames_ = conf_.getParameter<edm::ParameterSet>("TripletsPSet").getParameter<std::vector<std::string> >("layerList");
48 
49  if (conf.existsAs<edm::ParameterSet>("ClusterChargeCheck")) {
50  edm::ParameterSet cccc = conf.getParameter<edm::ParameterSet>("ClusterChargeCheck");
51  checkCharge_ = cccc.getParameter<bool>("checkCharge");
52  matchedRecHitUsesAnd_ = cccc.getParameter<bool>("matchedRecHitsUseAnd");
53  chargeThresholds_.resize(7,0);
54  edm::ParameterSet ccct = cccc.getParameter<edm::ParameterSet>("Thresholds");
56  chargeThresholds_[StripSubdetector::TID] = ccct.getParameter<int32_t>("TID");
57  chargeThresholds_[StripSubdetector::TOB] = ccct.getParameter<int32_t>("TOB");
58  chargeThresholds_[StripSubdetector::TEC] = ccct.getParameter<int32_t>("TEC");
59  } else {
60  checkCharge_ = false;
61  }
62  if (conf.existsAs<edm::ParameterSet>("HitsPerModuleCheck")) {
63  edm::ParameterSet hpmcc = conf.getParameter<edm::ParameterSet>("HitsPerModuleCheck");
64  checkMaxHitsPerModule_ = hpmcc.getParameter<bool>("checkHitsPerModule");
66  edm::ParameterSet hpmct = hpmcc.getParameter<edm::ParameterSet>("Thresholds");
67  maxHitsPerModule_[StripSubdetector::TIB] = hpmct.getParameter<int32_t>("TIB");
68  maxHitsPerModule_[StripSubdetector::TID] = hpmct.getParameter<int32_t>("TID");
69  maxHitsPerModule_[StripSubdetector::TOB] = hpmct.getParameter<int32_t>("TOB");
70  maxHitsPerModule_[StripSubdetector::TEC] = hpmct.getParameter<int32_t>("TEC");
71  } else {
72  checkMaxHitsPerModule_ = false;
73  }
74  if (checkCharge_ || checkMaxHitsPerModule_) {
75  goodHitsPerSeed_ = conf.getParameter<int32_t>("minimumGoodHitsInSeed");
76  } else {
77  goodHitsPerSeed_ = 0;
78  }
79 
80 }
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:181
SeedingLayerSetsBuilder theLsb
const T & max(const T &a, const T &b)
double ptmin
Definition: HydjetWrapper.h:86
std::vector< std::string > layerTripletNames_
std::vector< int32_t > chargeThresholds_
std::vector< int32_t > maxHitsPerModule_
virtual SimpleCosmicBONSeeder::~SimpleCosmicBONSeeder ( )
inlinevirtual

Definition at line 44 of file SimpleCosmicBONSeeder.h.

44 {}

Member Function Documentation

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

Definition at line 305 of file SimpleCosmicBONSeeder.cc.

References cond::rpcobgas::detid, TrackingRecHit::geographicalId(), matchedRecHitUsesAnd_, SiStripMatchedRecHit2D::monoHit(), SiStripMatchedRecHit2D::stereoHit(), and DetId::Tracker.

Referenced by triplets().

305  {
306  DetId detid(hit->geographicalId());
307  if (detid.det() != DetId::Tracker) return false; // should not happen
308  int subdet = detid.subdetId();
309  if (subdet < 3) { // pixel
310  return true;
311  } else {
312  if (typeid(*hit) == typeid(SiStripMatchedRecHit2D)) {
313  const SiStripMatchedRecHit2D *mhit = static_cast<const SiStripMatchedRecHit2D *>(hit);
314  if (matchedRecHitUsesAnd_) {
315  return checkCharge(*mhit->monoHit(), subdet) && checkCharge(*mhit->stereoHit(), subdet);
316  } else {
317  return checkCharge(*mhit->monoHit(), subdet) || checkCharge(*mhit->stereoHit(), subdet);
318  }
319  } else if (typeid(*hit) == typeid(SiStripRecHit2D)) {
320  return checkCharge(static_cast<const SiStripRecHit2D &>(*hit), subdet);
321  } else {
322  return true;
323  }
324  }
325 }
const SiStripRecHit2D * stereoHit() const
bool checkCharge(const TrackingRecHit *hit) const
Definition: DetId.h:20
DetId geographicalId() const
const SiStripRecHit2D * monoHit() const
bool SimpleCosmicBONSeeder::checkCharge ( const SiStripRecHit2D hit,
int  subdetid 
) const
private

Definition at line 326 of file SimpleCosmicBONSeeder.cc.

References SiStripCluster::amplitudes(), benchmark_cfg::cerr, DeDxDiscriminatorTools::charge(), chargeThresholds_, SiStripRecHit2D::cluster(), SiStripRecHit2D::cluster_regional(), SiStripCluster::firstStrip(), TrackingRecHit::geographicalId(), edm::Ref< C, T, F >::get(), edm::Ref< C, T, F >::isNonnull(), DetId::rawId(), and tripletsVerbosity_.

326  {
327  const SiStripCluster *clust = (hit.cluster().isNonnull() ? hit.cluster().get() : hit.cluster_regional().get());
328  int charge = std::accumulate(clust->amplitudes().begin(), clust->amplitudes().end(), int(0));
329  if (tripletsVerbosity_ > 1) {
330  std::cerr << "Hit on " << subdetid << ", charge = " << charge << ", threshold = " << chargeThresholds_[subdetid]
331  << ", detid = " << hit.geographicalId().rawId() << ", firstStrip = " << clust->firstStrip() << std::endl;
332  } else if ((tripletsVerbosity_ == 1) && (charge < chargeThresholds_[subdetid])) {
333  std::cerr << "Hit on " << subdetid << ", charge = " << charge << ", threshold = " << chargeThresholds_[subdetid]
334  << ", detid = " << hit.geographicalId().rawId() << ", firstStrip = " << clust->firstStrip() << std::endl;
335  }
336  return charge > chargeThresholds_[subdetid];
337 }
uint16_t firstStrip() const
ClusterRegionalRef const & cluster_regional() const
double charge(const std::vector< uint8_t > &Ampls)
uint32_t rawId() const
get the raw id
Definition: DetId.h:45
bool isNonnull() const
Checks for non-null.
Definition: Ref.h:249
ClusterRef const & cluster() const
std::vector< int32_t > chargeThresholds_
DetId geographicalId() const
T const * get() const
Returns C++ pointer to the item.
Definition: Ref.h:241
const std::vector< uint8_t > & amplitudes() const
void SimpleCosmicBONSeeder::checkNoisyModules ( const std::vector< TransientTrackingRecHit::RecHitPointer > &  hits,
std::vector< bool > &  oks 
) const
private

Definition at line 339 of file SimpleCosmicBONSeeder.cc.

References benchmark_cfg::cerr, end, maxHitsPerModule_, min, convertSQLiteXML::ok, DetId::rawId(), DetId::subdetId(), and tripletsVerbosity_.

Referenced by triplets().

339  {
341  std::vector<TTRH>::const_iterator it = hits.begin(), start = it, end = hits.end();
342  std::vector<bool>::iterator ok = oks.begin(), okStart = ok, okEnd = oks.end();
343  while (start < end) {
344  DetId lastid = (*start)->geographicalId();
345  for (it = start + 1; (it < end) && ((*it)->geographicalId() == lastid); ++it) {
346  ++ok;
347  }
348  if ( (it - start) > maxHitsPerModule_[lastid.subdetId()] ) {
349  if (tripletsVerbosity_ > 0) {
350  std::cerr << "SimpleCosmicBONSeeder: Marking noisy module " << lastid.rawId() << ", it has " << (it-start) << " rechits"
351  << " (threshold is " << maxHitsPerModule_[lastid.subdetId()] << ")" << std::endl;
352  }
353  std::fill(okStart,ok,false);
354  } else if (tripletsVerbosity_ > 0) {
355  if ( (it - start) > std::min(4,maxHitsPerModule_[lastid.subdetId()]/4) ) {
356  std::cerr << "SimpleCosmicBONSeeder: Not marking noisy module " << lastid.rawId() << ", it has " << (it-start) << " rechits"
357  << " (threshold is " << maxHitsPerModule_[lastid.subdetId()] << ")" << std::endl;
358  }
359  }
360  start = it; okStart = ok;
361  }
362 }
#define min(a, b)
Definition: mlp_lapack.h:161
uint32_t rawId() const
get the raw id
Definition: DetId.h:45
#define end
Definition: vmac.h:38
int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:39
Definition: DetId.h:20
std::vector< int32_t > maxHitsPerModule_
void SimpleCosmicBONSeeder::done ( )

Definition at line 606 of file SimpleCosmicBONSeeder.cc.

References thePropagatorAl, thePropagatorOp, and theUpdator.

Referenced by produce().

606  {
607  delete thePropagatorAl;
608  delete thePropagatorOp;
609  delete theUpdator;
610 }
PropagatorWithMaterial * thePropagatorOp
PropagatorWithMaterial * thePropagatorAl
bool SimpleCosmicBONSeeder::goodTriplet ( const GlobalPoint inner,
const GlobalPoint middle,
const GlobalPoint outer,
const double &  minRho 
) const

Definition at line 364 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().

364  {
365  float dyOM = outer.y() - middle.y(), dyIM = inner.y() - middle.y();
366  if ((dyOM * dyIM > 0) && (fabs(dyOM)>10) && (fabs(dyIM)>10)) {
367  if (tripletsVerbosity_ > 2) std::cout << " fail for non coherent dy" << std::endl;
368  return false;
369  }
370  float dzOM = outer.z() - middle.z(), dzIM = inner.z() - middle.z();
371  if ((dzOM * dzIM > 0) && (fabs(dzOM)>50) && (fabs(dzIM)>50)) {
372  if (tripletsVerbosity_ > 2) std::cout << " fail for non coherent dz" << std::endl;
373  return false;
374  }
375  if (minRho > 0) {
376  FastCircle theCircle(inner,middle,outer);
377  if (theCircle.rho() < minRho) {
378  if (tripletsVerbosity_ > 2) std::cout << " fail for pt cut" << std::endl;
379  return false;
380  }
381  }
382  return true;
383 }
T y() const
Definition: PV3DBase.h:57
T z() const
Definition: PV3DBase.h:58
tuple cout
Definition: gather_cfg.py:41
void SimpleCosmicBONSeeder::init ( const edm::EventSetup c)

Definition at line 123 of file SimpleCosmicBONSeeder.cc.

References alongMomentum, builderName, edm::EventSetup::get(), magfield, oppositeToMomentum, thePropagatorAl, thePropagatorOp, theUpdator, tracker, and TTTRHBuilder.

Referenced by produce().

124 {
125  iSetup.get<TrackerDigiGeometryRecord>().get(tracker);
127 
128  // FIXME: these should come from ES too!!
131  theUpdator = new KFUpdator();
132 
133 }
edm::ESHandle< TrackerGeometry > tracker
PropagatorWithMaterial * thePropagatorOp
edm::ESHandle< MagneticField > magfield
edm::ESHandle< TransientTrackingRecHitBuilder > TTTRHBuilder
PropagatorWithMaterial * thePropagatorAl
std::pair< GlobalVector, int > SimpleCosmicBONSeeder::pqFromHelixFit ( const GlobalPoint inner,
const GlobalPoint middle,
const GlobalPoint outer,
const edm::EventSetup iSetup 
) const

Definition at line 386 of file SimpleCosmicBONSeeder.cc.

References abs, GlobalTrajectoryParameters::charge(), gather_cfg::cout, helixVerbosity_, magfield, GlobalTrajectoryParameters::momentum(), FreeTrajectoryState::parameters(), rho, FastCircle::rho(), FastHelix::stateAtVertex(), 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().

387  {
388  if (helixVerbosity_ > 0) {
389  std::cout << "DEBUG PZ =====" << std::endl;
390  FastHelix helix(inner,middle,outer,iSetup);
391  GlobalVector gv=helix.stateAtVertex().parameters().momentum(); // status on inner hit
392  std::cout << "FastHelix P = " << gv << "\n";
393  std::cout << "FastHelix Q = " << helix.stateAtVertex().parameters().charge() << "\n";
394  }
395 
396  // My attempt (with different approx from FastHelix)
397  // 1) fit the circle
398  FastCircle theCircle(inner,middle,outer);
399  double rho = theCircle.rho();
400 
401  // 2) Get the PT
402  GlobalVector tesla = magfield->inTesla(middle);
403  double pt = 0.01 * rho * (0.3*tesla.z());
404 
405  // 3) Get the PX,PY at OUTER hit (VERTEX)
406  double dx1 = outer.x()-theCircle.x0();
407  double dy1 = outer.y()-theCircle.y0();
408  double py = pt*dx1/rho, px = -pt*dy1/rho;
409  if(px*(middle.x() - outer.x()) + py*(middle.y() - outer.y()) < 0.) {
410  px *= -1.; py *= -1.;
411  }
412 
413  // 4) Get the PZ through pz = pT*(dz/d(R*phi)))
414  double dz = inner.z() - outer.z();
415  double sinphi = ( dx1*(inner.y()-theCircle.y0()) - dy1*(inner.x()-theCircle.x0())) / (rho * rho);
416  double dphi = std::abs(std::asin(sinphi));
417  double pz = pt * dz / (dphi * rho);
418 
419  int myq = ((theCircle.x0()*py - theCircle.y0()*px) / tesla.z()) > 0. ? +1 : -1;
420 
421  std::pair<GlobalVector,int> mypq(GlobalVector(px,py,pz),myq);
422 
423  if (helixVerbosity_ > 1) {
424  std::cout << "Gio: pt = " << pt << std::endl;
425  std::cout << "Gio: dz = " << dz << ", sinphi = " << sinphi << ", dphi = " << dphi << ", dz/drphi = " << (dz/dphi/rho) << std::endl;
426  }
427  if (helixVerbosity_ > 0) {
428  std::cout << "Gio's fit P = " << mypq.first << "\n";
429  std::cout << "Gio's fit Q = " << myq << "\n";
430  }
431 
432  return mypq;
433 }
Definition: DDAxes.h:10
T y() const
Definition: PV3DBase.h:57
#define abs(x)
Definition: mlp_lapack.h:159
T z() const
Definition: PV3DBase.h:58
edm::ESHandle< MagneticField > magfield
tuple cout
Definition: gather_cfg.py:41
T x() const
Definition: PV3DBase.h:56
Global3DVector GlobalVector
Definition: GlobalVector.h:10
void SimpleCosmicBONSeeder::produce ( edm::Event e,
const edm::EventSetup c 
)
virtual

Implements edm::EDProducer.

Definition at line 83 of file SimpleCosmicBONSeeder.cc.

References check_, TrackingRecHit::clone(), done(), edm::EventSetup::get(), hitTriplets, init(), magfield, convertSQLitetoXML_cfg::output, edm::Event::put(), seeds(), ClusterChecker::tooManyClusters(), triplets(), and writeTriplets_.

84 {
85  std::auto_ptr<TrajectorySeedCollection> output(new TrajectorySeedCollection());
86  std::auto_ptr<edm::OwnVector<TrackingRecHit> > outtriplets(new edm::OwnVector<TrackingRecHit>());
87 
88  es.get<IdealMagneticFieldRecord>().get(magfield);
89  if (magfield->inTesla(GlobalPoint(0,0,0)).mag() > 0.01) {
90  size_t clustsOrZero = check_.tooManyClusters(ev);
91  if (clustsOrZero) {
92  edm::LogError("TooManyClusters") << "Found too many clusters (" << clustsOrZero << "), bailing out.\n";
93  } else {
94  init(es);
95  bool tripletsOk = triplets(ev,es);
96  if (tripletsOk) {
97 
98  bool seedsOk = seeds(*output,es);
99  if (!seedsOk) { }
100 
101  if (writeTriplets_) {
102  for (OrderedHitTriplets::const_iterator it = hitTriplets.begin(); it != hitTriplets.end(); ++it) {
103  const TrackingRecHit * hit1 = it->inner()->hit();
104  const TrackingRecHit * hit2 = it->middle()->hit();
105  const TrackingRecHit * hit3 = it->outer()->hit();
106  outtriplets->push_back(hit1->clone());
107  outtriplets->push_back(hit2->clone());
108  outtriplets->push_back(hit3->clone());
109  }
110  }
111  }
112  done();
113  }
114  }
115 
116  if (writeTriplets_) {
117  ev.put(outtriplets, "cosmicTriplets");
118  }
119  ev.put(output);
120 }
bool triplets(const edm::Event &e, const edm::EventSetup &c)
void init(const edm::EventSetup &c)
OrderedHitTriplets hitTriplets
std::vector< TrajectorySeed > TrajectorySeedCollection
edm::ESHandle< MagneticField > magfield
virtual TrackingRecHit * clone() const =0
size_t tooManyClusters(const edm::Event &e)
bool seeds(TrajectorySeedCollection &output, const edm::EventSetup &iSetup)
bool SimpleCosmicBONSeeder::seeds ( TrajectorySeedCollection output,
const edm::EventSetup iSetup 
)

Definition at line 435 of file SimpleCosmicBONSeeder.cc.

References alongMomentum, FreeTrajectoryState::cartesianError(), TrajectoryStateOnSurface::cartesianError(), TrajectoryStateOnSurface::charge(), gather_cfg::cout, PV3DBase< T, PVType, FrameType >::eta(), cmsPerfPublish::fail(), TrajectoryStateOnSurface::globalMomentum(), TrajectoryStateOnSurface::globalPosition(), hitTriplets, SurfaceOrientation::inner, OrderedHitTriplet::inner(), edm::detail::isnan(), TrajectoryStateOnSurface::isValid(), PV3DBase< T, PVType, FrameType >::mag(), magfield, CartesianTrajectoryError::matrix(), maxSeeds_, OrderedHitTriplet::middle(), oppositeToMomentum, SurfaceOrientation::outer, OrderedHitTriplet::outer(), PV3DBase< T, PVType, FrameType >::perp(), TrajectoryStateTransform::persistentState(), PV3DBase< T, PVType, FrameType >::phi(), pMin_, pqFromHelixFit(), Propagator::propagate(), LargeD0_PixelPairStep_cff::propagator, TrackingRegionBase::ptMin(), edm::OwnVector< T, P >::push_back(), region_, FreeTrajectoryState::rescaleError(), TrajectoryStateOnSurface::rescaleError(), rescaleError_, seedOnMiddle_, seedVerbosity_, OrderedHitTriplets::size(), mathSSE::sqrt(), std::swap(), thePropagatorAl, thePropagatorOp, theUpdator, tracker, transformer, KFUpdator::update(), PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by produce().

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

ctfseeding SeedinHits and their iterators

Transient Tracking RecHits

Checks on the cluster charge and on noisy modules

Now actually filling in the charges for all the clusters

Definition at line 168 of file SimpleCosmicBONSeeder.cc.

References newFWLiteAna::build, checkCharge(), checkCharge_, checkMaxHitsPerModule_, checkNoisyModules(), gather_cfg::cout, edm::hlt::Exception, goodHitsPerSeed_, goodTriplet(), helixVerbosity_, GlobalTrackingRegion::hits(), hitTriplets, SeedingLayerSetsBuilder::layers(), layerTripletNames_, python.rootplot.utilities::ls(), magfield, maxTriplets_, negativeYOnly, positiveYOnly, pqFromHelixFit(), TrackingRegionBase::ptMin(), region_, OrderedHitTriplets::size(), python.multivaluedict::sort(), theLsb, tripletsVerbosity_, and PV3DBase< T, PVType, FrameType >::y().

Referenced by produce().

168  {
169  using namespace ctfseeding;
170 
171  hitTriplets.clear();
172  hitTriplets.reserve(0);
173  SeedingLayerSets lss = theLsb.layers(es);
174  SeedingLayerSets::const_iterator iLss;
175 
176  double minRho = region_.ptMin() / ( 0.003 * magfield->inTesla(GlobalPoint(0,0,0)).z() );
177 
178  for (iLss = lss.begin(); iLss != lss.end(); iLss++){
179  SeedingLayers ls = *iLss;
180  if (ls.size() != 3){
181  throw cms::Exception("CtfSpecialSeedGenerator") << "You are using " << ls.size() <<" layers in set instead of 3 ";
182  }
183 
185  std::vector<SeedingHit> innerHits = region_.hits(e, es, &ls[0]);
186  std::vector<SeedingHit> middleHits = region_.hits(e, es, &ls[1]);
187  std::vector<SeedingHit> outerHits = region_.hits(e, es, &ls[2]);
188  std::vector<SeedingHit>::const_iterator iOuterHit,iMiddleHit,iInnerHit;
189 
190  if (tripletsVerbosity_ > 0) {
191  std::cout << "GenericTripletGenerator iLss = " << layerTripletNames_[iLss - lss.begin()]
192  << " (" << (iLss - lss.begin()) << "): # = "
193  << innerHits.size() << "/" << middleHits.size() << "/" << outerHits.size() << std::endl;
194  }
195 
198  std::vector<TTRH> innerTTRHs, middleTTRHs, outerTTRHs;
199 
201  std::vector<bool> innerOk( innerHits.size(), true);
202  std::vector<bool> middleOk(middleHits.size(), true);
203  std::vector<bool> outerOk( outerHits.size(), true);
204 
205  size_t sizBefore = hitTriplets.size();
207  int idx = 0;
208  for (iOuterHit = outerHits.begin(), idx = 0; iOuterHit != outerHits.end(); ++idx, ++iOuterHit){
209  outerTTRHs.push_back(ls[2].hitBuilder()->build((**iOuterHit).hit()));
210  if (checkCharge_ && !checkCharge(outerTTRHs.back()->hit())) outerOk[idx] = false;
211  }
212  for (iMiddleHit = middleHits.begin(), idx = 0; iMiddleHit != middleHits.end(); ++idx, ++iMiddleHit){
213  middleTTRHs.push_back(ls[1].hitBuilder()->build((**iMiddleHit).hit()));
214  if (checkCharge_ && !checkCharge(middleTTRHs.back()->hit())) middleOk[idx] = false;
215  }
216  for (iInnerHit = innerHits.begin(), idx = 0; iInnerHit != innerHits.end(); ++idx, ++iInnerHit){
217  innerTTRHs.push_back(ls[0].hitBuilder()->build((**iInnerHit).hit()));
218  if (checkCharge_ && !checkCharge(innerTTRHs.back()->hit())) innerOk[idx] = false;
219  }
221  checkNoisyModules(innerTTRHs, innerOk);
222  checkNoisyModules(middleTTRHs, middleOk);
223  checkNoisyModules(outerTTRHs, outerOk);
224  }
225 
226  for (iOuterHit = outerHits.begin(); iOuterHit != outerHits.end(); iOuterHit++){
227  idx = iOuterHit - outerHits.begin();
228  TTRH & outerTTRH = outerTTRHs[idx];
229  GlobalPoint outerpos = outerTTRH->globalPosition(); // this caches by itself
230  bool outerok = outerOk[idx];
231  if (outerok < goodHitsPerSeed_ - 2) {
232  if (tripletsVerbosity_ > 2)
233  std::cout << "Skipping at first hit: " << (outerok) << " < " << (goodHitsPerSeed_ - 2) << std::endl;
234  continue;
235  }
236 
237  for (iMiddleHit = middleHits.begin(); iMiddleHit != middleHits.end(); iMiddleHit++){
238  idx = iMiddleHit - middleHits.begin();
239  TTRH & middleTTRH = middleTTRHs[idx];
240  GlobalPoint middlepos = middleTTRH->globalPosition(); // this caches by itself
241  bool middleok = middleOk[idx];
242  if (outerok+middleok < goodHitsPerSeed_ - 1) {
243  if (tripletsVerbosity_ > 2)
244  std::cout << "Skipping at second hit: " << (outerok+middleok) << " < " << (goodHitsPerSeed_ - 1) << std::endl;
245  continue;
246  }
247 
248  for (iInnerHit = innerHits.begin(); iInnerHit != innerHits.end(); iInnerHit++){
249  idx = iInnerHit - innerHits.begin();
250  TTRH & innerTTRH = innerTTRHs[idx];
251  GlobalPoint innerpos = innerTTRH->globalPosition(); // this caches by itself
252  bool innerok = innerOk[idx];
253  if (outerok+middleok+innerok < goodHitsPerSeed_) {
254  if (tripletsVerbosity_ > 2)
255  std::cout << "Skipping at third hit: " << (outerok+middleok+innerok) << " < " << (goodHitsPerSeed_) << std::endl;
256  continue;
257  }
258 
259  //***top-bottom
260  if (positiveYOnly && (innerpos.y()<0 || middlepos.y()<0 || outerpos.y()<0
261  || outerpos.y() < innerpos.y()
262  ) ) continue;
263  if (negativeYOnly && (innerpos.y()>0 || middlepos.y()>0 || outerpos.y()>0
264  || outerpos.y() > innerpos.y()
265  ) ) continue;
266  //***
267 
268  if (tripletsVerbosity_ > 2) std::cout << "Trying seed with: " << innerpos << " + " << middlepos << " + " << outerpos << std::endl;
269  if (goodTriplet(innerpos,middlepos,outerpos,minRho)) {
270  OrderedHitTriplet oht(*iInnerHit,*iMiddleHit,*iOuterHit);
271  hitTriplets.push_back(oht);
272  if ((maxTriplets_ > 0) && (hitTriplets.size() > size_t(maxTriplets_))) {
273  hitTriplets.clear(); // clear
274  //OrderedHitTriplets().swap(hitTriplets); // really clear
275  edm::LogError("TooManyTriplets") << "Found too many triplets, bailing out.\n";
276  return false;
277  }
278  if (tripletsVerbosity_ > 3) {
279  std::cout << " accepted seed #" << (hitTriplets.size()-1) << " w/: "
280  << innerpos << " + " << middlepos << " + " << outerpos << std::endl;
281  }
282  if (tripletsVerbosity_ == 2) {
283  std::cout << " good seed #" << (hitTriplets.size()-1) << " w/: "
284  << innerpos << " + " << middlepos << " + " << outerpos << std::endl;
285  }
286  if (tripletsVerbosity_ > 3 && (helixVerbosity_ > 0)) { // debug the momentum here too
287  pqFromHelixFit(innerpos,middlepos,outerpos,es);
288  }
289  }
290  }
291  }
292  }
293  if ((tripletsVerbosity_ > 0) && (hitTriplets.size() > sizBefore)) {
294  std::cout << " iLss = " << layerTripletNames_[iLss - lss.begin()]
295  << " (" << (iLss - lss.begin()) << "): # = "
296  << innerHits.size() << "/" << middleHits.size() << "/" << outerHits.size()
297  << ": Found " << (hitTriplets.size() - sizBefore) << " seeds [running total: " << hitTriplets.size() << "]"
298  << std::endl ;
299  }
300 
301  }
303  return true;
304 }
GlobalTrackingRegion region_
OrderedHitTriplets hitTriplets
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
T y() const
Definition: PV3DBase.h:57
void checkNoisyModules(const std::vector< TransientTrackingRecHit::RecHitPointer > &hits, std::vector< bool > &oks) const
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
virtual TrackingRegion::Hits hits(const edm::Event &ev, const edm::EventSetup &es, const ctfseeding::SeedingLayer *layer) const
get hits from layer compatible with region constraints
SeedingLayerSetsBuilder theLsb
virtual float ptMin() const
minimal pt of interest
edm::ESHandle< MagneticField > magfield
bool goodTriplet(const GlobalPoint &inner, const GlobalPoint &middle, const GlobalPoint &outer, const double &minRho) const
ctfseeding::SeedingLayerSets layers(const edm::EventSetup &es) const
std::vector< std::string > layerTripletNames_
tuple cout
Definition: gather_cfg.py:41
virtual unsigned int size() const
std::vector< SeedingLayer > SeedingLayers
std::vector< std::vector< SeedingLayer > > SeedingLayerSets

Member Data Documentation

std::string SimpleCosmicBONSeeder::builderName
private

Definition at line 60 of file SimpleCosmicBONSeeder.h.

Referenced by init(), and SimpleCosmicBONSeeder().

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

Definition at line 89 of file SimpleCosmicBONSeeder.h.

Referenced by checkCharge(), and SimpleCosmicBONSeeder().

ClusterChecker SimpleCosmicBONSeeder::check_
private

Definition at line 81 of file SimpleCosmicBONSeeder.h.

Referenced by produce().

bool SimpleCosmicBONSeeder::checkCharge_
private

Definition at line 87 of file SimpleCosmicBONSeeder.h.

Referenced by SimpleCosmicBONSeeder(), and triplets().

bool SimpleCosmicBONSeeder::checkMaxHitsPerModule_
private

Definition at line 90 of file SimpleCosmicBONSeeder.h.

Referenced by SimpleCosmicBONSeeder(), and triplets().

edm::ParameterSet SimpleCosmicBONSeeder::conf_
private

Definition at line 59 of file SimpleCosmicBONSeeder.h.

Referenced by SimpleCosmicBONSeeder().

int SimpleCosmicBONSeeder::goodHitsPerSeed_
private

Definition at line 86 of file SimpleCosmicBONSeeder.h.

Referenced by SimpleCosmicBONSeeder(), and triplets().

uint32_t SimpleCosmicBONSeeder::helixVerbosity_
private

Definition at line 70 of file SimpleCosmicBONSeeder.h.

Referenced by pqFromHelixFit(), and triplets().

OrderedHitTriplets SimpleCosmicBONSeeder::hitTriplets
private

Definition at line 84 of file SimpleCosmicBONSeeder.h.

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

std::vector<std::string> SimpleCosmicBONSeeder::layerTripletNames_
private

Definition at line 71 of file SimpleCosmicBONSeeder.h.

Referenced by SimpleCosmicBONSeeder(), and triplets().

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

Definition at line 73 of file SimpleCosmicBONSeeder.h.

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

bool SimpleCosmicBONSeeder::matchedRecHitUsesAnd_
private

Definition at line 88 of file SimpleCosmicBONSeeder.h.

Referenced by checkCharge(), and SimpleCosmicBONSeeder().

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

Definition at line 91 of file SimpleCosmicBONSeeder.h.

Referenced by checkNoisyModules(), and SimpleCosmicBONSeeder().

int32_t SimpleCosmicBONSeeder::maxSeeds_
private

Definition at line 82 of file SimpleCosmicBONSeeder.h.

Referenced by seeds().

int32_t SimpleCosmicBONSeeder::maxTriplets_
private

Definition at line 82 of file SimpleCosmicBONSeeder.h.

Referenced by triplets().

bool SimpleCosmicBONSeeder::negativeYOnly
private

Definition at line 98 of file SimpleCosmicBONSeeder.h.

Referenced by SimpleCosmicBONSeeder(), and triplets().

double SimpleCosmicBONSeeder::pMin_
private

Definition at line 64 of file SimpleCosmicBONSeeder.h.

Referenced by seeds(), and SimpleCosmicBONSeeder().

bool SimpleCosmicBONSeeder::positiveYOnly
private

Definition at line 97 of file SimpleCosmicBONSeeder.h.

Referenced by SimpleCosmicBONSeeder(), and triplets().

GlobalTrackingRegion SimpleCosmicBONSeeder::region_
private

Definition at line 63 of file SimpleCosmicBONSeeder.h.

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

double SimpleCosmicBONSeeder::rescaleError_
private

Definition at line 68 of file SimpleCosmicBONSeeder.h.

Referenced by seeds().

bool SimpleCosmicBONSeeder::seedOnMiddle_
private

Definition at line 67 of file SimpleCosmicBONSeeder.h.

Referenced by seeds().

uint32_t SimpleCosmicBONSeeder::seedVerbosity_
private

Definition at line 70 of file SimpleCosmicBONSeeder.h.

Referenced by seeds().

SeedingLayerSetsBuilder SimpleCosmicBONSeeder::theLsb
private

Definition at line 62 of file SimpleCosmicBONSeeder.h.

Referenced by triplets().

PropagatorWithMaterial* SimpleCosmicBONSeeder::thePropagatorAl
private

Definition at line 77 of file SimpleCosmicBONSeeder.h.

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

PropagatorWithMaterial* SimpleCosmicBONSeeder::thePropagatorOp
private

Definition at line 78 of file SimpleCosmicBONSeeder.h.

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

KFUpdator* SimpleCosmicBONSeeder::theUpdator
private

Definition at line 76 of file SimpleCosmicBONSeeder.h.

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

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

Definition at line 74 of file SimpleCosmicBONSeeder.h.

Referenced by init(), and seeds().

TrajectoryStateTransform SimpleCosmicBONSeeder::transformer
private

Definition at line 79 of file SimpleCosmicBONSeeder.h.

Referenced by seeds().

uint32_t SimpleCosmicBONSeeder::tripletsVerbosity_
private

Definition at line 70 of file SimpleCosmicBONSeeder.h.

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

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

Definition at line 75 of file SimpleCosmicBONSeeder.h.

Referenced by init().

bool SimpleCosmicBONSeeder::writeTriplets_
private

Definition at line 65 of file SimpleCosmicBONSeeder.h.

Referenced by produce(), and SimpleCosmicBONSeeder().