1 #ifndef MATERIALEFFECTSSIMULATOR_H
2 #define MATERIALEFFECTSSIMULATOR_H
43 inline double theA()
const {
return A; }
45 inline double theZ()
const {
return Z; }
53 inline double eMass()
const {
return 0.000510998902; }
virtual void compute(ParticlePropagator &Particle, RandomEngineAndDistribution const *)=0
Overloaded in all material effects updtators.
RHEP_const_iter beginDaughters() const
Returns const iterator to the beginning of the daughters list.
unsigned nDaughters() const
Returns the number of daughters.
int closestDaughterId()
The id of the closest charged daughter (filled for nuclear interactions only)
void setNormalVector(const GlobalVector &normal)
Sets the vector normal to the surface traversed.
XYZVector orthogonal(const XYZVector &) const
A vector orthogonal to another one (because it's not in XYZTLorentzVector)
double rho() const
Density in g/cm3.
void updateState(ParticlePropagator &myTrack, double radlen, RandomEngineAndDistribution const *)
Compute the material effect (calls the sub class)
double radiationLength() const
Returns the fraction of radiation lengths traversed.
math::XYZVector XYZVector
virtual ~MaterialEffectsSimulator()
std::vector< RawParticle >::const_iterator RHEP_const_iter
MaterialEffectsSimulator(double A=28.0855, double Z=14.0000, double density=2.329, double radLen=9.360)
RHEP_const_iter endDaughters() const
Returns const iterator to the end of the daughters list.
double eMass() const
Electron mass in GeV/c2.
double excitE() const
Mean excitation energy (in GeV)
std::vector< RawParticle > _theUpdatedState
double radLenIncm() const
One radiation length in cm.
int theClosestChargedDaughterId
GlobalVector theNormalVector