CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Protected Attributes | Private Member Functions
MaterialEffectsSimulator Class Referenceabstract

#include <MaterialEffectsSimulator.h>

Inheritance diagram for MaterialEffectsSimulator:
BremsstrahlungSimulator EnergyLossSimulator MultipleScatteringSimulator MuonBremsstrahlungSimulator NuclearInteractionFTFSimulator NuclearInteractionSimulator PairProductionSimulator

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. More...
 
int closestDaughterId ()
 The id of the closest charged daughter (filled for nuclear interactions only) More...
 
double eMass () const
 Electron mass in GeV/c2. More...
 
RHEP_const_iter endDaughters () const
 Returns const iterator to the end of the daughters list. More...
 
double excitE () const
 Mean excitation energy (in GeV) More...
 
 MaterialEffectsSimulator (double A=28.0855, double Z=14.0000, double density=2.329, double radLen=9.360)
 
unsigned nDaughters () const
 Returns the number of daughters. More...
 
XYZVector orthogonal (const XYZVector &) const
 A vector orthogonal to another one (because it's not in XYZTLorentzVector) More...
 
double radLenIncm () const
 One radiation length in cm. More...
 
double rho () const
 Density in g/cm3. More...
 
virtual void save ()
 Used by NuclearInteractionSimulator to save last sampled event. More...
 
void setNormalVector (const GlobalVector &normal)
 Sets the vector normal to the surface traversed. More...
 
double theA () const
 A. More...
 
double theZ () const
 Z. More...
 
void updateState (ParticlePropagator &myTrack, double radlen, RandomEngineAndDistribution const *)
 Compute the material effect (calls the sub class) More...
 
virtual ~MaterialEffectsSimulator ()
 

Protected Attributes

std::vector< RawParticle_theUpdatedState
 
double A
 
double density
 
double radLen
 
double radLengths
 
int theClosestChargedDaughterId
 
GlobalVector theNormalVector
 
double Z
 

Private Member Functions

virtual void compute (ParticlePropagator &Particle, RandomEngineAndDistribution const *)=0
 Overloaded in all material effects updtators. More...
 
double radiationLength () const
 Returns the fraction of radiation lengths traversed. More...
 

Detailed Description

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.

Author
Stephan Wynhoff, Florian Beaudette, Patrick Janot $Date: Last update 8-Jan-2004

Definition at line 25 of file MaterialEffectsSimulator.h.

Member Typedef Documentation

◆ RHEP_const_iter

typedef std::vector<RawParticle>::const_iterator MaterialEffectsSimulator::RHEP_const_iter

Definition at line 27 of file MaterialEffectsSimulator.h.

Constructor & Destructor Documentation

◆ MaterialEffectsSimulator()

MaterialEffectsSimulator::MaterialEffectsSimulator ( double  A = 28.0855,
double  Z = 14.0000,
double  density = 2.329,
double  radLen = 9.360 
)

Definition at line 9 of file MaterialEffectsSimulator.cc.

10  : A(A), Z(Z), density(density), radLen(radLen) {
11  _theUpdatedState.clear();
12 }

References _theUpdatedState.

◆ ~MaterialEffectsSimulator()

MaterialEffectsSimulator::~MaterialEffectsSimulator ( )
virtual

Definition at line 14 of file MaterialEffectsSimulator.cc.

14  {
15  // Don't delete the objects contained in the list
16  _theUpdatedState.clear();
17 }

References _theUpdatedState.

Member Function Documentation

◆ beginDaughters()

RHEP_const_iter MaterialEffectsSimulator::beginDaughters ( ) const
inline

Returns const iterator to the beginning of the daughters list.

Definition at line 54 of file MaterialEffectsSimulator.h.

54 { return _theUpdatedState.begin(); }

References _theUpdatedState.

Referenced by MaterialEffects::interact().

◆ closestDaughterId()

int MaterialEffectsSimulator::closestDaughterId ( )
inline

The id of the closest charged daughter (filled for nuclear interactions only)

Definition at line 69 of file MaterialEffectsSimulator.h.

References theClosestChargedDaughterId.

Referenced by MaterialEffects::interact().

◆ compute()

virtual void MaterialEffectsSimulator::compute ( ParticlePropagator Particle,
RandomEngineAndDistribution const *   
)
privatepure virtual

◆ eMass()

double MaterialEffectsSimulator::eMass ( ) const
inline

Electron mass in GeV/c2.

Definition at line 48 of file MaterialEffectsSimulator.h.

48 { return 0.000510998902; }

Referenced by PairProductionSimulator::compute(), and EnergyLossSimulator::compute().

◆ endDaughters()

RHEP_const_iter MaterialEffectsSimulator::endDaughters ( ) const
inline

Returns const iterator to the end of the daughters list.

Definition at line 57 of file MaterialEffectsSimulator.h.

57 { return _theUpdatedState.end(); }

References _theUpdatedState.

Referenced by MaterialEffects::interact().

◆ excitE()

double MaterialEffectsSimulator::excitE ( ) const
inline

Mean excitation energy (in GeV)

Definition at line 46 of file MaterialEffectsSimulator.h.

46 { return 12.5E-9 * theZ(); }

References theZ().

Referenced by EnergyLossSimulator::compute().

◆ nDaughters()

unsigned MaterialEffectsSimulator::nDaughters ( ) const
inline

Returns the number of daughters.

Definition at line 60 of file MaterialEffectsSimulator.h.

60 { return _theUpdatedState.size(); }

References _theUpdatedState.

Referenced by MaterialEffects::interact().

◆ orthogonal()

XYZVector MaterialEffectsSimulator::orthogonal ( const XYZVector aVector) const

A vector orthogonal to another one (because it's not in XYZTLorentzVector)

Definition at line 30 of file MaterialEffectsSimulator.cc.

30  {
31  double x = fabs(aVector.X());
32  double y = fabs(aVector.Y());
33  double z = fabs(aVector.Z());
34 
35  if (x < y)
36  return x < z ? XYZVector(0., aVector.Z(), -aVector.Y()) : XYZVector(aVector.Y(), -aVector.X(), 0.);
37  else
38  return y < z ? XYZVector(-aVector.Z(), 0., aVector.X()) : XYZVector(aVector.Y(), -aVector.X(), 0.);
39 }

References x, y, and z.

Referenced by MultipleScatteringSimulator::compute(), and NuclearInteractionSimulator::compute().

◆ radiationLength()

double MaterialEffectsSimulator::radiationLength ( ) const
inlineprivate

Returns the fraction of radiation lengths traversed.

Definition at line 79 of file MaterialEffectsSimulator.h.

79 { return radLengths; }

References radLengths.

◆ radLenIncm()

double MaterialEffectsSimulator::radLenIncm ( ) const
inline

One radiation length in cm.

Definition at line 44 of file MaterialEffectsSimulator.h.

44 { return radLen; }

References radLen.

Referenced by MultipleScatteringSimulator::compute(), and EnergyLossSimulator::compute().

◆ rho()

double MaterialEffectsSimulator::rho ( ) const
inline

Density in g/cm3.

Definition at line 42 of file MaterialEffectsSimulator.h.

42 { return density; }

References density.

Referenced by Lepton.Lepton::absIsoFromEA(), Muon.Muon::absIsoWithFSR(), and EnergyLossSimulator::compute().

◆ save()

virtual void MaterialEffectsSimulator::save ( )
inlinevirtual

Used by NuclearInteractionSimulator to save last sampled event.

Reimplemented in NuclearInteractionSimulator.

Definition at line 72 of file MaterialEffectsSimulator.h.

72 {};

Referenced by MaterialEffects::save().

◆ setNormalVector()

void MaterialEffectsSimulator::setNormalVector ( const GlobalVector normal)
inline

Sets the vector normal to the surface traversed.

Definition at line 63 of file MaterialEffectsSimulator.h.

63 { theNormalVector = normal; }

References theNormalVector.

Referenced by MaterialEffects::interact().

◆ theA()

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 38 of file MaterialEffectsSimulator.h.

38 { return A; }

References A.

Referenced by EnergyLossSimulator::compute(), and NuclearInteractionSimulator::compute().

◆ theZ()

double MaterialEffectsSimulator::theZ ( ) const
inline

◆ updateState()

void MaterialEffectsSimulator::updateState ( ParticlePropagator myTrack,
double  radlen,
RandomEngineAndDistribution const *  random 
)

Compute the material effect (calls the sub class)

Definition at line 19 of file MaterialEffectsSimulator.cc.

21  {
22  _theUpdatedState.clear();
24 
25  radLengths = radlen;
26  if (radLengths > 0.)
27  compute(Particle, random);
28 }

References _theUpdatedState, compute(), radLengths, and theClosestChargedDaughterId.

Referenced by MaterialEffects::interact(), and CalorimetryManager::MuonMipSimulation().

Member Data Documentation

◆ _theUpdatedState

std::vector<RawParticle> MaterialEffectsSimulator::_theUpdatedState
protected

◆ A

double MaterialEffectsSimulator::A
protected

Definition at line 87 of file MaterialEffectsSimulator.h.

Referenced by MuonBremsstrahlungSimulator::compute(), and theA().

◆ density

double MaterialEffectsSimulator::density
protected

Definition at line 89 of file MaterialEffectsSimulator.h.

Referenced by MuonBremsstrahlungSimulator::compute(), and rho().

◆ radLen

double MaterialEffectsSimulator::radLen
protected

Definition at line 90 of file MaterialEffectsSimulator.h.

Referenced by MuonBremsstrahlungSimulator::compute(), and radLenIncm().

◆ radLengths

double MaterialEffectsSimulator::radLengths
protected

◆ theClosestChargedDaughterId

int MaterialEffectsSimulator::theClosestChargedDaughterId
protected

◆ theNormalVector

GlobalVector MaterialEffectsSimulator::theNormalVector
protected

◆ Z

double MaterialEffectsSimulator::Z
protected
DDAxes::y
MaterialEffectsSimulator::_theUpdatedState
std::vector< RawParticle > _theUpdatedState
Definition: MaterialEffectsSimulator.h:82
MaterialEffectsSimulator::theNormalVector
GlobalVector theNormalVector
Definition: MaterialEffectsSimulator.h:92
XYZVector
math::XYZVector XYZVector
Definition: RawParticle.h:26
DDAxes::x
MaterialEffectsSimulator::theZ
double theZ() const
Z.
Definition: MaterialEffectsSimulator.h:40
MaterialEffectsSimulator::theClosestChargedDaughterId
int theClosestChargedDaughterId
Definition: MaterialEffectsSimulator.h:94
MaterialEffectsSimulator::compute
virtual void compute(ParticlePropagator &Particle, RandomEngineAndDistribution const *)=0
Overloaded in all material effects updtators.
MaterialEffectsSimulator::Z
double Z
Definition: MaterialEffectsSimulator.h:88
DDAxes::z
MaterialEffectsSimulator::radLengths
double radLengths
Definition: MaterialEffectsSimulator.h:84
MaterialEffectsSimulator::density
double density
Definition: MaterialEffectsSimulator.h:89
A
MaterialEffectsSimulator::radLen
double radLen
Definition: MaterialEffectsSimulator.h:90
Particle
Definition: Particle.py:1
MaterialEffectsSimulator::A
double A
Definition: MaterialEffectsSimulator.h:87