30 fiDataType(0), fbUseBinScale(kFALSE), fiTakeSigmasFrom(1), fdSigmaValue(1.), fdExcludeLessThen(0.),
38 fbUseBinScale(kFALSE), fiTakeSigmasFrom(1), fdSigmaValue(1.), fdExcludeLessThen(0.),
59 if ( (nslots<0) || (nslots == oldnum) )
return kFALSE;
62 for(Int_t n=oldnum;n<nslots;n++) {
63 TString name(
"Trans");
65 fxAxisTrans.Add(
new TGo4FitSlot(name.Data(),
"Axis transformation",
this, TGo4FitAxisTrans::Class(), kFALSE));
68 for (Int_t n=oldnum;n>nslots;n--) {
121 if (iter==0)
return 0;
138 Bool_t use = ((UseBuffers < 0) && GetUseBuffers()) || (UseBuffers > 0);
183 }
while (iter->
Next());
230 if (iter==0)
return kFALSE;
233 min = iter->
Scales()[naxis]; max = min;
235 Double_t value = iter->
Scales()[naxis];
236 if (value<min) min = value;
else
237 if (value>max) max = value;
238 }
while (iter->
Next(kFALSE));
248 if (iter==0)
return 0;
258 if (iter==0)
return 0;
286 if (data==0)
return kFALSE;
288 if (iter==0)
return kFALSE;
300 if (ModelMask==0)
return;
308 ModelMask[nbin] = res ? 1 : 0;
313 if (iter->
Reset())
do {
315 ModelMask[nbin] = res ? 1 : 0;
317 }
while (iter->
Next());
331 std::cout <<
" Data type: ";
333 case 1: std::cout <<
"histogram" << std::endl;
break;
334 case 2: std::cout <<
"graph" << std::endl;
break;
335 default: std::cout <<
fiDataType << std::endl;
337 std::cout <<
" Use bin scale: " <<
fbUseBinScale << std::endl;
338 std::cout <<
" Take sigmas from: " ;
340 case 0: std::cout <<
"none" << std::endl;
break;
341 case 1: std::cout <<
"data" << std::endl;
break;
342 case 2: std::cout <<
"const value " <<
GetSigmaValue() << std::endl;
break;
345 std::cout <<
" Axis transformation data: " << std::endl;
349 void TGo4FitData::Streamer(TBuffer& b)
353 TGo4FitData::Class()->ReadBuffer(b,
this);
361 TGo4FitData::Class()->WriteBuffer(b,
this);
369 fxIndexes(), fxScales(), fxWidths(), fdValue(0.), fdStandardDeviation(1.), fiNumPoint(0), fbReachEnd(kTRUE) {
377 if (data==0)
return kFALSE;
383 else size = NumOwnAxis;
385 if (size<=0)
return kFALSE;
406 if (data==0)
return kFALSE;
409 if (index==0)
return kFALSE;
411 for(Int_t n=0;n<
fxScales.GetSize();n++)
415 for(Int_t n=0; n<
fxScales.GetSize();n++)
418 for(Int_t n=0; n<
fxWidths.GetSize();n++)
432 fxWidths[n] = TMath::Abs(arr2[n]-arr1[n]);
443 while (n<Index.GetSize()) {
445 if (Index[n]<Limits[n])
return kTRUE;
453 if (data==0)
return kFALSE;
457 }
else return kFALSE;
462 if (data==0)
return kFALSE;
475 if (!UseRanges) {
fbReachEnd = kFALSE;
return kTRUE; }
496 if (!UseRanges)
return kTRUE;
507 for(
int n=0;n<
fxWidths.GetSize();n++)
513 if (!
Reset(UseRanges))
return 0;
517 }
while (
Next(UseRanges)) ;
522 if (!
Reset(kFALSE))
return kFALSE;
528 }
while(
Next(kFALSE));
538 if (NumDim>3) NumDim=3;
543 case 1: histo =
new TH1D(HistoName,
"result", Limits[0]+1, dummy);
break;
544 case 2: histo =
new TH2D(HistoName,
"result", Limits[0]+1, dummy, Limits[1]+1, dummy);
break;
545 case 3: histo =
new TH3D(HistoName,
"result", Limits[0]+1, dummy, Limits[1]+1, dummy, Limits[2]+1, dummy);
break;
549 histo->SetDirectory(0);
552 for (Int_t n=0;n<NumDim;n++)
553 Axises[n] =
new Double_t[Limits[n]+2];
557 if (
Reset(UseRanges))
do {
560 case 1: histo->SetBinContent(
Indexes()[0]+1, ampl*
Value());
break;
564 for(Int_t n=0;n<NumDim;n++) {
569 }
while(
Next(UseRanges));
571 histo->GetXaxis()->Set(Limits[0]+1,Axises[0]);
572 if (NumDim>1) histo->GetYaxis()->Set(Limits[1]+1,Axises[1]);
573 if (NumDim>2) histo->GetZaxis()->Set(Limits[2]+1,Axises[2]);
575 for (Int_t n=0;n<NumDim;n++)
583 if ((NumPoints<=0) || (
ScalesSize()<1))
return 0;
585 TGraph* gr =
new TGraph(NumPoints);
586 gr->SetName(GraphName);
587 if (
Reset(UseRanges))
do {
588 (gr->GetX())[
Point()] =
x();
591 }
while(
Next(UseRanges));
597 if (!
Reset(kFALSE))
return 0;
Bool_t DefineScaleMinMax(Int_t naxis, Double_t &min, Double_t &max)
TH1 * CreateHistogram(const char *HistoName, Bool_t UseRanges=kFALSE, Bool_t SetBins=kFALSE)
Bool_t ProduceScales(const Int_t *index, const Double_t *ownscales, const Double_t *ownwidths)
Double_t fdStandardDeviation
virtual void Print(Option_t *option) const
TGo4FitSlot * SetObject(TObject *obj, Bool_t iOwned=kFALSE)
virtual Bool_t IsAnyDataTransform()
Bool_t CheckRangeConditions(const Double_t *values, Int_t numaxis)
virtual void Print(Option_t *option) const
Bool_t SetNumberOfTransSlots(Int_t nslots)
const Int_t * GetFullIndex(Int_t nbin)
virtual TGo4FitDataIter * MakeIter()
TObject * CreateDrawObject(const char *ObjName)
void ReleaseAllPointers()
Bool_t DefineIndexesLimits(TArrayI &Limits)
Int_t GetSigmaSource() const
void TransformScales(Double_t *scales)
TGraph * CreateGraph(const char *GraphName, Bool_t UseRanges=kFALSE, Bool_t SetBins=kFALSE)
Bool_t NextIndex(TArrayI &Index, TArrayI &Limits)
Int_t GetNumberOfTransSlots()
TGo4FitSlot * GetAxisTransSlot(Int_t nslot)
virtual Bool_t Initialize(Int_t UseBuffers=-1)
Double_t GetSigmaValue() const
TGo4FitParameter * NewAmplitude(const char *Name=0, Double_t iValue=0., Bool_t IsFixed=kFALSE, Int_t AtIndx=0)
virtual Bool_t Reset(Bool_t UseRanges=kTRUE)
const Double_t * Widths() const
Bool_t IsCompatibleData(TGo4FitData *data)
Bool_t GetUseBinScale() const
virtual ~TGo4FitDataIter()
virtual Bool_t StartReset()=0
Bool_t BuffersAllocated() const
const Double_t * GetScaleValues(const Int_t nbin)
Int_t CountPoints(Bool_t UseRanges=kTRUE)
Int_t GetBinsSize() const
virtual Bool_t Next(Bool_t UseRanges=kTRUE)
virtual TGo4FitData * GetData() const =0
TObject * CreateDrawObject(const char *ObjName)
Int_t GetDataType() const
Bool_t ReserveArrays(Int_t NumDimen, Int_t NumOwnAxis, Bool_t HasWidth)
virtual void FillSlotList(TSeqCollection *lst)
virtual void FillSlotList(TSeqCollection *list)
TGo4FitAxisTrans * GetAxisTrans(Int_t nslot)
void SetAxisTrans(Int_t nslot, TGo4FitAxisTrans *Trans, Bool_t TransOwned=kFALSE)
Bool_t HasIndexes() const
void SetDefaults(TNamed *iOwner, TClass *iClass)
const Int_t * Indexes() const
const Double_t * Scales() const
void AddAxisTrans(TGo4FitAxisTrans *Trans, Bool_t TransOwned=kFALSE)
virtual Bool_t ShiftToNextPoint()=0
Int_t GetScalesSize() const
virtual void Transformation(Double_t *scales, Int_t naxis)=0
virtual Bool_t ReadCurrentPoint()=0
Double_t GetExcludeLessThen() const
TObject * GetObject() const
Int_t IndexesSize() const
Double_t StandardDeviation() const
Bool_t CheckPointForRange()
void ApplyRangesForModelMask(TGo4FitComponent *model, Char_t *ModelMask)
Int_t GetIndexesSize() const
const Double_t * GetWidthValues(const Int_t nbin)
void SetAxisTransNeeded(Int_t nslot, Bool_t iNeeded=kFALSE)