CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
BaseCkfTrajectoryBuilder.h
Go to the documentation of this file.
1 #ifndef RecoTracker_CkfPattern_BaseCkfTrajectoryBuilder_h
2 #define RecoTracker_CkfPattern_BaseCkfTrajectoryBuilder_h
3 
11 
12 #include <cassert>
14 
15 class CkfDebugger;
17 class DetGroup;
20 class LayerMeasurements;
21 class MeasurementTracker;
24 class NavigationSchool;
25 class Propagator;
28 class TrajectoryContainer;
30 class TrajectoryFitter;
33 class Trajectory;
34 class TempTrajectory;
35 class TrajectoryFilter;
36 class TrackingRegion;
38 class TrajectoryCleaner;
40 namespace edm {
41  class ConsumesCollector;
42 }
43 
46 
47 #include <string>
48 
57 protected:
58  // short names
62  typedef std::pair<TSOS, std::vector<const DetLayer*> > StateAndLayers;
63 
64 public:
65  typedef std::vector<Trajectory> TrajectoryContainer;
66  typedef std::vector<TempTrajectory> TempTrajectoryContainer;
67  typedef TrajectoryContainer::iterator TrajectoryIterator;
68 
69  // Claims ownership of TrajectoryFilter pointers
72  std::unique_ptr<TrajectoryFilter> filter,
73  std::unique_ptr<TrajectoryFilter> inOutFilter = nullptr);
76  ~BaseCkfTrajectoryBuilder() override;
77 
78  // new interface returning the start Trajectory...
81  unsigned int& nCandPerSeed,
82  const TrajectoryFilter*) const {
83  assert(0 == 1);
84  return TempTrajectory();
85  }
86 
87  virtual void rebuildTrajectories(TempTrajectory const& startingTraj,
88  const TrajectorySeed& seed,
89  TrajectoryContainer& result) const {
90  assert(0 == 1);
91  }
92 
94 
95  void setEvent(const edm::Event& event) const override;
96  void unset() const override;
97 
98  void setEvent(const edm::Event& iEvent, const edm::EventSetup& iSetup, const MeasurementTrackerEvent* data);
99 
100  virtual void setDebugger(CkfDebugger* dbg) const { ; }
101 
103  // int maxLostHit() {return theMaxLostHit;}
104 
106  // int maxConsecLostHit() {return theMaxConsecLostHit;}
107 
109 
110 protected:
111  static std::unique_ptr<TrajectoryFilter> createTrajectoryFilter(const edm::ParameterSet& pset,
113 
114  virtual void setEvent_(const edm::Event& iEvent, const edm::EventSetup& iSetup) = 0;
115 
116  //methods for dubugging
118  const std::vector<TrajectoryMeasurement>& meas,
120  const Propagator* theForwardPropagator,
123  return true;
124  }
126  const std::vector<TrajectoryMeasurement>& meas,
128  const Propagator* theForwardPropagator,
131  return true;
132  }
133  virtual void fillSeedHistoDebugger(std::vector<TrajectoryMeasurement>::iterator begin,
134  std::vector<TrajectoryMeasurement>::iterator end) const {
135  ;
136  }
137 
138 protected:
140 
142  // If inOut is true, this is being called part-way through tracking, after the in-out tracking phase is complete.
143  // If inOut is false, it is called at the end of tracking.
144  bool toBeContinued(TempTrajectory& traj, bool inOut = false) const;
145 
147  bool qualityFilter(const TempTrajectory& traj, bool inOut = false) const;
148 
149  void addToResult(std::shared_ptr<const TrajectorySeed> const& seed,
150  TempTrajectory& traj,
152  bool inOut = false) const;
153  void addToResult(TempTrajectory const& traj, TempTrajectoryContainer& result, bool inOut = false) const;
154  void moveToResult(TempTrajectory&& traj, TempTrajectoryContainer& result, bool inOut = false) const;
155 
157 
158 private:
159  void seedMeasurements(const TrajectorySeed& seed, TempTrajectory& result, bool as5D) const;
160 
161 protected:
162  void setData(const MeasurementTrackerEvent* data);
163 
166  }
169  }
170 
171 protected:
173 
175  const Propagator* thePropagatorAlong = nullptr;
181 
182 private:
184 
185  std::unique_ptr<TrajectoryFilter> theFilter;
186  std::unique_ptr<TrajectoryFilter> theInOutFilter;
188  // for EventSetup
194 };
195 
196 #endif
PropagationDirection direction() const
BaseCkfTrajectoryBuilder & operator=(const BaseCkfTrajectoryBuilder &)=delete
tuple ret
prodAgent to be discontinued
TrajectoryStateOnSurface TSOS
void setData(const MeasurementTrackerEvent *data)
const edm::ESGetToken< Propagator, TrackingComponentsRecord > thePropagatorAlongToken
const Propagator * forwardPropagator(const TrajectorySeed &seed) const
virtual bool analyzeMeasurementsDebugger(Trajectory &traj, const std::vector< TrajectoryMeasurement > &meas, const MeasurementTrackerEvent *theMeasurementTracker, const Propagator *theForwardPropagator, const Chi2MeasurementEstimatorBase *theEstimator, const TransientTrackingRecHitBuilder *theTTRHBuilder) const
const TrajectoryStateUpdator * theUpdator
void addToResult(std::shared_ptr< const TrajectorySeed > const &seed, TempTrajectory &traj, TrajectoryContainer &result, bool inOut=false) const
virtual TempTrajectory buildTrajectories(const TrajectorySeed &seed, TrajectoryContainer &ret, unsigned int &nCandPerSeed, const TrajectoryFilter *) const
assert(be >=bs)
TrajectoryContainer::iterator TrajectoryIterator
void seedMeasurements(const TrajectorySeed &seed, TempTrajectory &result, bool as5D) const
tuple result
Definition: mps_fire.py:311
bool qualityFilter(const TempTrajectory &traj, bool inOut=false) const
virtual void setEvent_(const edm::Event &iEvent, const edm::EventSetup &iSetup)=0
const TransientTrackingRecHitBuilder * hitBuilder() const
int iEvent
Definition: GenABIO.cc:224
virtual void rebuildTrajectories(TempTrajectory const &startingTraj, const TrajectorySeed &seed, TrajectoryContainer &result) const
const TransientTrackingRecHitBuilder * theTTRHBuilder
const edm::ESGetToken< Chi2MeasurementEstimatorBase, TrackingComponentsRecord > theEstimatorToken
static std::unique_ptr< TrajectoryFilter > createTrajectoryFilter(const edm::ParameterSet &pset, edm::ConsumesCollector &iC)
virtual bool analyzeMeasurementsDebugger(TempTrajectory &traj, const std::vector< TrajectoryMeasurement > &meas, const MeasurementTrackerEvent *theMeasurementTracker, const Propagator *theForwardPropagator, const Chi2MeasurementEstimatorBase *theEstimator, const TransientTrackingRecHitBuilder *theTTRHBuilder) const
std::unique_ptr< TrajectoryFilter > theInOutFilter
StateAndLayers findStateAndLayers(const TrajectorySeed &seed, const TempTrajectory &traj) const
const MeasurementTrackerEvent * theMeasurementTracker
const edm::ESGetToken< Propagator, TrackingComponentsRecord > thePropagatorOppositeToken
std::pair< TSOS, std::vector< const DetLayer * > > StateAndLayers
std::vector< TempTrajectory > TempTrajectoryContainer
void setNavigationSchool(NavigationSchool const *nv)
const Propagator * thePropagatorOpposite
void moveToResult(TempTrajectory &&traj, TempTrajectoryContainer &result, bool inOut=false) const
BaseCkfTrajectoryBuilder(const edm::ParameterSet &conf, edm::ConsumesCollector iC, std::unique_ptr< TrajectoryFilter > filter, std::unique_ptr< TrajectoryFilter > inOutFilter=nullptr)
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:79
TrackingComponentsRecord Chi2MeasurementEstimatorRecord
bool toBeContinued(TempTrajectory &traj, bool inOut=false) const
string end
Definition: dataset.py:937
const NavigationSchool * theNavigationSchool
const Propagator * backwardPropagator(const TrajectorySeed &seed) const
const edm::ESGetToken< TransientTrackingRecHitBuilder, TransientRecHitRecord > theRecHitBuilderToken
virtual void setDebugger(CkfDebugger *dbg) const
void setEvent(const edm::Event &event) const override
virtual void fillSeedHistoDebugger(std::vector< TrajectoryMeasurement >::iterator begin, std::vector< TrajectoryMeasurement >::iterator end) const
const edm::ESGetToken< TrajectoryStateUpdator, TrackingComponentsRecord > theUpdatorToken
std::vector< Trajectory > TrajectoryContainer
const Chi2MeasurementEstimatorBase * theEstimator
std::unique_ptr< TrajectoryFilter > theFilter
TempTrajectory createStartingTrajectory(const TrajectorySeed &seed) const