CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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 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 (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. 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...
 
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)
 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
 
const RandomEnginerandom
 
int theClosestChargedDaughterId
 
GlobalVector theNormalVector
 
double Z
 

Private Member Functions

virtual void compute (ParticlePropagator &Particle)=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 23 of file MaterialEffectsSimulator.h.

Member Typedef Documentation

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

Definition at line 27 of file MaterialEffectsSimulator.h.

Constructor & Destructor Documentation

MaterialEffectsSimulator::MaterialEffectsSimulator ( const RandomEngine engine,
double  A = 28.0855,
double  Z = 14.0000,
double  density = 2.329,
double  radLen = 9.360 
)
MaterialEffectsSimulator::~MaterialEffectsSimulator ( )
virtual

Definition at line 19 of file MaterialEffectsSimulator.cc.

References _theUpdatedState.

19  {
20  // Don't delete the objects contained in the list
21  _theUpdatedState.clear();
22 }
std::vector< RawParticle > _theUpdatedState

Member Function Documentation

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().

59 {return _theUpdatedState.begin();}
std::vector< RawParticle > _theUpdatedState
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().

virtual void MaterialEffectsSimulator::compute ( ParticlePropagator Particle)
privatepure virtual
double MaterialEffectsSimulator::eMass ( ) const
inline

Electron mass in GeV/c2.

Definition at line 52 of file MaterialEffectsSimulator.h.

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

52 { 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().

62 {return _theUpdatedState.end();}
std::vector< RawParticle > _theUpdatedState
double MaterialEffectsSimulator::excitE ( ) const
inline

Mean excitation energy (in GeV)

Definition at line 50 of file MaterialEffectsSimulator.h.

References theZ().

Referenced by EnergyLossSimulator::compute().

50 { 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().

65 {return _theUpdatedState.size();}
std::vector< RawParticle > _theUpdatedState
XYZVector MaterialEffectsSimulator::orthogonal ( const XYZVector aVector) const

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

Definition at line 37 of file MaterialEffectsSimulator.cc.

References vdt::x, detailsBasic3DVector::y, and detailsBasic3DVector::z.

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

37  {
38 
39  double x = fabs(aVector.X());
40  double y = fabs(aVector.Y());
41  double z = fabs(aVector.Z());
42 
43  if ( x < y )
44  return x < z ?
45  XYZVector(0.,aVector.Z(),-aVector.Y()) :
46  XYZVector(aVector.Y(),-aVector.X(),0.);
47  else
48  return y < z ?
49  XYZVector(-aVector.Z(),0.,aVector.X()) :
50  XYZVector(aVector.Y(),-aVector.X(),0.);
51 
52 }
double double double z
XYZVectorD XYZVector
spatial vector with cartesian internal representation
Definition: Vector3D.h:31
x
Definition: VDTMath.h:216
double MaterialEffectsSimulator::radiationLength ( ) const
inlineprivate

Returns the fraction of radiation lengths traversed.

Definition at line 82 of file MaterialEffectsSimulator.h.

References radLengths.

double MaterialEffectsSimulator::radLenIncm ( ) const
inline

One radiation length in cm.

Definition at line 48 of file MaterialEffectsSimulator.h.

References radLen.

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

double MaterialEffectsSimulator::rho ( ) const
inline

Density in g/cm3.

Definition at line 46 of file MaterialEffectsSimulator.h.

References density.

Referenced by EnergyLossSimulator::compute().

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().

68 { 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().

42 { return A; }
double MaterialEffectsSimulator::theZ ( ) const
inline
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().

26 {
27 
28  _theUpdatedState.clear();
30 
31  radLengths = radlen;
32  if ( radLengths > 0. ) compute(Particle);
33 
34 }
virtual void compute(ParticlePropagator &Particle)=0
Overloaded in all material effects updtators.
std::vector< RawParticle > _theUpdatedState

Member Data Documentation

std::vector<RawParticle> MaterialEffectsSimulator::_theUpdatedState
protected
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
const RandomEngine* MaterialEffectsSimulator::random
protected
int MaterialEffectsSimulator::theClosestChargedDaughterId
protected
GlobalVector MaterialEffectsSimulator::theNormalVector
protected
double MaterialEffectsSimulator::Z
protected