CMS 3D CMS Logo

Public Types | Public Member Functions | Protected Attributes | Private Member Functions

MaterialEffectsSimulator Class Reference

#include <MaterialEffectsSimulator.h>

Inheritance diagram for MaterialEffectsSimulator:
BremsstrahlungSimulator EnergyLossSimulator MultipleScatteringSimulator NuclearInteractionSimulator PairProductionSimulator

List of all members.

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 RandomEnginerandom
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.

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 
)

Definition at line 10 of file MaterialEffectsSimulator.cc.

References _theUpdatedState, and random.

                                                                                   :
  A(A), Z(Z), density(density), radLen(radLen)
{ 
  random = engine;
  _theUpdatedState.clear(); 
}
MaterialEffectsSimulator::~MaterialEffectsSimulator ( ) [virtual]

Definition at line 19 of file MaterialEffectsSimulator.cc.

References _theUpdatedState.

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

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

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

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

{ 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();}
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 ExpressReco_HICollisions_FallBack::x, ExpressReco_HICollisions_FallBack::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]
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);

}

Member Data Documentation

double MaterialEffectsSimulator::A [protected]

Definition at line 92 of file MaterialEffectsSimulator.h.

Referenced by theA().

Definition at line 94 of file MaterialEffectsSimulator.h.

Referenced by rho().

Definition at line 95 of file MaterialEffectsSimulator.h.

Referenced by radLenIncm().

double MaterialEffectsSimulator::Z [protected]

Definition at line 93 of file MaterialEffectsSimulator.h.

Referenced by theZ().