Go to the documentation of this file.
2 #ifndef CommonTools_BaseParticlePropagator_BaseParticlePropagator_h
3 #define CommonTools_BaseParticlePropagator_BaseParticlePropagator_h
150 inline double c_light()
const {
return 299.792458; }
252 return xC == 0.0 && yC == 0.0 ? 0.0 : std::atan2(yC, xC);
257 return xC == 0.0 && yC == 0.0 ? 0.0 : std::atan2(yC, xC);
double helixCentrePhi(double xC, double yC) const
bool propagateToHcalExit(bool first=true)
bool onEndcap() const
Is the vertex already on the cylinder endcap ?
bool propagateToEcalEntrance(bool first=true)
RawParticle const & particle() const
The particle being propagated.
int propDir
The propagation direction.
double helixCentreX() const
The x coordinate of the helix axis.
double R2() const
vertex radius**2
bool onBarrel() const
Is the vertex already on the cylinder barrel ?
bool decayed
The particle decayed while propagated !
double Pt() const
transverse momentum
bool onSurface() const
Is the vertex already on the cylinder surface ?
int getSuccess() const
Has propagation been performed and was barrel or endcap reached ?
math::XYZTLorentzVector XYZTLorentzVector
void setProperDecayTime(double t)
Set the proper decay time.
double charge() const
get the MEASURED charge
bool debug
The debug level.
Sin< T >::type sin(const T &t)
double Z() const
z of vertex
bool propagateToHcalEntrance(bool first=true)
Cos< T >::type cos(const T &t)
bool propagateToPreshowerLayer2(bool first=true)
bool inside(double rPos2) const
double bField
Magnetic field in the cylinder, oriented along the Z axis.
double getMagneticField() const
Get the magnetic field.
double helixCentreY() const
The y coordinate of the helix axis.
bool propagateToHOLayer(bool first=true)
double zCyl
Half-height of the cylinder (centred at 0,0,0) to which propagation is done.
bool inside() const
Is the vertex inside the cylinder ? (stricly inside : true)
double zImpactParameter(double x0=0, double y0=0.) const
Longitudinal impact parameter.
double helixCentrePhi() const
The azimuth if the vector joining the cylinder and the helix axes.
bool fiducial
The particle traverses some real material.
void init()
Initialize internal switches and quantities.
double helixStartPhi() const
The azimuth of the momentum at the vertex.
void increaseRCyl(double delta)
Just an internal trick.
double Y() const
y of vertex
double helixCentreDistToAxis(double xC, double yC) const
int success
0:propagation still be done, 1:reached 'barrel', 2:reached 'endcaps'
double Py() const
y of the momentum
bool propagateToPreshowerLayer1(bool first=true)
double c_light() const
The speed of light in mm/ns (!) without clhep (yeaaahhh!)
double properTime
The proper time of the particle.
BaseParticlePropagator()
Default c'tor.
double Perp2() const
perpendicular momentum squared
bool propagateToNominalVertex(const XYZTLorentzVector &hit2=XYZTLorentzVector(0., 0., 0., 0.))
double rCyl
Simulated particle that is to be resp has been propagated.
double helixCentreX(double radius, double phi) const
void setMagneticField(double b)
Set the magnetic field.
bool onBarrel(double rPos2) const
void setPropagationConditions(double r, double z, bool firstLoop=true)
Set the propagation characteristics (rCyl, zCyl and first loop only)
bool firstLoop
Do only the first half-loop.
static const std::string B
BaseParticlePropagator propagated() const
double xyImpactParameter(double x0=0., double y0=0.) const
Transverse impact parameter.
double helixRadius() const
The helix Radius.
double X() const
x of vertex
bool propagateToBeamCylinder(const XYZTLorentzVector &v, double radius=0.)
bool onSurface(double rPos2) const
bool onFiducial() const
Is the vertex on some material ?
double helixCentreDistToAxis() const
The distance between the cylinder and the helix axes.
bool onEndcap(double rPos2) const
bool propagateToClosestApproach(double x0=0., double y0=0, bool first=true)
bool propagateToVFcalEntrance(bool first=true)
double helixRadius(double pT) const
double helixCentreY(double radius, double phi) const
double properDecayTime
The proper decay time of the particle.
void setParticle(RawParticle const &iParticle)
void setDebug()
Set the debug leve;.
bool propagateToEcal(bool first=true)
double Px() const
x of the momentum
double Pz() const
z of the momentum
bool hasDecayed() const
Has the particle decayed while propagated ?