#include <BzeroReferenceTrajectory.h>
Public Member Functions | |
BzeroReferenceTrajectory (const TrajectoryStateOnSurface &referenceTsos, const TransientTrackingRecHit::ConstRecHitContainer &recHits, bool hitsAreReverse, const MagneticField *magField, MaterialEffects materialEffects, PropagationDirection propDir, double mass, double momentumEstimate, bool useBeamSpot, const reco::BeamSpot &beamSpot) | |
virtual BzeroReferenceTrajectory * | clone () const |
virtual | ~BzeroReferenceTrajectory () |
Private Attributes | |
double | theMomentumEstimate |
Class implementing the reference trajectory of a single particle in the absence of a magnetic field (B=0, hence the name), i.e. a straight track with only 4 parameters (no curvature parameter).
Given the TrajectoryStateOnSurface at the first hit and the list of all hits the local measurements, derivatives etc. as described in (and accessed via) ReferenceTrajectoryBase are calculated.
The covariance-matrix of the measurements may include effects of multiple-scattering or energy-loss effects or both. This can be defined in the constructor via the variable 'materialEffects (cf. ReferenceTrajectoryBase):
materialEffects = none/multipleScattering/energyLoss/combined
Since no a-priori momentum estimate exists, but is needed for the calculation of material effects, a fixed value is used (e.g. representing the average momentum of the cosmics spectrum).
By default, the mass is assumed to be the muon-mass, but can be changed via a constructor argument.
LIMITATIONS: So far all input hits have to be valid, but invalid hits would be needed to take into account the material effects in them...
Definition at line 35 of file BzeroReferenceTrajectory.h.
BzeroReferenceTrajectory::BzeroReferenceTrajectory | ( | const TrajectoryStateOnSurface & | referenceTsos, |
const TransientTrackingRecHit::ConstRecHitContainer & | recHits, | ||
bool | hitsAreReverse, | ||
const MagneticField * | magField, | ||
MaterialEffects | materialEffects, | ||
PropagationDirection | propDir, | ||
double | mass, | ||
double | momentumEstimate, | ||
bool | useBeamSpot, | ||
const reco::BeamSpot & | beamSpot | ||
) |
Constructor with Tsos at first hit (in physical order) and list of hits [if (hitsAreReverse) ==> order of hits is in opposite direction compared to the flight of particle, but note that BzeroReferenceTrajectory::recHits() returns the hits always in order of flight], the material effects to be considered and a particle mass and a momentum extimate, the magnetic field of the event is needed for propagations etc.
Definition at line 11 of file BzeroReferenceTrajectory.cc.
References asHepVector(), LocalTrajectoryParameters::charge(), ReferenceTrajectory::construct(), TrajectoryStateOnSurface::localError(), TrajectoryStateOnSurface::localParameters(), LocalTrajectoryParameters::mixedFormatVector(), LocalTrajectoryParameters::pzSign(), TrajectoryStateOnSurface::surface(), ReferenceTrajectory::surfaceSide(), ReferenceTrajectoryBase::theDerivatives, theMomentumEstimate, ReferenceTrajectoryBase::theParameters, and ReferenceTrajectoryBase::theValidityFlag.
Referenced by clone().
: ReferenceTrajectory( refTsos.localParameters().mixedFormatVector().kSize, recHits.size(), materialEffects), theMomentumEstimate( momentumEstimate ) { // no check against magField == 0 // No estimate for momentum of cosmics available -> set to default value. theParameters = asHepVector(refTsos.localParameters().mixedFormatVector()); theParameters[0] = 1./theMomentumEstimate; LocalTrajectoryParameters locParamWithFixedMomentum( asSVector<5>(theParameters), refTsos.localParameters().pzSign(), refTsos.localParameters().charge() ); const TrajectoryStateOnSurface refTsosWithFixedMomentum(locParamWithFixedMomentum, refTsos.localError(), refTsos.surface(), magField, surfaceSide(propDir)); if (hitsAreReverse) { TransientTrackingRecHit::ConstRecHitContainer fwdRecHits; fwdRecHits.reserve(recHits.size()); for (TransientTrackingRecHit::ConstRecHitContainer::const_reverse_iterator it=recHits.rbegin(); it != recHits.rend(); ++it) fwdRecHits.push_back(*it); theValidityFlag = this->construct(refTsosWithFixedMomentum, fwdRecHits, mass, materialEffects, propDir, magField, useBeamSpot, beamSpot); } else { theValidityFlag = this->construct(refTsosWithFixedMomentum, recHits, mass, materialEffects, propDir, magField, useBeamSpot, beamSpot); } // Exclude momentum from the parameters and also the derivatives of the measurements w.r.t. the momentum. theParameters = theParameters.sub( 2, 5 ); theDerivatives = theDerivatives.sub( 1, theDerivatives.num_row(), 2, theDerivatives.num_col() ); }
virtual BzeroReferenceTrajectory::~BzeroReferenceTrajectory | ( | ) | [inline, virtual] |
Definition at line 57 of file BzeroReferenceTrajectory.h.
{}
virtual BzeroReferenceTrajectory* BzeroReferenceTrajectory::clone | ( | void | ) | const [inline, virtual] |
Reimplemented from ReferenceTrajectory.
Definition at line 59 of file BzeroReferenceTrajectory.h.
References BzeroReferenceTrajectory().
{ return new BzeroReferenceTrajectory(*this); }
double BzeroReferenceTrajectory::theMomentumEstimate [private] |
Definition at line 64 of file BzeroReferenceTrajectory.h.
Referenced by BzeroReferenceTrajectory().