LArSoft
v06_85_00
Liquid Argon Software toolkit - http://larsoft.org/
|
#include "GFMaterialEffects.h"
Public Member Functions | |
void | setEnergyLossBetheBloch (bool opt=true) |
void | setNoiseBetheBloch (bool opt=true) |
void | setNoiseCoulomb (bool opt=true) |
void | setEnergyLossBrems (bool opt=true) |
void | setNoiseBrems (bool opt=true) |
double | effects (const std::vector< TVector3 > &points, const std::vector< double > &pointPaths, const double &mom, const int &pdg, const bool &doNoise=false, TMatrixT< Double_t > *noise=NULL, const TMatrixT< Double_t > *jacobian=NULL, const TVector3 *directionBefore=NULL, const TVector3 *directionAfter=NULL) |
Calculates energy loss in the travelled path, optional calculation of noise matrix. More... | |
double | stepper (const double &maxDist, const double &posx, const double &posy, const double &posz, const double &dirx, const double &diry, const double &dirz, const double &mom, const int &pdg) |
Returns maximum length so that a specified momentum loss will not be exceeded. More... | |
double | stepper (const double &maxDist, const TVector3 &pos, const TVector3 &dir, const double &mom, const int &pdg) |
Static Public Member Functions | |
static GFMaterialEffects * | getInstance () |
static void | destruct () |
Private Member Functions | |
GFMaterialEffects () | |
virtual | ~GFMaterialEffects () |
void | getParameters () |
contains energy loss classes More... | |
void | calcBeta (double mom) |
sets fbeta, fgamma, fgammasquare; must only be used after calling getParameters() More... | |
double | energyLossBetheBloch (const double &mom) |
Returns energy loss. More... | |
void | noiseBetheBloch (const double &mom, TMatrixT< double > *noise) const |
calculation of energy loss straggling More... | |
void | noiseCoulomb (const double &mom, TMatrixT< double > *noise, const TMatrixT< double > *jacobian, const TVector3 *directionBefore, const TVector3 *directionAfter) const |
calculation of multiple scattering More... | |
double | energyLossBrems (const double &mom) const |
Returns energy loss. More... | |
void | noiseBrems (const double &mom, TMatrixT< double > *noise) const |
calculation of energy loss straggeling More... | |
double | MeanExcEnergy_get (int Z) |
double | MeanExcEnergy_get (TGeoMaterial *) |
Private Attributes | |
bool | fEnergyLossBetheBloch |
bool | fNoiseBetheBloch |
bool | fNoiseCoulomb |
bool | fEnergyLossBrems |
bool | fNoiseBrems |
const double | me |
double | fstep |
double | fbeta |
double | fdedx |
double | fgamma |
double | fgammaSquare |
double | fmatDensity |
double | fmatZ |
double | fmatA |
double | fradiationLength |
double | fmEE |
int | fpdg |
double | fcharge |
double | fmass |
Static Private Attributes | |
static GFMaterialEffects * | finstance = NULL |
Definition at line 58 of file GFMaterialEffects.h.
|
private |
Definition at line 55 of file GFMaterialEffects.cxx.
Referenced by getInstance().
|
privatevirtual |
Definition at line 39 of file GFMaterialEffects.cxx.
|
private |
sets fbeta, fgamma, fgammasquare; must only be used after calling getParameters()
Definition at line 275 of file GFMaterialEffects.cxx.
References E, fbeta, fgamma, fgammaSquare, and fmass.
Referenced by effects(), and stepper().
|
static |
Definition at line 80 of file GFMaterialEffects.cxx.
References finstance.
double genf::GFMaterialEffects::effects | ( | const std::vector< TVector3 > & | points, |
const std::vector< double > & | pointPaths, | ||
const double & | mom, | ||
const int & | pdg, | ||
const bool & | doNoise = false , |
||
TMatrixT< Double_t > * | noise = NULL , |
||
const TMatrixT< Double_t > * | jacobian = NULL , |
||
const TVector3 * | directionBefore = NULL , |
||
const TVector3 * | directionAfter = NULL |
||
) |
Calculates energy loss in the travelled path, optional calculation of noise matrix.
Definition at line 87 of file GFMaterialEffects.cxx.
References calcBeta(), dir, E, energyLossBetheBloch(), energyLossBrems(), fEnergyLossBetheBloch, fEnergyLossBrems, fmatZ, fNoiseBetheBloch, fNoiseBrems, fNoiseCoulomb, fpdg, fstep, getParameters(), noiseBetheBloch(), noiseBrems(), noiseCoulomb(), and X.
Referenced by genf::RKTrackRep::Extrap(), and setNoiseBrems().
|
private |
Returns energy loss.
Uses Bethe Bloch formula to calculate energy loss. Calcuates and sets fdedx which needed also for noiseBetheBloch. Therefore it is not a const function!
Definition at line 289 of file GFMaterialEffects.cxx.
References E, fbeta, fcharge, fdedx, fgammaSquare, fmass, fmatA, fmatDensity, fmatZ, fmEE, fstep, and me.
Referenced by effects(), and stepper().
|
private |
Returns energy loss.
Can be called with any pdg, but only calculates energy loss for electrons and positrons (otherwise returns 0). Uses a gaussian approximation (Bethe-Heitler formula with Migdal corrections). For positrons the energy loss is weighed with a correction factor.
Definition at line 483 of file GFMaterialEffects.cxx.
References beta, E, fbeta, fmass, fmatA, fmatDensity, fmatZ, fpdg, fstep, K, util::kc, me, X, and Y.
Referenced by effects(), and stepper().
|
static |
Definition at line 75 of file GFMaterialEffects.cxx.
References finstance, and GFMaterialEffects().
Referenced by genf::RKTrackRep::Extrap(), and genf::RKTrackRep::RKutta().
|
private |
contains energy loss classes
interface to material and geometry
Definition at line 254 of file GFMaterialEffects.cxx.
References fcharge, fmass, fmatA, fmatDensity, fmatZ, fmEE, fpdg, fradiationLength, mat, MeanExcEnergy_get(), and part.
Referenced by effects(), and stepper().
|
private |
Definition at line 669 of file GFMaterialEffects.cxx.
References MeanExcEnergy_NELEMENTS, MeanExcEnergy_vals, GFException::setFatal(), and Z.
Referenced by getParameters(), MeanExcEnergy_get(), and stepper().
|
private |
Definition at line 675 of file GFMaterialEffects.cxx.
References MeanExcEnergy_get().
|
private |
calculation of energy loss straggling
For the energy loss straggeling, different formulas are used for different regions:
Needs fdedx, which is calculated in energyLossBetheBloch, so it has to be calles afterwards!
Definition at line 326 of file GFMaterialEffects.cxx.
References larg4::f1, larg4::f2, fbeta, fcharge, fdedx, fgamma, fgammaSquare, fmass, fmatA, fmatDensity, fmatZ, fstep, and me.
Referenced by effects(), and stepper().
|
private |
calculation of energy loss straggeling
Can be called with any pdg, but only calculates straggeling for electrons and positrons.
Definition at line 645 of file GFMaterialEffects.cxx.
References fmass, fpdg, fradiationLength, and fstep.
Referenced by effects(), and stepper().
|
private |
calculation of multiple scattering
With the calculated multiple scattering angle, two noise matrices are calculated:
Now the global coordinate system cs is:
with the Euler angles
is the multiple scattering error-matrix in the coordinate system. are the multiple scattering angles. There is only an error in direction (which later leads to an error in position, when is propagated with ).
This translates into the noise matrix in the local cs' via jacobian J. The mean scattering angle is always 0, this means that ):
The following transformation brings the noise matrix into the global coordinate system cs, resulting in :
Now two are calculated: (at the start point, with initial direction #directionBefore) and (at the final point, with direction #directionAfter). is the propagated with the #jacobian of extrapolation . The new covariance matrix with multiple scattering in global cs is:
See also: Track following in dense media and inhomogeneous magnetic fields, A.Fontana, P.Genova, L.Lavezzi and A.Rotondi; PANDA Report PV/01-07
Definition at line 389 of file GFMaterialEffects.cxx.
References E, fbeta, fmatZ, fradiationLength, and fstep.
Referenced by effects(), and stepper().
|
inline |
Definition at line 69 of file GFMaterialEffects.h.
References fEnergyLossBetheBloch.
|
inline |
|
inline |
|
inline |
Definition at line 73 of file GFMaterialEffects.h.
References effects(), fNoiseBrems, noise(), and stepper().
|
inline |
double genf::GFMaterialEffects::stepper | ( | const double & | maxDist, |
const double & | posx, | ||
const double & | posy, | ||
const double & | posz, | ||
const double & | dirx, | ||
const double & | diry, | ||
const double & | dirz, | ||
const double & | mom, | ||
const int & | pdg | ||
) |
Returns maximum length so that a specified momentum loss will not be exceeded.
The stepper returns the maximum length that the particle may travel, so that a specified relative momentum loss will not be exceeded.
Definition at line 182 of file GFMaterialEffects.cxx.
References calcBeta(), E, energyLossBetheBloch(), energyLossBrems(), fEnergyLossBetheBloch, fEnergyLossBrems, fmatZ, fstep, getParameters(), and X.
Referenced by genf::RKTrackRep::RKutta(), setNoiseBrems(), and stepper().
|
inline |
Definition at line 98 of file GFMaterialEffects.h.
References calcBeta(), energyLossBetheBloch(), energyLossBrems(), getParameters(), MeanExcEnergy_get(), noise(), noiseBetheBloch(), noiseBrems(), noiseCoulomb(), stepper(), and Z.
|
private |
Definition at line 358 of file GFMaterialEffects.h.
Referenced by calcBeta(), energyLossBetheBloch(), energyLossBrems(), noiseBetheBloch(), and noiseCoulomb().
|
private |
Definition at line 370 of file GFMaterialEffects.h.
Referenced by energyLossBetheBloch(), getParameters(), and noiseBetheBloch().
|
private |
Definition at line 359 of file GFMaterialEffects.h.
Referenced by energyLossBetheBloch(), and noiseBetheBloch().
|
private |
Definition at line 347 of file GFMaterialEffects.h.
Referenced by effects(), setEnergyLossBetheBloch(), and stepper().
|
private |
Definition at line 350 of file GFMaterialEffects.h.
Referenced by effects(), setEnergyLossBrems(), and stepper().
|
private |
Definition at line 360 of file GFMaterialEffects.h.
Referenced by calcBeta(), and noiseBetheBloch().
|
private |
Definition at line 361 of file GFMaterialEffects.h.
Referenced by calcBeta(), energyLossBetheBloch(), and noiseBetheBloch().
|
staticprivate |
Definition at line 63 of file GFMaterialEffects.h.
Referenced by destruct(), and getInstance().
|
private |
Definition at line 371 of file GFMaterialEffects.h.
Referenced by calcBeta(), energyLossBetheBloch(), energyLossBrems(), getParameters(), noiseBetheBloch(), and noiseBrems().
|
private |
Definition at line 365 of file GFMaterialEffects.h.
Referenced by energyLossBetheBloch(), energyLossBrems(), getParameters(), and noiseBetheBloch().
|
private |
Definition at line 363 of file GFMaterialEffects.h.
Referenced by energyLossBetheBloch(), energyLossBrems(), getParameters(), and noiseBetheBloch().
|
private |
Definition at line 364 of file GFMaterialEffects.h.
Referenced by effects(), energyLossBetheBloch(), energyLossBrems(), getParameters(), noiseBetheBloch(), noiseCoulomb(), and stepper().
|
private |
Definition at line 367 of file GFMaterialEffects.h.
Referenced by energyLossBetheBloch(), and getParameters().
|
private |
Definition at line 348 of file GFMaterialEffects.h.
Referenced by effects(), and setNoiseBetheBloch().
|
private |
Definition at line 351 of file GFMaterialEffects.h.
Referenced by effects(), and setNoiseBrems().
|
private |
Definition at line 349 of file GFMaterialEffects.h.
Referenced by effects(), and setNoiseCoulomb().
|
private |
Definition at line 369 of file GFMaterialEffects.h.
Referenced by effects(), energyLossBrems(), getParameters(), and noiseBrems().
|
private |
Definition at line 366 of file GFMaterialEffects.h.
Referenced by getParameters(), noiseBrems(), and noiseCoulomb().
|
private |
Definition at line 355 of file GFMaterialEffects.h.
Referenced by effects(), energyLossBetheBloch(), energyLossBrems(), noiseBetheBloch(), noiseBrems(), noiseCoulomb(), and stepper().
|
private |
Definition at line 353 of file GFMaterialEffects.h.
Referenced by energyLossBetheBloch(), energyLossBrems(), and noiseBetheBloch().