25 #include "TObjString.h" 35 fbInitializationDone(kFALSE), fbNeedToFinalize(kFALSE), fbParsAsResults(kFALSE)
54 TGo4FitParsList::Clear(option);
73 for (Int_t n = 0; n <
NumPars(); n++) {
111 for (Int_t i = 0; i <= Dependencies.GetLast(); i++) {
121 std::cout <<
"Error dependence parameter: " << dep->
GetParameter().Data() << std::endl;
129 for (Int_t n = 0; n <
NumPars(); n++) {
137 TFormula *fx =
new TFormula(
"test", formula.Data());
138 Int_t err = fx->Compile(formula.Data());
141 std::cout <<
"Error in dependence: " << formula.Data() <<
" code " << err << std::endl;
158 for (Int_t i = 0; i <= Dependencies.GetLast(); i++)
164 for (Int_t i = 0; i <= Dependencies.GetLast(); i++) {
213 if (fxCurrentConfig) {
230 fxCurrentConfig =
nullptr;
312 if ((num < 0) || (num >
fxActions.GetLast()))
331 if (!action || (indx < 0))
333 Int_t newindx = indx + dir;
334 if ((newindx >= 0) && (newindx <=
fxActions.GetLast()) && (newindx != indx)) {
345 Bool_t need = kFALSE;
346 for (Int_t n = 0; n <= Actions->GetLast(); n++) {
356 for (Int_t n = 0; n <= Actions->GetLast(); n++) {
394 TObjArray *rownames, TObjArray *colnames)
396 if (!objs || (objs->GetLast() < 0))
406 for (Int_t n = 0; n <
NumSlots(); n++) {
415 if ((numuse == 0) || ((objs->GetLast() + 1) % numuse != 0))
419 for (Int_t nobj = 0; nobj <= objs->GetLast(); nobj++) {
420 TObject *obj = objs->At(nobj);
422 std::cout <<
"Empty object in list" << std::endl;
429 std::cout <<
"Object " << obj->GetName() <<
" of class " << obj->ClassName() <<
" noncompatible with " 430 << slot->
GetClass()->GetName() << std::endl;
435 TObjArray *res =
new TObjArray((objs->GetLast() + 1) / numuse);
436 res->SetOwner(kTRUE);
441 rownames->SetOwner(kTRUE);
445 colnames->SetOwner(kTRUE);
462 while (nuse < numuse) {
466 newfitter->SetName(objs->At(nobj)->GetName());
467 if ((nuse == 1) && colnames)
468 colnames->Add(
new TObjString(objs->At(nobj)->GetName()));
476 }
while (nobj <= objs->GetLast());
487 while (nuse < numuse) {
490 if ((nuse == 1) && colnames)
491 colnames->Add(
new TObjString(objs->At(nobj)->GetName()));
501 }
while (nobj <= objs->GetLast());
508 if (rownames && resf) {
510 for (Int_t n = 0; n < resf->
NumPars(); n++)
514 TString rname(
"Result");
516 rownames->Add(
new TObjString(rname));
520 while (nuse < numuse) {
544 for (Int_t n = 0; n <=
fxActions.GetLast(); n++) {
603 std::cout << std::endl <<
"*** LIST OF RESULT VALUE ***" << std::endl;
604 std::cout <<
" Fit function = " <<
GetResultFF() << std::endl;
607 std::cout <<
" Res " << n <<
" = " <<
GetResultValue(n) << std::endl;
612 std::cout << std::endl <<
"********** THIS IS PRINTOUT OF FITTER OBJECT **********" << std::endl;
616 std::cout <<
"Actions list: " << std::endl;
621 void TGo4FitterAbstract::Streamer(TBuffer &b)
624 TGo4FitterAbstract::Class()->ReadBuffer(b,
this);
627 TGo4FitterAbstract::Class()->WriteBuffer(b,
this);
Double_t GetValue() const
virtual void FinalizeFitterData()
void Print(Option_t *option="") const override
void DoAction(TGo4FitterAction *Action)
TGo4FitSlot * GetSlot(Int_t nslot)
void PrintResults() const
void DeleteAction(TGo4FitterAction *action)
virtual Double_t DoCalculation()
virtual ~TGo4FitterAbstract()
virtual Bool_t GetParEpsilon(const char *ParName, Double_t &Epsilon)
void AddCommand(const char *iCommand)
virtual void MemorizePars()
void AddAction(TGo4FitterAction *Action)
virtual Bool_t GetParEpsilon(const char *ParName, Double_t &Epsilon)
const TArrayD * GetResults()
virtual Bool_t InitFitterData()
const char * GetFullName()
void Initialize(Int_t iNumPar, const char *iFormula)
void ReplaceAction(TGo4FitterAction *action, Int_t dir)
Bool_t IsParsAsResults() const
void CopyParsValuesFrom(TGo4FitterAbstract *fitter)
void RunDependenciesList(TObjArray &Dependencies, Double_t *pars)
void FinalizeDependencies(TObjArray &Dependencies)
Int_t GetResultNDF() const
void PrepareSlotsForWriting()
virtual Bool_t CanChangeFitter() const
TClass * GetClass() const
virtual void DoAction(TGo4FitterAbstract *)=0
TObjArray & GetParsDepend()
virtual void CollectAllPars()
virtual Bool_t GetParFixed(const char *ParName)
Bool_t GetParEpsilon(const char *ParName, Double_t &Epsilon) override
void SetPad(TVirtualPad *iPad)
Bool_t SetObject(TObject *iObject, Bool_t iOwned=kFALSE, Bool_t CheckClass=kTRUE)
const char * GetParFullName(Int_t n)
Bool_t IsSuitable(TObject *obj) const
TGo4FitterConfig * fxCurrentConfig
TGo4FitParameter * FindPar(const char *ParName)
Double_t GetResultFF() const
virtual Bool_t GetParRange(const char *ParName, Double_t &RangeMin, Double_t &RangeMax)
const TString & GetParameter() const
Bool_t GetParFixed(const char *ParName) override
TGo4FitParameter * Find(const char *ParName)
Bool_t InitializeDependencies(TObjArray &Dependencies, Bool_t BlockPars, Bool_t DoInit)
TGo4FitParameter * Get(Int_t n) override
Bool_t CheckObjects(Bool_t MakeOut=kTRUE)
Bool_t IsRequired() const
Int_t GetParIndex(const TGo4FitParameter *par)
void Print(Option_t *option="") const override
virtual Bool_t GetParFixed(const char *ParName)
void SetValue(Double_t iValue)
virtual void RememberPars()
void CheckParsListChanging()
TGo4FitterAction * GetAction(Int_t num)
Int_t GetNumResults() const
Bool_t fbInitializationDone
void DeleteOutputActions()
virtual Bool_t Initialize()
virtual Bool_t NeedBuffers() const
TGo4FitterOutput * AddOutputAction(const char *Action, const char *Option=nullptr)
Double_t CalculateFitFunction(Double_t *pars=nullptr)
TObject * GetObject() const
void Clear(Option_t *option="") override
TObjArray * ProcessObjects(TObjArray *objs, Bool_t CloneFitter=kTRUE, Bool_t OnlyRequired=kTRUE, TObjArray *rownames=nullptr, TObjArray *colnames=nullptr)
TGo4FitParsList & GetParsNew()
void SetPad(Int_t indx, TVirtualPad *pad)
Double_t GetResultValue(Int_t n) const
Bool_t GetParRange(const char *ParName, Double_t &RangeMin, Double_t &RangeMax) override
void AddActionAt(TGo4FitterAction *Action, Int_t indx)
void Print(Option_t *option="") const override
Int_t GetNumActions() const
Double_t ExecuteDependency(Double_t *Params)
Bool_t IsSuitableConfig(TGo4FitterConfig *Config)
void GetParsValues(Double_t *pars)
void DoActions(Bool_t AllowFitterChange=kFALSE, TObjArray *Actions=nullptr)
Bool_t ApplyConfig(TGo4FitterConfig *Config)
virtual Int_t DoNDFCalculation()
virtual void CollectParsTo(TGo4FitParsList &list)
const TString & GetExpression() const
virtual Bool_t GetParRange(const char *ParName, Double_t &RangeMin, Double_t &RangeMax)
TObjArray & GetParsInit()
void ExecuteDependencies(Double_t *pars)
void SetParsValues(Double_t *pars)