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 
16 
17 
24 
25  public:
32  const TransientTrackingRecHitBuilder* RecHitBuilder,
33  const MeasurementTracker* measurementTracker,
34  const TrajectoryFilter* filter,
35  const TrajectoryFilter* inOutFilter);
36 
39 
41  virtual void setEvent(const edm::Event& event) const;
42 
45 
48 
51 
54 
62  TrajectoryContainer& result) const ;
63 
64  // Access to lower level components
65  const TrajectoryStateUpdator& updator() const {return *theUpdator;}
67 
68  // PropagationDirection direction() const {return theDirection;}
69 
71  double chiSquareCut() {return theChiSquareCut;}
72 
74  int maxCand() {return theMaxCand;}
75 
76 
79 
80  // /** Tells whether an intermediary cleaning stage should take place during TB. */
81  // bool intermediateCleaning() {return theIntermediateCleaning;}
82 
84  double ptCut() {return theptCut;}
85 
87  double mass() {return theMass;}
88 
89 protected:
90 
91  virtual void analyseSeed(const TrajectorySeed& seed) const{}
92 
93  virtual void analyseMeasurements( const std::vector<TM>& meas,
94  const Trajectory& traj) const{}
95  virtual void analyseResult( const TrajectoryContainer& result) const {}
96 
97 private :
100 
103 
105  void buildTrajectories (const TrajectorySeed&,
107  const TrajectoryFilter*) const;
108 
109  inline bool tkxor(bool a, bool b) const {return (a||b) && !(a&&b);}
110  // to be ported later
111 
112  bool advanceOneLayer( TempTrajectory& traj,
113  const TrajectoryFilter* regionalCondition,
114  const Propagator* propagator,
115  bool inOut,
116  TempTrajectoryContainer& newCand,
118 
119  void groupedLimitedCandidates( TempTrajectory& startingTraj,
120  const TrajectoryFilter* regionalCondition,
121  const Propagator* propagator,
122  bool inOut,
124 
126  void rebuildSeedingRegion (TempTrajectory& startingTraj,
128 
129  //** try to find additional hits in seeding region for a candidate
130  //* (returns number of trajectories added) *
131  int rebuildSeedingRegion (const std::vector<const TrackingRecHit*>& seedHits,
132  TempTrajectory& candidate,
134 
135  // ** Backward fit of trajectory candidate except seed. Fit result and
136  // * remaining hits are returned in fittedTracks and remainingHits.
137  // * FittedTracks is empty if no fit was done. *
138  void backwardFit (TempTrajectory& candidate, unsigned int nSeed,
139  const TrajectoryFitter& fitter,
140  TempTrajectoryContainer& fittedTracks,
141  std::vector<const TrackingRecHit*>& remainingHits) const;
142 
145  size_t maxDepth,
146  const std::vector<const TrackingRecHit*>& hits) const;
147 
149  void groupedIntermediaryClean(TempTrajectoryContainer& theTrajectories) const ;
150 
153  void layers (const TempTrajectory::DataContainer& measurements,
154  std::vector<const DetLayer*> &fillme) const;
155 
158  if ( dir==alongMomentum ) return oppositeToMomentum;
159  else if ( dir==oppositeToMomentum ) return alongMomentum;
160  return dir;
161  }
162 
163 
164 private:
166 
167  // typedef deque< const TrajectoryFilter*> StopCondContainer;
168  // StopCondContainer theStopConditions;
169 
172  double theptCut;
174  double theMass;
185 
186  bool theLockHits;
198  mutable TempTrajectoryContainer work_; // Better here than alloc every time
199  enum work_MaxSize_Size_ { work_MaxSize_ = 50 }; // if it grows above this number, it is forced to resize to half this amount when cleared
200 };
201 
202 #endif
virtual void analyseMeasurements(const std::vector< TM > &meas, const Trajectory &traj) const
virtual void setEvent(const edm::Event &event) const
set Event for the internal MeasurementTracker data member
TrajectoryContainer trajectories(const TrajectorySeed &) const
trajectories building starting from a seed
PropagationDirection oppositeDirection(PropagationDirection dir) const
change of propagation direction
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
virtual void analyseResult(const TrajectoryContainer &result) const
void groupedLimitedCandidates(TempTrajectory &startingTraj, const TrajectoryFilter *regionalCondition, const Propagator *propagator, bool inOut, TempTrajectoryContainer &result) const
bool verifyHits(TempTrajectory::DataContainer::const_iterator rbegin, size_t maxDepth, const std::vector< const TrackingRecHit * > &hits) const
Verifies presence of a RecHits in a range of TrajectoryMeasurements.
void groupedIntermediaryClean(TempTrajectoryContainer &theTrajectories) const
intermediate cleaning in the case of grouped measurements
tuple result
Definition: query.py:137
void backwardFit(TempTrajectory &candidate, unsigned int nSeed, const TrajectoryFitter &fitter, TempTrajectoryContainer &fittedTracks, std::vector< const TrackingRecHit * > &remainingHits) const
const Chi2MeasurementEstimatorBase & estimator() const
void rebuildSeedingRegion(const TrajectorySeed &, TrajectoryContainer &result) const
void buildTrajectories(const TrajectorySeed &, TrajectoryContainer &ret, const TrajectoryFilter *) const
common part of both public trajectory building methods
bool advanceOneLayer(TempTrajectory &traj, const TrajectoryFilter *regionalCondition, const Propagator *propagator, bool inOut, TempTrajectoryContainer &newCand, TempTrajectoryContainer &result) const
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
tuple conf
Definition: dbtoconf.py:185
tuple filter
USE THIS FOR SKIMMED TRACKS process.p = cms.Path(process.hltLevel1GTSeed*process.skimming*process.offlineBeamSpot*process.TrackRefitter2) OTHERWISE USE THIS.
Definition: align_tpl.py:86
virtual ~GroupedCkfTrajectoryBuilder()
destructor
std::vector< TempTrajectory > TempTrajectoryContainer
double b
Definition: hdecay.h:120
const TrajectoryStateUpdator & updator() const
double a
Definition: hdecay.h:121
bool tkxor(bool a, bool b) const
dbl *** dir
Definition: mlp_gen.cc:35
GroupedCkfTrajectoryBuilder & operator=(const GroupedCkfTrajectoryBuilder &)
no assignment operator
std::vector< Trajectory > TrajectoryContainer
void layers(const TempTrajectory::DataContainer &measurements, std::vector< const DetLayer * > &fillme) const
const Chi2MeasurementEstimatorBase * theEstimator