Heavy ion Analysis Libriares
Loading...
Searching...
No Matches
FemtoSourceModel.h
1/*
2 * FemtoSourceModel.h
3 *
4 * Created on: 26-11-2013
5 * Author: Daniel Wielanek
6 * E-mail: daniel.wielanek@gmail.com
7 * Warsaw University of Technology, Faculty of Physics
8 */
9
10#ifndef HALFEMTOSOURCEMODEL_H_
11#define HALFEMTOSOURCEMODEL_H_
12
13#include <TRandom.h>
14#include <TString.h>
15#include <TVector3.h>
16
17namespace Hal {
18 class FemtoPair;
19 class Package;
20 class FemtoSourceDensity;
21
25 class FemtoSourceModel : public TObject {
26 private:
30 const Int_t fParametersNo;
31 Double_t* fParams = {nullptr}; //[fParametersNo]
35 TString* fParameterNames = {nullptr}; //[fParametersNo]
36 protected:
40 TRandom* fRandom = {nullptr};
48 Double_t fRout;
52 Double_t fRside;
56 Double_t fRlong;
60 TString fModelName;
61 void SetParName(Int_t no, TString name) { fParameterNames[no] = name; };
62 // FemtoSourceModel();
63 public:
64 enum class ENumProperty { kNonAnalytical, kAnalytical1d, kAnalytical3d, kFullyAnalytical };
68 FemtoSourceModel(Int_t nparams = 1);
78 inline Double_t GetROut() const { return fRout; };
83 inline Double_t GetRSide() const { return fRside; };
88 inline Double_t GetRLong() const { return fRlong; };
93 void SetSeed(UInt_t seed) { fRandom->SetSeed(seed); };
99 inline void SetParameter(Int_t par_no, Double_t par_val) { fParams[par_no] = par_val; };
105 void SetParameterByName(TString name, Double_t par);
109 virtual void GenerateCoordinates(FemtoPair* Pair) = 0;
115 virtual void SetRadius(Double_t /*radii*/) {};
120 Int_t GetNpar() const { return fParametersNo; };
126 TString GetParamName(Int_t n) const;
132 Double_t GetParameter(Int_t n) const { return fParams[n]; };
133 virtual Bool_t Init() { return kTRUE; }
134 virtual void Print(Option_t* option = "") const;
139 virtual FemtoSourceModel* MakeCopy() const = 0;
149 ENumProperty GetModelNumProp() const;
154 virtual Package* Report() const;
155 virtual ~FemtoSourceModel();
156 ClassDef(FemtoSourceModel, 1)
157 };
162 protected:
163 FemtoSourceModel1D(Int_t par);
164
165 public:
176 void SetRadius(Double_t radii) { SetParameter(0, radii); };
177 virtual FemtoSourceModel* MakeCopy() const = 0;
178 virtual ~FemtoSourceModel1D();
179 ClassDef(FemtoSourceModel1D, 1)
180 };
185 protected:
186 FemtoSourceModel3D(Int_t no);
187
188 public:
199 void SetOutRadius(Double_t out) { SetParameter(0, out); };
204 void SetSideRadius(Double_t side) { SetParameter(1, side); };
209 void SetLongRadius(Double_t longr) { SetParameter(2, longr); };
214 virtual void SetRadius(Double_t radii);
215 virtual FemtoSourceModel* MakeCopy() const = 0;
216 virtual ~FemtoSourceModel3D();
217 ClassDef(FemtoSourceModel3D, 1)
218 };
219} // namespace Hal
220
221#endif /* HALFEMTOSOURCEMODEL_H_ */
void SetRadius(Double_t radii)
virtual FemtoSourceModel * MakeCopy() const =0
void SetSideRadius(Double_t side)
virtual void SetRadius(Double_t radii)
void SetLongRadius(Double_t longr)
void SetOutRadius(Double_t out)
virtual FemtoSourceModel * MakeCopy() const =0
virtual void SetRadius(Double_t)
void SetParameter(Int_t par_no, Double_t par_val)
virtual FemtoSourceModel * MakeCopy() const =0
FemtoSourceDensity * GetDensityProb() const
virtual Package * Report() const
Double_t GetParameter(Int_t n) const
void SetParameterByName(TString name, Double_t par)
Double_t GetRLong() const
virtual void GenerateCoordinates(FemtoPair *Pair)=0
ENumProperty GetModelNumProp() const
Double_t GetRSide() const
FemtoSourceModel(Int_t nparams=1)
Double_t GetROut() const
void SetSeed(UInt_t seed)
TString GetParamName(Int_t n) const
FemtoSourceDensity * fDensity