CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Attributes
RKPropagatorInR Class Referencefinal

#include <RKPropagatorInR.h>

Inheritance diagram for RKPropagatorInR:
Propagator

Public Member Functions

virtual Propagatorclone () const
 
virtual const MagneticFieldmagneticField () const
 
TrajectoryStateOnSurface myPropagate (const FreeTrajectoryState &, const Plane &) const
 
TrajectoryStateOnSurface myPropagate (const FreeTrajectoryState &, const Cylinder &) const
 
virtual std::pair
< TrajectoryStateOnSurface,
double > 
propagateWithPath (const FreeTrajectoryState &, const Plane &) const
 
virtual std::pair
< TrajectoryStateOnSurface,
double > 
propagateWithPath (const FreeTrajectoryState &, const Cylinder &) const
 
 RKPropagatorInR (const MagVolume &vol, PropagationDirection dir=alongMomentum)
 
- Public Member Functions inherited from Propagator
template<typename STA , typename SUR >
TrajectoryStateOnSurface propagate (STA const &state, SUR const &surface) const
 
virtual FreeTrajectoryState propagate (const FreeTrajectoryState &ftsStart, const GlobalPoint &pDest) const final
 
virtual FreeTrajectoryState propagate (const FreeTrajectoryState &ftsStart, const GlobalPoint &pDest1, const GlobalPoint &pDest2) const final
 
virtual FreeTrajectoryState propagate (const FreeTrajectoryState &ftsStart, const reco::BeamSpot &beamSpot) const final
 
virtual std::pair
< TrajectoryStateOnSurface,
double > 
propagateWithPath (const FreeTrajectoryState &, const Surface &) const final
 
virtual std::pair
< TrajectoryStateOnSurface,
double > 
propagateWithPath (const TrajectoryStateOnSurface &tsos, const Surface &sur) const final
 
virtual std::pair
< TrajectoryStateOnSurface,
double > 
propagateWithPath (const TrajectoryStateOnSurface &tsos, const Plane &sur) const
 
virtual std::pair
< TrajectoryStateOnSurface,
double > 
propagateWithPath (const TrajectoryStateOnSurface &tsos, const Cylinder &sur) const
 
virtual std::pair
< FreeTrajectoryState, double > 
propagateWithPath (const FreeTrajectoryState &ftsStart, const GlobalPoint &pDest) const
 
virtual std::pair
< FreeTrajectoryState, double > 
propagateWithPath (const FreeTrajectoryState &ftsStart, const GlobalPoint &pDest1, const GlobalPoint &pDest2) const
 Propagate to PCA to a line (given by 2 points) given a starting point. More...
 
virtual std::pair
< FreeTrajectoryState, double > 
propagateWithPath (const FreeTrajectoryState &ftsStart, const reco::BeamSpot &beamSpot) const
 Propagate to PCA to a line (given by beamSpot position and slope) given a starting point. More...
 
virtual PropagationDirection propagationDirection () const final
 
 Propagator (PropagationDirection dir=alongMomentum)
 
virtual bool setMaxDirectionChange (float phiMax)
 
virtual void setPropagationDirection (PropagationDirection dir)
 
virtual ~Propagator ()
 

Private Attributes

const MagVolumetheVolume
 

Detailed Description

Definition at line 7 of file RKPropagatorInR.h.

Constructor & Destructor Documentation

RKPropagatorInR::RKPropagatorInR ( const MagVolume vol,
PropagationDirection  dir = alongMomentum 
)
inline

Definition at line 10 of file RKPropagatorInR.h.

Referenced by clone().

10  :
11  Propagator(dir), theVolume( &vol) {}
Propagator(PropagationDirection dir=alongMomentum)
Definition: Propagator.h:46
const MagVolume * theVolume
dbl *** dir
Definition: mlp_gen.cc:35

Member Function Documentation

Propagator * RKPropagatorInR::clone ( void  ) const
virtual

Implements Propagator.

Definition at line 73 of file RKPropagatorInR.cc.

References RKPropagatorInR().

74 {
75  return new RKPropagatorInR(*this);
76 }
RKPropagatorInR(const MagVolume &vol, PropagationDirection dir=alongMomentum)
virtual const MagneticField* RKPropagatorInR::magneticField ( ) const
inlinevirtual

Implements Propagator.

Definition at line 27 of file RKPropagatorInR.h.

References theVolume.

27 {return theVolume;}
const MagVolume * theVolume
TrajectoryStateOnSurface RKPropagatorInR::myPropagate ( const FreeTrajectoryState ,
const Plane  
) const

Definition at line 56 of file RKPropagatorInR.cc.

TrajectoryStateOnSurface RKPropagatorInR::myPropagate ( const FreeTrajectoryState ts,
const Cylinder cyl 
) const

Definition at line 15 of file RKPropagatorInR.cc.

References FreeTrajectoryState::charge(), alignCSCRings::e, FreeTrajectoryState::momentum(), FreeTrajectoryState::position(), Cylinder::radius(), command_line::start, theVolume, Surface::toGlobal(), and GloballyPositioned< T >::toLocal().

16 {
17  //typedef RK4PreciseSolver<double,5> Solver;
19  //typedef RKAdaptiveSolver<Scalar,RKOneCashKarpStep, 5> Solver;
20  typedef double Scalar;
21  typedef Solver::Vector RKVector;
22 
23  GlobalPoint pos( ts.position());
24  GlobalVector mom( ts.momentum());
25 
26  LocalPoint startpos = cyl.toLocal(pos);
27  LocalVector startmom = cyl.toLocal(mom);
28 
29  CylindricalState startState( startpos, startmom, ts.charge());
30  RKVector start = startState.parameters();
31 
32  RKLocalFieldProvider localField( *theVolume, cyl);
33  CylindricalLorentzForce<double,5> deriv(localField);
35  double eps = 1.e-5;
36  Solver solver;
37  try {
38  Scalar step = cyl.radius() - startState.rho();
39  RKVector rkresult = solver( startState.rho(), start, step, deriv, dist, eps);
40  CylindricalState endState( cyl.radius(), rkresult, startState.prSign());
41  return TrajectoryStateOnSurface( GlobalTrajectoryParameters( cyl.toGlobal( endState.position()),
42  cyl.toGlobal( endState.momentum()),
43  TrackCharge(endState.charge()),
44  theVolume),
45  cyl);
46  }
47  catch (CylindricalLorentzForceException& e) {
48  // the propagation failed due to momentum almost parallel to the plane.
49  // This does not mean the propagation is impossible, but it should be done
50  // in a different parametrization (e.g. s)
51  return TrajectoryStateOnSurface();
52  }
53 }
GlobalPoint toGlobal(const Point2DBase< Scalar, LocalTag > lp) const
Definition: Surface.h:106
double Scalar
Definition: Definitions.h:27
ROOT::Math::Plane3D::Vector Vector
Definition: EcalHitMaker.cc:29
TrackCharge charge() const
int TrackCharge
Definition: TrackCharge.h:4
Scalar radius() const
Radius of the cylinder.
Definition: Cylinder.h:67
LocalPoint toLocal(const GlobalPoint &gp) const
const MagVolume * theVolume
GlobalVector momentum() const
GlobalPoint position() const
step
std::pair< TrajectoryStateOnSurface, double > RKPropagatorInR::propagateWithPath ( const FreeTrajectoryState ,
const Plane  
) const
virtual

Implements Propagator.

Definition at line 62 of file RKPropagatorInR.cc.

63 {
64  return std::pair< TrajectoryStateOnSurface, double>();
65 }
std::pair< TrajectoryStateOnSurface, double > RKPropagatorInR::propagateWithPath ( const FreeTrajectoryState ,
const Cylinder  
) const
virtual

Implements Propagator.

Definition at line 68 of file RKPropagatorInR.cc.

69 {
70  return std::pair< TrajectoryStateOnSurface, double>();
71 }

Member Data Documentation

const MagVolume* RKPropagatorInR::theVolume
private

Definition at line 31 of file RKPropagatorInR.h.

Referenced by magneticField(), and myPropagate().