CMS 3D CMS Logo

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

#include <MuonRoadTrajectoryBuilder.h>

Inheritance diagram for MuonRoadTrajectoryBuilder:
TrajectoryBuilder

Classes

class  flippingPair
 
class  trajectory
 for the trajectory collection More...
 

Public Member Functions

 MuonRoadTrajectoryBuilder (const edm::ParameterSet &par, const MeasurementTracker *mt, const MagneticField *f, const Propagator *p)
 constructor from PSet and things from record More...
 
void setEvent (const edm::Event &) const
 
std::vector< Trajectorytrajectories (const TrajectorySeed &seed) const
 
void trajectories (const TrajectorySeed &seed, TrajectoryContainer &ret) const
 process the seed, in a faster manner. More...
 
 ~MuonRoadTrajectoryBuilder ()
 
- Public Member Functions inherited from TrajectoryBuilder
virtual void rebuildSeedingRegion (const TrajectorySeed &, TrajectoryContainer &result) const
 
virtual void unset () const
 
virtual ~TrajectoryBuilder ()
 

Private Types

typedef std::list< trajectoryTrajectoryCollection
 
typedef flippingPair
< TrajectoryCollection
TrajectoryCollectionFPair
 

Private Member Functions

void checkDuplicate (TrajectoryCollection &collection) const
 
bool checkStep (TrajectoryCollection &collection, unsigned int &theNumberOfHitPerModule) const
 
void cleanTrajectory (Trajectory &traj) const
 
int GatherHits (const TrajectoryStateOnSurface &step, const DetLayer *thislayer, TrajectoryCollectionFPair &Trajectories, bool &firstLayer, unsigned int theNumberOfHitPerModule) const
 
void makeTrajectories (const TrajectorySeed &seed, std::vector< Trajectory > &result, int version=0) const
 
void makeTrajectories_0 (const TrajectorySeed &seed, std::vector< Trajectory > &result) const
 
void makeTrajectories_1 (const TrajectorySeed &seed, std::vector< Trajectory > &result) const
 
Trajectory smooth (Trajectory &) const
 

Private Attributes

bool theBranchonfirstlayer
 
bool theCarriedIPatfirstlayer
 
bool theCarriedIPatfirstlayerModule
 
std::string theCategory
 Info/Debug category "Muon|RecoMuon|MuonRoadTrajectoryBuilder". More...
 
bool theDynamicMaxNumberOfHitPerModule
 
const MagneticFieldtheField
 
Chi2MeasurementEstimatortheHitEstimator
 
unsigned int theMaxTrajectories
 
std::vector< unsigned int > theMaxTrajectoriesThreshold
 
const MeasurementTrackertheMeasurementTracker
 
const MeasurementTrackerEventtheMeasurementTrackerEvent
 
unsigned int theMinNumberOfHitOnCandidate
 
unsigned int theNumberOfHitPerModuleDefault
 
std::vector< unsigned int > theNumberOfHitPerModuleThreshold
 
bool theOutputAllTraj
 
const PropagatorthePropagator
 
Chi2MeasurementEstimatortheRoadEstimator
 
KFTrajectorySmoothertheSmoother
 
TrajectoryStateUpdatortheUpdator
 

Additional Inherited Members

- Public Types inherited from TrajectoryBuilder
typedef std::vector< TrajectoryTrajectoryContainer
 
typedef
TrajectoryContainer::iterator 
TrajectoryIterator
 

Detailed Description

Definition at line 49 of file MuonRoadTrajectoryBuilder.h.

Member Typedef Documentation

Definition at line 97 of file MuonRoadTrajectoryBuilder.h.

Definition at line 98 of file MuonRoadTrajectoryBuilder.h.

Constructor & Destructor Documentation

MuonRoadTrajectoryBuilder::MuonRoadTrajectoryBuilder ( const edm::ParameterSet par,
const MeasurementTracker mt,
const MagneticField f,
const Propagator p 
)

constructor from PSet and things from record

Definition at line 38 of file MuonRoadTrajectoryBuilder.cc.

References Chi2MeasurementEstimatorESProducer_cfi::Chi2MeasurementEstimator, f, edm::ParameterSet::getParameter(), KFTrajectorySmootherESProducer_cfi::KFTrajectorySmoother, AlCaHLTBitMon_ParallelJobs::p, mathSSE::sqrt(), theBranchonfirstlayer, theCarriedIPatfirstlayer, theCarriedIPatfirstlayerModule, theCategory, theDynamicMaxNumberOfHitPerModule, theField, theHitEstimator, theMaxTrajectories, theMaxTrajectoriesThreshold, theMeasurementTracker, theMeasurementTrackerEvent, theMinNumberOfHitOnCandidate, theNumberOfHitPerModuleDefault, theNumberOfHitPerModuleThreshold, theOutputAllTraj, thePropagator, theRoadEstimator, theSmoother, and theUpdator.

41  :
43 {
44 
46  theMeasurementTrackerEvent = 0; // YES this will crash, Will fix later.
47  theField = f;
48  thePropagator = p;
49 
50  theCategory = "Muon|RecoMuon|MuonRoadTrajectoryBuilder";
51 
52  //get parameters from ParameterSet
53 
54  //propagator name to get from muon service
55  // thePropagatorName = iConfig.getParameter<std::string>("propagatorName");
56 
57  //chi2 estimator
58  double chi2R=iConfig.getParameter<double>("maxChi2Road");
60  double chi2H=iConfig.getParameter<double>("maxChi2Hit");
61  theHitEstimator = new Chi2MeasurementEstimator(chi2H,sqrt(chi2H));
62 
63  //trajectory updator
64  theUpdator= new KFUpdator();
65 
66  //limit the total number of possible trajectories taken into account for a single seed
67  theMaxTrajectories = iConfig.getParameter<unsigned int>("maxTrajectories");
68 
69  //limit the type of module considered to gather rechits
70  theDynamicMaxNumberOfHitPerModule = iConfig.getParameter<bool>("dynamicMaxNumberOfHitPerModule");
71  theNumberOfHitPerModuleDefault = iConfig.getParameter<unsigned int>("numberOfHitPerModule");
72  theMaxTrajectoriesThreshold = iConfig.getParameter<std::vector<unsigned int> >("maxTrajectoriesThreshold");
73  theNumberOfHitPerModuleThreshold = iConfig.getParameter<std::vector<unsigned int> >("numberOfHitPerModuleThreshold");
74 
75  //could be configurable, but not
79 
80  //output track candidate selection
81  theMinNumberOfHitOnCandidate = iConfig.getParameter<unsigned int>("minNumberOfHitOnCandidate");
82 
83  //single or multiple trajectories per muon
84  theOutputAllTraj = iConfig.getParameter<bool>("outputAllTraj");
85 
86  if (!theSmoother)
88 }
std::vector< unsigned int > theMaxTrajectoriesThreshold
std::string theCategory
Info/Debug category &quot;Muon|RecoMuon|MuonRoadTrajectoryBuilder&quot;.
KFTrajectorySmoother * theSmoother
std::vector< unsigned int > theNumberOfHitPerModuleThreshold
Chi2MeasurementEstimator * theHitEstimator
const MeasurementTrackerEvent * theMeasurementTrackerEvent
T sqrt(T t)
Definition: SSEVec.h:48
TrajectoryStateUpdator * theUpdator
double f[11][100]
const MeasurementTracker * theMeasurementTracker
Chi2MeasurementEstimator * theRoadEstimator
MuonRoadTrajectoryBuilder::~MuonRoadTrajectoryBuilder ( )

Definition at line 91 of file MuonRoadTrajectoryBuilder.cc.

References theCategory, theHitEstimator, theMeasurementTrackerEvent, theRoadEstimator, theSmoother, and theUpdator.

92 {
93  edm::LogInfo(theCategory)<<"cleaning the object";
95  if (theHitEstimator) delete theHitEstimator;
96  if (theUpdator) delete theUpdator;
97  if (theSmoother) delete theSmoother;
99 }
std::string theCategory
Info/Debug category &quot;Muon|RecoMuon|MuonRoadTrajectoryBuilder&quot;.
KFTrajectorySmoother * theSmoother
Chi2MeasurementEstimator * theHitEstimator
const MeasurementTrackerEvent * theMeasurementTrackerEvent
TrajectoryStateUpdator * theUpdator
Chi2MeasurementEstimator * theRoadEstimator

Member Function Documentation

void MuonRoadTrajectoryBuilder::checkDuplicate ( TrajectoryCollection collection) const
private

Definition at line 688 of file MuonRoadTrajectoryBuilder.cc.

References LogDebug, and theCategory.

Referenced by GatherHits().

689 {
690  LogDebug(theCategory)<<"checking for duplicates here. list size: "<<collection.size();
691 
692  //loop over the trajectory list
693  TrajectoryCollection::iterator traj1 = collection.begin();
694  while(traj1 != collection.end())
695  {
696  LogDebug(theCategory)<<"";
697 
698  //reloop over the trajectory list from traj1
699  TrajectoryCollection::iterator traj2 = traj1;
700  traj2++;//advance one more
701  bool traj1_removed=false;
702  while( traj2 != collection.end())
703  {
704  if (traj2 == traj1 ) continue; //skip itself of course
705 
706  //need to start from the back of the list of measurment
707  std::list <TrajectoryMeasurement >::const_reverse_iterator h1 = traj1->measurements.rbegin();
708  std::list <TrajectoryMeasurement >::const_reverse_iterator h2 = traj2->measurements.rbegin();
709 
710  bool break_different = false;
711  while (h1 != traj1->measurements.rend() && h2!=traj2->measurements.rend())
712  {
715 
716  LogDebug(theCategory)<<"(hit1->geographicalId().rawId()) "<<(hit1->geographicalId().rawId())<<"(hit1->globalPosition()) "<<(hit1->globalPosition())
717  <<"(hit2->geographicalId().rawId()) "<<(hit2->geographicalId().rawId())<<"(hit2->globalPosition()) "<<(hit2->globalPosition());
718 
719  if (hit1 == hit2){/*those are common hits, everything's alright so far*/ h1++;h2++; continue;}
720  else{break_different =true;
721 
722  LogDebug(theCategory)<<"list of hits are different";
723 
724  break;}
725  }
726  if (!break_different)
727  //meaning one of the list has been exhausted
728  //one list if the subset of the other
729  {
730  LogDebug(theCategory)<<"list of hits are identical/subset. remove one of them.";
731  //there is a common subset to the two list of rechits.
732  //remove the one with the fewer hits (iterator that reached the end first)
733  //in case they are exactly identical (both iterator reached the end at the same time), traj2 will be removed by default
734  if (h1 != traj1->measurements.rend())
735  {
736  LogDebug(theCategory)<<"I removed traj2";
737  //traj2 has been exhausted first. remove it and place the iterator on next item
738  traj2=collection.erase(traj2);
739  }
740  else
741  {
742  LogDebug(theCategory)<<"I removed traj1. and decrement traj2";
743  //traj1 has been exhausted first. remove it
744  traj1=collection.erase(traj1);
745  //and set the iterator traj1 so that next++ will set it to the correct place in the list
746  traj1_removed=true;
747  break; // break the traj2 loop, advance to next traj1 item
748  }
749  }
750  else
751  {traj2++; }
752  }//loop on traj2
753  if (!traj1_removed)
754  {//increment only if you have remove the item at traj1
755  traj1++;}
756  }//loop on traj1
757 }
#define LogDebug(id)
std::string theCategory
Info/Debug category &quot;Muon|RecoMuon|MuonRoadTrajectoryBuilder&quot;.
bool MuonRoadTrajectoryBuilder::checkStep ( TrajectoryCollection collection,
unsigned int &  theNumberOfHitPerModule 
) const
private

Definition at line 665 of file MuonRoadTrajectoryBuilder.cc.

References theCategory, theDynamicMaxNumberOfHitPerModule, theMaxTrajectories, theMaxTrajectoriesThreshold, theNumberOfHitPerModuleThreshold, and trajectoryOrder().

Referenced by makeTrajectories_0().

666 {
667  //dynamic cut on the max number of rechit allowed on a single module
669  for (unsigned int vit = 0; vit!= theMaxTrajectoriesThreshold.size() ; vit++){
670  if (collection.size() >theMaxTrajectoriesThreshold[vit]){
671  theNumberOfHitPerModule= theNumberOfHitPerModuleThreshold[vit];}
672  else
673  break;}}
674 
675  //reduce the number of possible trajectories if too many
676  if ( collection.size() > theMaxTrajectories) {
677  //order with most hits or best chi2
679  unsigned int prevSize=collection.size();
682  <<" too many possible trajectories ("<<prevSize
683  <<"), reduce the possibilities to "<<theMaxTrajectories<<" bests.";
684  }
685  return true;
686 }
std::vector< unsigned int > theMaxTrajectoriesThreshold
std::string theCategory
Info/Debug category &quot;Muon|RecoMuon|MuonRoadTrajectoryBuilder&quot;.
bool trajectoryOrder(const MuonRoadTrajectoryBuilder::trajectory &traj1, const MuonRoadTrajectoryBuilder::trajectory &traj2)
std::vector< unsigned int > theNumberOfHitPerModuleThreshold
void MuonRoadTrajectoryBuilder::cleanTrajectory ( Trajectory traj) const
private

Definition at line 393 of file MuonRoadTrajectoryBuilder.cc.

References GeometricSearchTracker::detLayer(), Trajectory::direction(), MeasurementTracker::geometricSearchTracker(), LogDebug, Trajectory::measurements(), Trajectory::push(), Trajectory::seed(), theCategory, and theMeasurementTracker.

Referenced by smooth().

393  {
394  //remove the overlapping recHits since the smoother will chock on it
396 
397  const DetLayer* lastDetLayer =0;
398  Trajectory::DataContainer::iterator mit = meas.begin();
399  while (mit!=meas.end()){
400  {
401  const DetLayer * detLayer = theMeasurementTracker->geometricSearchTracker()->detLayer(mit->recHit()->det()->geographicalId());
402  LogDebug(theCategory)<<"(mit->recHit()->det()->geographicalId().rawId()) "<<(mit->recHit()->det()->geographicalId().rawId())
403  <<"(detLayer) "<<(detLayer)<<"(lastDetLayer) "<<(lastDetLayer);
404 
405  if (detLayer==lastDetLayer)
406  {
407  mit=meas.erase(mit); //serve as mit++ too
408  }
409  else {mit++;}
410  lastDetLayer=detLayer;
411  }
412  Trajectory newTraj(traj.seed(),traj.direction());
413  for (Trajectory::DataContainer::iterator mit=meas.begin();mit!=meas.end();++mit)
414  {newTraj.push(*mit);}
415  traj=newTraj;
416  }
417  }
#define LogDebug(id)
TrajectorySeed const & seed() const
Access to the seed used to reconstruct the Trajectory.
Definition: Trajectory.h:277
std::string theCategory
Info/Debug category &quot;Muon|RecoMuon|MuonRoadTrajectoryBuilder&quot;.
PropagationDirection const & direction() const
Definition: Trajectory.cc:196
DataContainer const & measurements() const
Definition: Trajectory.h:215
std::vector< TrajectoryMeasurement > DataContainer
Definition: Trajectory.h:42
const DetLayer * detLayer(const DetId &id) const
obsolete method. Use idToLayer() instead.
const MeasurementTracker * theMeasurementTracker
const GeometricSearchTracker * geometricSearchTracker() const
void push(const TrajectoryMeasurement &tm)
Definition: Trajectory.cc:35
int MuonRoadTrajectoryBuilder::GatherHits ( const TrajectoryStateOnSurface step,
const DetLayer thislayer,
TrajectoryCollectionFPair Trajectories,
bool &  firstLayer,
unsigned int  theNumberOfHitPerModule 
) const
private

Definition at line 458 of file MuonRoadTrajectoryBuilder.cc.

References checkDuplicate(), MuonRoadTrajectoryBuilder::trajectory::chi2, runregparse::combined, GeometricSearchDet::compatibleDets(), MuonRoadTrajectoryBuilder::trajectory::duplicate, MuonRoadTrajectoryBuilder::flippingPair< A >::flip(), Trajectory::foundHits(), TrajectoryStateOnSurface::freeState(), TrajectoryStateOnSurface::globalPosition(), MuonRoadTrajectoryBuilder::flippingPair< A >::head(), MeasurementTrackerEvent::idToDet(), TrajectoryStateOnSurface::isValid(), MuonRoadTrajectoryBuilder::trajectory::lastmissed, LogDebug, PV3DBase< T, PVType, FrameType >::mag(), MuonRoadTrajectoryBuilder::trajectory::measurements, MuonRoadTrajectoryBuilder::trajectory::missed, MuonRoadTrajectoryBuilder::trajectory::missedinarow, PV3DBase< T, PVType, FrameType >::perp(), Propagator::propagate(), Trajectory::push(), DetId::rawId(), MeasurementDetWithData::recHits(), MuonRoadTrajectoryBuilder::flippingPair< A >::tail(), theBranchonfirstlayer, theCarriedIPatfirstlayer, theCarriedIPatfirstlayerModule, theCategory, theHitEstimator, theMeasurementTrackerEvent, thePropagator, theRoadEstimator, theUpdator, MuonRoadTrajectoryBuilder::trajectory::traj, MuonRoadTrajectoryBuilder::trajectory::TSOS, and TrajectoryStateUpdator::update().

Referenced by makeTrajectories_0().

460 {
462  bool atleastoneadded=false;
463  int Nhits=0;
464 
465  //find compatible modules
466  std::vector<DetLayer::DetWithState> compatible =thislayer->compatibleDets( step, *thePropagator , *theRoadEstimator);
467 
468  //loop over compatible modules
469  for (std::vector< DetLayer::DetWithState > ::iterator dws = compatible.begin();dws != compatible.end();dws++)
470  {
471  const DetId presentdetid = dws->first->geographicalId();//get the det Id
472  restep = dws->second;
473 
474 
475  LogDebug(theCategory)<<((dws->first->components ().size()!=0) ? /*stereo layer*/"double sided layer":/*single sided*/"single sided layer")
476  <<"(presentdetid.rawId()) "<<(presentdetid.rawId());
477 
478  //get the rechits on this module
480  int additionalHits =0;
481 
482  LogDebug(theCategory)<<"(thoseHits.size()) "<<(thoseHits.size());
483 
484  if (thoseHits.size()>theNumberOfHitPerModule)
485  { edm::LogInfo(theCategory)<<"more than "<<theNumberOfHitPerModule
486  <<" compatible hits ("<<thoseHits.size()<<")on module "<<presentdetid.rawId()
487  <<", skip it";continue; }
488 
489  //loop over the rechit on the module
490  for (TransientTrackingRecHit::ConstRecHitContainer::const_iterator iTThit = thoseHits.begin();iTThit != thoseHits.end(); iTThit++)
491  {
492  if (!(*iTThit)->isValid())/*skip*/{edm::LogInfo(theCategory)<<"rec hit not valid on module "<<presentdetid.rawId() <<". I skip it"; continue;}
493 
494  LogDebug(theCategory)<<((dynamic_cast<const SiStripMatchedRecHit2D *>((*iTThit)->hit())!=0) ? /*matched rechit*/ "matched rechit" : " r-phi rechit");
495 
496  //get the surface of the module Id
497  const BoundPlane & surface = (*iTThit)->det()->surface();
498 
499  //estimate the consistency
500  MeasurementEstimator::HitReturnType est_road = theRoadEstimator->estimate(restep,**iTThit);
501 
502  LogDebug(theCategory)<<"(restep.globalPosition().perp()) "<<(restep.globalPosition().perp())<<"(restep.globalPosition().mag()) "<<(restep.globalPosition().mag())
503  <<"road step parameters at module: \n"<<restep
504  << "(est_road.first) "<<(est_road.first)<<"(est_road.second) "<<(est_road.second);
505 
506  //check consistency
507  if (est_road.first)
508  { //hit and propagation are consistent : gather the hit
509  Nhits++;
510  additionalHits++;
511  atleastoneadded=true;
512 
513  LogDebug(theCategory)<<"hit is consistent with road"<<"(presentdetid.rawId()) "<<(presentdetid.rawId())
514  <<"loop over previous trajectories\n"
515  <<"(Trajectories.tail().size()) "<<(Trajectories.tail().size())<<"(Trajectories.head().size()) "<<(Trajectories.head().size());
516 
517  //update the list of trajectory that we have with the consistent rechit.
518  //loop over the existing list of trajectories and add the hit if necessary
519  for ( TrajectoryCollection::iterator traj =Trajectories.head().begin();traj != Trajectories.head().end(); traj++)
520  {
521  //what is the previous state for this trajectory
522  const TrajectoryStateOnSurface & previousState = traj->TSOS;
523  if (!previousState.isValid())
524  {edm::LogError(theCategory)<<"previous free state is invalid at trajectory update, this is WRONG"; continue;}
525  const FreeTrajectoryState & previousFreestate = *previousState.freeState();
526 
527  //propagate it to the current surface
528  TrajectoryStateOnSurface predictedState = thePropagator->propagate(previousFreestate,surface);
529  if (!predictedState.isValid())/*skip*/{edm::LogError(theCategory)
530  <<"predicted state is not valid at trajectory update, rechit surface cannot be reached by the previous updated state.";continue;}
531 
533  est= theHitEstimator->estimate(predictedState,**iTThit);
534 
535  LogDebug(theCategory)<<"(est.first) "<<(est.first)<<"(est.second) "<<(est.second);
536 
537  //is the current hit consistent with the trajectory
538  if (est.first )
539  {
540  //update the trajectory state with the rechit
541  const TrajectoryStateOnSurface & updatedState = theUpdator->update(predictedState,**iTThit);
542  if (!updatedState.isValid())/*skip*/{edm::LogError(theCategory)<<"updated state is not valid, this is really wrong";continue;}
543 
544  LogDebug(theCategory)<<"updating a previous state with a rechit";
545 
546  //add a combined trajectory to the new list of trajectory, starting from the existing trajecotry
547  Trajectories.tail().push_back(*traj); //from existing
548  trajectory & combined = (*Trajectories.tail().rbegin());
549  combined.duplicate =false; //this is important
550  //increment the chi2
551  //combined.chi2 += est.second;
552  combined.chi2 += est_road.second;//better to add the road chi2 too unbias the chi2 sum towards first hits
553  //some history about the trajectory
554  combined.lastmissed=false;
555  combined.missedinarow=0;
556  //add a new hits to the measurements
557  combined.measurements.push_back(TrajectoryMeasurement(updatedState,*iTThit));
558  const TrajectoryMeasurement & trajMeasurement = (*combined.measurements.rbegin());
559  //assigne updated state
560  combined.TSOS = updatedState;
561  //add trajectory measurement
562  combined.traj.push(trajMeasurement,est.second);
563 
564  LogDebug(theCategory)<<"(combined.traj.foundHits()) "<<(combined.traj.foundHits())
565  <<"muon measurement on previous module: \n"<<traj->TSOS
566  <<"muon measurement before update: \n"<<predictedState
567  <<"muon measurement after update: \n"<<updatedState;
568 
569  }//hit consistent with trajectory
570  else
571  {
572  LogDebug(theCategory)<<"hit failed chi2 test for trajectories update\n"<<"(traj->duplicate) "<<(traj->duplicate);
573 
574  if (!traj->duplicate){
575  Trajectories.tail().push_back(*traj);
576  trajectory & copied = (*Trajectories.tail().rbegin());
577  copied.missed++;
578  copied.lastmissed=true;
579  copied.missedinarow++;
580  traj->duplicate =true; //set this trajectory to already have been copied into next step
581  }//not a duplicate trajectory
582  }//hit not consistent with trajectory
583  }//existing trajectories loop
584  }//hit is consistent with muon road
585  }//rechits on module loop
586 
587 
588  //discard previous list of trajectories
589  //if something as been done of course
590  if (!Trajectories.tail().empty())
591  {
592  //if this is not the first "layer" of detector, set updated trajectories as new seed trajectories
593  //will branch on every single rechit uncountered for first "layer"
594  if (!theFirstlayer || theBranchonfirstlayer)
595  {
596  LogDebug(theCategory)<<"swapping trajectory list index";
597 
598  //always carry on the <IP> alone state in the next list of trajectories to avoid bias from the first rechits
599  if (theFirstlayer && theCarriedIPatfirstlayerModule)
600  {
601  LogDebug(theCategory)<<"push front <IP> to next list of trajectories";
602 
603  Trajectories.tail().push_front(*Trajectories.head().begin()); //[0] is <IP> always
604  trajectory & pushed = *Trajectories.tail().begin();
605  pushed.missed+=additionalHits;
606  pushed.lastmissed = ( additionalHits!=0);
607  pushed.missedinarow++;
608  }
609  //FIXME, there is a candidate leak at this point
610  //if the IP state is carried on at first layer, without update, then it will be duplicated. this is very unlikely though
611 
612  Trajectories.head().clear();
613 
614  //swap the lists
615  Trajectories.flip();
616  }
617  }//discard previous list of trajectories
618  }//module loop
619 
620 
621 
622  //do some cleaning of the list of trajectories
623  if(theFirstlayer && atleastoneadded )
624  {
625  theFirstlayer =false; //we are not in the first layer if something has been added
627  {
628  LogDebug(theCategory)<<"swapping trajectory list index (end of first layer)";
629 
630  //and for consistency, you have to swap index here, because it could ahve not been done in the module loop above
631  //always carry on the <IP> alone state in the next list of trajectories to avoid bias from the first rechits
633  {Trajectories.tail().push_front(*Trajectories.head().begin());} //[0] is <IP> always at this stage
634  //FIXME, there is a candidate leak at this point
635  //if the IP state is carried on at first layer, without update, then it will be duplicated. this is very unlikely though
636 
637  Trajectories.head().clear();
638  //swap the switch
639  Trajectories.flip();
640  }
641  else
642  {
643  //actually remove the <IP> from first postion of the next source of trajectories
644  //since the swaping has already been done. pop up from theTrajectorysource, not !theTrajectorysource
645  //only if it has been done at the first layer module though
647 
648  LogDebug(theCategory)<<"pop up <IP> from trajectories";
649 
650  Trajectories.head().pop_front(); }
651  }
652 
653 
654  //check an remove trajectories that are subset of the other in next source
655  //after the first layer only
656  if (Trajectories.head().size()>=2)
657  {checkDuplicate(Trajectories.head());}
658 
659  } //do some cleaning of the list of trajectories
660  return Nhits;
661 
662 }
#define LogDebug(id)
std::vector< Trajectory > Trajectories
MeasurementDetWithData idToDet(const DetId &id) const
Previous MeasurementDetSystem interface.
T perp() const
Definition: PV3DBase.h:72
std::string theCategory
Info/Debug category &quot;Muon|RecoMuon|MuonRoadTrajectoryBuilder&quot;.
virtual TrajectoryStateOnSurface update(const TrajectoryStateOnSurface &, const TransientTrackingRecHit &) const =0
GlobalPoint globalPosition() const
Chi2MeasurementEstimator * theHitEstimator
virtual std::vector< DetWithState > compatibleDets(const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est) const
const MeasurementTrackerEvent * theMeasurementTrackerEvent
uint32_t rawId() const
get the raw id
Definition: DetId.h:43
RecHitContainer recHits(const TrajectoryStateOnSurface &tsos) const
T mag() const
Definition: PV3DBase.h:67
FreeTrajectoryState const * freeState(bool withErrors=true) const
TrajectoryStateUpdator * theUpdator
virtual TrajectoryStateOnSurface propagate(const FreeTrajectoryState &, const Surface &) const
Definition: Propagator.cc:12
std::vector< ConstRecHitPointer > ConstRecHitContainer
Definition: DetId.h:18
std::pair< bool, double > HitReturnType
Chi2MeasurementEstimator * theRoadEstimator
void checkDuplicate(TrajectoryCollection &collection) const
void MuonRoadTrajectoryBuilder::makeTrajectories ( const TrajectorySeed seed,
std::vector< Trajectory > &  result,
int  version = 0 
) const
private

Definition at line 142 of file MuonRoadTrajectoryBuilder.cc.

References makeTrajectories_0(), and makeTrajectories_1().

Referenced by trajectories().

143 { if (version==0) { makeTrajectories_0(seed,result);}
144  else if (version==1) { makeTrajectories_1(seed,result);}}
void makeTrajectories_0(const TrajectorySeed &seed, std::vector< Trajectory > &result) const
tuple result
Definition: query.py:137
void makeTrajectories_1(const TrajectorySeed &seed, std::vector< Trajectory > &result) const
void MuonRoadTrajectoryBuilder::makeTrajectories_0 ( const TrajectorySeed seed,
std::vector< Trajectory > &  result 
) const
private

Definition at line 149 of file MuonRoadTrajectoryBuilder.cc.

References alongMomentum, checkStep(), PTrajectoryStateOnDet::detId(), TrajectoryStateOnSurface::freeState(), GatherHits(), MeasurementTracker::geometricSearchTracker(), MeasurementTracker::geomTracker(), TrajectoryStateOnSurface::globalMomentum(), TrajectoryStateOnSurface::globalPosition(), MuonRoadTrajectoryBuilder::flippingPair< A >::head(), TrackingGeometry::idToDet(), TrajectoryStateOnSurface::isValid(), LogDebug, MuonRoadTrajectoryBuilder::trajectory::measurements, GeometricSearchTracker::negTecLayers(), GeometricSearchTracker::negTidLayers(), PV3DBase< T, PVType, FrameType >::perp(), position, GeometricSearchTracker::posTecLayers(), GeometricSearchTracker::posTidLayers(), Propagator::propagate(), alignCSCRings::r, reco::return(), smooth(), TrajectorySeed::startingState(), GeomDet::surface(), sistripsummary::TEC, theCategory, theField, theMeasurementTracker, theMinNumberOfHitOnCandidate, theNumberOfHitPerModuleDefault, theOutputAllTraj, thePropagator, sistripsummary::TIB, GeometricSearchTracker::tibLayers(), sistripsummary::TID, sistripsummary::TOB, GeometricSearchTracker::tobLayers(), MuonRoadTrajectoryBuilder::trajectory::traj, trajectoryOrder(), trajectoryStateTransform::transientState(), MuonRoadTrajectoryBuilder::trajectory::TSOS, detailsBasic3DVector::z, and PV3DBase< T, PVType, FrameType >::z().

Referenced by makeTrajectories().

150 {
151  Trajectory basicTrajectory(seed,alongMomentum);
152  //add the muon system measurement to the basicTrajectory
153  //...no yet implemented...
154 
155  //get the initial state
156  PTrajectoryStateOnDet PTstart=seed.startingState();
157  DetId detId(PTstart.detId());
158  const BoundPlane * surface =(&theMeasurementTracker->geomTracker()->idToDet(detId)->surface());
159  //start from this point
161  if (!TSOS.isValid())/*/abort*/{ edm::LogError(theCategory)<<"TSOS from PTSOD is not valid.";return ;}
162 
163  LogDebug(theCategory) <<"(detId.rawId()) "<<(detId.rawId())<<"(detId.subdetId()) "<<(detId.subdetId())
164  <<"(TSOS.globalPosition()) "<<(TSOS.globalPosition())
165  <<"(TSOS.globalMomentum()) "<<(TSOS.globalMomentum());
166 
167  //initialization
168  //----------------------
169  //
170  //
171  bool theFirstlayer=true;
172  unsigned int theNumberOfHitPerModule = theNumberOfHitPerModuleDefault;
173  //----------------------
174  int Nhits=0;
176  double z=0,r=0;
177  //flipping pair of list of trajectories
179  //initialize the head() of pair of list of trajectories
180  Trajectories.head().push_back(trajectory());
181  trajectory & initial = *Trajectories.head().rbegin();
182  initial.TSOS=TSOS;
183  initial.traj=basicTrajectory;
184 
185 
186 
187  //get the DetLayer in the tracker
188  std::vector<BarrelDetLayer*> tiblc = theMeasurementTracker->geometricSearchTracker()->tibLayers();
189  std::vector<BarrelDetLayer*> toblc = theMeasurementTracker->geometricSearchTracker()->tobLayers();
190  std::vector<ForwardDetLayer*> tidlc[2];
193  std::vector<ForwardDetLayer*> teclc[2];
196  const int Ntib=tiblc.size();
197  const int Ntob=toblc.size();
198  const int Ntid=tidlc[0].size();
199 
200 
201  const int Ntec=teclc[0].size();
202 
203  LogDebug(theCategory)<<"(Ntib) "<<(Ntib)<<"(Ntob) "<<(Ntob)<<"(Ntid) "<<(Ntid)<<"(Ntec) "<<(Ntec);
204 
205  const SimpleDiskBounds * sdbounds=0;
206 
207  position = TSOS.globalPosition();
208  z = position.z();
209  r = position.perp();
210 
211  //select which part we are in
212  enum PART { fault , PXB, PXF, TIB , TID , TOB , TEC};
213  PART whichpart = fault;
214  switch(detId.subdetId()){
215  case 1: {whichpart=PXB;break;}
216  case 2: {whichpart=PXF;break;}
217 
218  case 3: {whichpart=TIB;break;}
219  case 4: {whichpart=TID;break;}
220  case 5: {whichpart=TOB;break;}
221  case 6: {whichpart=TEC;break;}}
222 
223  bool inapart=true;
224  bool firstRound =true;
225  int indexinpart=0;
226  //loop while in a valid part of the tracker
227  while(inapart){
228 
229  //check on the trajectory list and stuff
230  if (!checkStep(Trajectories.head(),theNumberOfHitPerModule)) break;
231  //................
232 
233  switch (whichpart){
234 
235  case fault: /*abort*/ {edm::LogError(theCategory)<<"something's wrong with the seed";return;}
236  case PXB: /*abort*/ {edm::LogError(theCategory)<<"PXB no yet implemented";return;}
237  case PXF: /*abort*/ {edm::LogError(theCategory)<<"PXF no yet implemented";return;}
238 
239  //-------------- into TIB----------------
240  case TIB:{
241  if (indexinpart==Ntib){/*you have reach the last layer of the TIB.let's go to the TOB*/whichpart = TOB; indexinpart=-1;break; }
242 
243  LogDebug(theCategory)<<"within TIB "<<indexinpart+1;
244 
245  //propagate to corresponding surface
246  if (!firstRound) TSOS = thePropagator->propagate(*TSOS.freeState(),tiblc[indexinpart]->surface());
247  if (!TSOS.isValid()) {;break;} //go to the next one
248 
249  z=TSOS.globalPosition().z();
250 
251  //have we reached a boundary
252  if (fabs(z) > fabs(tidlc[(z>0)][0]->surface().position().z()))
253  {/*z bigger than the TID min z: go to TID*/
254  LogDebug(theCategory)<<"|z| ("<<z<<") bigger than the TID min z("<<tidlc[(z>0)][0]->surface().position().z()<<"): go to TID";
255  whichpart = TID; indexinpart=-1; break;}
256  else {/*gather hits in the corresponding TIB layer*/ Nhits+=GatherHits(TSOS,tiblc[indexinpart],Trajectories,theFirstlayer,theNumberOfHitPerModule);}
257  break;}
258 
259  //-------------- into TID----------------
260  case TID: {
261  if (indexinpart==Ntid){/*you have reach the last layer of the TID. let's go to the TEC */ whichpart = TEC; indexinpart=-1; break;}
262 
263  LogDebug(theCategory)<<"within TID "<<indexinpart+1;
264 
265  //propagate to corresponding surface
266  if (!firstRound) TSOS = thePropagator->propagate(*TSOS.freeState(),tidlc[(z>0)][indexinpart]->surface());
267  if (!TSOS.isValid()){break;}//go to the next one
268 
269  position = TSOS.globalPosition();
270  z = position.z();
271  r = position.perp();
272 
273  sdbounds = dynamic_cast<const SimpleDiskBounds *>(&tidlc[(z>0)][indexinpart]->surface().bounds());
274  if (!sdbounds)/*abort*/{edm::LogError(theCategory)<<" detlayer bounds are not SimpleDiskBounds in tid geometry";return;}
275 
276  //have we reached a boundary
277  if (r < sdbounds->innerRadius())
278  {/*radius smaller than the TID disk inner radius: next disk please*/
279  LogDebug(theCategory)<<"radius ("<<r<<") smaller than the TID disk inner radius ("<<sdbounds->innerRadius()<<"): next disk please";
280  break;}
281  else if (r >sdbounds->outerRadius())
282  {/*radius bigger than the TID disk outer radius: go to TOB*/
283  LogDebug(theCategory)<<"radius ("<<r<<") bigger than the TID disk outer radius("<<sdbounds->outerRadius()<<"): go to TOB";
284  whichpart = TOB; indexinpart=-1;break;}
285  else {/*gather hits in the corresponding TIB layer*/
286  LogDebug(theCategory)<<"collecting hits";
287  Nhits+=GatherHits(TSOS,tidlc[(z>0)][indexinpart],Trajectories,theFirstlayer,theNumberOfHitPerModule);}
288  break;}
289 
290  //-------------- into TOB----------------
291  case TOB: {
292  if (indexinpart==Ntob){/*you have reach the last layer of the TOB. this is an end*/ inapart=false;break;}
293 
294  LogDebug(theCategory)<<"within TOB "<<indexinpart+1;
295 
296  //propagate to corresponding surface
297  if (!firstRound) TSOS = thePropagator->propagate(*TSOS.freeState(),toblc[indexinpart]->surface());
298  if (!TSOS.isValid()) {break;} //go to the next one
299 
300  z = TSOS.globalPosition().z();
301 
302  //have we reached a boundary
303  if (fabs(z) > fabs(teclc[(z>0)][0]->surface().position().z()))
304  {/*z bigger than the TOB layer max z: go to TEC*/
305  LogDebug(theCategory)<<"|z| ("<<z<<") bigger than the TOB layer max z ("<< teclc[(z>0)][0]->surface().position().z()<<"): go to TEC";
306  whichpart = TEC; indexinpart=-1;break;}
307  else {/*gather hits in the corresponding TOB layer*/Nhits+=GatherHits(TSOS,toblc[indexinpart],Trajectories,theFirstlayer,theNumberOfHitPerModule);}
308  break;}
309 
310  //-------------- into TEC----------------
311  case TEC: {
312  if (indexinpart==Ntec){/*you have reach the last layer of the TEC. let's end here*/inapart=false;break;}
313 
314  LogDebug(theCategory)<<"within TEC "<<indexinpart+1;
315 
316  //propagate to corresponding TEC disk
317  if (!firstRound) TSOS = thePropagator->propagate(*TSOS.freeState(),teclc[(z>0)][indexinpart]->surface());
318  if (!TSOS.isValid()) {break;} //go to the next one
319 
320  position = TSOS.globalPosition();
321  z = position.z();
322  r = position.perp();
323 
324  sdbounds = dynamic_cast<const SimpleDiskBounds *>(&teclc[(z>0)][indexinpart]->surface().bounds());
325  if (!sdbounds)/*abort*/ {edm::LogError(theCategory)<<" detlayer bounds are not SimpleDiskBounds in tec geometry";return;}
326 
327  //have we reached a boundary ?
328  if (r < sdbounds->innerRadius())
329  {/*radius smaller than the TEC disk inner radius: next disk please*/
330  LogDebug(theCategory)<<"radius ("<<r<<") smaller than the TEC disk inner radius ("<<sdbounds->innerRadius()<<"): next disk please";
331  break;}
332  else if (r > sdbounds->outerRadius())
333  {/*radius bigger than the TEC disk outer radius: I can stop here*/
334  LogDebug(theCategory)<<"radius ("<<r<<") bigger than the TEC disk outer radius ("<<sdbounds->outerRadius()<<"): I can stop here";
335  inapart=false;break;}
336  else {/*gather hits in the corresponding TEC layer*/Nhits+=GatherHits(TSOS,teclc[(z>0)][indexinpart],Trajectories,theFirstlayer,theNumberOfHitPerModule);}
337 
338  break;}
339 
340  }//switch
341  indexinpart++;
342  firstRound=false;
343  }//while inapart
344 
345 
346  LogDebug(theCategory)<<"propagating through layers is done";
347 
348  //--------------------------------------- SWIMMING DONE --------------------------------------
349  //the list of trajectory has been build. let's find out which one is the best to use.
350 
351  edm::LogInfo(theCategory)<<"found: "
352  <<Nhits<<" hits in the road for this seed \n"
353  << Trajectories.head().size()<<" possible trajectory(ies)";
354 
355  if (Trajectories.head().empty()) /*abort*/{edm::LogError(theCategory)<<" no possible trajectory found"; return;}
356 
357  //order the list to put the best in front
358  Trajectories.head().sort(trajectoryOrder);
359 
360  //------------------------------------OUTPUT FILL---------------------------------------------
361  if (theOutputAllTraj) {
362  //output all the possible trajectories found, if they have enough hits on them
363  //the best is still the first
364  for (TrajectoryCollection::iterator tit = Trajectories.head().begin(); tit!=Trajectories.head().end();tit++)
365  {if (tit->measurements.size()>= theMinNumberOfHitOnCandidate){result.push_back(smooth(tit->traj));}}
366  }
367  else{
368  //output only the best one
369  trajectory & best = (*Trajectories.head().begin());
370  if (best.measurements.size()< theMinNumberOfHitOnCandidate)/*abort*/{edm::LogError(theCategory)<<"best trajectory does not have enough ("<<best.measurements.size()<<") hits on it (<"<<theMinNumberOfHitOnCandidate<<")"; return;}
371  //output only the best trajectory
372  result.push_back(smooth(best.traj));}
373 
374  edm::LogInfo(theCategory)<<result.size()<<" trajectory(ies) output";
375 }//makeTrajectories_0
#define LogDebug(id)
std::vector< Trajectory > Trajectories
flippingPair< TrajectoryCollection > TrajectoryCollectionFPair
T perp() const
Definition: PV3DBase.h:72
std::string theCategory
Info/Debug category &quot;Muon|RecoMuon|MuonRoadTrajectoryBuilder&quot;.
bool trajectoryOrder(const MuonRoadTrajectoryBuilder::trajectory &traj1, const MuonRoadTrajectoryBuilder::trajectory &traj2)
GlobalPoint globalPosition() const
Trajectory smooth(Trajectory &) const
std::vector< ForwardDetLayer * > const & posTecLayers() const
const Plane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:35
float float float z
static int position[TOTALCHAMBERS][3]
Definition: ReadPGInfo.cc:509
std::vector< ForwardDetLayer * > const & negTecLayers() const
int GatherHits(const TrajectoryStateOnSurface &step, const DetLayer *thislayer, TrajectoryCollectionFPair &Trajectories, bool &firstLayer, unsigned int theNumberOfHitPerModule) const
FreeTrajectoryState const * freeState(bool withErrors=true) const
T z() const
Definition: PV3DBase.h:64
tuple result
Definition: query.py:137
const TrackingGeometry * geomTracker() const
unsigned int detId() const
const MeasurementTracker * theMeasurementTracker
virtual TrajectoryStateOnSurface propagate(const FreeTrajectoryState &, const Surface &) const
Definition: Propagator.cc:12
Definition: DetId.h:18
TrajectoryStateOnSurface TSOS
Definition: TestHits.cc:19
PTrajectoryStateOnDet const & startingState() const
TrajectoryStateOnSurface transientState(const PTrajectoryStateOnDet &ts, const Surface *surface, const MagneticField *field)
virtual const GeomDet * idToDet(DetId) const =0
return(e1-e2)*(e1-e2)+dp *dp
std::vector< BarrelDetLayer * > const & tibLayers() const
GlobalVector globalMomentum() const
std::vector< ForwardDetLayer * > const & posTidLayers() const
std::vector< ForwardDetLayer * > const & negTidLayers() const
const GeometricSearchTracker * geometricSearchTracker() const
std::vector< BarrelDetLayer * > const & tobLayers() const
bool checkStep(TrajectoryCollection &collection, unsigned int &theNumberOfHitPerModule) const
void MuonRoadTrajectoryBuilder::makeTrajectories_1 ( const TrajectorySeed seed,
std::vector< Trajectory > &  result 
) const
private

Definition at line 762 of file MuonRoadTrajectoryBuilder.cc.

References alongMomentum.

Referenced by makeTrajectories().

763 {
764  Trajectory basicTrajectory(seed,alongMomentum);
765  //add the muon system measurement to the basicTrajectory
766  //...
767 
768 // //build the trajectories
769 // std::vector<Trajectory> unsmoothed = theCkfbuilder->trajectories(seed);
770 
771 // //smoothed them
772 // if (theOutputAllTraj) {
773 // for (std::vector<Trajectory>::iterator tit = unsmoothed.begin(); tit!=unsmoothed.end();tit++)
774 // {result.push_back(smooth(*tit));}
775 // }
776 // else{
777 // //output only the first one
778 // result.push_back(smooth(unsmoothed.front()));}
779 
780 }
void MuonRoadTrajectoryBuilder::setEvent ( const edm::Event iEvent) const
virtual

Implements TrajectoryBuilder.

Definition at line 101 of file MuonRoadTrajectoryBuilder.cc.

101  {
102 }
Trajectory MuonRoadTrajectoryBuilder::smooth ( Trajectory traj) const
private

Definition at line 439 of file MuonRoadTrajectoryBuilder.cc.

References cleanTrajectory(), run_regression::ret, sortTrajectoryMeasurements(), theCategory, and theSmoother.

Referenced by makeTrajectories_0().

439  {
440 
441  //need to order the list of measurements on the trajectory first
443 
444  std::vector<Trajectory> ret=theSmoother->trajectories(traj);
445 
446  if (ret.empty()){
447  edm::LogError(theCategory)<<"smoother returns an empty vector of trajectories: try cleaning first and resmooth";
448  cleanTrajectory(traj);
449  ret=theSmoother->trajectories(traj);
450  }
451 
452  if (ret.empty()){edm::LogError(theCategory)<<"smoother returns an empty vector of trajectories.";
453  return traj;}
454  else{return (ret.front());}
455 }
std::string theCategory
Info/Debug category &quot;Muon|RecoMuon|MuonRoadTrajectoryBuilder&quot;.
KFTrajectorySmoother * theSmoother
void cleanTrajectory(Trajectory &traj) const
void sortTrajectoryMeasurements(Trajectory &traj)
std::vector< Trajectory > MuonRoadTrajectoryBuilder::trajectories ( const TrajectorySeed seed) const
virtual

Implements TrajectoryBuilder.

Definition at line 126 of file MuonRoadTrajectoryBuilder.cc.

References LogDebug, makeTrajectories(), query::result, and theCategory.

127 {
128  LogDebug(theCategory)<<"makeTrajectories START";
129 
130  //default output
131  std::vector<Trajectory> result;
132 
133  //process the seed through the tracker
134  makeTrajectories(seed,result);
135 
136  //output the result of regional tracking
137  return result;
138 }
#define LogDebug(id)
std::string theCategory
Info/Debug category &quot;Muon|RecoMuon|MuonRoadTrajectoryBuilder&quot;.
void makeTrajectories(const TrajectorySeed &seed, std::vector< Trajectory > &result, int version=0) const
tuple result
Definition: query.py:137
void MuonRoadTrajectoryBuilder::trajectories ( const TrajectorySeed seed,
TrajectoryContainer ret 
) const
virtual

process the seed, in a faster manner.

Reimplemented from TrajectoryBuilder.

Definition at line 118 of file MuonRoadTrajectoryBuilder.cc.

References LogDebug, makeTrajectories(), and theCategory.

119 {
120  LogDebug(theCategory)<<"makeTrajectories START";
121  //process the seed through the tracker
122  makeTrajectories(seed,ret);
123 }
#define LogDebug(id)
std::string theCategory
Info/Debug category &quot;Muon|RecoMuon|MuonRoadTrajectoryBuilder&quot;.
void makeTrajectories(const TrajectorySeed &seed, std::vector< Trajectory > &result, int version=0) const

Member Data Documentation

bool MuonRoadTrajectoryBuilder::theBranchonfirstlayer
private

Definition at line 134 of file MuonRoadTrajectoryBuilder.h.

Referenced by GatherHits(), and MuonRoadTrajectoryBuilder().

bool MuonRoadTrajectoryBuilder::theCarriedIPatfirstlayer
private

Definition at line 135 of file MuonRoadTrajectoryBuilder.h.

Referenced by GatherHits(), and MuonRoadTrajectoryBuilder().

bool MuonRoadTrajectoryBuilder::theCarriedIPatfirstlayerModule
private

Definition at line 136 of file MuonRoadTrajectoryBuilder.h.

Referenced by GatherHits(), and MuonRoadTrajectoryBuilder().

std::string MuonRoadTrajectoryBuilder::theCategory
private

Info/Debug category "Muon|RecoMuon|MuonRoadTrajectoryBuilder".

Definition at line 69 of file MuonRoadTrajectoryBuilder.h.

Referenced by checkDuplicate(), checkStep(), cleanTrajectory(), GatherHits(), makeTrajectories_0(), MuonRoadTrajectoryBuilder(), smooth(), trajectories(), and ~MuonRoadTrajectoryBuilder().

bool MuonRoadTrajectoryBuilder::theDynamicMaxNumberOfHitPerModule
private

Definition at line 128 of file MuonRoadTrajectoryBuilder.h.

Referenced by checkStep(), and MuonRoadTrajectoryBuilder().

const MagneticField* MuonRoadTrajectoryBuilder::theField
private

Definition at line 164 of file MuonRoadTrajectoryBuilder.h.

Referenced by makeTrajectories_0(), and MuonRoadTrajectoryBuilder().

Chi2MeasurementEstimator* MuonRoadTrajectoryBuilder::theHitEstimator
private
unsigned int MuonRoadTrajectoryBuilder::theMaxTrajectories
private

Definition at line 122 of file MuonRoadTrajectoryBuilder.h.

Referenced by checkStep(), and MuonRoadTrajectoryBuilder().

std::vector<unsigned int> MuonRoadTrajectoryBuilder::theMaxTrajectoriesThreshold
private

Definition at line 130 of file MuonRoadTrajectoryBuilder.h.

Referenced by checkStep(), and MuonRoadTrajectoryBuilder().

const MeasurementTracker* MuonRoadTrajectoryBuilder::theMeasurementTracker
private
const MeasurementTrackerEvent* MuonRoadTrajectoryBuilder::theMeasurementTrackerEvent
private
unsigned int MuonRoadTrajectoryBuilder::theMinNumberOfHitOnCandidate
private

Definition at line 140 of file MuonRoadTrajectoryBuilder.h.

Referenced by makeTrajectories_0(), and MuonRoadTrajectoryBuilder().

unsigned int MuonRoadTrajectoryBuilder::theNumberOfHitPerModuleDefault
private

Definition at line 129 of file MuonRoadTrajectoryBuilder.h.

Referenced by makeTrajectories_0(), and MuonRoadTrajectoryBuilder().

std::vector<unsigned int> MuonRoadTrajectoryBuilder::theNumberOfHitPerModuleThreshold
private

Definition at line 131 of file MuonRoadTrajectoryBuilder.h.

Referenced by checkStep(), and MuonRoadTrajectoryBuilder().

bool MuonRoadTrajectoryBuilder::theOutputAllTraj
private

Definition at line 142 of file MuonRoadTrajectoryBuilder.h.

Referenced by makeTrajectories_0(), and MuonRoadTrajectoryBuilder().

const Propagator* MuonRoadTrajectoryBuilder::thePropagator
private
Chi2MeasurementEstimator* MuonRoadTrajectoryBuilder::theRoadEstimator
private
KFTrajectorySmoother* MuonRoadTrajectoryBuilder::theSmoother
private
TrajectoryStateUpdator* MuonRoadTrajectoryBuilder::theUpdator
private