14 #ifndef TGO4FITMODEL_H 15 #define TGO4FITMODEL_H 50 void Print(Option_t *option =
"")
const override;
94 TGo4FitModel(
const char *iName,
const char *iTitle, Bool_t MakeAmplitude = kFALSE);
129 const char *
AssignmentName(Int_t n) {
return GetAssigment(n) ? GetAssigment(n)->GetName() :
nullptr; }
136 void AssignToData(
const char *DataName, Double_t
RatioValue = 1., Bool_t FixRatio = kFALSE);
141 Bool_t
IsAssignTo(
const char *DataName)
const {
return FindAssigment(DataName) !=
nullptr; }
146 void ChangeDataNameInAssignments(
const char *oldname,
const char *newname);
151 void ClearAssignmentTo(
const char *DataName);
157 void ClearAssignments();
168 Double_t GetRatioValueFor(
const char *DataName);
173 void Print(Option_t *option =
"")
const override;
178 virtual Double_t Evaluate(Double_t x);
183 virtual Double_t Evaluate(Double_t x, Double_t y);
188 virtual Double_t Evaluate(Double_t x, Double_t y, Double_t z);
193 virtual Double_t Evaluate(Double_t *v, Int_t ndim);
198 virtual Double_t Integral();
203 virtual Bool_t GetPosition(Int_t naxis, Double_t& pos);
208 virtual Bool_t SetPosition(Int_t naxis, Double_t pos);
213 virtual Bool_t GetWidth(Int_t naxis, Double_t& width);
218 virtual Bool_t SetWidth(Int_t naxis, Double_t width);
231 void SetIntegrationsProperty(Int_t iMinIntegrDepth, Int_t iMaxIntegrDepth = 0, Double_t iIntegrEps = 0., Bool_t iAbsoluteEps = kFALSE, Bool_t iIntegrScaling = kFALSE);
236 Bool_t
NeedIntegration()
const {
return (fiMinIntegrDepth > 0) || (fiMaxIntegrDepth > 0); }
242 virtual Bool_t BeforeEval(Int_t ndim);
248 virtual Double_t EvalN(
const Double_t *v);
259 virtual Double_t EvaluateAtPoint(
TGo4FitData *data, Int_t nbin, Bool_t UseRanges = kTRUE);
264 virtual Double_t EvaluateAtPoint(std::unique_ptr<TGo4FitDataIter> &iter, Bool_t UseRanges = kTRUE);
272 Int_t NumPars()
override;
284 Double_t EvaluateAndIntegrate(Int_t NumScales,
const Double_t *Scales,
const Double_t *Widths);
291 virtual Bool_t
Initialize(Int_t UseBuffers = -1);
306 Bool_t BuffersAllocated()
const;
311 void RebuildShape(Bool_t ForceBuild = kFALSE);
316 Double_t *GetModelBins(
const char *DataName)
const;
344 {
return Get(GetPosParIndex(naxis)); }
350 {
return Get(GetWidthParIndex(naxis)); }
352 const Int_t *GetDataFullIndex(
TGo4FitData *data, Int_t nbin);
358 Int_t fiMinIntegrDepth{0};
363 Int_t fiMaxIntegrDepth{0};
368 Double_t fdIntegrEps{0};
373 Bool_t fbAbsoluteEps{kFALSE};
378 Bool_t fbIntegrScaling{kFALSE};
385 void RemoveAllPars();
401 TString GetRatioName(Int_t n);
411 Int_t fiGroupIndex{0};
421 Double_t *fxCurrentParsArray{
nullptr};
426 Bool_t fbNeedToRebuild{kFALSE};
433 TArrayD* fxAllParsValues{
nullptr};
438 #endif // TGO4FITMODEL_H
void ClearAssigmentTo(const char *DataName)
virtual Int_t GetWidthParIndex(Int_t)
ClassDefOverride(TGo4FitAssignment, 1)
virtual ~TGo4FitAssignment()
TGo4FitAssignment * GetAssigment(Int_t n) const
virtual TGo4FitParameter * GetWidthPar(Int_t naxis=0)
const char * AssignmentName(Int_t n)
Bool_t IsAssignTo(const char *DataName) const
Bool_t NeedIntegration() const
virtual Double_t UserFunction(Double_t *, Double_t *)
Int_t GetGroupIndex() const
TGo4FitAssignment * GetAssigment(Int_t n)
virtual Int_t GetPosParIndex(Int_t)
TGo4FitParameter * fxRatio
void SetGroupIndex(Int_t index=-1)
Int_t NumAssigments() const
TGo4FitParameter * Get(Int_t n) override
virtual TGo4FitParameter * GetPosPar(Int_t naxis=0)
virtual Bool_t Initialize()
void SetBackgroundGroupIndex()
void Print(Option_t *option="") const override