#include <ParticlePropagator.h>
Public Member Functions | |
double | fieldMap (double x, double y, double z) |
double | fieldMap (const TrackerLayer &layer, double coord, int success) |
void | initProperDecayTime () |
ParticlePropagator () | |
Default c'tor. More... | |
ParticlePropagator (const RawParticle &myPart, double R, double Z, const MagneticFieldMap *aFieldMap, const RandomEngineAndDistribution *engine) | |
ParticlePropagator (const RawParticle &myPart, const MagneticFieldMap *aFieldMap, const RandomEngineAndDistribution *engine) | |
ParticlePropagator (const XYZTLorentzVector &p, const XYZTLorentzVector &v, float q, const MagneticFieldMap *aFieldMap) | |
ParticlePropagator (const XYZTLorentzVector &p, const XYZVector &v, float q, const MagneticFieldMap *aFieldMap) | |
ParticlePropagator (const FSimTrack &simTrack, const MagneticFieldMap *aFieldMap, const RandomEngineAndDistribution *engine) | |
ParticlePropagator (const ParticlePropagator &myPropPart) | |
ParticlePropagator (const BaseParticlePropagator &myPropPart, const MagneticFieldMap *aFieldMap) | |
ParticlePropagator | propagated () const |
bool | propagateToBoundSurface (const TrackerLayer &) |
bool | propagateToClosestApproach (double x0=0., double y0=0., bool first=true) |
bool | propagateToNominalVertex (const XYZTLorentzVector &hit2=XYZTLorentzVector(0., 0., 0., 0.)) |
void | setPropagationConditions (const TrackerLayer &, bool firstLoop=true) |
Public Member Functions inherited from BaseParticlePropagator | |
bool | backPropagate () |
BaseParticlePropagator () | |
Default c'tor. More... | |
BaseParticlePropagator (const RawParticle &myPart, double r, double z, double B) | |
BaseParticlePropagator (const RawParticle &myPart, double r, double z, double B, double t) | |
double | getMagneticField () const |
Get the magnetic field. More... | |
int | getSuccess () const |
Has propagation been performed and was barrel or endcap reached ? More... | |
bool | hasDecayed () const |
Has the particle decayed while propagated ? More... | |
double | helixCentreDistToAxis () const |
The distance between the cylinder and the helix axes. More... | |
double | helixCentreDistToAxis (double xC, double yC) const |
double | helixCentrePhi () const |
The azimuth if the vector joining the cylinder and the helix axes. More... | |
double | helixCentrePhi (double xC, double yC) const |
double | helixCentreX () const |
The x coordinate of the helix axis. More... | |
double | helixCentreX (double radius, double phi) const |
double | helixCentreY () const |
The y coordinate of the helix axis. More... | |
double | helixCentreY (double radius, double phi) const |
double | helixRadius () const |
The helix Radius. More... | |
double | helixRadius (double pT) const |
double | helixStartPhi () const |
The azimuth of the momentum at the vertex. More... | |
void | increaseRCyl (double delta) |
Just an internal trick. More... | |
void | init () |
Initialize internal switches and quantities. More... | |
bool | inside () const |
Is the vertex inside the cylinder ? (stricly inside : true) More... | |
bool | inside (double rPos2) const |
bool | onBarrel () const |
Is the vertex already on the cylinder barrel ? More... | |
bool | onBarrel (double rPos2) const |
bool | onEndcap () const |
Is the vertex already on the cylinder endcap ? More... | |
bool | onEndcap (double rPos2) const |
bool | onFiducial () const |
Is the vertex on some material ? More... | |
bool | onSurface () const |
Is the vertex already on the cylinder surface ? More... | |
bool | onSurface (double rPos2) const |
bool | propagate () |
BaseParticlePropagator | propagated () const |
bool | propagateToBeamCylinder (const XYZTLorentzVector &v, double radius=0.) |
bool | propagateToClosestApproach (double x0=0., double y0=0, bool first=true) |
bool | propagateToEcal (bool first=true) |
bool | propagateToEcalEntrance (bool first=true) |
bool | propagateToHcalEntrance (bool first=true) |
bool | propagateToHcalExit (bool first=true) |
bool | propagateToHOLayer (bool first=true) |
bool | propagateToNominalVertex (const XYZTLorentzVector &hit2=XYZTLorentzVector(0., 0., 0., 0.)) |
bool | propagateToPreshowerLayer1 (bool first=true) |
bool | propagateToPreshowerLayer2 (bool first=true) |
bool | propagateToVFcalEntrance (bool first=true) |
void | resetDebug () |
void | setDebug () |
Set the debug leve;. More... | |
void | setMagneticField (double b) |
Set the magnetic field. More... | |
void | setPropagationConditions (double r, double z, bool firstLoop=true) |
Set the propagation characteristics (rCyl, zCyl and first loop only) More... | |
void | setProperDecayTime (double t) |
Set the proper decay time. More... | |
double | xyImpactParameter (double x0=0., double y0=0.) const |
Transverse impact parameter. More... | |
double | zImpactParameter (double x0=0, double y0=0.) const |
Longitudinal impact parameter. More... | |
Public Member Functions inherited from RawParticle | |
void | boost (double bx, double by, double bz) |
void | boost (const Boost &b) |
double | charge () const |
get the MEASURED charge More... | |
void | chargeConjugate () |
double | cos2Theta () const |
Cos**2(theta) is faster to determine than eta. More... | |
double | cos2ThetaV () const |
double | et () const |
get the transverse energy More... | |
double | eta () const |
int | isUsed () const |
double | mass () const |
get the MEASURED mass More... | |
const XYZTLorentzVector & | momentum () const |
the momentum fourvector More... | |
RawParticle & | operator= (const RawParticle &rhs) |
double | PDGcharge () const |
get the THEORETICAL charge More... | |
double | PDGcTau () const |
get the THEORETICAL lifetime More... | |
double | PDGmass () const |
get the THEORETICAL mass More... | |
std::string | PDGname () const |
get the PDG name More... | |
int | pid () const |
get the HEP particle ID number More... | |
void | print () const |
void | printName () const |
double | r () const |
vertex radius More... | |
double | R () const |
vertex radius More... | |
double | r2 () const |
vertex radius**2 More... | |
double | R2 () const |
vertex radius**2 More... | |
RawParticle () | |
RawParticle (const XYZTLorentzVector &p) | |
RawParticle (const int id, const XYZTLorentzVector &p) | |
RawParticle (const std::string name, const XYZTLorentzVector &p) | |
RawParticle (const XYZTLorentzVector &p, const XYZTLorentzVector &xStart) | |
RawParticle (double px, double py, double pz, double e) | |
RawParticle (const RawParticle &p) | |
void | reUse () |
void | rotate (double rphi, const XYZVector &raxis) |
void | rotate (const Rotation &r) |
void | rotate (const Rotation3D &r) |
void | rotate (const RotationX &r) |
void | rotate (const RotationY &r) |
void | rotate (const RotationZ &r) |
void | rotateX (double rphi) |
void | rotateY (double rphi) |
void | rotateZ (double rphi) |
void | setCharge (float q) |
set the MEASURED charge More... | |
void | setID (const int id) |
void | setID (const std::string name) |
void | setMass (float m) |
set the RECONSTRUCTED mass More... | |
void | setStatus (int istat) |
void | setT (const double t) |
set the time of creation More... | |
void | setVertex (const XYZTLorentzVector &vtx) |
set the vertex More... | |
void | setVertex (double xv, double yv, double zv, double tv) |
int | status () const |
get the particle status More... | |
double | t () const |
vertex time More... | |
double | T () const |
vertex time More... | |
void | translate (const XYZVector &t) |
void | use () |
const XYZTLorentzVector & | vertex () const |
the vertex fourvector More... | |
double | x () const |
x of vertex More... | |
double | X () const |
x of vertex More... | |
double | y () const |
y of vertex More... | |
double | Y () const |
y of vertex More... | |
double | z () const |
z of vertex More... | |
double | Z () const |
z of vertex More... | |
virtual | ~RawParticle () |
Private Attributes | |
const RandomEngineAndDistribution * | random |
const MagneticFieldMap * | theFieldMap |
Additional Inherited Members | |
Public Types inherited from RawParticle | |
typedef ROOT::Math::Boost | Boost |
typedef ROOT::Math::AxisAngle | Rotation |
typedef ROOT::Math::Rotation3D | Rotation3D |
typedef ROOT::Math::RotationX | RotationX |
typedef ROOT::Math::RotationY | RotationY |
typedef ROOT::Math::RotationZ | RotationZ |
Protected Member Functions inherited from BaseParticlePropagator | |
double | c_light () const |
The speed of light in mm/ns (!) without clhep (yeaaahhh!) More... | |
Protected Attributes inherited from BaseParticlePropagator | |
bool | fiducial |
The particle traverses some real material. More... | |
int | success |
0:propagation still be done, 1:reached 'barrel', 2:reached 'endcaps' More... | |
Protected Attributes inherited from RawParticle | |
double | myCharge |
the MEASURED charge More... | |
int | myId |
the particle id number HEP-PID More... | |
const ParticleData * | myInfo |
The pointer to the PDG info. More... | |
double | myMass |
the RECONSTRUCTED mass More... | |
int | myStatus |
the status code according to PYTHIA More... | |
int | myUsed |
status of the locking More... | |
XYZTLorentzVector | myVertex |
the four vector of the vertex More... | |
Definition at line 27 of file ParticlePropagator.h.
ParticlePropagator::ParticlePropagator | ( | ) |
Default c'tor.
Definition at line 13 of file ParticlePropagator.cc.
Referenced by propagated().
ParticlePropagator::ParticlePropagator | ( | const RawParticle & | myPart, |
double | R, | ||
double | Z, | ||
const MagneticFieldMap * | aFieldMap, | ||
const RandomEngineAndDistribution * | engine | ||
) |
Constructor taking as arguments a RawParticle, as well as the radius, half-height and magnetic field defining the cylinder for which propagation is to be performed
Definition at line 16 of file ParticlePropagator.cc.
References fieldMap(), initProperDecayTime(), BaseParticlePropagator::setMagneticField(), RawParticle::X(), RawParticle::Y(), and RawParticle::Z().
ParticlePropagator::ParticlePropagator | ( | const RawParticle & | myPart, |
const MagneticFieldMap * | aFieldMap, | ||
const RandomEngineAndDistribution * | engine | ||
) |
Constructor with only a RawParticle as argument for subsequent propagation to known surfaces (ECAL, HCAL ...)
Definition at line 28 of file ParticlePropagator.cc.
References fieldMap(), initProperDecayTime(), BaseParticlePropagator::setMagneticField(), RawParticle::X(), RawParticle::Y(), and RawParticle::Z().
ParticlePropagator::ParticlePropagator | ( | const XYZTLorentzVector & | p, |
const XYZTLorentzVector & | v, | ||
float | q, | ||
const MagneticFieldMap * | aFieldMap | ||
) |
Constructor with two LorentzVector (momentum and vertex (in cm)) and an electric charge propagation to known surfaces (ECAL, HCAL ...)
Definition at line 40 of file ParticlePropagator.cc.
References fieldMap(), RawParticle::setCharge(), BaseParticlePropagator::setMagneticField(), RawParticle::X(), RawParticle::Y(), and RawParticle::Z().
ParticlePropagator::ParticlePropagator | ( | const XYZTLorentzVector & | p, |
const XYZVector & | v, | ||
float | q, | ||
const MagneticFieldMap * | aFieldMap | ||
) |
Constructor with a LorentzVector (momentum), a Hep3Vector (vertex in cm) and an electric charge propagation to known surfaces (ECAL, HCAL ...)
ParticlePropagator::ParticlePropagator | ( | const FSimTrack & | simTrack, |
const MagneticFieldMap * | aFieldMap, | ||
const RandomEngineAndDistribution * | engine | ||
) |
Constructor with a FSimTrack from the FSimEvent
Definition at line 63 of file ParticlePropagator.cc.
References FSimTrack::decayTime(), fieldMap(), initProperDecayTime(), FSimTrack::nDaughters(), FSimVertex::position(), BaseParticlePropagator::setMagneticField(), BaseParticlePropagator::setProperDecayTime(), RawParticle::setVertex(), FSimTrack::vertex(), RawParticle::X(), RawParticle::Y(), and RawParticle::Z().
ParticlePropagator::ParticlePropagator | ( | const ParticlePropagator & | myPropPart | ) |
Constructor with a (Base)ParticlePropagator
Definition at line 86 of file ParticlePropagator.cc.
ParticlePropagator::ParticlePropagator | ( | const BaseParticlePropagator & | myPropPart, |
const MagneticFieldMap * | aFieldMap | ||
) |
Definition at line 93 of file ParticlePropagator.cc.
References fieldMap(), BaseParticlePropagator::setMagneticField(), RawParticle::X(), RawParticle::Y(), and RawParticle::Z().
double ParticlePropagator::fieldMap | ( | double | x, |
double | y, | ||
double | z | ||
) |
The fieldMap given by the detector geormetry
Definition at line 134 of file ParticlePropagator.cc.
References RawParticle::charge(), MagneticFieldMap::inTeslaZ(), and theFieldMap.
Referenced by ParticlePropagator(), propagateToBoundSurface(), propagateToClosestApproach(), and propagateToNominalVertex().
double ParticlePropagator::fieldMap | ( | const TrackerLayer & | layer, |
double | coord, | ||
int | success | ||
) |
Definition at line 143 of file ParticlePropagator.cc.
References RawParticle::charge(), MagneticFieldMap::inTeslaZ(), and theFieldMap.
void ParticlePropagator::initProperDecayTime | ( | ) |
Initialize the proper decay time of the particle
Definition at line 103 of file ParticlePropagator.cc.
References funct::abs(), RandomEngineAndDistribution::flatShoot(), cmsBatch::log, RawParticle::PDGcTau(), RawParticle::pid(), BaseParticlePropagator::properDecayTime, random, and BaseParticlePropagator::setProperDecayTime().
Referenced by ParticlePropagator().
ParticlePropagator ParticlePropagator::propagated | ( | ) | const |
Return a new instance, corresponding to the particle propagated to the surface of the cylinder
Definition at line 129 of file ParticlePropagator.cc.
References ParticlePropagator(), BaseParticlePropagator::propagated(), and theFieldMap.
bool ParticlePropagator::propagateToBoundSurface | ( | const TrackerLayer & | layer | ) |
Definition at line 152 of file ParticlePropagator.cc.
References TrackerLayer::disk(), TrackerLayer::diskInnerRadius(), run_regression::done, BaseParticlePropagator::fiducial, fieldMap(), BaseParticlePropagator::hasDecayed(), BaseParticlePropagator::propagate(), RawParticle::r(), BaseParticlePropagator::setMagneticField(), BaseParticlePropagator::success, and RawParticle::z().
Referenced by TrajectoryManager::propagateToLayer().
bool ParticlePropagator::propagateToClosestApproach | ( | double | x0 = 0. , |
double | y0 = 0. , |
||
bool | first = true |
||
) |
Update the particle after propagation to the closest approach from Z axis, to the preshower layer 1 & 2, to the ECAL entrance, to the HCAL entrance, the HCAL 2nd and 3rd layer (not coded yet), the VFCAL entrance, or any BoundSurface(disk or cylinder)
Definition at line 117 of file ParticlePropagator.cc.
References fieldMap(), BaseParticlePropagator::propagateToClosestApproach(), and BaseParticlePropagator::setMagneticField().
bool ParticlePropagator::propagateToNominalVertex | ( | const XYZTLorentzVector & | hit2 = XYZTLorentzVector(0.,0.,0.,0.) | ) |
Definition at line 123 of file ParticlePropagator.cc.
References fieldMap(), BaseParticlePropagator::propagateToNominalVertex(), and BaseParticlePropagator::setMagneticField().
Referenced by FastPixelHitMatcher::compatibleHits(), and FastPixelHitMatcher::propagateToLayer().
void ParticlePropagator::setPropagationConditions | ( | const TrackerLayer & | layer, |
bool | firstLoop = true |
||
) |
Definition at line 186 of file ParticlePropagator.cc.
References TrackerLayer::cylinder(), TrackerLayer::disk(), TrackerLayer::diskOuterRadius(), BaseParticlePropagator::firstLoop, TrackerLayer::forward(), and BaseParticlePropagator::setPropagationConditions().
Referenced by ConvBremSeedProducer::produce(), and TrajectoryManager::propagateToLayer().
|
private |
Definition at line 97 of file ParticlePropagator.h.
Referenced by initProperDecayTime().
|
private |
Definition at line 96 of file ParticlePropagator.h.
Referenced by fieldMap(), and propagated().