GSI Object Oriented Online Offline (Go4) GO4-6.4.5
Loading...
Searching...
No Matches
TGo4FitModel.cxx
Go to the documentation of this file.
1// $Id$
2//-----------------------------------------------------------------------
3// The GSI Online Offline Object Oriented (Go4) Project
4// Experiment Data Processing at EE department, GSI
5//-----------------------------------------------------------------------
6// Copyright (C) 2000- GSI Helmholtzzentrum fuer Schwerionenforschung GmbH
7// Planckstr. 1, 64291 Darmstadt, Germany
8// Contact: http://go4.gsi.de
9//-----------------------------------------------------------------------
10// This software can be used under the license agreements as stated
11// in Go4License.txt file which is part of the distribution.
12//-----------------------------------------------------------------------
13
14#include "TGo4FitModel.h"
15
16#include <iostream>
17
18#include "TBuffer.h"
19#include "TArrayD.h"
20#include "TArrayI.h"
21#include "TClass.h"
22#include "TMath.h"
23
24#include "TGo4FitData.h"
25#include "TGo4FitParameter.h"
26
28
29TGo4FitAssignment::TGo4FitAssignment(const char *DataName) : TNamed(DataName, "")
30{
31}
32
34{
35 if (fxRatio)
36 delete fxRatio;
37 if (fxModelMask)
38 delete[] fxModelMask;
39 if (fxModelBins)
40 delete[] fxModelBins;
41}
42
44{
45 return !fxRatio ? 1. : fxRatio->GetValue();
46}
47
48void TGo4FitAssignment::Print(Option_t *option) const
49{
50 std::cout << " " << GetName();
51}
52
53// **************************************************************************************************
54
61
62TGo4FitModel::TGo4FitModel(const char *iName, const char *iTitle, Bool_t MakeAmplitude)
63 : TGo4FitComponent(iName, iTitle), fiMinIntegrDepth(0), fiMaxIntegrDepth(0), fdIntegrEps(0.), fbAbsoluteEps(kFALSE),
65 fbNeedToRebuild(kFALSE), fxAllPars(nullptr), fxAllParsValues(nullptr)
66{
67 fxAssigments.SetOwner(kTRUE);
68 if (MakeAmplitude)
70}
71
76
78{
79 Int_t res = TGo4FitParsList::NumPars();
80 if (NumAssigments() > 0)
81 res += NumAssigments() - 1;
82 return res;
83}
84
86{
87 Int_t numpars = TGo4FitParsList::NumPars();
88 if (n < numpars)
89 return TGo4FitParsList::Get(n);
90 n -= numpars - 1;
91 return (n >= 0) && (n < NumAssigments()) ? GetAssigment(n)->fxRatio : nullptr;
92}
93
94void TGo4FitModel::AssignToData(const char *DataName, Double_t RatioValue, Bool_t FixRatio)
95{
96 if (!FindAssigment(DataName)) {
97 TGo4FitAssignment *ass = new TGo4FitAssignment(DataName);
98 if (NumAssigments() > 0) {
99 ass->fxRatio =
100 new TGo4FitParameter(GetRatioName(NumAssigments()), "Amplitude ratio to first data", RatioValue);
101 ass->fxRatio->SetOwner(this);
102 if (FixRatio)
103 ass->fxRatio->SetFixed(kTRUE);
104 }
105 fxAssigments.Add(ass);
106 }
107}
108
109void TGo4FitModel::ChangeDataNameInAssignments(const char *oldname, const char *newname)
110{
111 TGo4FitAssignment *ass = FindAssigment(oldname);
112 if (ass)
113 ass->SetName(newname);
114}
115
116void TGo4FitModel::ClearAssignmentTo(const char *DataName)
117{
118 TGo4FitAssignment *ass = FindAssigment(DataName);
119 if (!ass)
120 return;
121
122 fxAssigments.Remove(ass);
123 delete ass;
124 fxAssigments.Compress();
125
126 for (Int_t n = 0; n < NumAssigments(); n++) {
127 ass = GetAssigment(n);
128 if (!ass->fxRatio)
129 continue;
130 if (n == 0) {
131 delete ass->fxRatio;
132 ass->fxRatio = nullptr;
133 } else
134 ass->fxRatio->SetName(GetRatioName(n + 1));
135 }
136}
137
139{
140 fxAssigments.Clear();
141 fxAssigments.Compress();
142}
143
145{
146 if (!data)
147 return;
148 TGo4FitAssignment *ass = FindAssigment(data->GetName());
149 if (ass)
150 ass->fxData = data;
151}
152
154{
156 return ass ? ass->fxData : nullptr;
157}
158
159Bool_t TGo4FitModel::GetPosition(Int_t naxis, Double_t &pos)
160{
161 if (GetPosPar(naxis)) {
162 pos = GetPosPar(naxis)->GetValue();
163 return kTRUE;
164 }
165 return kFALSE;
166}
167
168Bool_t TGo4FitModel::SetPosition(Int_t naxis, Double_t pos)
169{
170 if (GetPosPar(naxis)) {
171 GetPosPar(naxis)->SetValue(pos);
172 return kTRUE;
173 }
174 return kFALSE;
175}
176
177Bool_t TGo4FitModel::GetWidth(Int_t naxis, Double_t &width)
178{
179 if (GetWidthPar(naxis)) {
180 width = GetWidthPar(naxis)->GetValue();
181 return kTRUE;
182 }
183 return kFALSE;
184}
185
186Bool_t TGo4FitModel::SetWidth(Int_t naxis, Double_t width)
187{
188 if (GetWidthPar(naxis)) {
189 GetWidthPar(naxis)->SetValue(width);
190 return kTRUE;
191 }
192 return kFALSE;
193}
194
195void TGo4FitModel::SetIntegrationsProperty(Int_t iMinIntegrDepth, Int_t iMaxIntegrDepth, Double_t iIntegrEps,
196 Bool_t iAbsoluteEps, Bool_t iIntegrScaling)
197{
198 fiMinIntegrDepth = iMinIntegrDepth;
199 fiMaxIntegrDepth = iMaxIntegrDepth;
200 fdIntegrEps = iIntegrEps;
201 fbAbsoluteEps = iAbsoluteEps;
202 fbIntegrScaling = iIntegrScaling;
203 if (fdIntegrEps <= 0.)
205}
206
208{
209 if (fxAllPars) {
210 delete fxAllPars;
211 fxAllPars = nullptr;
212 }
213 if (fxAllParsValues) {
214 delete fxAllParsValues;
215 fxAllParsValues = nullptr;
216 }
217}
218
219Bool_t TGo4FitModel::Initialize(Int_t UseBuffers)
220{
221 Bool_t use = ((UseBuffers < 0) && GetUseBuffers()) || (UseBuffers > 0);
222 for (Int_t n = 0; n < NumAssigments(); n++) {
224 if (!ass->fxData) {
225 std::cout << "Data " << ass->GetName() << " not assigned to model " << GetName() << std::endl;
226 continue;
227 }
228
229 if (use && ass->fxData->BuffersAllocated()) {
230 if (IsAnyRangeLimits()) {
231 ass->fxModelMask = new Char_t[ass->fxData->GetBinsSize()];
233 }
234
235 ass->fxModelBins = new Double_t[ass->fxData->GetBinsSize()];
236 }
237 }
238
240
241 if (use) {
243
244 fxAllPars = new TGo4FitParsList(kFALSE);
246
247 fxAllParsValues = new TArrayD(fxAllPars->NumPars());
248 fxAllPars->GetParsValues(fxAllParsValues->GetArray());
249 }
250
251 return kTRUE;
252}
253
255{
257 fxCurrentPars.Set(0);
258 for (Int_t n = 0; n < NumAssigments(); n++) {
260 if (ass->fxModelMask) {
261 delete[] ass->fxModelMask;
262 ass->fxModelMask = nullptr;
263 }
264 if (ass->fxModelBins) {
265 delete[] ass->fxModelBins;
266 ass->fxModelBins = nullptr;
267 }
268 }
269}
270
272{
273 Bool_t res = (NumAssigments() > 0);
274 for (Int_t n = 0; n < NumAssigments(); n++)
275 res = res && (GetAssigment(n)->fxModelBins != nullptr);
276 return res;
277}
278
279Double_t *TGo4FitModel::GetModelBins(const char *DataName) const
280{
281 TGo4FitAssignment *ass = FindAssigment(DataName);
282 return ass ? ass->fxModelBins : nullptr;
283}
284
285Double_t TGo4FitModel::EvaluateAndIntegrate(Int_t NumScales, const Double_t *Scales, const Double_t *Widths)
286{
287 if ((NumScales < 1) || !Scales)
288 return 0.;
289
290 if ((fiMinIntegrDepth > 0) && (fiMaxIntegrDepth > 0) && Widths) {
291 TArrayI IntegrIndexes(NumScales);
292 TArrayD ScaleValues(NumScales, Scales);
293 TArrayD WidthValues(NumScales, Widths);
294 TArrayD dScaleValues(NumScales);
295
296 Int_t *dindx = IntegrIndexes.GetArray();
297 Double_t *vector = ScaleValues.GetArray();
298 Double_t *width = WidthValues.GetArray();
299 Double_t *dvector = dScaleValues.GetArray();
300
301 Int_t n = 0;
302
303 // set value and range for current point of model
304 for (n = 0; n < NumScales; n++)
305 vector[n] -= 0.5 * width[n];
306
307 // include left bound of interval
308 Double_t TotalSum = EvalN(vector);
309 Int_t TotalNumPnt = 1;
310
311 Int_t IntegrDepth = 0;
312 Int_t NumStep = 1;
313 Double_t Step = 1.0;
314 Bool_t stopcondition = kFALSE;
315
316 // cycle over integration depths
317 do {
318
319 IntegrIndexes.Reset(0);
320 Double_t Sum = 0.;
321 Int_t NumPnt = 0;
322
323 // run over all integration points
324 do {
325 for (n = 0; n < NumScales; n++)
326 dvector[n] = vector[n] + Step * width[n] * (dindx[n] + 0.5);
327
328 Sum += EvalN(dvector);
329 NumPnt++;
330
331 n = 0;
332 do {
333 dindx[n]++;
334 if (dindx[n] < NumStep)
335 break;
336 dindx[n] = 0;
337 n++;
338 } while (n < NumScales);
339 } while (n < NumScales);
340
341 // check stop condition for integrations depth
342 stopcondition = kFALSE;
343 if (IntegrDepth >= fiMinIntegrDepth) {
344 if (IntegrDepth >= fiMaxIntegrDepth)
345 stopcondition = kTRUE;
346 else {
347 Double_t v1 = TotalSum / TotalNumPnt;
348 Double_t v2 = Sum / NumPnt;
349 Double_t v = TMath::Abs(v1 - v2);
350 if (!fbAbsoluteEps) {
351 if ((v1 != 0.) || (v2 != 0.))
352 v = v / (TMath::Abs(v1) + TMath::Abs(v2));
353 else
354 v = 0.;
355 }
356 if (v <= fdIntegrEps)
357 stopcondition = kTRUE;
358 }
359 }
360 TotalSum += Sum;
361 TotalNumPnt += NumPnt;
362 IntegrDepth++;
363 NumStep *= 2;
364 Step = Step / 2.;
365 } while (!stopcondition);
366
367 Double_t value = 0;
368 if (TotalNumPnt > 0)
369 value = TotalSum / TotalNumPnt;
370 if (fbIntegrScaling)
371 for (n = 0; n < NumScales; n++)
372 value *= width[n];
373 return value;
374 } else
375 return EvalN(Scales);
376}
377
378Double_t TGo4FitModel::EvaluateAtPoint(TGo4FitData *data, Int_t nbin, Bool_t UseRanges)
379{
380 if (!data)
381 return 0.;
382 const Double_t *scales = data->GetScaleValues(nbin);
383 Int_t scalessize = data->GetScalesSize();
384 if (UseRanges && !CheckRangeConditions(scales, scalessize))
385 return 0.;
386 return EvaluateAndIntegrate(scalessize, scales, data->GetWidthValues(nbin));
387}
388
389Double_t TGo4FitModel::EvaluateAtPoint(std::unique_ptr<TGo4FitDataIter> &iter, Bool_t UseRanges)
390{
391 if (!iter)
392 return 0;
393 const Double_t *scales = iter->Scales();
394 Int_t scalessize = iter->ScalesSize();
395 if (UseRanges && !CheckRangeConditions(scales, scalessize))
396 return 0.;
397 return EvaluateAndIntegrate(scalessize, scales, iter->Widths());
398}
399
400void TGo4FitModel::RebuildShape(Bool_t ForceBuild)
401{
402 if (!fxAllPars || !fxAllParsValues)
403 return;
404
405 Bool_t fill = ForceBuild || fbNeedToRebuild;
406 if (!fill)
407 for (Int_t n = 0; n < fxAllPars->NumPars(); n++) {
408 if (n == GetAmplIndex())
409 continue;
410 if ((*fxAllParsValues)[n] != fxAllPars->GetPar(n)->GetValue()) {
411 fill = kTRUE;
412 break;
413 }
414 }
415
416 if (fill)
417 for (Int_t n = 0; n < NumAssigments(); n++) {
419
420 if (!ass->fxData || !ass->fxModelBins)
421 continue;
422
423 TGo4FitData *data = ass->fxData;
424
425 if (!BeforeEval(data->GetScalesSize()))
426 continue;
427
428 Int_t size = data->GetBinsSize();
429 Double_t *bins = ass->fxModelBins;
430 Char_t *mask = ass->fxModelMask;
431 Double_t ratio = ass->RatioValue();
432
433 for (Int_t nbin = 0; nbin < size; nbin++) {
434 if (mask && (mask[nbin] == 0))
435 continue;
436 bins[nbin] = ratio * EvaluateAtPoint(data, nbin, kFALSE);
437 }
438
439 AfterEval();
440 }
441
442 for (Int_t n = 0; n < fxAllPars->NumPars(); n++)
443 (*fxAllParsValues)[n] = fxAllPars->GetPar(n)->GetValue();
444
445 fbNeedToRebuild = kFALSE;
446}
447
449{
450 if (!data || !data->BuffersAllocated())
451 return kFALSE;
452
453 Double_t *result = data->GetBinsResult();
454 if (!result)
455 return kFALSE;
456 Int_t size = data->GetBinsSize();
457
458 Double_t *modelbins = GetModelBins(data->GetName());
459 if (modelbins) {
460 Double_t ampl = GetAmplValue();
461 for (Int_t nbin = 0; nbin < size; nbin++)
462 result[nbin] += ampl * modelbins[nbin];
463 return kTRUE;
464 }
465
466 if (!BeforeEval(data->GetScalesSize()))
467 return kFALSE;
468
469 Double_t ampl = GetAmplValue() * GetRatioValueFor(data->GetName());
470
471 for (Int_t nbin = 0; nbin < size; nbin++)
472 result[nbin] += ampl * EvaluateAtPoint(data, nbin);
473
474 AfterEval();
475
476 return kTRUE;
477}
478
479Bool_t TGo4FitModel::BeforeEval(Int_t ndim)
480{
481 fxCurrentPars.Set(NumPars());
482 GetParsValues(fxCurrentPars.GetArray());
484 if (GetAmplPar())
486 return kTRUE;
487}
488
489Double_t TGo4FitModel::EvalN(const Double_t *v)
490{
491 return UserFunction((Double_t *)v, fxCurrentParsArray);
492}
493
494Double_t TGo4FitModel::Evaluate(Double_t x)
495{
496 Double_t zn = 0.;
497 if (BeforeEval(1)) {
498 zn = GetAmplValue() * EvalN(&x);
499 AfterEval();
500 }
501 return zn;
502}
503
504Double_t TGo4FitModel::Evaluate(Double_t x, Double_t y)
505{
506 Double_t zn = 0.;
507 if (BeforeEval(2)) {
508 Double_t vector[2] = {x, y};
509 zn = GetAmplValue() * EvalN(vector);
510 AfterEval();
511 }
512 return zn;
513}
514
515Double_t TGo4FitModel::Evaluate(Double_t x, Double_t y, Double_t z)
516{
517 Double_t zn = 0.;
518 if (BeforeEval(3)) {
519 Double_t vector[3] = {x, y, z};
520 zn = GetAmplValue() * EvalN(vector);
521 AfterEval();
522 }
523 return zn;
524}
525
526Double_t TGo4FitModel::Evaluate(Double_t *v, Int_t ndim)
527{
528 Double_t zn = 0.;
529 if (BeforeEval(ndim)) {
530 zn = GetAmplValue() * EvalN(v);
531 AfterEval();
532 }
533 return zn;
534}
535
537{
538 return 0;
539}
540
541const Int_t *TGo4FitModel::GetDataFullIndex(TGo4FitData *data, Int_t nbin)
542{
543 return data ? data->GetFullIndex(nbin) : nullptr;
544}
545
547{
548 return data ? data->GetIndexesSize() : 0;
549}
550
552{
553 for (Int_t n = 0; n < NumAssigments(); n++)
554 if (strcmp(DataName, GetAssigment(n)->GetName()) == 0)
555 return GetAssigment(n);
556 return nullptr;
557}
558
560{
561 TString res;
562 res.Form("Ratio%d", n);
563 return res;
564}
565
566Double_t TGo4FitModel::GetRatioValueFor(const char *DataName)
567{
568 TGo4FitAssignment *ass = FindAssigment(DataName);
569 return ass ? ass->RatioValue() : 1.;
570}
571
572void TGo4FitModel::Print(Option_t *option) const
573{
575 std::cout << " Assigned to: ";
576 fxAssigments.Print(option);
577 std::cout << std::endl;
578 if ((fiMinIntegrDepth > 0) && (fiMaxIntegrDepth > 0)) {
579 std::cout << " Integration property: depths from " << fiMinIntegrDepth << " to " << fiMaxIntegrDepth;
580 if (fbAbsoluteEps)
581 std::cout << " absolute";
582 else
583 std::cout << " relative";
584 std::cout << " error " << fdIntegrEps << std::endl;
585 }
586}
587
588void TGo4FitModel::Streamer(TBuffer &b)
589{
590 if (b.IsReading()) {
591 TGo4FitModel::Class()->ReadBuffer(b, this);
592 for (Int_t n = 0; n < NumAssigments(); n++)
593 if (GetAssigment(n)->fxRatio)
594 GetAssigment(n)->fxRatio->SetOwner(this);
595 } else {
596 TGo4FitModel::Class()->WriteBuffer(b, this);
597 }
598}
Internal class, used for assignment of model component to data.
virtual ~TGo4FitAssignment()
Destroys TGo4FitAssignment object.
TGo4FitAssignment()
Default constructor.
Double_t RatioValue()
TGo4FitData * fxData
Pointer on assigned data.
Char_t * fxModelMask
Array of boolean values, selected model bins.
TGo4FitParameter * fxRatio
Parameter for ratio value.
Double_t * fxModelBins
Array of model bins for assigned data.
void Print(Option_t *option="") const override
Print information about object on standard output.
TGo4FitParameter * GetAmplPar()
Return amplitude parameter object.
Bool_t CheckRangeConditions(const Double_t *values, Int_t numaxis)
Check all range conditions for specified point.
Bool_t GetUseBuffers() const
Returns flag of usage of additional buffers.
void CollectParsTo(TGo4FitParsList &list) override
Collect all parameters to provided parameters list object.
Int_t GetAmplIndex() const
Returns index of amplitude parameter.
TGo4FitParameter * NewAmplitude(const char *Name=nullptr, Double_t iValue=0., Bool_t IsFixed=kFALSE, Int_t AtIndx=0)
Create amplitude parameter with specified properties.
TGo4FitComponent()
Default constructor.
Bool_t IsAnyRangeLimits() const
Return kTRUE, if any range conditions were introduced.
Double_t GetAmplValue()
Return value of amplitude parameter.
void Print(Option_t *option="") const override
Print info about object on standard output.
Basic abstract class for representing data, which should be fitted.
Definition TGo4FitData.h:39
const Double_t * GetWidthValues(Int_t nbin) const
Return scales width values for specified index from buffer.
const Double_t * GetScaleValues(Int_t nbin) const
Return scale values for specified index from buffer.
Double_t * GetBinsResult() const
Returns pointer on buffer with complete model of data bins.
Bool_t BuffersAllocated() const
Checks, if buffers allocated for data.
Int_t GetBinsSize() const
Return number of data bins in buffers.
Int_t GetIndexesSize() const
Returns dimension of indexes arrays.
const Int_t * GetFullIndex(Int_t nbin) const
Return indexes values for specified data bin from buffer.
Int_t GetScalesSize() const
Returns number of axis values for each point.
void ApplyRangesForModelMask(TGo4FitComponent *model, Char_t *ModelMask)
Exclude points from model according model range conditions.
void ClearAssignments()
Remove all assignments.
Bool_t fbAbsoluteEps
States, if integration precision absolute or relative.
TArrayD fxCurrentPars
Array of values of parameters.
Double_t * GetModelBins(const char *DataName) const
Get model bins for specified data (if exists).
void SetNeedToRebuild()
Sets flag, that shape bins should be refilled next time, when RebuildShape() routine will be called.
TGo4FitParsList * fxAllPars
List of all parameters, associated not only with component directly but also with encapsulated object...
virtual Double_t EvalN(const Double_t *v)
Calculates value of model according current parameters values and provided axes values.
Bool_t AddModelToDataResult(TGo4FitData *data)
Evaluate model values for all data point and add them to result buffer.
Double_t * fxCurrentParsArray
Pointer on array of parameters values.
Double_t fdIntegrEps
Integration precision.
void ConnectToDataIfAssigned(TGo4FitData *data)
Check, if model assigned to such a data (via name) and store pointer on this data object.
Bool_t BuffersAllocated() const
Checks if model allocate buffers for calculations.
virtual void Finalize()
Deletes all buffers, created during initialization.
virtual Bool_t SetPosition(Int_t naxis, Double_t pos)
Sets position of model component, if possible.
virtual Bool_t Initialize(Int_t UseBuffers=-1)
Initialize model object.
void Print(Option_t *option="") const override
Print information about model object on standard output.
virtual Double_t UserFunction(Double_t *, Double_t *)
Another place, where user specific code can be placed for model values calculation.
TGo4FitAssignment * FindAssigment(const char *DataName) const
Find assignment to given data.
TString GetRatioName(Int_t n)
Set name of ratio parameter.
virtual TGo4FitParameter * GetWidthPar(Int_t naxis=0)
Return parameter (if exist), which represent width of model component for given axis.
void RemoveAllPars()
Clear all buffers, allocated during initialization.
virtual Bool_t BeforeEval(Int_t ndim)
Prepares (if necessary) some intermediate variables to be able calculate values of model via EvalN() ...
virtual ~TGo4FitModel()
Delete TGo4FitModel object.
Double_t EvaluateAndIntegrate(Int_t NumScales, const Double_t *Scales, const Double_t *Widths)
Make integration of model inside given point, if integration specified.
Int_t fiGroupIndex
Store group index of specified model.
Int_t NumPars() override
Return number of parameters in list.
virtual Bool_t GetWidth(Int_t naxis, Double_t &width)
Returns with of model component, if exists.
virtual Bool_t GetPosition(Int_t naxis, Double_t &pos)
Return position of model, if exists.
virtual Double_t EvaluateAtPoint(TGo4FitData *data, Int_t nbin, Bool_t UseRanges=kTRUE)
Evaluate model value for specified data point.
void ChangeDataNameInAssignments(const char *oldname, const char *newname)
Change name of data in assignments.
Bool_t fbNeedToRebuild
Internal flag.
Int_t fiMaxIntegrDepth
Maximum integration depth.
Bool_t fbIntegrScaling
Scale integral to integration volume.
Int_t GetDataIndexesSize(TGo4FitData *data)
void RebuildShape(Bool_t ForceBuild=kFALSE)
Recalculates shape of object.
virtual Double_t Integral()
Calculates integral of model component.
TArrayD * fxAllParsValues
virtual Double_t Evaluate(Double_t x)
Calculates value of model for given x value.
TGo4FitParameter * Get(Int_t n) override
void AssignToData(const char *DataName, Double_t RatioValue=1., Bool_t FixRatio=kFALSE)
Assign model to specified data object.
const Int_t * GetDataFullIndex(TGo4FitData *data, Int_t nbin)
TGo4FitModel()
Default constructor.
virtual void AfterEval()
Clear buffers, which were created by BeforeEval() method.
TGo4FitAssignment * GetAssigment(Int_t n)
Return TGo4FitAssignment object with given index.
virtual TGo4FitParameter * GetPosPar(Int_t naxis=0)
Return parameter (if exist), which represent position of model for given axis.
void SetIntegrationsProperty(Int_t iMinIntegrDepth, Int_t iMaxIntegrDepth=0, Double_t iIntegrEps=0., Bool_t iAbsoluteEps=kFALSE, Bool_t iIntegrScaling=kFALSE)
Set integration properties.
TObjArray fxAssigments
List of TGo4FitAssignment objects.
TGo4FitData * GetAssignedConnection(Int_t n)
Return pointer on assigned data.
Int_t fiMinIntegrDepth
Minimum depth of integration.
Double_t GetRatioValueFor(const char *DataName)
Returns ratio value for specified data object.
virtual Bool_t SetWidth(Int_t naxis, Double_t width)
Sets width of model component, if possible.
void ClearAssignmentTo(const char *DataName)
Remove assignment to given data (if exists).
Int_t NumAssigments() const
Returns number of assignment for this model.
void SetOwner(TNamed *iOwner)
Sets owner of object.
Model and data objects parameter.
Double_t GetValue() const
Return parameter value.
void SetValue(Double_t iValue)
Set parameter value.
void SetFixed(Bool_t iFixed)
Set status of parameter fixed or not.
void GetParsValues(Double_t *pars)
Copy values of all parameters in list to provided array.
virtual TGo4FitParameter * Get(Int_t n)
TGo4FitParsList()
Default constructor.
virtual Int_t NumPars()
Return number of parameters in list.