CMS 3D CMS Logo

Public Member Functions | Private Attributes

BzeroReferenceTrajectory Class Reference

#include <BzeroReferenceTrajectory.h>

Inheritance diagram for BzeroReferenceTrajectory:
ReferenceTrajectory ReferenceTrajectoryBase ReferenceCounted

List of all members.

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 BzeroReferenceTrajectoryclone () const
virtual ~BzeroReferenceTrajectory ()

Private Attributes

double theMomentumEstimate

Detailed Description

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.


Constructor & Destructor Documentation

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.

{}

Member Function Documentation

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); }

Member Data Documentation

Definition at line 64 of file BzeroReferenceTrajectory.h.

Referenced by BzeroReferenceTrajectory().