CMS 3D CMS Logo

/data/doxygen/doxygen-1.7.3/gen/CMSSW_4_2_8/src/TrackPropagation/Geant4e/interface/Geant4ePropagator.h

Go to the documentation of this file.
00001 #ifndef TrackPropagation_Geant4ePropagator_h
00002 #define TrackPropagation_Geant4ePropagator_h
00003 
00004 
00005 //CMS includes
00006 // - Propagator
00007 #include "TrackingTools/GeomPropagators/interface/Propagator.h"
00008 
00009 // - Geant4e
00010 #include "G4ErrorPropagatorManager.hh"
00011 
00012 
00013 
00014 class Geant4eSteppingAction;
00015 
00021 class Geant4ePropagator: public Propagator {
00022 
00023  public:
00029   Geant4ePropagator(const MagneticField* field = 0,
00030                     const char* particleName = "mu",
00031                     PropagationDirection dir = alongMomentum);
00032 
00033   virtual ~Geant4ePropagator();
00034 
00035 
00040   virtual TrajectoryStateOnSurface 
00041   propagate (const FreeTrajectoryState& ftsStart, const Plane& pDest) const;
00042 
00043   virtual TrajectoryStateOnSurface 
00044   propagate (const FreeTrajectoryState& ftsStart, const Cylinder& cDest) const;
00045 
00049   virtual TrajectoryStateOnSurface
00050     propagate (const TrajectoryStateOnSurface& tsos, const Plane& plane) const;
00051   
00052   virtual TrajectoryStateOnSurface
00053     propagate (const TrajectoryStateOnSurface& tsos, const Cylinder& cyl) const; 
00054 
00061   virtual std::pair< TrajectoryStateOnSurface, double> 
00062   propagateWithPath (const FreeTrajectoryState&, const Plane&) const;
00063 
00064   virtual std::pair< TrajectoryStateOnSurface, double> 
00065   propagateWithPath (const FreeTrajectoryState&, const Cylinder&) const;
00066 
00067 
00068    virtual std::pair< TrajectoryStateOnSurface, double>  
00069    propagateWithPath (const TrajectoryStateOnSurface&, const Plane&) const; 
00070 
00071    virtual std::pair< TrajectoryStateOnSurface, double>  
00072    propagateWithPath (const TrajectoryStateOnSurface&, const Cylinder&) const; 
00073 
00074 
00075   virtual Geant4ePropagator* clone() const {return new Geant4ePropagator(*this);}
00076 
00077   virtual const MagneticField* magneticField() const {return theField;}
00078 
00079 
00080 
00081  protected:
00082 
00083   typedef std::pair<TrajectoryStateOnSurface, double> TsosPP;
00084 
00085 
00086   //Magnetic field
00087   const MagneticField* theField;
00088 
00089   //Name of the particle whose properties will be used in the propagation
00090   std::string theParticleName; 
00091 
00092   //The Geant4e manager. Does the real propagation
00093   G4ErrorPropagatorManager* theG4eManager;
00094 
00095   //A G4 stepping action to find out the track length
00096   mutable Geant4eSteppingAction* theSteppingAction;
00097 
00098 };
00099 
00100 
00101 #endif