CMS 3D CMS Logo

Public Member Functions | Private Attributes

GsfPropagatorAdapter Class Reference

#include <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 Surface &surface) const
virtual TrajectoryStateOnSurface propagate (const TrajectoryStateOnSurface &tsos, const Plane &plane) const
virtual TrajectoryStateOnSurface propagate (const TrajectoryStateOnSurface &tsos, const Cylinder &cylinder) const
virtual TrajectoryStateOnSurface propagate (const FreeTrajectoryState &fts, const Plane &plane) const
virtual TrajectoryStateOnSurface propagate (const FreeTrajectoryState &fts, const Cylinder &cylinder) const
virtual TrajectoryStateOnSurface propagate (const TrajectoryStateOnSurface &tsos, const Surface &surface) const
virtual std::pair
< TrajectoryStateOnSurface,
double > 
propagateWithPath (const FreeTrajectoryState &, const Plane &) const
virtual std::pair
< TrajectoryStateOnSurface,
double > 
propagateWithPath (const TrajectoryStateOnSurface &, const Cylinder &) const
virtual std::pair
< TrajectoryStateOnSurface,
double > 
propagateWithPath (const FreeTrajectoryState &, const Cylinder &) const
virtual std::pair
< TrajectoryStateOnSurface,
double > 
propagateWithPath (const FreeTrajectoryState &fts, const Surface &surface) const
virtual std::pair
< TrajectoryStateOnSurface,
double > 
propagateWithPath (const TrajectoryStateOnSurface &, const Plane &) const
virtual std::pair
< TrajectoryStateOnSurface,
double > 
propagateWithPath (const TrajectoryStateOnSurface &tsos, const Surface &surface) const
const Propagatorpropagator () const
 access to single state propagator
virtual bool setMaxDirectionChange (float phiMax)
virtual void setPropagationDirection (PropagationDirection dir) const
 ~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().

                                                                         :
  Propagator(aPropagator.propagationDirection()),
  thePropagator(aPropagator.clone()) {}
GsfPropagatorAdapter::~GsfPropagatorAdapter ( ) [inline]

Definition at line 20 of file GsfPropagatorAdapter.h.

{}

Member Function Documentation

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

Implements Propagator.

Definition at line 125 of file GsfPropagatorAdapter.h.

References GsfPropagatorAdapter(), and thePropagator.

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

Implements Propagator.

Definition at line 130 of file GsfPropagatorAdapter.h.

References thePropagator.

                                                     {
    return thePropagator->magneticField();
  }
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().

  {
    return propagateWithPath(fts,plane).first;
  }
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.

Referenced by propagate().

  {
    return Propagator::propagate(tsos,surface);
  }
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().

  {
    return propagateWithPath(tsos,plane).first;
  }
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().

  {
    return propagateWithPath(fts,cylinder).first;
  }
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().

  {
    return propagateWithPath(tsos,cylinder).first;
  }
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 propagate().

  {
    return Propagator::propagate(fts,surface);
  }
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 propagateWithPath().

  {
    return Propagator::propagateWithPath(fts,surface);
  }
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.

Referenced by propagate(), and propagateWithPath().

  {
    return Propagator::propagateWithPath(tsos,surface);
  }
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.

                                                                   {
  MultiStatePropagation<Plane> multiPropagator(*thePropagator);
  return multiPropagator.propagateWithPath(tsos,plane);
}
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.

                                                                         {
  static int nWarn(0);
  if ( nWarn++<5 )
    edm::LogInfo("GsfPropagatorAdapter") << "GsfPropagator used from FTS = single state mode!";
  return thePropagator->propagateWithPath(fts,cylinder);
}
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.

                                                                         {
  MultiStatePropagation<Cylinder> multiPropagator(*thePropagator);
  return multiPropagator.propagateWithPath(tsos,cylinder);
}
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.

                                                                   {
  static int nWarn(0);
  if ( nWarn++<5 )
    edm::LogInfo("GsfPropagatorAdapter") << "GsfPropagator used from FTS = single state mode!";
  return thePropagator->propagateWithPath(fts,plane);
}
const Propagator& GsfPropagatorAdapter::propagator ( void  ) const [inline]

access to single state propagator

Definition at line 120 of file GsfPropagatorAdapter.h.

References thePropagator.

  {
    return *thePropagator;
  }
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.

                                                    { 
    return thePropagator->setMaxDirectionChange(phiMax);
  }
void GsfPropagatorAdapter::setPropagationDirection ( PropagationDirection  dir) const [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 thePropagator.

                                                                                  {
  thePropagator->setPropagationDirection(dir);
  Propagator::setPropagationDirection(dir);
}

Member Data Documentation