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