10#include <TGraphErrors.h>
11#include <TMultiGraph.h>
23 double EffCFunc(
double *x,
double *pars);
27 std::vector<std::string> fKeys;
28 std::vector<double> fEnergies;
29 std::vector<double> fPeakAreas;
30 std::vector<double> fPeakErrors;
31 std::vector<double> fIntensities;
32 double fNormalisation;
33 std::vector<double> fEfficiencies;
34 std::vector<double> fEfficiencyErrors;
38 DataSet() { fNormalisation = 1.0; fAbsolute =
true; }
40 DataSet(
const char *histFile,
const char *histName,
const char *gateFile,
const char *mapName,
const char *intensityFile);
42 DataSet(std::string areaFile,
const char *intensityFile);
43 void SetData(
const char *effFile);
45 void SetData(std::string areaFile, std::map<std::string, std::pair<double, double> > fIntensityMap);
46 void SetNorm(
double fNorm) { fNormalisation = fNorm; }
51 std::string
GetKey(
int i) {
return fKeys[i]; }
53 double GetPeak(
int i) {
return fPeakAreas[i]; }
55 double GetNorm() {
return fNormalisation; }
59 void Print(
const char *fileName);
73 void SetParams(std::vector<std::string> sParams, std::vector<std::string> sFixed, std::vector<std::string> sLimLow, std::vector<std::string> sLimHigh);
90 void Fit(
int quiet = 0);
91 TMultiGraph*
Draw(TCanvas *canvas,
int detID=0,
double xlow=-1,
double xhigh=-1,
bool log=
false);
93 TMultiGraph*
DrawRes(TCanvas *canvas,
int detID=0,
double xlow=-1,
double xhigh=-1);
94 void Draw(
const char *outFile,
double xlow=-1,
double xhigh=-1,
bool log=
false);
99 std::map<int, DataSet> fDataSets;
102 MultiDataSet(
const char *histFile,
const char *histName,
const char *gateFile,
const char *mapName,
const char *intensityFile);
110 std::map<int, EffFit> fEffFits;
111 std::map<int, double> fDetNorm;
114 void AddData(
const char *histFile,
const char *histName,
const char *gateFile,
const char *mapName,
const char *intensityFile);
116 void SetAbsScale(
double absScale,
int ID) { fEffFits[ID].fAbsScale = absScale; }
117 void SetData(
const char *effFile,
int i,
int ID);
118 void SetDetNorms(
int ID,
int iDataSet, std::string key);
119 void SetNorm(
int iDataSet,
double factor);
120 void SetNorm(
int ID,
int iDataSet,
double factor);
123 void EraseData(
int ID,
int iDataSet, std::string key) { fEffFits[ID].EraseData(iDataSet, key); }
124 void EraseData(
int iDataSet, std::string key);
128 void Draw(
const char *outFile,
double xlow=-1,
double xhigh=-1,
bool log=
false);
130 void PrintDataSet(
int i,
int ID,
const char *fileNameBase);
void log(TVirtualPad *canvas)
double GetIntensity(int i)
void SetNorm(double fNorm)
void SetAbsScale(double fScale)
std::string GetKey(int i)
void SetAbsolute(bool fAbs)
double GetEfficiency(int i)
TGraphErrors * GetGraph()
void SetData(const char *effFile)
void Print(const char *fileName)
void EraseData(std::string key)
TGraphErrors * GetGraphErrors()
int GetIndex(std::string key)
std::vector< DataSet > fDataSets
void PrintParams(const char *fileName)
void SetParams(FitParams params)
void WriteGraph(std::string outDir)
TMultiGraph * Draw(TCanvas *canvas, int detID=0, double xlow=-1, double xhigh=-1, bool log=false)
void AddData(DataSet dataset)
void EraseData(int iDataSet, std::string key)
TMultiGraph * DrawRes(TCanvas *canvas, int detID=0, double xlow=-1, double xhigh=-1)
void SetParams(std::vector< std::string > sParams, std::vector< std::string > sFixed, std::vector< std::string > sLimLow, std::vector< std::string > sLimHigh)
std::vector< TFormula > params
std::vector< TFormula > limlow
std::vector< TFormula > limhigh
std::map< int, DataSet > * GetDataSets()
DataSet & operator[](int key)
void SetParams(FitParams params)
void SetData(const char *effFile, int i, int ID)
void SetEqualWeights(bool eq)
void AddData(const char *histFile, const char *histName, const char *gateFile, const char *mapName, const char *intensityFile)
void Draw(const char *outFile, double xlow=-1, double xhigh=-1, bool log=false)
void PrintParams(const char *outFile)
void SetDetNorms(int ID, int iDataSet, std::string key)
void WriteGraphs(std::string outDir)
void SetNorm(int iDataSet, double factor)
void PrintDataSet(int i, const char *fileNameBase)
void EraseData(int ID, int iDataSet, std::string key)
void SetAbsScale(double absScale, int ID)
Library to calculate relative efficiencies for HPGe detectors.
double EffCFunc(double *x, double *pars)