CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Protected Member Functions | Protected Attributes
CkfTrajectoryBuilder Class Reference

#include <CkfTrajectoryBuilder.h>

Inheritance diagram for CkfTrajectoryBuilder:
BaseCkfTrajectoryBuilder TrajectoryBuilder CkfDebugTrajectoryBuilder MuonCkfTrajectoryBuilder

Public Types

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

Public Member Functions

TempTrajectory buildTrajectories (const TrajectorySeed &, TrajectoryContainer &ret, unsigned int &nCandPerSeed, const TrajectoryFilter *) const override
 
 CkfTrajectoryBuilder (const edm::ParameterSet &conf, edm::ConsumesCollector &iC)
 
 CkfTrajectoryBuilder (const edm::ParameterSet &conf, TrajectoryFilter *filter)
 
void rebuildTrajectories (TempTrajectory const &startingTraj, const TrajectorySeed &, TrajectoryContainer &result) const override
 
TrajectoryContainer trajectories (const TrajectorySeed &seed) const override
 trajectories building starting from a seed More...
 
void trajectories (const TrajectorySeed &seed, TrajectoryContainer &ret) const override
 trajectories building starting from a seed More...
 
 ~CkfTrajectoryBuilder () override
 
- Public Member Functions inherited from BaseCkfTrajectoryBuilder
 BaseCkfTrajectoryBuilder (const edm::ParameterSet &conf, TrajectoryFilter *filter, TrajectoryFilter *inOutFilter=0)
 
 BaseCkfTrajectoryBuilder (const BaseCkfTrajectoryBuilder &)=delete
 
const TransientTrackingRecHitBuilderhitBuilder () const
 
BaseCkfTrajectoryBuilderoperator= (const BaseCkfTrajectoryBuilder &)=delete
 
virtual void setDebugger (CkfDebugger *dbg) const
 
void setEvent (const edm::Event &event) const override
 
void setEvent (const edm::Event &iEvent, const edm::EventSetup &iSetup, const MeasurementTrackerEvent *data)
 
void setNavigationSchool (NavigationSchool const *nv)
 
void unset () const override
 
 ~BaseCkfTrajectoryBuilder () override
 
- Public Member Functions inherited from TrajectoryBuilder
virtual void rebuildSeedingRegion (const TrajectorySeed &, TrajectoryContainer &result) const
 
virtual ~TrajectoryBuilder ()
 

Protected Member Functions

virtual void findCompatibleMeasurements (const TrajectorySeed &seed, const TempTrajectory &traj, std::vector< TrajectoryMeasurement > &result) const
 
unsigned int limitedCandidates (const TrajectorySeed &seed, TempTrajectory &startingTraj, TrajectoryContainer &result) const
 
unsigned int limitedCandidates (const boost::shared_ptr< const TrajectorySeed > &sharedSeed, TempTrajectoryContainer &candidates, TrajectoryContainer &result) const
 
void setEvent_ (const edm::Event &iEvent, const edm::EventSetup &iSetup) override
 
void updateTrajectory (TempTrajectory &traj, TM &&tm) const
 
- Protected Member Functions inherited from BaseCkfTrajectoryBuilder
void addToResult (boost::shared_ptr< const TrajectorySeed > const &seed, TempTrajectory &traj, TrajectoryContainer &result, bool inOut=false) const
 
void addToResult (TempTrajectory const &traj, TempTrajectoryContainer &result, bool inOut=false) const
 
virtual bool analyzeMeasurementsDebugger (Trajectory &traj, const std::vector< TrajectoryMeasurement > &meas, const MeasurementTrackerEvent *theMeasurementTracker, const Propagator *theForwardPropagator, const Chi2MeasurementEstimatorBase *theEstimator, const TransientTrackingRecHitBuilder *theTTRHBuilder) const
 
virtual bool analyzeMeasurementsDebugger (TempTrajectory &traj, const std::vector< TrajectoryMeasurement > &meas, const MeasurementTrackerEvent *theMeasurementTracker, const Propagator *theForwardPropagator, const Chi2MeasurementEstimatorBase *theEstimator, const TransientTrackingRecHitBuilder *theTTRHBuilder) const
 
const PropagatorbackwardPropagator (const TrajectorySeed &seed) const
 
TempTrajectory createStartingTrajectory (const TrajectorySeed &seed) const
 
virtual void fillSeedHistoDebugger (std::vector< TrajectoryMeasurement >::iterator begin, std::vector< TrajectoryMeasurement >::iterator end) const
 
StateAndLayers findStateAndLayers (const TrajectorySeed &seed, const TempTrajectory &traj) const
 
const PropagatorforwardPropagator (const TrajectorySeed &seed) const
 
void moveToResult (TempTrajectory &&traj, TempTrajectoryContainer &result, bool inOut=false) const
 
bool qualityFilter (const TempTrajectory &traj, bool inOut=false) const
 
void setData (const MeasurementTrackerEvent *data)
 
bool toBeContinued (TempTrajectory &traj, bool inOut=false) const
 

Protected Attributes

bool theAlwaysUseInvalidHits
 
bool theIntermediateCleaning
 
float theLostHitPenalty
 
int theMaxCand
 set Event for the internal MeasurementTracker data member More...
 
- Protected Attributes inherited from BaseCkfTrajectoryBuilder
const Chi2MeasurementEstimatorBasetheEstimator
 
const MeasurementTrackerEventtheMeasurementTracker
 
const NavigationSchooltheNavigationSchool = 0
 
const PropagatorthePropagatorAlong
 
const PropagatorthePropagatorOpposite
 
const TransientTrackingRecHitBuildertheTTRHBuilder
 
const TrajectoryStateUpdatortheUpdator
 

Additional Inherited Members

- Protected Types inherited from BaseCkfTrajectoryBuilder
typedef TrackingComponentsRecord Chi2MeasurementEstimatorRecord
 
typedef FreeTrajectoryState FTS
 
typedef std::pair< TSOS, std::vector< const DetLayer * > > StateAndLayers
 
typedef TrajectoryMeasurement TM
 
typedef TrajectoryStateOnSurface TSOS
 
- Static Protected Member Functions inherited from BaseCkfTrajectoryBuilder
static TrajectoryFiltercreateTrajectoryFilter (const edm::ParameterSet &pset, edm::ConsumesCollector &iC)
 

Detailed Description

Definition at line 34 of file CkfTrajectoryBuilder.h.

Member Typedef Documentation

Definition at line 39 of file CkfTrajectoryBuilder.h.

Definition at line 38 of file CkfTrajectoryBuilder.h.

Constructor & Destructor Documentation

CkfTrajectoryBuilder::CkfTrajectoryBuilder ( const edm::ParameterSet conf,
edm::ConsumesCollector iC 
)

Definition at line 29 of file CkfTrajectoryBuilder.cc.

29  :
32 {}
T getParameter(std::string const &) const
static TrajectoryFilter * createTrajectoryFilter(const edm::ParameterSet &pset, edm::ConsumesCollector &iC)
CkfTrajectoryBuilder(const edm::ParameterSet &conf, edm::ConsumesCollector &iC)
CkfTrajectoryBuilder::CkfTrajectoryBuilder ( const edm::ParameterSet conf,
TrajectoryFilter filter 
)

Definition at line 34 of file CkfTrajectoryBuilder.cc.

References edm::ParameterSet::getParameter(), theAlwaysUseInvalidHits, theIntermediateCleaning, theLostHitPenalty, and theMaxCand.

34  :
35  BaseCkfTrajectoryBuilder(conf, filter)
36 {
37  theMaxCand = conf.getParameter<int>("maxCand");
38  theLostHitPenalty = conf.getParameter<double>("lostHitPenalty");
39  theIntermediateCleaning = conf.getParameter<bool>("intermediateCleaning");
40  theAlwaysUseInvalidHits = conf.getParameter<bool>("alwaysUseInvalidHits");
41  /*
42  theSharedSeedCheck = conf.getParameter<bool>("SharedSeedCheck");
43  std::stringstream ss;
44  ss<<"CkfTrajectoryBuilder_"<<conf.getParameter<std::string>("ComponentName")<<"_"<<this;
45  theUniqueName = ss.str();
46  LogDebug("CkfPattern")<<"my unique name is: "<<theUniqueName;
47  */
48 }
T getParameter(std::string const &) const
BaseCkfTrajectoryBuilder(const edm::ParameterSet &conf, TrajectoryFilter *filter, TrajectoryFilter *inOutFilter=0)
int theMaxCand
set Event for the internal MeasurementTracker data member
CkfTrajectoryBuilder::~CkfTrajectoryBuilder ( )
inlineoverride

Definition at line 44 of file CkfTrajectoryBuilder.h.

References buildTrajectories(), SurveyInfoScenario_cff::seed, and trajectories().

44 {}

Member Function Documentation

TempTrajectory CkfTrajectoryBuilder::buildTrajectories ( const TrajectorySeed seed,
TrajectoryContainer ret,
unsigned int &  nCandPerSeed,
const TrajectoryFilter  
) const
overridevirtual

limitedCandidates( startingTraj, regionalCondition, result); FIXME: restore regionalCondition

Reimplemented from BaseCkfTrajectoryBuilder.

Definition at line 148 of file CkfTrajectoryBuilder.cc.

References BaseCkfTrajectoryBuilder::createStartingTrajectory(), Exception, limitedCandidates(), and BaseCkfTrajectoryBuilder::theMeasurementTracker.

Referenced by trajectories(), and ~CkfTrajectoryBuilder().

151  {
152  if (theMeasurementTracker == nullptr) {
153  throw cms::Exception("LogicError") << "Asking to create trajectories to an un-initialized CkfTrajectoryBuilder.\nYou have to call clone(const MeasurementTrackerEvent *data) and then call trajectories on it instead.\n";
154  }
155 
156  TempTrajectory startingTraj = createStartingTrajectory( seed );
157 
160  nCandPerSeed = limitedCandidates(seed, startingTraj, result);
161 
162  return startingTraj;
163 
164  /*
165  //and remember what you just did
166  if (theSharedSeedCheck) rememberSeedAndTrajectories(seed,result);
167  */
168 
169  // analyseResult(result);
170 }
const MeasurementTrackerEvent * theMeasurementTracker
unsigned int limitedCandidates(const TrajectorySeed &seed, TempTrajectory &startingTraj, TrajectoryContainer &result) const
TempTrajectory createStartingTrajectory(const TrajectorySeed &seed) const
void CkfTrajectoryBuilder::findCompatibleMeasurements ( const TrajectorySeed seed,
const TempTrajectory traj,
std::vector< TrajectoryMeasurement > &  result 
) const
protectedvirtual

Reimplemented in MuonCkfTrajectoryBuilder.

Definition at line 331 of file CkfTrajectoryBuilder.cc.

References PrintoutHelper::dumpMeasurements(), TempTrajectory::empty(), TransverseImpactPointExtrapolator::extrapolate(), BaseCkfTrajectoryBuilder::findStateAndLayers(), BaseCkfTrajectoryBuilder::forwardPropagator(), mps_fire::i, TrajectoryStateOnSurface::isValid(), TempTrajectory::lastLayer(), LogDebug, BaseCkfTrajectoryBuilder::theEstimator, BaseCkfTrajectoryBuilder::theMeasurementTracker, tmp, and UNLIKELY.

Referenced by limitedCandidates().

334 {
335  int invalidHits = 0;
336  //Use findStateAndLayers which handles the hitless seed use case
337  std::pair<TSOS,std::vector<const DetLayer*> > && stateAndLayers = findStateAndLayers(seed,traj);
338  if (stateAndLayers.second.empty()) return;
339 
340  auto layerBegin = stateAndLayers.second.begin();
341  auto layerEnd = stateAndLayers.second.end();
342  LogDebug("CkfPattern")<<"looping on "<< stateAndLayers.second.size()<<" layers.";
343  const Propagator *fwdPropagator = forwardPropagator(seed);
344  for (auto il = layerBegin; il != layerEnd; il++) {
345 
346  LogDebug("CkfPattern")<<"looping on a layer in findCompatibleMeasurements.\n last layer: "<<traj.lastLayer()<<" current layer: "<<(*il);
347 
348  TSOS stateToUse = stateAndLayers.first;
349  //Added protection before asking for the lastLayer on the trajectory
350  if UNLIKELY (!traj.empty() && (*il)==traj.lastLayer()) {
351  LogDebug("CkfPattern")<<" self propagating in findCompatibleMeasurements.\n from: \n"<<stateToUse;
352  //self navigation case
353  // go to a middle point first
355  GlobalPoint center(0,0,0);
356  stateToUse = middle.extrapolate(stateToUse, center, *fwdPropagator);
357 
358  if (!stateToUse.isValid()) continue;
359  LogDebug("CkfPattern")<<"to: "<<stateToUse;
360  }
361 
362  LayerMeasurements layerMeasurements(theMeasurementTracker->measurementTracker(), *theMeasurementTracker);
363  std::vector<TrajectoryMeasurement> && tmp = layerMeasurements.measurements((**il),stateToUse, *fwdPropagator, *theEstimator);
364 
365  if ( !tmp.empty()) {
366  if ( result.empty()) result.swap(tmp);
367  else {
368  // keep one dummy TM at the end, skip the others
369  result.insert( result.end()-invalidHits,
370  std::make_move_iterator(tmp.begin()), std::make_move_iterator(tmp.end()));
371  }
372  invalidHits++;
373  }
374  }
375 
376  // sort the final result, keep dummy measurements at the end
377  if ( result.size() > 1) {
378  std::sort( result.begin(), result.end()-invalidHits, TrajMeasLessEstim());
379  }
380 
381  LogDebug("CkfPattern")<<"starting from:\n"
382  <<"x: "<<stateAndLayers.first.globalPosition()<<"\n"
383  <<"p: "<<stateAndLayers.first.globalMomentum()<<"\n"
385 
386 #ifdef DEBUG_INVALID
387  bool afterInvalid = false;
388  for (vector<TM>::const_iterator i=result.begin();
389  i!=result.end(); i++) {
390  if ( ! i->recHit().isValid()) afterInvalid = true;
391  if (afterInvalid && i->recHit().isValid()) {
392  edm::LogError("CkfPattern") << "CkfTrajectoryBuilder error: valid hit after invalid!" ;
393  }
394  }
395 #endif
396 
397  //analyseMeasurements( result, traj);
398 
399 }
#define LogDebug(id)
bool empty() const
True if trajectory has no measurements.
const Propagator * forwardPropagator(const TrajectorySeed &seed) const
static std::string dumpMeasurements(const std::vector< TrajectoryMeasurement > &v)
StateAndLayers findStateAndLayers(const TrajectorySeed &seed, const TempTrajectory &traj) const
const MeasurementTrackerEvent * theMeasurementTracker
TrajectoryStateOnSurface extrapolate(const FreeTrajectoryState &fts, const GlobalPoint &vtx) const
extrapolation with default (=geometrical) propagator
std::vector< std::vector< double > > tmp
Definition: MVATrainer.cc:100
const DetLayer * lastLayer() const
Redundant method, returns the layer of lastMeasurement() .
const Chi2MeasurementEstimatorBase * theEstimator
#define UNLIKELY(x)
unsigned int CkfTrajectoryBuilder::limitedCandidates ( const TrajectorySeed seed,
TempTrajectory startingTraj,
TrajectoryContainer result 
) const
protected

Definition at line 173 of file CkfTrajectoryBuilder.cc.

References objects.IsoTrackAnalyzer::candidates.

Referenced by buildTrajectories().

175 {
177  candidates.push_back( startingTraj);
178  boost::shared_ptr<const TrajectorySeed> sharedSeed(new TrajectorySeed(seed));
179  return limitedCandidates(sharedSeed, candidates,result);
180 }
std::vector< TempTrajectory > TempTrajectoryContainer
unsigned int limitedCandidates(const TrajectorySeed &seed, TempTrajectory &startingTraj, TrajectoryContainer &result) const
unsigned int CkfTrajectoryBuilder::limitedCandidates ( const boost::shared_ptr< const TrajectorySeed > &  sharedSeed,
TempTrajectoryContainer candidates,
TrajectoryContainer result 
) const
protected

Definition at line 183 of file CkfTrajectoryBuilder.cc.

References a, BaseCkfTrajectoryBuilder::addToResult(), BaseCkfTrajectoryBuilder::analyzeMeasurementsDebugger(), b, TempTrajectory::chiSquared(), IntermediateTrajectoryCleaner::clean(), PrintoutHelper::dumpCandidates(), findCompatibleMeasurements(), BaseCkfTrajectoryBuilder::forwardPropagator(), plotBeamSpotDB::last, LogDebug, TempTrajectory::lostHits(), eostools::move(), theAlwaysUseInvalidHits, BaseCkfTrajectoryBuilder::theEstimator, theIntermediateCleaning, theLostHitPenalty, theMaxCand, BaseCkfTrajectoryBuilder::theMeasurementTracker, BaseCkfTrajectoryBuilder::theTTRHBuilder, BaseCkfTrajectoryBuilder::toBeContinued(), and updateTrajectory().

185 {
186  unsigned int nIter=1;
187  unsigned int nCands=0; // ignore startingTraj
188  unsigned int prevNewCandSize=0;
189  TempTrajectoryContainer newCand; // = TrajectoryContainer();
190  newCand.reserve(2*theMaxCand);
191 
192 
193  auto trajCandLess = [&](TempTrajectory const & a, TempTrajectory const & b) {
194  return (a.chiSquared() + a.lostHits()*theLostHitPenalty) <
195  (b.chiSquared() + b.lostHits()*theLostHitPenalty);
196  };
197 
198 
199  while ( !candidates.empty()) {
200 
201  newCand.clear();
202  for (auto traj=candidates.begin(); traj!=candidates.end(); traj++) {
203  std::vector<TM> meas;
204  findCompatibleMeasurements(*sharedSeed, *traj, meas);
205 
206  // --- method for debugging
207  if(!analyzeMeasurementsDebugger(*traj,meas,
209  forwardPropagator(*sharedSeed),theEstimator,
210  theTTRHBuilder)) return nCands;
211  // ---
212 
213  if ( meas.empty()) {
214  addToResult(sharedSeed, *traj, result);
215  }
216  else {
217  std::vector<TM>::const_iterator last;
218  if ( theAlwaysUseInvalidHits) last = meas.end();
219  else {
220  if (meas.front().recHit()->isValid()) {
221  last = find_if( meas.begin(), meas.end(), [](auto const& meas){ return !meas.recHit()->isValid(); });
222  }
223  else last = meas.end();
224  }
225 
226  for(auto itm = meas.begin(); itm != last; itm++) {
227  TempTrajectory newTraj = *traj;
228  updateTrajectory( newTraj, std::move(*itm));
229 
230  if ( toBeContinued(newTraj)) {
231  newCand.push_back(std::move(newTraj)); std::push_heap(newCand.begin(),newCand.end(),trajCandLess);
232  }
233  else {
234  addToResult(sharedSeed, newTraj, result);
236  }
237  }
238  }
239 
240  // account only new candidates, i.e.
241  // - 1 candidate -> 1 candidate, don't increase count
242  // - 1 candidate -> 2 candidates, increase count by 1
243  nCands += newCand.size() - prevNewCandSize;
244  prevNewCandSize = newCand.size();
245 
246  /*
247  auto trajVal = [&](TempTrajectory const & a) {
248  return a.chiSquared() + a.lostHits()*theLostHitPenalty;
249  };
250 
251  // safe (stable?) logig: always sort, kill exceeding only if worse than last to keep
252  // if ((int)newCand.size() > theMaxCand) std::cout << "TrajVal " << theMaxCand << ' ' << newCand.size() << ' ' << trajVal(newCand.front());
253  int toCut = int(newCand.size()) - int(theMaxCand);
254  if (toCut>0) {
255  // move largest "toCut" to the end
256  for (int i=0; i<toCut; ++i)
257  std::pop_heap(newCand.begin(),newCand.end()-i,trajCandLess);
258  auto fval = trajVal(newCand.front());
259  // remove till equal to highest to keep
260  for (int i=0; i<toCut; ++i) {
261  if (fval==trajVal(newCand.back())) break;
262  newCand.pop_back();
263  }
264  //assert((int)newCand.size() >= theMaxCand);
265  //std::cout << "; " << newCand.size() << ' ' << trajVal(newCand.front()) << " " << trajVal(newCand.back());
266 
267  // std::make_heap(newCand.begin(),newCand.end(),trajCandLess);
268  // push_heap again the one left
269  for (auto iter = newCand.begin()+theMaxCand+1; iter<=newCand.end(); ++iter )
270  std::push_heap(newCand.begin(),iter,trajCandLess);
271 
272  // std::cout << "; " << newCand.size() << ' ' << trajVal(newCand.front()) << " " << trajVal(newCand.back()) << std::endl;
273  }
274 
275  */
276 
277 
278  // intermedeate login: always sort, kill all exceeding
279  while ((int)newCand.size() > theMaxCand) {
280  std::pop_heap(newCand.begin(),newCand.end(),trajCandLess);
281  // if ((int)newCand.size() == theMaxCand+1) std::cout << " " << trajVal(newCand.front()) << " " << trajVal(newCand.back()) << std::endl;
282  newCand.pop_back();
283  }
284 
285  /*
286  // original logic: sort only if > theMaxCand, kill all exceeding
287  if ((int)newCand.size() > theMaxCand) {
288  std::sort( newCand.begin(), newCand.end(), TrajCandLess<TempTrajectory>(theLostHitPenalty));
289  // std::partial_sort( newCand.begin(), newCand.begin()+theMaxCand, newCand.end(), TrajCandLess<TempTrajectory>(theLostHitPenalty));
290  std::cout << "TrajVal " << theMaxCand << ' ' << newCand.size() << ' '
291  << trajVal(newCand.back()) << ' ' << trajVal(newCand[theMaxCand-1]) << ' ' << trajVal(newCand[theMaxCand]) << std::endl;
292  newCand.resize(theMaxCand);
293  }
294  */
295 
296  } // end loop on candidates
297 
298  std::sort_heap(newCand.begin(),newCand.end(),trajCandLess);
300 
301  candidates.swap(newCand);
302 
303  LogDebug("CkfPattern") <<result.size()<<" candidates after "<<nIter++<<" CKF iteration: \n"
305  <<"\n "<<candidates.size()<<" running candidates are: \n"
307 
308  }
309  return nCands;
310 }
#define LogDebug(id)
static std::string dumpCandidates(collection &candidates)
static void clean(TempTrajectoryContainer &tracks)
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
std::vector< TempTrajectory > TempTrajectoryContainer
const TransientTrackingRecHitBuilder * theTTRHBuilder
void addToResult(boost::shared_ptr< const TrajectorySeed > const &seed, TempTrajectory &traj, TrajectoryContainer &result, bool inOut=false) const
const MeasurementTrackerEvent * theMeasurementTracker
float chiSquared() const
Value of the raw Chi2 of the trajectory, not normalised to the N.D.F.
double b
Definition: hdecay.h:120
bool toBeContinued(TempTrajectory &traj, bool inOut=false) const
double a
Definition: hdecay.h:121
virtual void findCompatibleMeasurements(const TrajectorySeed &seed, const TempTrajectory &traj, std::vector< TrajectoryMeasurement > &result) const
void updateTrajectory(TempTrajectory &traj, TM &&tm) const
int theMaxCand
set Event for the internal MeasurementTracker data member
def move(src, dest)
Definition: eostools.py:511
const Chi2MeasurementEstimatorBase * theEstimator
int lostHits() const
void CkfTrajectoryBuilder::rebuildTrajectories ( TempTrajectory const &  startingTraj,
const TrajectorySeed ,
TrajectoryContainer result 
) const
inlineoverridevirtual

Reimplemented from BaseCkfTrajectoryBuilder.

Definition at line 58 of file CkfTrajectoryBuilder.h.

59  {}
void CkfTrajectoryBuilder::setEvent_ ( const edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprotectedvirtual

Implements BaseCkfTrajectoryBuilder.

Definition at line 57 of file CkfTrajectoryBuilder.cc.

Referenced by MuonCkfTrajectoryBuilder::setEvent_().

57  {
58 }
CkfTrajectoryBuilder::TrajectoryContainer CkfTrajectoryBuilder::trajectories ( const TrajectorySeed seed) const
overridevirtual

trajectories building starting from a seed

Implements TrajectoryBuilder.

Definition at line 61 of file CkfTrajectoryBuilder.cc.

References mps_fire::result.

Referenced by ~CkfTrajectoryBuilder().

62 {
64  result.reserve(5);
65  trajectories(seed, result);
66  return result;
67 }
std::vector< Trajectory > TrajectoryContainer
TrajectoryContainer trajectories(const TrajectorySeed &seed) const override
trajectories building starting from a seed
void CkfTrajectoryBuilder::trajectories ( const TrajectorySeed seed,
CkfTrajectoryBuilder::TrajectoryContainer result 
) const
overridevirtual

trajectories building starting from a seed

Reimplemented from TrajectoryBuilder.

Definition at line 128 of file CkfTrajectoryBuilder.cc.

References buildTrajectories(), and tmp.

129 {
130  // analyseSeed( seed);
131  /*
132  if (theSharedSeedCheck){
133  TempTrajectoryContainer candidates;
134  if (seedAlreadyUsed(seed,candidates))
135  {
136  //start with those candidates already made before
137  limitedCandidates(candidates,result);
138  //and quit
139  return;
140  }
141  }
142  */
143 
144  unsigned int tmp;
145  buildTrajectories(seed, result, tmp, nullptr);
146 }
std::vector< std::vector< double > > tmp
Definition: MVATrainer.cc:100
TempTrajectory buildTrajectories(const TrajectorySeed &, TrajectoryContainer &ret, unsigned int &nCandPerSeed, const TrajectoryFilter *) const override
void CkfTrajectoryBuilder::updateTrajectory ( TempTrajectory traj,
TM &&  tm 
) const
protected

Definition at line 314 of file CkfTrajectoryBuilder.cc.

References TempTrajectory::emplace(), eostools::move(), BaseCkfTrajectoryBuilder::theUpdator, and TrajectoryStateUpdator::update().

Referenced by limitedCandidates().

316 {
317  auto && predictedState = tm.predictedState();
318  auto && hit = tm.recHit();
319  if ( hit->isValid()) {
320  auto && upState = theUpdator->update( predictedState, *hit);
321  traj.emplace( std::move(predictedState), std::move(upState),
322  std::move(hit), tm.estimate(), tm.layer());
323  }
324  else {
325  traj.emplace( std::move(predictedState), std::move(hit), 0, tm.layer());
326  }
327 }
const TrajectoryStateUpdator * theUpdator
virtual TrajectoryStateOnSurface update(const TrajectoryStateOnSurface &, const TrackingRecHit &) const =0
void emplace(Args &&...args)
def move(src, dest)
Definition: eostools.py:511

Member Data Documentation

bool CkfTrajectoryBuilder::theAlwaysUseInvalidHits
protected

Definition at line 72 of file CkfTrajectoryBuilder.h.

Referenced by CkfTrajectoryBuilder(), and limitedCandidates().

bool CkfTrajectoryBuilder::theIntermediateCleaning
protected

Tells whether an intermediary cleaning stage should take place during TB.

Definition at line 70 of file CkfTrajectoryBuilder.h.

Referenced by CkfTrajectoryBuilder(), and limitedCandidates().

float CkfTrajectoryBuilder::theLostHitPenalty
protected

Chi**2 Penalty for each lost hit.

Definition at line 69 of file CkfTrajectoryBuilder.h.

Referenced by CkfTrajectoryBuilder(), and limitedCandidates().

int CkfTrajectoryBuilder::theMaxCand
protected

set Event for the internal MeasurementTracker data member

Maximum number of trajectory candidates to propagate to the next layer.

Definition at line 67 of file CkfTrajectoryBuilder.h.

Referenced by CkfTrajectoryBuilder(), and limitedCandidates().