#include <FastSimulation/MaterialEffects/interface/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 |
Functions to return atomic properties of the material Here the tracker material is assumed to be 100% Silicon. | |
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. |
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.
00012 : 00013 A(A), Z(Z), density(density), radLen(radLen) 00014 { 00015 random = engine; 00016 _theUpdatedState.clear(); 00017 }
MaterialEffectsSimulator::~MaterialEffectsSimulator | ( | ) | [virtual] |
Definition at line 19 of file MaterialEffectsSimulator.cc.
References _theUpdatedState.
00019 { 00020 // Don't delete the objects contained in the list 00021 _theUpdatedState.clear(); 00022 }
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().
00059 {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().
00074 { return theClosestChargedDaughterId; }
virtual void MaterialEffectsSimulator::compute | ( | ParticlePropagator & | Particle | ) | [private, pure virtual] |
Overloaded in all material effects updtators.
Implemented in BremsstrahlungSimulator, EnergyLossSimulator, MultipleScatteringSimulator, 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().
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().
00062 {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().
00050 { 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().
00065 {return _theUpdatedState.size();}
A vector orthogonal to another one (because it's not in XYZTLorentzVector).
Definition at line 37 of file MaterialEffectsSimulator.cc.
Referenced by NuclearInteractionSimulator::compute(), and MultipleScatteringSimulator::compute().
00037 { 00038 00039 double x = fabs(aVector.X()); 00040 double y = fabs(aVector.Y()); 00041 double z = fabs(aVector.Z()); 00042 00043 if ( x < y ) 00044 return x < z ? 00045 XYZVector(0.,aVector.Z(),-aVector.Y()) : 00046 XYZVector(aVector.Y(),-aVector.X(),0.); 00047 else 00048 return y < z ? 00049 XYZVector(-aVector.Z(),0.,aVector.X()) : 00050 XYZVector(aVector.Y(),-aVector.X(),0.); 00051 00052 }
double MaterialEffectsSimulator::radiationLength | ( | ) | const [inline, private] |
Returns the fraction of radiation lengths traversed.
Definition at line 82 of file MaterialEffectsSimulator.h.
References radLengths.
00082 {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().
00048 { 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().
00046 { 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().
00068 { theNormalVector = normal; }
double MaterialEffectsSimulator::theA | ( | ) | const [inline] |
Functions to return atomic properties of the material Here the tracker material is assumed to be 100% Silicon.
A
Definition at line 42 of file MaterialEffectsSimulator.h.
References A.
Referenced by EnergyLossSimulator::compute(), and NuclearInteractionSimulator::compute().
00042 { 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(), and BremsstrahlungSimulator::gbteth().
00044 { 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(), and MaterialEffects::interact().
00026 { 00027 00028 _theUpdatedState.clear(); 00029 theClosestChargedDaughterId = -1; 00030 00031 radLengths = radlen; 00032 if ( radLengths > 0. ) compute(Particle); 00033 00034 }
std::vector<RawParticle> MaterialEffectsSimulator::_theUpdatedState [protected] |
Definition at line 87 of file MaterialEffectsSimulator.h.
Referenced by beginDaughters(), NuclearInteractionSimulator::compute(), BremsstrahlungSimulator::compute(), PairProductionSimulator::compute(), endDaughters(), MaterialEffectsSimulator(), nDaughters(), updateState(), and ~MaterialEffectsSimulator().
double MaterialEffectsSimulator::A [protected] |
double MaterialEffectsSimulator::density [protected] |
double MaterialEffectsSimulator::radLen [protected] |
double MaterialEffectsSimulator::radLengths [protected] |
Definition at line 89 of file MaterialEffectsSimulator.h.
Referenced by EnergyLossSimulator::compute(), NuclearInteractionSimulator::compute(), BremsstrahlungSimulator::compute(), PairProductionSimulator::compute(), MultipleScatteringSimulator::compute(), radiationLength(), and updateState().
const RandomEngine* MaterialEffectsSimulator::random [protected] |
Definition at line 99 of file MaterialEffectsSimulator.h.
Referenced by BremsstrahlungSimulator::brem(), NuclearInteractionSimulator::compute(), PairProductionSimulator::compute(), MultipleScatteringSimulator::compute(), PairProductionSimulator::gbteth(), BremsstrahlungSimulator::gbteth(), MaterialEffectsSimulator(), NuclearInteractionSimulator::NuclearInteractionSimulator(), and BremsstrahlungSimulator::poisson().
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] |