LArSoft
v09_90_00
Liquid Argon Software toolkit - https://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 50 of file GFMaterialEffects.h.
|
private |
Definition at line 55 of file GFMaterialEffects.cxx.
Referenced by getInstance().
|
privatevirtual |
Definition at line 38 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 83 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 91 of file GFMaterialEffects.cxx.
References calcBeta(), dir, larg4::dist(), 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 290 of file GFMaterialEffects.cxx.
References E, fbeta, fcharge, fdedx, fgammaSquare, fmass, fmatA, fmatDensity, fmatZ, fmEE, fstep, and me.
|
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 508 of file GFMaterialEffects.cxx.
References E, fbeta, fmass, fmatA, fmatDensity, fmatZ, fpdg, fstep, util::kc, me, X, and Y.
Referenced by effects(), and stepper().
|
static |
Definition at line 77 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 251 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 747 of file GFMaterialEffects.cxx.
References MeanExcEnergy_NELEMENTS, MeanExcEnergy_vals, GFException::setFatal(), and Z.
Referenced by getParameters(), MeanExcEnergy_get(), and stepper().
|
private |
Definition at line 754 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 329 of file GFMaterialEffects.cxx.
References f1, 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 717 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 394 of file GFMaterialEffects.cxx.
References E, fbeta, fmatZ, fradiationLength, and fstep.
Referenced by effects(), and stepper().
|
inline |
Definition at line 60 of file GFMaterialEffects.h.
References fEnergyLossBetheBloch.
|
inline |
|
inline |
|
inline |
Definition at line 64 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 180 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 89 of file GFMaterialEffects.h.
References calcBeta(), energyLossBetheBloch(), energyLossBrems(), getParameters(), MeanExcEnergy_get(), noise(), noiseBetheBloch(), noiseBrems(), noiseCoulomb(), stepper(), and Z.
|
private |
Definition at line 349 of file GFMaterialEffects.h.
Referenced by calcBeta(), energyLossBetheBloch(), energyLossBrems(), noiseBetheBloch(), and noiseCoulomb().
|
private |
Definition at line 361 of file GFMaterialEffects.h.
Referenced by energyLossBetheBloch(), getParameters(), and noiseBetheBloch().
|
private |
Definition at line 350 of file GFMaterialEffects.h.
Referenced by energyLossBetheBloch(), and noiseBetheBloch().
|
private |
Definition at line 338 of file GFMaterialEffects.h.
Referenced by effects(), setEnergyLossBetheBloch(), and stepper().
|
private |
Definition at line 341 of file GFMaterialEffects.h.
Referenced by effects(), setEnergyLossBrems(), and stepper().
|
private |
Definition at line 351 of file GFMaterialEffects.h.
Referenced by calcBeta(), and noiseBetheBloch().
|
private |
Definition at line 352 of file GFMaterialEffects.h.
Referenced by calcBeta(), energyLossBetheBloch(), and noiseBetheBloch().
|
staticprivate |
Definition at line 54 of file GFMaterialEffects.h.
Referenced by destruct(), and getInstance().
|
private |
Definition at line 362 of file GFMaterialEffects.h.
Referenced by calcBeta(), energyLossBetheBloch(), energyLossBrems(), getParameters(), noiseBetheBloch(), and noiseBrems().
|
private |
Definition at line 356 of file GFMaterialEffects.h.
Referenced by energyLossBetheBloch(), energyLossBrems(), getParameters(), and noiseBetheBloch().
|
private |
Definition at line 354 of file GFMaterialEffects.h.
Referenced by energyLossBetheBloch(), energyLossBrems(), getParameters(), and noiseBetheBloch().
|
private |
Definition at line 355 of file GFMaterialEffects.h.
Referenced by effects(), energyLossBetheBloch(), energyLossBrems(), getParameters(), noiseBetheBloch(), noiseCoulomb(), and stepper().
|
private |
Definition at line 358 of file GFMaterialEffects.h.
Referenced by energyLossBetheBloch(), and getParameters().
|
private |
Definition at line 339 of file GFMaterialEffects.h.
Referenced by effects(), and setNoiseBetheBloch().
|
private |
Definition at line 342 of file GFMaterialEffects.h.
Referenced by effects(), and setNoiseBrems().
|
private |
Definition at line 340 of file GFMaterialEffects.h.
Referenced by effects(), and setNoiseCoulomb().
|
private |
Definition at line 360 of file GFMaterialEffects.h.
Referenced by effects(), energyLossBrems(), getParameters(), and noiseBrems().
|
private |
Definition at line 357 of file GFMaterialEffects.h.
Referenced by getParameters(), noiseBrems(), and noiseCoulomb().
|
private |
Definition at line 346 of file GFMaterialEffects.h.
Referenced by effects(), energyLossBetheBloch(), energyLossBrems(), noiseBetheBloch(), noiseBrems(), noiseCoulomb(), and stepper().
|
private |
Definition at line 344 of file GFMaterialEffects.h.
Referenced by energyLossBetheBloch(), energyLossBrems(), and noiseBetheBloch().