1 #ifndef SteppingHelixPropagator_SteppingHelixPropagator_h
2 #define SteppingHelixPropagator_SteppingHelixPropagator_h
30 #include "CLHEP/Matrix/SymMatrix.h"
31 #include "CLHEP/Matrix/Matrix.h"
32 #include "CLHEP/Vector/ThreeVector.h"
44 typedef CLHEP::Hep3Vector
Point;
97 virtual std::pair<TrajectoryStateOnSurface, double>
101 virtual std::pair<TrajectoryStateOnSurface, double>
104 virtual std::pair<FreeTrajectoryState, double>
107 virtual std::pair<FreeTrajectoryState, double>
111 virtual std::pair<FreeTrajectoryState, double>
181 ecShiftPos_ = valPos; ecShiftNeg_ = valNeg;
186 static const int MAX_POINTS = 7;
190 void initStateArraySHPSpecific(StateArray& svBuf,
bool flagsOnly)
const;
194 StateArray& svBuff,
int& nPoints)
const;
199 Result propagate(StateArray& svBuff,
int& nPoints, SteppingHelixPropagator::DestType
type,
200 const double pars[6],
double epsilon = 1
e-3)
const;
204 void loadState(SteppingHelixPropagator::StateInfo& svCurrent,
212 void getNextState(
const SteppingHelixPropagator::StateInfo& svPrevious,
213 SteppingHelixPropagator::StateInfo& svNext,
216 double dS,
double dX0,
220 void setRep(SteppingHelixPropagator::Basis&
rep,
224 bool makeAtomStep(SteppingHelixPropagator::StateInfo& svCurrent,
225 SteppingHelixPropagator::StateInfo& svNext,
227 SteppingHelixPropagator::Fancy fancy)
const;
230 double getDeDx(
const SteppingHelixPropagator::StateInfo& sv,
231 double& dEdXPrime,
double& radX0,
MatBounds& rzLims)
const;
234 int cIndex_(
int ind)
const;
238 const double pars[6],
240 double fastSkipDist = 1e12)
const;
244 Result refToMagVolume(
const SteppingHelixPropagator::StateInfo& sv,
246 double& dist,
double& tanDist,
247 double fastSkipDist = 1e12,
bool expectNewMagVolume =
false,
double maxStep = 1e12)
const;
249 Result refToMatVolume(
const SteppingHelixPropagator::StateInfo& sv,
251 double& dist,
double& tanDist,
252 double fastSkipDist = 1e12)
const;
255 bool isYokeVolume(
const MagVolume* vol)
const;
259 typedef std::pair<TrajectoryStateOnSurface, double>
TsosPP;
260 typedef std::pair<FreeTrajectoryState, double>
FtsPP;
261 static const int MAX_STEPS = 10000;
void setUseMatVolumes(bool val)
Switch to using Material Volumes .. internally defined for now.
SteppingHelixStateInfo::VolumeBounds MatBounds
void setUseMagVolumes(bool val)
Switch to using MagneticField Volumes .. as in VolumeBasedMagneticField.
void setVBFPointer(const VolumeBasedMagneticField *val)
const MagneticField * field_
ROOT::Math::Plane3D::Vector Vector
bool applyRadX0Correction_
void applyRadX0Correction(bool applyRadX0Correction)
void setUseTuningForL2Speed(bool val)
ROOT::Math::SMatrix< double, 5, 5, ROOT::Math::MatRepSym< double, 5 > > AlgebraicSymMatrix55
void setReturnTangentPlane(bool val)
flag to return tangent plane for non-plane input
std::pair< FreeTrajectoryState, double > FtsPP
void setDebug(bool debug)
Switch debug printouts (to cout) .. very verbose.
void setNoErrorPropagation(bool noErrorPropagation)
Force no error propagation.
tuple SteppingHelixPropagator
std::pair< TrajectoryStateOnSurface, double > TsosPP
void setUseInTeslaFromMagField(bool val)
force getting field value from MagneticField, not the geometric one
virtual SteppingHelixPropagator * clone() const override
virtual std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const FreeTrajectoryState &, const Surface &) const final
virtual const MagneticField * magneticField() const override
SteppingHelixStateInfo::Result Result
void setMaterialMode(bool noMaterial)
Switch for material effects mode: no material effects if true.
bool useInTeslaFromMagField_
TrajectoryStateOnSurface propagate(STA const &state, SUR const &surface) const
void setSendLogWarning(bool val)
flag to send LogWarning on failures
SteppingHelixStateInfo StateInfo
bool useTuningForL2Speed_
void setEndcapShiftsInZPosNeg(double valPos, double valNeg)
set shifts in Z for endcap pieces (includes EE, HE, ME, YE)
const VolumeBasedMagneticField * vbField_
const AlgebraicSymMatrix55 unit55_
void setUseIsYokeFlag(bool val)
ROOT::Math::SMatrix< double, 5, 5, ROOT::Math::MatRepStd< double, 5, 5 > > AlgebraicMatrix55
Unlimited (trivial) bounds.