GRSISort "v4.0.0.5"
An extension of the ROOT analysis Framework
Loading...
Searching...
No Matches
TSRIM.h
Go to the documentation of this file.
1#ifndef TSRIMMANAGER_H
2#define TSRIMMANAGER_H
3
4/** \addtogroup Fitting Fitting & Analysis
5 * @{
6 */
7
8#include <vector>
9
10#include <map>
11#include <utility>
12
13#include "TGraph.h"
14#include "TSpline.h"
15
16class TSRIM {
17public:
18 TSRIM() = default;
19 // looks like the emax-min inputs don't work right now for 94Sr and maybe other high mass nuclei
20 explicit TSRIM(const char* infilename, double emax = -1.0, double emin = 0.0, bool printfile = true);
21 TSRIM(const TSRIM&) = default;
22 TSRIM(TSRIM&&) noexcept = default;
23 TSRIM& operator=(const TSRIM&) = default;
24 TSRIM& operator=(TSRIM&&) noexcept = default;
25
26 virtual ~TSRIM() = default;
27
28private:
29 std::vector<double> fIonEnergy;
30 std::vector<double> fdEdX;
31 TGraph* fEnergyLoss{nullptr};
32 TGraph* fEgetX{nullptr};
33 TGraph* fXgetE{nullptr};
34 TSpline3* fsEnergyLoss{nullptr};
35 TSpline3* fsEgetX{nullptr};
36 TSpline3* fsXgetE{nullptr};
37 std::vector<double> fE; // units of keV
38 std::vector<double> fX; // units of um
39 double fEmin{0.};
40 double fEmax{0.};
41 double fXmin{0.};
42 double fXmax{0.};
43 static const double dx; // um [sets accuracy of energy loss E vs X functions]
44
45 std::map<std::pair<double, double>, double> AdjustedEnergyMap;
46
47public:
48 void ReadEnergyLossFile(const char* filename, double emax = -1.0, double emin = 0.0, bool printfile = true);
49
50 double GetAdjustedEnergy(double energy, double thickness, double stepsize = dx);
51 double GetEnergyLost(double energy, double distance, double stepsize = dx)
52 {
53 return energy - GetAdjustedEnergy(energy, distance, stepsize);
54 };
55
56 double GetEnergy(double energy, double dist);
57 double GetEnergyChange(double energy, double dist) { return GetEnergy(energy, dist) - energy; };
58
59 double GetEmax() const { return fEmax; };
60 double GetEmin() const { return fEmin; };
61 double GetXmax() const { return fXmax; };
62 double GetXmin() const { return fXmin; };
63
64 TGraph* GetEnergyLossGraph() const { return fEnergyLoss; };
65 TGraph* GetEvsXGraph() const { return fXgetE; };
66 TGraph* GetXvsEGraph() const { return fEgetX; };
67 TSpline3* GetEvsXSpline() const { return fsXgetE; };
68 TSpline3* GetXvsESpline() const { return fsEgetX; };
69
70 /// \cond CLASSIMP
71 ClassDef(TSRIM, 0) // NOLINT(readability-else-after-return)
72 /// \endcond
73};
74/*! @} */
75#endif
Definition TSRIM.h:16
double fXmax
Definition TSRIM.h:42
double GetEnergyLost(double energy, double distance, double stepsize=dx)
Definition TSRIM.h:51
TGraph * fXgetE
Definition TSRIM.h:33
double GetEmax() const
Definition TSRIM.h:59
std::map< std::pair< double, double >, double > AdjustedEnergyMap
Definition TSRIM.h:45
TGraph * GetXvsEGraph() const
Definition TSRIM.h:66
TGraph * GetEvsXGraph() const
Definition TSRIM.h:65
TSpline3 * fsXgetE
Definition TSRIM.h:36
static const double dx
Definition TSRIM.h:43
TGraph * GetEnergyLossGraph() const
Definition TSRIM.h:64
TSRIM(TSRIM &&) noexcept=default
void ReadEnergyLossFile(const char *filename, double emax=-1.0, double emin=0.0, bool printfile=true)
Definition TSRIM.cxx:22
double GetEnergyChange(double energy, double dist)
Definition TSRIM.h:57
double fEmin
Definition TSRIM.h:39
double GetEmin() const
Definition TSRIM.h:60
std::vector< double > fX
Definition TSRIM.h:38
TSpline3 * GetXvsESpline() const
Definition TSRIM.h:68
double GetAdjustedEnergy(double energy, double thickness, double stepsize=dx)
Definition TSRIM.cxx:221
TGraph * fEgetX
Definition TSRIM.h:32
double GetEnergy(double energy, double dist)
Definition TSRIM.cxx:204
std::vector< double > fIonEnergy
Definition TSRIM.h:29
TSRIM()=default
double GetXmin() const
Definition TSRIM.h:62
TSRIM(const TSRIM &)=default
double fXmin
Definition TSRIM.h:41
TSpline3 * fsEnergyLoss
Definition TSRIM.h:34
std::vector< double > fE
Definition TSRIM.h:37
TSpline3 * fsEgetX
Definition TSRIM.h:35
double GetXmax() const
Definition TSRIM.h:61
TGraph * fEnergyLoss
Definition TSRIM.h:31
std::vector< double > fdEdX
Definition TSRIM.h:30
double fEmax
Definition TSRIM.h:40
TSpline3 * GetEvsXSpline() const
Definition TSRIM.h:67