CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
GroupedCkfTrajectoryBuilder.h
Go to the documentation of this file.
1 #ifndef GroupedCkfTrajectoryBuilder_H
2 #define GroupedCkfTrajectoryBuilder_H
3 
7 
10 
12 
13 #include <vector>
14 
15 
17 
18 
25 
26  public:
30  const Propagator* propagatorAlong,
31  const Propagator* propagatorOpposite,
33  const TransientTrackingRecHitBuilder* RecHitBuilder,
34  const MeasurementTracker* measurementTracker,
35  const TrajectoryFilter* filter,
36  const TrajectoryFilter* inOutFilter);
37 
40 
42  // virtual void setEvent(const edm::Event& event) const;
43 
46 
49 
52 
55 
63  TrajectoryContainer& result) const ;
64 
65  // Access to lower level components
66  const TrajectoryStateUpdator& updator() const {return *theUpdator;}
68 
69  // PropagationDirection direction() const {return theDirection;}
70 
72  double chiSquareCut() {return theChiSquareCut;}
73 
75  int maxCand() {return theMaxCand;}
76 
77 
80 
81  // /** Tells whether an intermediary cleaning stage should take place during TB. */
82  // bool intermediateCleaning() {return theIntermediateCleaning;}
83 
85  double ptCut() {return theptCut;}
86 
88  double mass() {return theMass;}
89 
90 protected:
91 
92  virtual void analyseSeed(const TrajectorySeed& seed) const{}
93 
94  virtual void analyseMeasurements( const std::vector<TM>& meas,
95  const Trajectory& traj) const{}
96  virtual void analyseResult( const TrajectoryContainer& result) const {}
97 
98 private :
101 
104 
108  const TrajectoryFilter*) const dso_internal;
109 
110  inline bool tkxor(bool a, bool b) const dso_internal {return (a||b) && !(a&&b);}
111  // to be ported later
112 
113  bool advanceOneLayer( TempTrajectory& traj,
114  const TrajectoryFilter* regionalCondition,
115  const Propagator* propagator,
116  bool inOut,
117  TempTrajectoryContainer& newCand,
119 
120  void groupedLimitedCandidates( TempTrajectory& startingTraj,
121  const TrajectoryFilter* regionalCondition,
122  const Propagator* propagator,
123  bool inOut,
125 
127  void rebuildSeedingRegion (TempTrajectory& startingTraj,
129 
130  //** try to find additional hits in seeding region for a candidate
131  //* (returns number of trajectories added) *
132  int rebuildSeedingRegion (const std::vector<const TrackingRecHit*>& seedHits,
133  TempTrajectory& candidate,
135 
136  // ** Backward fit of trajectory candidate except seed. Fit result and
137  // * remaining hits are returned in fittedTracks and remainingHits.
138  // * FittedTracks is empty if no fit was done. *
139  void backwardFit (TempTrajectory& candidate, unsigned int nSeed,
140  const TrajectoryFitter& fitter,
141  TempTrajectoryContainer& fittedTracks,
142  std::vector<const TrackingRecHit*>& remainingHits) const dso_internal;
143 
146  size_t maxDepth,
147  const std::vector<const TrackingRecHit*>& hits) const dso_internal;
148 
151 
154  void layers (const TempTrajectory::DataContainer& measurements,
155  std::vector<const DetLayer*> &fillme) const dso_internal;
156 
159  if ( dir==alongMomentum ) return oppositeToMomentum;
160  else if ( dir==oppositeToMomentum ) return alongMomentum;
161  return dir;
162  }
163 
164 
165 private:
167 
168  // typedef deque< const TrajectoryFilter*> StopCondContainer;
169  // StopCondContainer theStopConditions;
170 
173  double theptCut;
175  double theMass;
186 
187  bool theLockHits;
201 
203 
204  mutable TempTrajectoryContainer work_; // Better here than alloc every time
205  enum work_MaxSize_Size_ { work_MaxSize_ = 50 }; // if it grows above this number, it is forced to resize to half this amount when cleared
206 };
207 
208 #endif
virtual void analyseMeasurements(const std::vector< TM > &meas, const Trajectory &traj) const
void groupedIntermediaryClean(TempTrajectoryContainer &theTrajectories) const dso_internal
intermediate cleaning in the case of grouped measurements
void layers(const TempTrajectory::DataContainer &measurements, std::vector< const DetLayer * > &fillme) const dso_internal
TrajectoryContainer trajectories(const TrajectorySeed &) const
set Event for the internal MeasurementTracker data member
bool advanceOneLayer(TempTrajectory &traj, const TrajectoryFilter *regionalCondition, const Propagator *propagator, bool inOut, TempTrajectoryContainer &newCand, TempTrajectoryContainer &result) const dso_internal
GroupedCkfTrajectoryBuilder(const edm::ParameterSet &conf, const TrajectoryStateUpdator *updator, const Propagator *propagatorAlong, const Propagator *propagatorOpposite, const Chi2MeasurementEstimatorBase *estimator, const TransientTrackingRecHitBuilder *RecHitBuilder, const MeasurementTracker *measurementTracker, const TrajectoryFilter *filter, const TrajectoryFilter *inOutFilter)
constructor from ParameterSet
const TrajectoryStateUpdator * theUpdator
virtual void analyseSeed(const TrajectorySeed &seed) const
double mass()
Mass hypothesis used for propagation.
PropagationDirection
bool tkxor(bool a, bool b) const dso_internal
bool verifyHits(TempTrajectory::DataContainer::const_iterator rbegin, size_t maxDepth, const std::vector< const TrackingRecHit * > &hits) const dso_internal
Verifies presence of a RecHits in a range of TrajectoryMeasurements.
virtual void analyseResult(const TrajectoryContainer &result) const
PropagationDirection oppositeDirection(PropagationDirection dir) const dso_internal
change of propagation direction
tuple result
Definition: query.py:137
const Chi2MeasurementEstimatorBase & estimator() const
#define dso_internal
Definition: Visibility.h:13
void rebuildSeedingRegion(const TrajectorySeed &, TrajectoryContainer &result) const
void backwardFit(TempTrajectory &candidate, unsigned int nSeed, const TrajectoryFitter &fitter, TempTrajectoryContainer &fittedTracks, std::vector< const TrackingRecHit * > &remainingHits) const dso_internal
tuple conf
Definition: dbtoconf.py:185
virtual ~GroupedCkfTrajectoryBuilder()
destructor
std::vector< TempTrajectory > TempTrajectoryContainer
void buildTrajectories(const TrajectorySeed &, TrajectoryContainer &ret, const TrajectoryFilter *) const dso_internal
common part of both public trajectory building methods
double b
Definition: hdecay.h:120
string const
Definition: compareJSON.py:14
const TrajectoryStateUpdator & updator() const
double a
Definition: hdecay.h:121
dbl *** dir
Definition: mlp_gen.cc:35
std::vector< Trajectory > TrajectoryContainer
const Chi2MeasurementEstimatorBase * theEstimator
void groupedLimitedCandidates(TempTrajectory &startingTraj, const TrajectoryFilter *regionalCondition, const Propagator *propagator, bool inOut, TempTrajectoryContainer &result) const dso_internal