CMS 3D CMS Logo

GsfPropagatorAdapter Class Reference

Propagation of multiple trajectory state by propagation of components, using an specified single-state propagator. More...

#include <TrackingTools/GsfTools/interface/GsfPropagatorAdapter.h>

Inheritance diagram for GsfPropagatorAdapter:

Propagator

List of all members.

Public Member Functions

virtual GsfPropagatorAdapterclone () const
 GsfPropagatorAdapter (const Propagator &Propagator)
 Constructor with explicit propagator.
virtual const MagneticFieldmagneticField () const
virtual TrajectoryStateOnSurface propagate (const FreeTrajectoryState &fts, const Cylinder &cylinder) const
 Propagation to cylinder: use propagationWithPath (adequate for use with AnalyticalPropagator, should be implemented to be more general).
virtual TrajectoryStateOnSurface propagate (const FreeTrajectoryState &fts, const Plane &plane) const
 Propagation to plane: use propagationWithPath (adequate for use with AnalyticalPropagator, should be implemented to be more general).
virtual TrajectoryStateOnSurface propagate (const FreeTrajectoryState &fts, const Surface &surface) const
 Propagation to generic surface: specialisation done in base class.
virtual TrajectoryStateOnSurface propagate (const TrajectoryStateOnSurface &tsos, const Cylinder &cylinder) const
 Propagation to cylinder: use propagationWithPath (adequate for use with AnalyticalPropagator, should be implemented to be more general).
virtual TrajectoryStateOnSurface propagate (const TrajectoryStateOnSurface &tsos, const Plane &plane) const
 Propagation to plane: use propagationWithPath (adequate for use with AnalyticalPropagator, should be implemented to be more general).
virtual TrajectoryStateOnSurface propagate (const TrajectoryStateOnSurface &tsos, const Surface &surface) const
 Propagation to generic surface: specialisation done in base class.
virtual std::pair
< TrajectoryStateOnSurface,
double > 
propagateWithPath (const FreeTrajectoryState &, const Cylinder &) const
 Propagation to cylinder with path length calculation.
virtual std::pair
< TrajectoryStateOnSurface,
double > 
propagateWithPath (const FreeTrajectoryState &, const Plane &) const
 Propagation to plane with path length calculation.
virtual std::pair
< TrajectoryStateOnSurface,
double > 
propagateWithPath (const FreeTrajectoryState &fts, const Surface &surface) const
 Propagation to generic surface with path length calculation: specialisation done in base class.
virtual std::pair
< TrajectoryStateOnSurface,
double > 
propagateWithPath (const TrajectoryStateOnSurface &, const Cylinder &) const
 Propagation to cylinder with path length calculation.
virtual std::pair
< TrajectoryStateOnSurface,
double > 
propagateWithPath (const TrajectoryStateOnSurface &, const Plane &) const
 Propagation to plane with path length calculation.
virtual std::pair
< TrajectoryStateOnSurface,
double > 
propagateWithPath (const TrajectoryStateOnSurface &tsos, const Surface &surface) const
 Propagation to generic surface with path length calculation: specialisation done in base class.
const Propagatorpropagator () const
 access to single state propagator
virtual bool setMaxDirectionChange (float phiMax)
 Set the maximal change of direction (integrated along the path) for any single propagation.
virtual void setPropagationDirection (PropagationDirection dir)
 The propagation direction can now be set for every propagator.
 ~GsfPropagatorAdapter ()

Private Attributes

DeepCopyPointerByClone
< Propagator
thePropagator


Detailed Description

Propagation of multiple trajectory state by propagation of components, using an specified single-state propagator.

Definition at line 14 of file GsfPropagatorAdapter.h.


Constructor & Destructor Documentation

GsfPropagatorAdapter::GsfPropagatorAdapter ( const Propagator Propagator  ) 

Constructor with explicit propagator.

Definition at line 6 of file GsfPropagatorAdapter.cc.

Referenced by clone().

00006                                                                          :
00007   Propagator(aPropagator.propagationDirection()),
00008   thePropagator(aPropagator.clone()) {}

GsfPropagatorAdapter::~GsfPropagatorAdapter (  )  [inline]

Definition at line 20 of file GsfPropagatorAdapter.h.

00020 {}


Member Function Documentation

virtual GsfPropagatorAdapter* GsfPropagatorAdapter::clone ( void   )  const [inline, virtual]

Implements Propagator.

Definition at line 124 of file GsfPropagatorAdapter.h.

References GsfPropagatorAdapter(), and thePropagator.

00125   {
00126     return new GsfPropagatorAdapter(*thePropagator);
00127   }

virtual const MagneticField* GsfPropagatorAdapter::magneticField (  )  const [inline, virtual]

Implements Propagator.

Definition at line 129 of file GsfPropagatorAdapter.h.

References thePropagator.

00129                                                      {
00130     return thePropagator->magneticField();
00131   }

virtual TrajectoryStateOnSurface GsfPropagatorAdapter::propagate ( const FreeTrajectoryState fts,
const Cylinder cylinder 
) const [inline, virtual]

Propagation to cylinder: use propagationWithPath (adequate for use with AnalyticalPropagator, should be implemented to be more general).

Use from FTS implies single state (better use PropagatorWithMaterial)!

Implements Propagator.

Definition at line 87 of file GsfPropagatorAdapter.h.

References propagateWithPath().

00089   {
00090     return propagateWithPath(fts,cylinder).first;
00091   }

virtual TrajectoryStateOnSurface GsfPropagatorAdapter::propagate ( const FreeTrajectoryState fts,
const Plane plane 
) const [inline, virtual]

Propagation to plane: use propagationWithPath (adequate for use with AnalyticalPropagator, should be implemented to be more general).

Use from FTS implies single state (better use PropagatorWithMaterial)!

Implements Propagator.

Definition at line 78 of file GsfPropagatorAdapter.h.

References propagateWithPath().

00080   {
00081     return propagateWithPath(fts,plane).first;
00082   }

virtual TrajectoryStateOnSurface GsfPropagatorAdapter::propagate ( const FreeTrajectoryState fts,
const Surface surface 
) const [inline, virtual]

Propagation to generic surface: specialisation done in base class.

Use from FTS implies single state (better use PropagatorWithMaterial)!

Reimplemented from Propagator.

Definition at line 69 of file GsfPropagatorAdapter.h.

References Propagator::propagate().

00071   {
00072     return Propagator::propagate(fts,surface);
00073   }

virtual TrajectoryStateOnSurface GsfPropagatorAdapter::propagate ( const TrajectoryStateOnSurface tsos,
const Cylinder cylinder 
) const [inline, virtual]

Propagation to cylinder: use propagationWithPath (adequate for use with AnalyticalPropagator, should be implemented to be more general).

Reimplemented from Propagator.

Definition at line 40 of file GsfPropagatorAdapter.h.

References propagateWithPath().

00042   {
00043     return propagateWithPath(tsos,cylinder).first;
00044   }

virtual TrajectoryStateOnSurface GsfPropagatorAdapter::propagate ( const TrajectoryStateOnSurface tsos,
const Plane plane 
) const [inline, virtual]

Propagation to plane: use propagationWithPath (adequate for use with AnalyticalPropagator, should be implemented to be more general).

Reimplemented from Propagator.

Definition at line 32 of file GsfPropagatorAdapter.h.

References propagateWithPath().

00034   {
00035     return propagateWithPath(tsos,plane).first;
00036   }

virtual TrajectoryStateOnSurface GsfPropagatorAdapter::propagate ( const TrajectoryStateOnSurface tsos,
const Surface surface 
) const [inline, virtual]

Propagation to generic surface: specialisation done in base class.

Reimplemented from Propagator.

Definition at line 24 of file GsfPropagatorAdapter.h.

References Propagator::propagate().

00026   {
00027     return Propagator::propagate(tsos,surface);
00028   }

std::pair< TrajectoryStateOnSurface, double > GsfPropagatorAdapter::propagateWithPath ( const FreeTrajectoryState fts,
const Cylinder cylinder 
) const [virtual]

Propagation to cylinder with path length calculation.

Use from FTS implies single state (better use PropagatorWithMaterial)!

use counter in MessageLogger?

Implements Propagator.

Definition at line 35 of file GsfPropagatorAdapter.cc.

References thePropagator.

00036                                                                          {
00038   static int nWarn(0);
00039   if ( nWarn++<5 )
00040     edm::LogInfo("GsfPropagatorAdapter") << "GsfPropagator used from FTS = single state mode!";
00041   return thePropagator->propagateWithPath(fts,cylinder);
00042 }

std::pair< TrajectoryStateOnSurface, double > GsfPropagatorAdapter::propagateWithPath ( const FreeTrajectoryState fts,
const Plane plane 
) const [virtual]

Propagation to plane with path length calculation.

Use from FTS implies single state (better use PropagatorWithMaterial)!

use counter in MessageLogger?

Implements Propagator.

Definition at line 25 of file GsfPropagatorAdapter.cc.

References thePropagator.

00026                                                                    {
00028   static int nWarn(0);
00029   if ( nWarn++<5 )
00030     edm::LogInfo("GsfPropagatorAdapter") << "GsfPropagator used from FTS = single state mode!";
00031   return thePropagator->propagateWithPath(fts,plane);
00032 }

virtual std::pair<TrajectoryStateOnSurface,double> GsfPropagatorAdapter::propagateWithPath ( const FreeTrajectoryState fts,
const Surface surface 
) const [inline, virtual]

Propagation to generic surface with path length calculation: specialisation done in base class.

Use from FTS implies single state (better use PropagatorWithMaterial)!

Reimplemented from Propagator.

Definition at line 97 of file GsfPropagatorAdapter.h.

References Propagator::propagateWithPath().

00099   {
00100     return Propagator::propagateWithPath(fts,surface);
00101   }

std::pair< TrajectoryStateOnSurface, double > GsfPropagatorAdapter::propagateWithPath ( const TrajectoryStateOnSurface tsos,
const Cylinder cylinder 
) const [virtual]

Propagation to cylinder with path length calculation.

Reimplemented from Propagator.

Definition at line 18 of file GsfPropagatorAdapter.cc.

References MultiStatePropagation< T >::propagateWithPath(), and thePropagator.

00019                                                                          {
00020   MultiStatePropagation<Cylinder> multiPropagator(*thePropagator);
00021   return multiPropagator.propagateWithPath(tsos,cylinder);
00022 }

std::pair< TrajectoryStateOnSurface, double > GsfPropagatorAdapter::propagateWithPath ( const TrajectoryStateOnSurface tsos,
const Plane plane 
) const [virtual]

Propagation to plane with path length calculation.

Reimplemented from Propagator.

Definition at line 11 of file GsfPropagatorAdapter.cc.

References MultiStatePropagation< T >::propagateWithPath(), and thePropagator.

00012                                                                    {
00013   MultiStatePropagation<Plane> multiPropagator(*thePropagator);
00014   return multiPropagator.propagateWithPath(tsos,plane);
00015 }

virtual std::pair<TrajectoryStateOnSurface,double> GsfPropagatorAdapter::propagateWithPath ( const TrajectoryStateOnSurface tsos,
const Surface surface 
) const [inline, virtual]

Propagation to generic surface with path length calculation: specialisation done in base class.

Reimplemented from Propagator.

Definition at line 50 of file GsfPropagatorAdapter.h.

References Propagator::propagateWithPath().

Referenced by propagate().

00052   {
00053     return Propagator::propagateWithPath(tsos,surface);
00054   }

const Propagator& GsfPropagatorAdapter::propagator ( void   )  const [inline]

access to single state propagator

Definition at line 119 of file GsfPropagatorAdapter.h.

References thePropagator.

00120   {
00121     return *thePropagator;
00122   }

virtual bool GsfPropagatorAdapter::setMaxDirectionChange ( float  phiMax  )  [inline, virtual]

Set the maximal change of direction (integrated along the path) for any single propagation.

If reaching of the destination surface requires change of direction that exceeds this value the Propagator returns an invalid state. For example, a track may reach a forward plane after many spirals, which may be undesirable for a track reconstructor. Setting this value to pi will force the propagation to fail. The default value is "no limit". The method returnd true if the concrete propagator respects the limit, false otherwise.

Reimplemented from Propagator.

Definition at line 113 of file GsfPropagatorAdapter.h.

References thePropagator.

00113                                                     { 
00114     return thePropagator->setMaxDirectionChange(phiMax);
00115   }

void GsfPropagatorAdapter::setPropagationDirection ( PropagationDirection  dir  )  [virtual]

The propagation direction can now be set for every propagator.

There is no more distinction between unidirectional and bidirectional at class level. The value "anyDiriction" for PropagationDirection provides the functionality of the ex-BidirectionalPropagator. The values "alongMomentum" and "oppositeToMomentum" provide the functionality of the ex-UnidirectionalPropagator.

Reimplemented from Propagator.

Definition at line 44 of file GsfPropagatorAdapter.cc.

References Propagator::setPropagationDirection(), and thePropagator.

00044                                                                             {
00045   thePropagator->setPropagationDirection(dir);
00046   Propagator::setPropagationDirection(dir);
00047 }


Member Data Documentation

DeepCopyPointerByClone<Propagator> GsfPropagatorAdapter::thePropagator [private]

Definition at line 135 of file GsfPropagatorAdapter.h.

Referenced by clone(), magneticField(), propagateWithPath(), propagator(), setMaxDirectionChange(), and setPropagationDirection().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:23:17 2009 for CMSSW by  doxygen 1.5.4