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