GENFIT  Rev:NoNumberAvailable
MaterialEffects.h
Go to the documentation of this file.
1 /* Copyright 2008-2014, Technische Universitaet Muenchen,
2  Authors: Christian Hoeppner & Sebastian Neubert & Johannes Rauch
3 
4  This file is part of GENFIT.
5 
6  GENFIT is free software: you can redistribute it and/or modify
7  it under the terms of the GNU Lesser General Public License as published
8  by the Free Software Foundation, either version 3 of the License, or
9  (at your option) any later version.
10 
11  GENFIT is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU Lesser General Public License for more details.
15 
16  You should have received a copy of the GNU Lesser General Public License
17  along with GENFIT. If not, see <http://www.gnu.org/licenses/>.
18 */
19 
24 #ifndef genfit_MaterialEffects_h
25 #define genfit_MaterialEffects_h
26 
27 #include "RKTools.h"
28 #include "AbsMaterialInterface.h"
29 
30 #include <iostream>
31 #include <vector>
32 
33 #include <TVector3.h>
34 
35 
36 namespace genfit {
37 
51 
52  private:
53 
55  virtual ~MaterialEffects();
56 
58 
59 
60 public:
61 
62  static MaterialEffects* getInstance();
63  static void destruct();
64 
66  void init(AbsMaterialInterface* matIfc);
67  bool isInitialized() { return materialInterface_ != nullptr; }
68 
69  void setNoEffects(bool opt = true) {noEffects_ = opt;}
70 
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;}
77 
83  void setMscModel(const std::string& modelName);
84 
85 
87  double effects(const std::vector<RKStep>& steps,
88  int materialsFXStart,
89  int materialsFXStop,
90  const double& mom,
91  const int& pdg,
92  M7x7* noise = nullptr);
93 
99  void stepper(const RKTrackRep* rep,
100  M1x7& state7,
101  const double& mom, // momentum
102  double& relMomLoss, // relative momloss for the step will be added
103  const int& pdg,
104  MaterialProperties& currentMaterial,
105  StepLimits& limits,
106  bool varField = true);
107 
108  void setDebugLvl(unsigned int lvl = 1);
109 
110 
111  void drawdEdx(int pdg = 11);
112 
113  private:
114 
116  void getParticleParameters();
117 
118  void getMomGammaBeta(double Energy,
119  double& mom, double& gammaSquare, double& gamma, double& betaSquare) const;
120 
122 
125  double momentumLoss(double stepSign, double mom, bool linear);
126 
128  double dEdx(double Energy) const;
129 
130 
132  double dEdxBetheBloch(double betaSquare, double gamma, double gammasquare) const;
133 
135 
143  void noiseBetheBloch(M7x7& noise, double mom, double betaSquare, double gamma, double gammaSquare) const;
144 
146 
153  void noiseCoulomb(M7x7& noise,
154  const M1x3& direction, double momSquare, double betaSquare) const;
155 
157 
161  double dEdxBrems(double mom) const;
162 
164 
166  void noiseBrems(M7x7& noise, double momSquare, double betaSquare) const;
167 
168 
169 
171 
177 
179 
180  const double me_; // electron mass (GeV)
181 
182  double stepSize_; // stepsize
183 
184  // cached values for energy loss and noise calculations
185  double dEdx_; // Runkge Kutta dEdx
186  double E_; // Runge Kutta Energy
187  double matDensity_;
188  double matZ_;
189  double matA_;
191  double mEE_; // mean excitation energy
192 
193  int pdg_;
194  int charge_;
195  double mass_;
196 
198 
200 
201  unsigned int debugLvl_;
202 
203  // ClassDef(MaterialEffects, 1);
204 
205 };
206 
207 } /* End of namespace genfit */
210 #endif // genfit_MaterialEffects_h
RKTools.h
genfit::MaterialEffects::energyLossBrems_
bool energyLossBrems_
Definition: MaterialEffects.h:175
genfit::MaterialEffects::mass_
double mass_
Definition: MaterialEffects.h:195
genfit::MaterialEffects::noiseCoulomb
void noiseCoulomb(M7x7 &noise, const M1x3 &direction, double momSquare, double betaSquare) const
calculation of multiple scattering
Definition: MaterialEffects.cc:538
genfit::MaterialEffects::getParticleParameters
void getParticleParameters()
sets charge_, mass_
Definition: MaterialEffects.cc:350
genfit::MaterialEffects::dEdxBrems
double dEdxBrems(double mom) const
Returns dEdx.
Definition: MaterialEffects.cc:609
genfit::MaterialEffects::noiseBrems_
bool noiseBrems_
Definition: MaterialEffects.h:176
genfit::RKMatrix< 7, 7 >
genfit::MaterialEffects::isInitialized
bool isInitialized()
Definition: MaterialEffects.h:67
genfit::MaterialEffects::materialInterface_
AbsMaterialInterface * materialInterface_
depending on this number a specific msc model is chosen in the noiseCoulomb function.
Definition: MaterialEffects.h:199
genfit::MaterialEffects::setEnergyLossBrems
void setEnergyLossBrems(bool opt=true)
Definition: MaterialEffects.h:74
genfit::MaterialEffects::destruct
static void destruct()
Definition: MaterialEffects.cc:77
genfit::AbsMaterialInterface
Abstract base class for geometry interfacing.
Definition: AbsMaterialInterface.h:39
genfit::MaterialEffects::noEffects_
bool noEffects_
Definition: MaterialEffects.h:170
genfit::MaterialEffects::dEdx_
double dEdx_
Definition: MaterialEffects.h:185
genfit::MaterialEffects::stepper
void stepper(const RKTrackRep *rep, M1x7 &state7, const double &mom, double &relMomLoss, const int &pdg, MaterialProperties &currentMaterial, StepLimits &limits, bool varField=true)
Returns maximum length so that a specified momentum loss will not be exceeded.
Definition: MaterialEffects.cc:206
genfit
Defines for I/O streams used for error and debug printing.
Definition: AbsFinitePlane.cc:22
genfit::MaterialEffects
Stepper and energy loss/noise matrix calculation.
Definition: MaterialEffects.h:50
genfit::MaterialEffects::charge_
int charge_
Definition: MaterialEffects.h:194
genfit::MaterialEffects::setDebugLvl
void setDebugLvl(unsigned int lvl=1)
Definition: MaterialEffects.cc:795
genfit::MaterialEffects::setNoiseCoulomb
void setNoiseCoulomb(bool opt=true)
Definition: MaterialEffects.h:73
genfit::RKTrackRep
AbsTrackRep with 5D track parameterization in plane coordinates: (q/p, u', v', u, v)
Definition: RKTrackRep.h:71
genfit::MaterialEffects::dEdxBetheBloch
double dEdxBetheBloch(double betaSquare, double gamma, double gammasquare) const
Uses Bethe Bloch formula to calculate dEdx.
Definition: MaterialEffects.cc:454
genfit::MaterialEffects::~MaterialEffects
virtual ~MaterialEffects()
Definition: MaterialEffects.cc:66
genfit::MaterialEffects::MaterialEffects
MaterialEffects()
Definition: MaterialEffects.cc:42
genfit::MaterialEffects::noiseBetheBloch
void noiseBetheBloch(M7x7 &noise, double mom, double betaSquare, double gamma, double gammaSquare) const
calculation of energy loss straggeling
Definition: MaterialEffects.cc:478
genfit::MaterialEffects::noiseBetheBloch_
bool noiseBetheBloch_
Definition: MaterialEffects.h:173
genfit::MaterialEffects::pdg_
int pdg_
Definition: MaterialEffects.h:193
genfit::MaterialEffects::stepSize_
double stepSize_
Definition: MaterialEffects.h:182
genfit::MaterialEffects::dEdx
double dEdx(double Energy) const
Calculate dEdx for a given energy.
Definition: MaterialEffects.cc:437
genfit::MaterialEffects::ignoreBoundariesBetweenEqualMaterials_
bool ignoreBoundariesBetweenEqualMaterials_
Definition: MaterialEffects.h:178
genfit::MaterialEffects::radiationLength_
double radiationLength_
Definition: MaterialEffects.h:190
genfit::MaterialEffects::instance_
static MaterialEffects * instance_
Definition: MaterialEffects.h:57
genfit::MaterialEffects::effects
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.
Definition: MaterialEffects.cc:112
genfit::MaterialEffects::setNoiseBrems
void setNoiseBrems(bool opt=true)
Definition: MaterialEffects.h:75
genfit::MaterialEffects::matDensity_
double matDensity_
Definition: MaterialEffects.h:187
genfit::MaterialEffects::momentumLoss
double momentumLoss(double stepSign, double mom, bool linear)
Returns momentum loss.
Definition: MaterialEffects.cc:376
genfit::MaterialEffects::debugLvl_
unsigned int debugLvl_
Definition: MaterialEffects.h:201
genfit::MaterialEffects::matZ_
double matZ_
Definition: MaterialEffects.h:188
genfit::MaterialEffects::ignoreBoundariesBetweenEqualMaterials
void ignoreBoundariesBetweenEqualMaterials(bool opt=true)
Definition: MaterialEffects.h:76
genfit::MaterialEffects::setMscModel
void setMscModel(const std::string &modelName)
Select the multiple scattering model that will be used during track fit.
Definition: MaterialEffects.cc:96
genfit::MaterialEffects::E_
double E_
Definition: MaterialEffects.h:186
genfit::MaterialEffects::getMomGammaBeta
void getMomGammaBeta(double Energy, double &mom, double &gammaSquare, double &gamma, double &betaSquare) const
Definition: MaterialEffects.cc:358
genfit::StepLimits
Helper to store different limits on the stepsize for the RKTRackRep.
Definition: StepLimits.h:54
genfit::MaterialEffects::setNoiseBetheBloch
void setNoiseBetheBloch(bool opt=true)
Definition: MaterialEffects.h:72
AbsMaterialInterface.h
genfit::MaterialEffects::noiseBrems
void noiseBrems(M7x7 &noise, double momSquare, double betaSquare) const
calculation of energy loss straggeling
Definition: MaterialEffects.cc:775
genfit::MaterialEffects::me_
const double me_
Definition: MaterialEffects.h:180
genfit::MaterialEffects::noiseCoulomb_
bool noiseCoulomb_
Definition: MaterialEffects.h:174
genfit::MaterialEffects::setNoEffects
void setNoEffects(bool opt=true)
Definition: MaterialEffects.h:69
genfit::MaterialEffects::getInstance
static MaterialEffects * getInstance()
Definition: MaterialEffects.cc:71
genfit::MaterialEffects::matA_
double matA_
Definition: MaterialEffects.h:189
genfit::MaterialEffects::mEE_
double mEE_
Definition: MaterialEffects.h:191
genfit::MaterialEffects::init
void init(AbsMaterialInterface *matIfc)
set the material interface here. Material interface classes must be derived from AbsMaterialInterface...
Definition: MaterialEffects.cc:85
genfit::MaterialEffects::mscModelCode_
int mscModelCode_
Definition: MaterialEffects.h:197
genfit::MaterialEffects::setEnergyLossBetheBloch
void setEnergyLossBetheBloch(bool opt=true)
Definition: MaterialEffects.h:71
genfit::MaterialEffects::drawdEdx
void drawdEdx(int pdg=11)
Definition: MaterialEffects.cc:802
genfit::MaterialProperties
Material properties needed e.g. for material effects calculation.
Definition: MaterialProperties.h:35
genfit::MaterialEffects::energyLossBetheBloch_
bool energyLossBetheBloch_
Definition: MaterialEffects.h:172