#include <TempTrajectory.h>
Public Types | |
typedef TransientTrackingRecHit::ConstRecHitContainer | ConstRecHitContainer |
typedef cmsutils::bqueue < TrajectoryMeasurement > | DataContainer |
typedef ConstRecHitContainer | RecHitContainer |
Public Member Functions | |
double | chiSquared () const |
Value of the raw Chi2 of the trajectory, not normalised to the N.D.F. | |
PropagationDirection | direction () const |
bool | empty () const |
True if trajectory has no measurements. | |
const TrajectoryMeasurement & | firstMeasurement () const |
int | foundHits () const |
obsolete name, use measurements() instead. | |
void | invalidate () |
Method to invalidate a trajectory. Useful during ambiguity resolution. | |
bool | isValid () const |
void | join (TempTrajectory &segment) |
const DetLayer * | lastLayer () const |
Redundant method, returns the layer of lastMeasurement() . | |
const TrajectoryMeasurement & | lastMeasurement () const |
int | lostHits () const |
const DataContainer & | measurements () const |
void | pop () |
void | popInvalidTail () |
Pops out all the invalid hits on the tail. | |
void | push (const TrajectoryMeasurement &tm) |
void | push (const TempTrajectory &segment) |
void | push (const TrajectoryMeasurement &tm, double chi2Increment) |
const TrajectorySeed & | seed () const |
Access to the seed used to reconstruct the Trajectory. | |
TempTrajectory (const Trajectory &traj) | |
construct TempTrajectory from standard Trajectory | |
TempTrajectory () | |
TempTrajectory (const TrajectorySeed &seed) | |
TempTrajectory (const boost::shared_ptr< const TrajectorySeed > &seed, PropagationDirection dir) | |
TempTrajectory (const TrajectorySeed &seed, PropagationDirection dir) | |
TempTrajectory (PropagationDirection dir) | |
Trajectory | toTrajectory () const |
Convert to a standard Trajectory. | |
~TempTrajectory () | |
destruct a TempTrajectory | |
Static Public Member Functions | |
static bool | inactive () |
static bool | lost (const TransientTrackingRecHit &hit) |
Private Member Functions | |
void | check () const |
void | pushAux (const TrajectoryMeasurement &tm, double chi2Increment) |
Private Attributes | |
double | theChiSquared |
DataContainer | theData |
PropagationDirection | theDirection |
bool | theDirectionValidity |
int | theNumberOfFoundHits |
int | theNumberOfLostHits |
boost::shared_ptr< const TrajectorySeed > | theSeed |
bool | theValid |
A class for detailed particle trajectory representation. It is used during trajectory building to "grow" a trajectory. The trajectory is represented as an ordered sequence of TrajectoryMeasurement objects with a stack-like interface. The measurements are added to the Trajectory in the order of increasing precision: each new TrajectoryMeasurement is assumed to improve the precision of the last one, normally by adding a constraint from a new RecHit. However the Trajectory class does not have the means to verify that measurements are added in the correct order, and thus cannot guarantee the order, which is the responsibility of the TrajectoryBuilder. The Trajectory provides some security by allowing to add or remove measurements only on one of it's ends, with push(TM) and pop() methods. The last measurement in a Trajectory can thus be either the innermost (closest to the interaction point) or the outermost, depending on the way the Trajectory was built. The direction of building is represented as a PropagationDirection, which has two possible values: alongMomentum (outwards) and oppositeToMomentum (inwards), and is accessed with the direction() method.
Definition at line 40 of file TempTrajectory.h.
Definition at line 45 of file TempTrajectory.h.
Definition at line 44 of file TempTrajectory.h.
Definition at line 46 of file TempTrajectory.h.
TempTrajectory::TempTrajectory | ( | ) | [inline] |
Default constructor of an empty trajectory with undefined seed and undefined direction. This constructor is necessary in order to transiently copy vector<Trajectory> in the edm::Event
Definition at line 54 of file TempTrajectory.h.
: theChiSquared(0), theValid(true), theNumberOfFoundHits(0), theNumberOfLostHits(0), theDirection(alongMomentum), theDirectionValidity(false), theSeed() {}
TempTrajectory::TempTrajectory | ( | const TrajectorySeed & | seed | ) | [inline] |
Constructor of an empty trajectory with undefined direction. The direction will be defined at the moment of the push of a second measurement, from the relative radii of the first and second measurements.
Definition at line 67 of file TempTrajectory.h.
: theChiSquared(0), theValid(true), theNumberOfFoundHits(0), theNumberOfLostHits(0), theDirection(alongMomentum), theDirectionValidity(false), theSeed( new TrajectorySeed(seed) ) {}
TempTrajectory::TempTrajectory | ( | const TrajectorySeed & | seed, |
PropagationDirection | dir | ||
) | [inline] |
Constructor of an empty trajectory with defined direction. No check is made in the push method that measurements are added in the correct direction.
Definition at line 78 of file TempTrajectory.h.
: theChiSquared(0), theValid(true), theNumberOfFoundHits(0), theNumberOfLostHits(0), theDirection(dir), theDirectionValidity(true), theSeed( new TrajectorySeed(seed) ) {}
TempTrajectory::TempTrajectory | ( | const boost::shared_ptr< const TrajectorySeed > & | seed, |
PropagationDirection | dir | ||
) | [inline] |
Constructor of an empty trajectory with defined direction. No check is made in the push method that measurements are added in the correct direction.
Definition at line 89 of file TempTrajectory.h.
: theChiSquared(0), theValid(true), theNumberOfFoundHits(0), theNumberOfLostHits(0), theDirection(dir), theDirectionValidity(true), theSeed( seed ) {}
TempTrajectory::TempTrajectory | ( | PropagationDirection | dir | ) | [inline] |
Constructor of an empty trajectory with defined direction. No check is made in the push method that measurements are added in the correct direction.
Definition at line 101 of file TempTrajectory.h.
: theChiSquared(0), theValid(true), theNumberOfFoundHits(0), theNumberOfLostHits(0), theDirection(dir), theDirectionValidity(true), theSeed() {}
TempTrajectory::TempTrajectory | ( | const Trajectory & | traj | ) |
construct TempTrajectory from standard Trajectory
Definition at line 7 of file TempTrajectory.cc.
References begin, end, Trajectory::measurements(), and push().
: theChiSquared(0), theValid(traj.isValid()), theNumberOfFoundHits(0), theNumberOfLostHits(0), theDirection(traj.direction()), theDirectionValidity(true), theSeed( traj.sharedSeed() ){ Trajectory::DataContainer::const_iterator begin=traj.measurements().begin(); Trajectory::DataContainer::const_iterator end=traj.measurements().end(); for(Trajectory::DataContainer::const_iterator it=begin; it!=end; ++it){ push(*it); } }
TempTrajectory::~TempTrajectory | ( | ) |
void TempTrajectory::check | ( | void | ) | const [private] |
Definition at line 133 of file TempTrajectory.cc.
References cmsutils::bqueue< T >::size(), and theData.
Referenced by firstMeasurement(), lastLayer(), and lastMeasurement().
{ if ( theData.size() == 0) throw cms::Exception("TrackingTools/PatternTools","Trajectory::check() - information requested from empty Trajectory"); }
double TempTrajectory::chiSquared | ( | ) | const [inline] |
Value of the raw Chi2 of the trajectory, not normalised to the N.D.F.
Definition at line 226 of file TempTrajectory.h.
References theChiSquared.
Referenced by HICTrajectoryBuilder::qualityFilter(), and GroupedTrajCandLess::score().
{ return theChiSquared;}
PropagationDirection TempTrajectory::direction | ( | ) | const |
Direction of "growing" of the trajectory. Possible values are alongMomentum (outwards) and oppositeToMomentum (inwards).
Definition at line 128 of file TempTrajectory.cc.
References Exception, theDirection, and theDirectionValidity.
Referenced by GroupedCkfTrajectoryBuilder::backwardFit(), HICTrajectoryBuilder::findCompatibleMeasurements(), MuonCkfTrajectoryBuilder::findCompatibleMeasurements(), BaseCkfTrajectoryBuilder::findStateAndLayers(), join(), and push().
{ if (theDirectionValidity) return theDirection; else throw cms::Exception("TrackingTools/PatternTools","Trajectory::direction() requested but not set"); }
bool TempTrajectory::empty | ( | void | ) | const [inline] |
True if trajectory has no measurements.
Definition at line 223 of file TempTrajectory.h.
References cmsutils::bqueue< T >::empty(), and theData.
Referenced by TrajectorySegmentBuilder::addGroup(), BaseCkfTrajectoryBuilder::addToResult(), MuonCkfTrajectoryBuilder::findCompatibleMeasurements(), BaseCkfTrajectoryBuilder::findStateAndLayers(), pop(), and HICTrajectoryBuilder::trajectories().
const TrajectoryMeasurement& TempTrajectory::firstMeasurement | ( | ) | const [inline] |
Access to the first measurement. It is the least precise one in a trajectory before smoothing. It is precise in a smoothed trajectory. It's the innermost measurement if direction() == alongMomentum, the outermost one if direction() == oppositeToMomentum.
Definition at line 193 of file TempTrajectory.h.
References check(), cmsutils::bqueue< T >::front(), and theData.
int TempTrajectory::foundHits | ( | ) | const [inline] |
obsolete name, use measurements() instead.
Return all RecHits in a container. Number of valid RecHits used to determine the trajectory. Can be less than the number of measurements in data() since detector layers crossed without using RecHits from them are also stored as measurements.
Definition at line 213 of file TempTrajectory.h.
References theNumberOfFoundHits.
Referenced by BaseCkfTrajectoryBuilder::addToResult(), GroupedCkfTrajectoryBuilder::advanceOneLayer(), GroupedCkfTrajectoryBuilder::backwardFit(), TrajectoryLessByFoundHits::operator()(), HICTrajectoryBuilder::qualityFilter(), ThresholdPtTrajectoryFilter::qualityFilter(), MinPtTrajectoryFilter::qualityFilter(), GroupedTrajCandLess::score(), BaseCkfTrajectoryBuilder::toBeContinued(), ThresholdPtTrajectoryFilter::toBeContinued(), and MinPtTrajectoryFilter::toBeContinued().
{ return theNumberOfFoundHits;}
static bool TempTrajectory::inactive | ( | ) | [inline, static] |
Definition of inactive Det from the Trajectory point of view.
Definition at line 248 of file TempTrajectory.h.
{return false;}//FIXME
void TempTrajectory::invalidate | ( | ) | [inline] |
Method to invalidate a trajectory. Useful during ambiguity resolution.
Definition at line 240 of file TempTrajectory.h.
References theValid.
{ theValid = false;}
bool TempTrajectory::isValid | ( | void | ) | const [inline] |
Returns true if the Trajectory is valid. Trajectories are invalidated e.g. during ambiguity resolution.
Definition at line 237 of file TempTrajectory.h.
References theValid.
Referenced by IntermediateTrajectoryCleaner::clean(), TrajectorySegmentBuilder::cleanCandidates(), GroupedCkfTrajectoryBuilder::groupedIntermediaryClean(), ChargeSignificanceTrajectoryFilter::qualityFilter(), and GroupedCkfTrajectoryBuilder::rebuildSeedingRegion().
{ return theValid;}
void TempTrajectory::join | ( | TempTrajectory & | segment | ) |
Add a new sets of measurements to a Trajectory Exactly like push(TempTrajectory), but it doesn't copy the data (the input segment will be reset to an empty one)
Definition at line 90 of file TempTrajectory.cc.
References alongMomentum, cmsutils::bqueue< T >::back(), cmsutils::bqueue< T >::clear(), direction(), cmsutils::bqueue< T >::front(), TrajectoryStateOnSurface::globalPosition(), cmsutils::bqueue< T >::join(), lost(), measurements(), oppositeToMomentum, PV3DBase< T, PVType, FrameType >::perp(), push(), cmsutils::bqueue< T >::rbegin(), cmsutils::bqueue< T >::rend(), cmsutils::bqueue< T >::shared(), cmsutils::bqueue< T >::size(), theChiSquared, theData, theDirection, theDirectionValidity, theNumberOfFoundHits, theNumberOfLostHits, and TrajectoryMeasurement::updatedState().
{ assert (segment.direction() == theDirection) ; if (segment.theData.shared()) { push(segment); segment.theData.clear(); // obey the contract, and increase the chances it will be not shared one day } else { for (DataContainer::const_iterator it = segment.measurements().rbegin(), ed = segment.measurements().rend(); it != ed; --it) { if ( it->recHit()->isValid()) theNumberOfFoundHits++; else if (lost( *(it->recHit()) ) ) theNumberOfLostHits++; theChiSquared += it->estimate(); } theData.join(segment.theData); if ( !theDirectionValidity && theData.size() >= 2) { if (theData.front().updatedState().globalPosition().perp() < theData.back().updatedState().globalPosition().perp()) theDirection = alongMomentum; else theDirection = oppositeToMomentum; theDirectionValidity = true; } } }
const DetLayer* TempTrajectory::lastLayer | ( | ) | const [inline] |
Redundant method, returns the layer of lastMeasurement() .
Definition at line 257 of file TempTrajectory.h.
References cmsutils::bqueue< T >::back(), check(), TrajectoryMeasurement::layer(), and theData.
Referenced by GroupedCkfTrajectoryBuilder::advanceOneLayer(), HICTrajectoryBuilder::findCompatibleMeasurements(), MuonCkfTrajectoryBuilder::findCompatibleMeasurements(), CkfTrajectoryBuilder::findCompatibleMeasurements(), BaseCkfTrajectoryBuilder::findStateAndLayers(), BaseCkfTrajectoryBuilder::toBeContinued(), and whatIsTheNextStep().
const TrajectoryMeasurement& TempTrajectory::lastMeasurement | ( | ) | const [inline] |
Access to the last measurement. It's the most precise one in a trajectory before smoothing. It's the outermost measurement if direction() == alongMomentum, the innermost one if direction() == oppositeToMomentum.
Definition at line 183 of file TempTrajectory.h.
References cmsutils::bqueue< T >::back(), check(), and theData.
Referenced by BaseCkfTrajectoryBuilder::addToResult(), HICTrajectoryBuilder::findCompatibleMeasurements(), MuonCkfTrajectoryBuilder::findCompatibleMeasurements(), BaseCkfTrajectoryBuilder::findStateAndLayers(), ThresholdPtTrajectoryFilter::qualityFilter(), MinPtTrajectoryFilter::qualityFilter(), TrajectorySegmentBuilder::redoMeasurements(), BaseCkfTrajectoryBuilder::toBeContinued(), ThresholdPtTrajectoryFilter::toBeContinued(), MinPtTrajectoryFilter::toBeContinued(), and HICTrajectoryBuilder::updateTrajectory().
bool TempTrajectory::lost | ( | const TransientTrackingRecHit & | hit | ) | [static] |
Definition of what it means for a hit to be "lost". This definition is also used by the TrajectoryBuilder.
Definition at line 138 of file TempTrajectory.cc.
References TrackingRecHit::geographicalId(), TrackingRecHit::getType(), TrackingRecHit::isValid(), combine::missing, and DetId::rawId().
Referenced by join(), pop(), and pushAux().
{ if ( hit.isValid()) return false; else { // // A DetLayer is always inactive in this logic. // // The DetLayer is the Det of an invalid RecHit only if no DetUnit // // is compatible with the predicted state, so we don't really expect // // a hit in this case. if(hit.geographicalId().rawId() == 0) {return false;} else{ return hit.getType() == TrackingRecHit::missing; } } }
int TempTrajectory::lostHits | ( | ) | const [inline] |
Number of detector layers crossed without valid RecHits. Used mainly as a criteria for abandoning a trajectory candidate during trajectory building.
Definition at line 220 of file TempTrajectory.h.
References theNumberOfLostHits.
Referenced by BaseCkfTrajectoryBuilder::addToResult(), GroupedTrajCandLess::score(), BaseCkfTrajectoryBuilder::toBeContinued(), and HICTrajectoryBuilder::toBeContinued().
{ return theNumberOfLostHits;}
const DataContainer& TempTrajectory::measurements | ( | ) | const [inline] |
Return all measurements in a container.
Definition at line 199 of file TempTrajectory.h.
References theData.
Referenced by TrajectorySegmentBuilder::addGroup(), BaseCkfTrajectoryBuilder::addToResult(), GroupedCkfTrajectoryBuilder::backwardFit(), HICTrajectoryBuilder::findCompatibleMeasurements(), join(), HICTrajectoryBuilder::limitedCandidates(), push(), ClusterShapeTrajectoryFilter::qualityFilter(), GroupedCkfTrajectoryBuilder::rebuildSeedingRegion(), BaseCkfTrajectoryBuilder::toBeContinued(), ClusterShapeTrajectoryFilter::toBeContinued(), and HICTrajectoryBuilder::toBeContinued().
{ return theData; }
void TempTrajectory::pop | ( | ) |
Remove the last measurement from the trajectory.
Definition at line 26 of file TempTrajectory.cc.
References cmsutils::bqueue< T >::back(), empty(), lost(), cmsutils::bqueue< T >::pop_back(), TrajectoryMeasurement::recHit(), theData, theNumberOfFoundHits, and theNumberOfLostHits.
Referenced by BaseCkfTrajectoryBuilder::addToResult().
void TempTrajectory::popInvalidTail | ( | ) |
Pops out all the invalid hits on the tail.
void TempTrajectory::push | ( | const TempTrajectory & | segment | ) |
Add a new sets of measurements to a Trajectory The sorting of hits in the other trajectory must match the one inside this trajectory (that is, both along or both opposite to momentum)
Definition at line 79 of file TempTrajectory.cc.
References direction(), list(), measurements(), push(), cmsutils::bqueue< T >::rbegin(), cmsutils::bqueue< T >::rend(), and theDirection.
{ assert (segment.direction() == theDirection) ; __gnu_cxx::slist<const TrajectoryMeasurement*> list; for (DataContainer::const_iterator it = segment.measurements().rbegin(), ed = segment.measurements().rend(); it != ed; --it) { list.push_front(&(*it)); } for(__gnu_cxx::slist<const TrajectoryMeasurement*>::const_iterator it = list.begin(), ed = list.end(); it != ed; ++it) { push(**it); } }
void TempTrajectory::push | ( | const TrajectoryMeasurement & | tm, |
double | chi2Increment | ||
) |
same as the one-argument push, but the trajectory Chi2 is incremented by chi2Increment. Useful e.g. in trajectory smoothing.
Definition at line 44 of file TempTrajectory.cc.
References cmsutils::bqueue< T >::push_back(), pushAux(), and theData.
void TempTrajectory::push | ( | const TrajectoryMeasurement & | tm | ) |
Add a new measurement to a Trajectory. The Chi2 of the trajectory is incremented by the value of tm.estimate() .
Definition at line 34 of file TempTrajectory.cc.
References TrajectoryMeasurement::estimate().
Referenced by GroupedCkfTrajectoryBuilder::advanceOneLayer(), HICTrajectoryBuilder::createStartingTrajectory(), join(), push(), GroupedCkfTrajectoryBuilder::rebuildSeedingRegion(), TempTrajectory(), CkfTrajectoryBuilder::updateTrajectory(), HICTrajectoryBuilder::updateTrajectory(), and TrajectorySegmentBuilder::updateTrajectory().
void TempTrajectory::pushAux | ( | const TrajectoryMeasurement & | tm, |
double | chi2Increment | ||
) | [private] |
Definition at line 56 of file TempTrajectory.cc.
References alongMomentum, cmsutils::bqueue< T >::back(), cmsutils::bqueue< T >::front(), TrajectoryStateOnSurface::globalPosition(), lost(), oppositeToMomentum, PV3DBase< T, PVType, FrameType >::perp(), TrajectoryMeasurement::recHit(), cmsutils::bqueue< T >::size(), theChiSquared, theData, theDirection, theDirectionValidity, theNumberOfFoundHits, theNumberOfLostHits, and TrajectoryMeasurement::updatedState().
Referenced by push().
{ if ( tm.recHit()->isValid()) { theNumberOfFoundHits++; } //else if (lost( tm.recHit()) && !inactive(tm.recHit().det())) theNumberOfLostHits++; else if (lost( *(tm.recHit()) ) ) theNumberOfLostHits++; theChiSquared += chi2Increment; // in case of a Trajectory constructed without direction, // determine direction from the radii of the first two measurements if ( !theDirectionValidity && theData.size() >= 2) { if (theData.front().updatedState().globalPosition().perp() < theData.back().updatedState().globalPosition().perp()) theDirection = alongMomentum; else theDirection = oppositeToMomentum; theDirectionValidity = true; } }
const TrajectorySeed& TempTrajectory::seed | ( | ) | const [inline] |
Access to the seed used to reconstruct the Trajectory.
Definition at line 243 of file TempTrajectory.h.
References theSeed.
Referenced by GroupedCkfTrajectoryBuilder::backwardFit(), MuonCkfTrajectoryBuilder::findCompatibleMeasurements(), BaseCkfTrajectoryBuilder::findStateAndLayers(), and GroupedCkfTrajectoryBuilder::rebuildSeedingRegion().
{ return *theSeed;}
Trajectory TempTrajectory::toTrajectory | ( | ) | const |
Convert to a standard Trajectory.
Definition at line 154 of file TempTrajectory.cc.
References Trajectory::push(), cmsutils::bqueue< T >::rbegin(), cmsutils::bqueue< T >::rend(), Trajectory::reserve(), cmsutils::bqueue< T >::size(), theData, theDirection, and theSeed.
Referenced by BaseCkfTrajectoryBuilder::addToResult(), HICTrajectoryBuilder::addToResult(), CkfDebugTrajectoryBuilder::analyzeMeasurementsDebugger(), HICTrajectoryBuilder::findCompatibleMeasurements(), HICTrajectoryBuilder::qualityFilter(), and HICTrajectoryBuilder::updateTrajectory().
{ Trajectory traj(theSeed, theDirection); traj.reserve(theData.size()); static std::vector<const TrajectoryMeasurement*> work; work.resize(theData.size(), 0); std::vector<const TrajectoryMeasurement*>::iterator workend = work.end(), itwork = workend; for (TempTrajectory::DataContainer::const_iterator it = theData.rbegin(), ed = theData.rend(); it != ed; --it) { --itwork; *itwork = (&(*it)); } for (; itwork != workend; ++itwork) { traj.push(**itwork); } return traj; }
double TempTrajectory::theChiSquared [private] |
Definition at line 274 of file TempTrajectory.h.
Referenced by chiSquared(), join(), and pushAux().
DataContainer TempTrajectory::theData [private] |
Definition at line 273 of file TempTrajectory.h.
Referenced by check(), empty(), firstMeasurement(), join(), lastLayer(), lastMeasurement(), measurements(), pop(), push(), pushAux(), and toTrajectory().
Definition at line 280 of file TempTrajectory.h.
Referenced by direction(), join(), push(), pushAux(), and toTrajectory().
bool TempTrajectory::theDirectionValidity [private] |
Definition at line 281 of file TempTrajectory.h.
Referenced by direction(), join(), and pushAux().
int TempTrajectory::theNumberOfFoundHits [private] |
Definition at line 277 of file TempTrajectory.h.
Referenced by foundHits(), join(), pop(), and pushAux().
int TempTrajectory::theNumberOfLostHits [private] |
Definition at line 278 of file TempTrajectory.h.
Referenced by join(), lostHits(), pop(), and pushAux().
boost::shared_ptr<const TrajectorySeed> TempTrajectory::theSeed [private] |
Definition at line 283 of file TempTrajectory.h.
Referenced by seed(), and toTrajectory().
bool TempTrajectory::theValid [private] |
Definition at line 275 of file TempTrajectory.h.
Referenced by invalidate(), and isValid().