ATTPCROOT  0.3.0-alpha
A ROOT-based framework for analyzing data from active target detectors
AtELossTable.h
Go to the documentation of this file.
1 #ifndef ATELOSSTABLE_H
2 #define ATELOSSTABLE_H
3 // IWYU pragma: no_include <ext/alloc_traits.h>
4 
5 #include "AtELossModel.h"
6 #include "AtSpline.h"
7 
8 #include <string>
9 #include <vector>
10 
11 namespace AtTools {
12 
13 class AtELossTable : public AtELossModel {
14 protected:
16 
17  double fDistErr{1e-4};
18 
19 public:
20  AtELossTable(double density = 0) : AtELossModel(density) {}
21  AtELossTable(const std::vector<double> &energy, const std::vector<double> &dEdX, double density = 0);
22 
24  void SetDistanceError(double val) { fDistErr = val; }
25  void LoadSrimTable(std::string fileName);
34  void LoadLiseTable(std::string fileName, double mass, double density, int column = 2);
35 
36  virtual double GetdEdx(double energy) const override;
37  virtual double GetRange(double energyIni, double energyFin = 0) const override;
38  virtual double GetEnergyLoss(double energyIni, double distance) const override
39  {
40  return energyIni - GetEnergy(energyIni, distance);
41  }
42  virtual double GetEnergy(double energyIni, double distance) const override;
43 
44  [[deprecated]] double GetEnergyOld(double energyIni, double distance) const;
45 
46 private:
47  void LoadTable(const std::vector<double> &energy, const std::vector<double> &dEdX);
48  double GetUnitConversion(const std::string &unit);
49 };
50 
51 } // namespace AtTools
52 #endif //#ifndef ATELOSSTABLE_H
AtTools::AtELossTable::GetRange
virtual double GetRange(double energyIni, double energyFin=0) const override
Definition: AtELossTable.cxx:38
AtTools::AtELossTable::fDistErr
double fDistErr
Definition: AtELossTable.h:17
AtTools::AtELossTable::GetEnergy
virtual double GetEnergy(double energyIni, double distance) const override
Definition: AtELossTable.cxx:46
AtTools::AtELossTable::LoadSrimTable
void LoadSrimTable(std::string fileName)
Definition: AtELossTable.cxx:113
AtSpline.h
AtTools::AtELossTable::SetDistanceError
void SetDistanceError(double val)
Set error in particle range when calculating energy losses.
Definition: AtELossTable.h:24
AtTools::AtELossTable::GetEnergyOld
double GetEnergyOld(double energyIni, double distance) const
Definition: AtELossTable.cxx:74
tk::spline
Definition: AtSpline.h:43
AtTools::AtELossTable::AtELossTable
AtELossTable(double density=0)
Definition: AtELossTable.h:20
AtTools
Definition: AtSimpleSimulation.h:19
AtTools::AtELossTable
Definition: AtELossTable.h:13
AtTools::AtELossTable::fdXdE
tk::spline fdXdE
Definition: AtELossTable.h:15
AtTools::AtELossTable::LoadLiseTable
void LoadLiseTable(std::string fileName, double mass, double density, int column=2)
Definition: AtELossTable.cxx:170
AtELossModel.h
AtTools::AtELossTable::GetdEdx
virtual double GetdEdx(double energy) const override
Definition: AtELossTable.cxx:32
AtTools::AtELossModel
Definition: AtELossModel.h:15
AtTools::AtELossTable::GetEnergyLoss
virtual double GetEnergyLoss(double energyIni, double distance) const override
Definition: AtELossTable.h:38