#include <MaterialEffectsSimulator.h>
Public Types | |
typedef std::vector < RawParticle > ::const_iterator | RHEP_const_iter |
Public Member Functions | |
RHEP_const_iter | beginDaughters () const |
Returns const iterator to the beginning of the daughters list. | |
int | closestDaughterId () |
The id of the closest charged daughter (filled for nuclear interactions only) | |
double | eMass () const |
Electron mass in GeV/c2. | |
RHEP_const_iter | endDaughters () const |
Returns const iterator to the end of the daughters list. | |
double | excitE () const |
Mean excitation energy (in GeV) | |
MaterialEffectsSimulator (const RandomEngine *engine, double A=28.0855, double Z=14.0000, double density=2.329, double radLen=9.360) | |
unsigned | nDaughters () const |
Returns the number of daughters. | |
XYZVector | orthogonal (const XYZVector &) const |
A vector orthogonal to another one (because it's not in XYZTLorentzVector) | |
double | radLenIncm () const |
One radiation length in cm. | |
double | rho () const |
Density in g/cm3. | |
void | setNormalVector (const GlobalVector &normal) |
Sets the vector normal to the surface traversed. | |
double | theA () const |
A. | |
double | theZ () const |
Z. | |
void | updateState (ParticlePropagator &myTrack, double radlen) |
Compute the material effect (calls the sub class) | |
virtual | ~MaterialEffectsSimulator () |
Protected Attributes | |
std::vector< RawParticle > | _theUpdatedState |
double | A |
double | density |
double | radLen |
double | radLengths |
const RandomEngine * | random |
int | theClosestChargedDaughterId |
GlobalVector | theNormalVector |
double | Z |
Private Member Functions | |
virtual void | compute (ParticlePropagator &Particle)=0 |
Overloaded in all material effects updtators. | |
double | radiationLength () const |
Returns the fraction of radiation lengths traversed. |
This is the generic class for Material Effects in the tracker material, from which FamosPairProductionSimulator, FamosBremsstrahlungSimulator, FamosEnergyLossSimulator and FamosMultipleScatteringSimulator inherit. It determines the fraction of radiation lengths traversed by the particle in this tracker layer, defines the tracker layer characteristics (hmmm, 100% Silicon, very crude, but what can we do?) and returns a list of new RawParticles if needed.
Definition at line 23 of file MaterialEffectsSimulator.h.
typedef std::vector<RawParticle>::const_iterator MaterialEffectsSimulator::RHEP_const_iter |
Definition at line 27 of file MaterialEffectsSimulator.h.
MaterialEffectsSimulator::MaterialEffectsSimulator | ( | const RandomEngine * | engine, |
double | A = 28.0855 , |
||
double | Z = 14.0000 , |
||
double | density = 2.329 , |
||
double | radLen = 9.360 |
||
) |
Definition at line 10 of file MaterialEffectsSimulator.cc.
References _theUpdatedState, and random.
MaterialEffectsSimulator::~MaterialEffectsSimulator | ( | ) | [virtual] |
Definition at line 19 of file MaterialEffectsSimulator.cc.
References _theUpdatedState.
{ // Don't delete the objects contained in the list _theUpdatedState.clear(); }
RHEP_const_iter MaterialEffectsSimulator::beginDaughters | ( | ) | const [inline] |
Returns const iterator to the beginning of the daughters list.
Definition at line 59 of file MaterialEffectsSimulator.h.
References _theUpdatedState.
Referenced by MaterialEffects::interact().
{return _theUpdatedState.begin();}
int MaterialEffectsSimulator::closestDaughterId | ( | ) | [inline] |
The id of the closest charged daughter (filled for nuclear interactions only)
Definition at line 74 of file MaterialEffectsSimulator.h.
References theClosestChargedDaughterId.
Referenced by MaterialEffects::interact().
{ return theClosestChargedDaughterId; }
virtual void MaterialEffectsSimulator::compute | ( | ParticlePropagator & | Particle | ) | [private, pure virtual] |
Overloaded in all material effects updtators.
Implemented in BremsstrahlungSimulator, EnergyLossSimulator, MultipleScatteringSimulator, MuonBremsstrahlungSimulator, NuclearInteractionSimulator, and PairProductionSimulator.
Referenced by updateState().
double MaterialEffectsSimulator::eMass | ( | ) | const [inline] |
Electron mass in GeV/c2.
Definition at line 52 of file MaterialEffectsSimulator.h.
Referenced by EnergyLossSimulator::compute(), and PairProductionSimulator::compute().
{ return 0.000510998902; }
RHEP_const_iter MaterialEffectsSimulator::endDaughters | ( | ) | const [inline] |
Returns const iterator to the end of the daughters list.
Definition at line 62 of file MaterialEffectsSimulator.h.
References _theUpdatedState.
Referenced by MaterialEffects::interact().
{return _theUpdatedState.end();}
double MaterialEffectsSimulator::excitE | ( | ) | const [inline] |
Mean excitation energy (in GeV)
Definition at line 50 of file MaterialEffectsSimulator.h.
References theZ().
Referenced by EnergyLossSimulator::compute().
{ return 12.5E-9*theZ(); }
unsigned MaterialEffectsSimulator::nDaughters | ( | ) | const [inline] |
Returns the number of daughters.
Definition at line 65 of file MaterialEffectsSimulator.h.
References _theUpdatedState.
Referenced by MaterialEffects::interact().
{return _theUpdatedState.size();}
A vector orthogonal to another one (because it's not in XYZTLorentzVector)
Definition at line 37 of file MaterialEffectsSimulator.cc.
References x, detailsBasic3DVector::y, and z.
Referenced by NuclearInteractionSimulator::compute(), and MultipleScatteringSimulator::compute().
{ double x = fabs(aVector.X()); double y = fabs(aVector.Y()); double z = fabs(aVector.Z()); if ( x < y ) return x < z ? XYZVector(0.,aVector.Z(),-aVector.Y()) : XYZVector(aVector.Y(),-aVector.X(),0.); else return y < z ? XYZVector(-aVector.Z(),0.,aVector.X()) : XYZVector(aVector.Y(),-aVector.X(),0.); }
double MaterialEffectsSimulator::radiationLength | ( | ) | const [inline, private] |
Returns the fraction of radiation lengths traversed.
Definition at line 82 of file MaterialEffectsSimulator.h.
References radLengths.
{return radLengths;}
double MaterialEffectsSimulator::radLenIncm | ( | ) | const [inline] |
One radiation length in cm.
Definition at line 48 of file MaterialEffectsSimulator.h.
References radLen.
Referenced by EnergyLossSimulator::compute(), and MultipleScatteringSimulator::compute().
{ return radLen; }
double MaterialEffectsSimulator::rho | ( | ) | const [inline] |
Density in g/cm3.
Definition at line 46 of file MaterialEffectsSimulator.h.
References density.
Referenced by EnergyLossSimulator::compute().
{ return density; }
void MaterialEffectsSimulator::setNormalVector | ( | const GlobalVector & | normal | ) | [inline] |
Sets the vector normal to the surface traversed.
Definition at line 68 of file MaterialEffectsSimulator.h.
References theNormalVector.
Referenced by MuonSimHitProducer::applyMaterialEffects(), and MaterialEffects::interact().
{ theNormalVector = normal; }
double MaterialEffectsSimulator::theA | ( | ) | const [inline] |
A.
Functions to return atomic properties of the material Here the tracker material is assumed to be 100% Silicon
Definition at line 42 of file MaterialEffectsSimulator.h.
References A.
Referenced by EnergyLossSimulator::compute(), and NuclearInteractionSimulator::compute().
{ return A; }
double MaterialEffectsSimulator::theZ | ( | ) | const [inline] |
Z.
Definition at line 44 of file MaterialEffectsSimulator.h.
References Z.
Referenced by EnergyLossSimulator::compute(), excitE(), PairProductionSimulator::gbteth(), MuonBremsstrahlungSimulator::gbteth(), and BremsstrahlungSimulator::gbteth().
{ return Z; }
void MaterialEffectsSimulator::updateState | ( | ParticlePropagator & | myTrack, |
double | radlen | ||
) |
Compute the material effect (calls the sub class)
Definition at line 24 of file MaterialEffectsSimulator.cc.
References _theUpdatedState, compute(), radLengths, and theClosestChargedDaughterId.
Referenced by MuonSimHitProducer::applyMaterialEffects(), MaterialEffects::interact(), and CalorimetryManager::MuonMipSimulation().
{ _theUpdatedState.clear(); theClosestChargedDaughterId = -1; radLengths = radlen; if ( radLengths > 0. ) compute(Particle); }
std::vector<RawParticle> MaterialEffectsSimulator::_theUpdatedState [protected] |
Definition at line 87 of file MaterialEffectsSimulator.h.
Referenced by beginDaughters(), NuclearInteractionSimulator::compute(), BremsstrahlungSimulator::compute(), PairProductionSimulator::compute(), MuonBremsstrahlungSimulator::compute(), endDaughters(), MaterialEffectsSimulator(), nDaughters(), updateState(), and ~MaterialEffectsSimulator().
double MaterialEffectsSimulator::A [protected] |
Definition at line 92 of file MaterialEffectsSimulator.h.
Referenced by MuonBremsstrahlungSimulator::compute(), and theA().
double MaterialEffectsSimulator::density [protected] |
Definition at line 94 of file MaterialEffectsSimulator.h.
Referenced by MuonBremsstrahlungSimulator::compute(), and rho().
double MaterialEffectsSimulator::radLen [protected] |
Definition at line 95 of file MaterialEffectsSimulator.h.
Referenced by MuonBremsstrahlungSimulator::compute(), and radLenIncm().
double MaterialEffectsSimulator::radLengths [protected] |
Definition at line 89 of file MaterialEffectsSimulator.h.
Referenced by EnergyLossSimulator::compute(), NuclearInteractionSimulator::compute(), BremsstrahlungSimulator::compute(), PairProductionSimulator::compute(), MultipleScatteringSimulator::compute(), MuonBremsstrahlungSimulator::compute(), radiationLength(), and updateState().
const RandomEngine* MaterialEffectsSimulator::random [protected] |
Definition at line 99 of file MaterialEffectsSimulator.h.
Referenced by MuonBremsstrahlungSimulator::brem(), BremsstrahlungSimulator::brem(), NuclearInteractionSimulator::compute(), PairProductionSimulator::compute(), MultipleScatteringSimulator::compute(), PairProductionSimulator::gbteth(), MuonBremsstrahlungSimulator::gbteth(), BremsstrahlungSimulator::gbteth(), MaterialEffectsSimulator(), NuclearInteractionSimulator::NuclearInteractionSimulator(), MuonBremsstrahlungSimulator::poisson(), and BremsstrahlungSimulator::poisson().
int MaterialEffectsSimulator::theClosestChargedDaughterId [protected] |
Definition at line 101 of file MaterialEffectsSimulator.h.
Referenced by closestDaughterId(), NuclearInteractionSimulator::compute(), and updateState().
Definition at line 97 of file MaterialEffectsSimulator.h.
Referenced by MultipleScatteringSimulator::compute(), and setNormalVector().
double MaterialEffectsSimulator::Z [protected] |
Definition at line 93 of file MaterialEffectsSimulator.h.
Referenced by MuonBremsstrahlungSimulator::compute(), and theZ().