24 #ifndef genfit_MaterialEffects_h
25 #define genfit_MaterialEffects_h
28 #include "AbsMaterialInterface.h"
63 static void destruct();
69 void setNoEffects(
bool opt =
true) {noEffects_ = opt;}
71 void setEnergyLossBetheBloch(
bool opt =
true) {energyLossBetheBloch_ = opt; noEffects_ =
false;}
72 void setNoiseBetheBloch(
bool opt =
true) {noiseBetheBloch_ = opt; noEffects_ =
false;}
73 void setNoiseCoulomb(
bool opt =
true) {noiseCoulomb_ = opt; noEffects_ =
false;}
74 void setEnergyLossBrems(
bool opt =
true) {energyLossBrems_ = opt; noEffects_ =
false;}
75 void setNoiseBrems(
bool opt =
true) {noiseBrems_ = opt; noEffects_ =
false;}
76 void ignoreBoundariesBetweenEqualMaterials(
bool opt =
true) {ignoreBoundariesBetweenEqualMaterials_ = opt;}
77 void setMagCharge(
double magCharge) {mag_charge_ = magCharge;}
88 double effects(
const std::vector<RKStep>& steps,
93 M7x7* noise =
nullptr);
107 bool varField =
true);
109 void setDebugLvl(
unsigned int lvl = 1);
112 void drawdEdx(
int pdg = 11);
119 void getMomGammaBeta(
double Energy,
120 double& mom,
double& gammaSquare,
double& gamma,
double& betaSquare)
const;
126 double momentumLoss(
double stepSign,
double mom,
bool linear);
129 double dEdx(
double Energy);
133 double dEdxBetheBloch(
double betaSquare,
double gamma,
double gammasquare)
const;
144 void noiseBetheBloch(
M7x7& noise,
double mom,
double betaSquare,
double gamma,
double gammaSquare)
const;
155 const M1x3& direction,
double momSquare,
double betaSquare)
const;
167 void noiseBrems(
M7x7& noise,
double momSquare,
double betaSquare)
const;
173 bool energyLossBetheBloch_;
174 bool noiseBetheBloch_;
176 bool energyLossBrems_;
179 bool ignoreBoundariesBetweenEqualMaterials_;
191 double radiationLength_;
203 unsigned int debugLvl_;
Abstract base class for geometry interfacing.
Stepper and energy loss/noise matrix calculation.
void getParticleParameters()
sets charge_, mass_
void noiseBrems(M7x7 &noise, double momSquare, double betaSquare) const
calculation of energy loss straggeling
double dEdxBrems(double mom) const
Returns dEdx.
void setMscModel(const std::string &modelName)
Select the multiple scattering model that will be used during track fit.
AbsMaterialInterface * materialInterface_
depending on this number a specific msc model is chosen in the noiseCoulomb function.
double dEdxBetheBloch(double betaSquare, double gamma, double gammasquare) const
Uses Bethe Bloch formula to calculate dEdx.
void noiseCoulomb(M7x7 &noise, const M1x3 &direction, double momSquare, double betaSquare) const
calculation of multiple scattering
void init(AbsMaterialInterface *matIfc)
set the material interface here. Material interface classes must be derived from AbsMaterialInterface...
double momentumLoss(double stepSign, double mom, bool linear)
Returns momentum loss.
double dEdx(double Energy)
Calculate dEdx for a given energy.
void stepper(const RKTrackRep *rep, M1x7 &state7, const double &mom, double &relMomLoss, const int &pdg, Material ¤tMaterial, StepLimits &limits, bool varField=true)
Returns maximum length so that a specified momentum loss will not be exceeded.
void noiseBetheBloch(M7x7 &noise, double mom, double betaSquare, double gamma, double gammaSquare) const
calculation of energy loss straggeling
double effects(const std::vector< RKStep > &steps, int materialsFXStart, int materialsFXStop, const double &mom, const int &pdg, M7x7 *noise=nullptr)
Calculates energy loss in the traveled path, optional calculation of noise matrix.
AbsTrackRep with 5D track parameterization in plane coordinates: (q/p, u', v', u, v)
Helper to store different limits on the stepsize for the RKTRackRep.
Defines for I/O streams used for error and debug printing.