8#ifndef THERMALMODELFIT_H
9#define THERMALMODELFIT_H
72 m_Parameters.SetParameterFitFlag(name, flag);
79 void SetData(
const std::vector<FittedQuantity> & inData) {
80 m_Quantities.resize(0);
82 m_Multiplicities.resize(0);
92 void AddData(
const std::vector<FittedQuantity> & inData) {
93 for (
size_t i = 0; i < inData.size(); ++i)
104 m_Quantities.push_back(inDataPoint);
106 m_Ratios.push_back(inDataPoint.
ratio);
108 m_Multiplicities.push_back(inDataPoint.
mult);
122 void SetRatios(
const std::vector<ExperimentRatio> & inRatios) {
126 void AddRatios(
const std::vector<ExperimentRatio> & inRatios) {
127 m_Ratios.insert(m_Ratios.end(), inRatios.begin(), inRatios.end());
128 for (
size_t i = 0; i < inRatios.size(); i++) {
134 m_Ratios.push_back(inRatio);
143 m_Multiplicities = inMultiplicities;
147 m_Multiplicities.insert(m_Multiplicities.end(), inMultiplicities.begin(), inMultiplicities.end());
148 for (
size_t i = 0; i < inMultiplicities.size(); i++) {
154 m_Multiplicities.push_back(inMultiplicity);
173 void PrintYieldsLatex(std::string filename =
"Yield.dat", std::string name =
"A+A");
175 void PrintYieldsLatexAll(std::string filename =
"Yield.dat", std::string name =
"A+A",
bool asymm =
false);
179 void PrintFitLog(std::string filename =
"", std::string comment =
"Thermal fit",
bool asymm =
false);
217 void SetParameter(
const std::string & name,
double val,
double err,
double xmin,
double xmax) { m_Parameters.SetParameter(name, val, err, xmin, xmax); }
220 void SetParameterValue(
const std::string & name,
double value) { m_Parameters.SetParameterValue(name, value); }
223 void SetParameterFitFlag(
const std::string & name,
bool toFit) { m_Parameters.SetParameterFitFlag(name, toFit); }
240 m_model->SetSoverB(SB);
241 m_model->ConstrainMuB(
true);
248 m_model->SetQoverB(QB);
249 m_model->ConstrainMuQ(
true);
253 double SoverB()
const {
return m_model->SoverB(); }
255 double QoverB()
const {
return m_model->QoverB(); }
259 const std::vector<ExperimentMultiplicity>&
Multiplicities()
const {
return m_Multiplicities; }
263 const std::vector<ExperimentRatio>&
Ratios()
const {
return m_Ratios; }
273 double&
Chi2() {
return m_Chi2; }
275 double&
BT() {
return m_BT; }
277 double&
QT() {
return m_QT; }
279 double&
ST() {
return m_ST; }
281 double&
CT() {
return m_CT; }
283 double&
ModelData(
int index) {
return m_ModelData[index]; }
289 int&
Ndf() {
return m_Ndf; }
309 void UseTkin(
bool YieldsAtTkin) { m_YieldsAtTkin = YieldsAtTkin; }
310 bool UseTkin()
const {
return m_YieldsAtTkin; }
333 static void saveExpDataToFile(
const std::vector<FittedQuantity> & outQuantities,
const std::string & filename);
336 static std::string GetCurrentTime();
338 static std::vector<FittedQuantity> loadExpDataFromFile_OldFormat(std::fstream & fin);
340 static std::vector<FittedQuantity> loadExpDataFromFile_NewFormat(std::fstream & fin);
346 std::vector<ExperimentMultiplicity> m_Multiplicities;
347 std::vector<ExperimentRatio> m_Ratios;
348 std::vector<FittedQuantity> m_Quantities;
355 std::vector<double> m_ModelData;
361 bool m_SahaForNuclei;
362 bool m_PCEFreezeLongLived;
363 double m_PCEWidthCut;
364 bool m_PCEAnnihilation;
365 double m_PCEPionAnnihilationNumber;
map< string, double > params
Contains structures describing the yields and ratios used in thermal fits.
Abstract base class for an HRG model implementation.
void AddRatios(const std::vector< ExperimentRatio > &inRatios)
void FixVcOverV(bool fix)
const std::vector< FittedQuantity > & FittedQuantities() const
Return a vector of the fitted quantities (data)
void PCEFreezeLongLived(bool FreezeLongLived)
Sets whether the yields of long-lived resonance are frozen in the PCE.
void AddQuantity(const FittedQuantity &inQuantity)
Same as AddDataPoint()
double & ModelData(int index)
void PrintYieldsLatexAll(std::string filename="Yield.dat", std::string name="A+A", bool asymm=false)
void PrintYieldsLatex(std::string filename="Yield.dat", std::string name="A+A")
void SetParameter(const std::string &name, const FitParameter ¶m)
Sets the fit parameter with a given name.
void ClearData()
Clear the fitted data.
void SetQBConstraint(double QB)
~ThermalModelFit(void)
Destroy the Thermal Model Fit object.
const std::vector< ExperimentMultiplicity > & Multiplicities() const
void SetParameterFitFlag(const std::string &name, bool toFit)
Sets whether the fit parameter with a given name is fitted.
const std::vector< ExperimentRatio > & Ratios() const
void PrintFitLog(std::string filename="", std::string comment="Thermal fit", bool asymm=false)
Prints the result of the fitting procedure to a file.
void SetData(const std::vector< FittedQuantity > &inData)
Sets the data to fit.
void SetParameters(const ThermalModelFitParameters ¶ms)
Sets the fit parameters.
void SetParameter(const std::string &name, double val, double err, double xmin, double xmax)
Sets the fit parameter with a given name.
void SetQuantities(const std::vector< FittedQuantity > &inQuantities)
Same as SetData()
ThermalModelFit(ThermalModelBase *model)
Construct a new ThermalModelFit object.
void AddMultiplicities(const std::vector< ExperimentMultiplicity > &inMultiplicities)
void SetSBConstraint(double SB)
void PrintParameters()
Print function.
void Increment()
Used by MINUIT.
void ClearQuantities()
Same as ClearData()
ThermalModelBase * model()
void AddData(const std::vector< FittedQuantity > &inData)
Add more data to fit.
static std::vector< FittedQuantity > loadExpDataFromFile(const std::string &filename)
Load the experimental data from a file.
const ThermalModelFitParametersExtended & ExtendedParameters() const
void UseTkin(bool YieldsAtTkin)
Sets whether the yields should be evaluated at Tkin using partial chemical equilibrium.
void AddDataPoint(const FittedQuantity &inDataPoint)
Add one more data point to fit.
void AddMultiplicity(const ExperimentMultiplicity &inMultiplicity)
int GetNdf() const
Number of degrees of freedom in the fit.
void SetRatios(const std::vector< ExperimentRatio > &inRatios)
void AddRatio(const ExperimentRatio &inRatio)
void PCEAnnihilation(bool Annihilation)
Sets whether to include baryon annihilation in PCE.
void AddQuantities(const std::vector< FittedQuantity > &inQuantities)
Same as AddData()
void SetPCEWidthCut(double WidthCut)
Sets the resonance width cut for freezeing the yields of long-lived resonances.
void SetParameterValue(const std::string &name, double value)
Sets the (initial) value for the fit parameter with a given name.
void SetPCEPionAnnihilationNumber(double PionAnnihilationNumber)
Sets the average number of pions in baryon annihilation.
static void saveExpDataToFile(const std::vector< FittedQuantity > &outQuantities, const std::string &filename)
std::pair< double, double > ModelDescriptionAccuracy() const
Returns a relative error of the data description (and its uncertainty estimate)
const ThermalModelFitParameters & Parameters() const
void UseSahaForNuclei(bool UseSaha)
Sets whether the nuclear abundances are evaluated in PCE using the Saha equation.
ThermalModelPCE * modelpce()
ThermalModelFitParameters PerformFit(bool verbose=true, bool AsymmErrors=false)
The thermal fit procedure.
void PrintYieldsTable2(std::string filename="Yield.dat")
int ModelDataSize() const
void SetVcOverV(double VcOverV)
void PrintMultiplicities()
void SetFitFlag(const std::string &name, bool flag)
Set whether FitParameter with a given name should be fitted.
void SetMultiplicities(const std::vector< ExperimentMultiplicity > &inMultiplicities)
void PrintYieldsTable(std::string filename="Yield.dat")
void ClearMultiplicities()
Class implementing HRG in partial chemical equilibrium.
The main namespace where all classes and functions of the Thermal-FIST library reside.
Structure containing the experimental yield (multiplicity) to be fitted.
Structure containing the experimental ratio of yields to be fitted.
Structure for an arbitrary fit parameter.
Structure describing the measurement to be fitted or compared to model.
ExperimentRatio ratio
The ratio data. Used if type is FittedQuantityType::Ratio.
FittedQuantityType type
Whether it is a yield (multiplicity) or a ratio.
ExperimentMultiplicity mult
The yield data. Used if type is FittedQuantityType::Multiplicity.
Extended structure for calculating uncertainties in non-fit quantities resulting from uncertanties in...
Structure holding information about parameters of a thermal fit.
Contains some extra mathematical functions used in the code.