30 fiDataType(0), fbUseBinScale(kFALSE), fiTakeSigmasFrom(1), fdSigmaValue(1.), fdExcludeLessThen(0.),
37 fbUseBinScale(kFALSE), fiTakeSigmasFrom(1), fdSigmaValue(1.), fdExcludeLessThen(0.),
54 if ( (nslots<0) || (nslots == oldnum) )
return kFALSE;
57 for(Int_t n=oldnum;n<nslots;n++) {
58 TString name(
"Trans");
60 fxAxisTrans.Add(
new TGo4FitSlot(name.Data(),
"Axis transformation",
this, TGo4FitAxisTrans::Class(), kFALSE));
63 for (Int_t n=oldnum;n>nslots;n--) {
114 if (iter==0)
return 0;
123 if (iter==0)
return kFALSE;
130 Bool_t use = ((UseBuffers<0) && GetUseBuffers()) || (UseBuffers>0);
152 if (iter->
Reset())
do {
170 }
while (iter->
Next());
215 if (iter==0)
return kFALSE;
218 min = iter->
Scales()[naxis]; max = min;
220 Double_t value = iter->
Scales()[naxis];
221 if (value<min) min = value;
else
222 if (value>max) max = value;
223 }
while (iter->
Next(kFALSE));
233 if (iter==0)
return 0;
243 if (iter==0)
return 0;
271 if (data==0)
return kFALSE;
273 if (iter==0)
return kFALSE;
285 if (ModelMask==0)
return;
293 ModelMask[nbin] = res ? 1 : 0;
298 if (iter->
Reset())
do {
300 ModelMask[nbin] = res ? 1 : 0;
302 }
while (iter->
Next());
316 std::cout <<
" Data type: ";
318 case 1: std::cout <<
"histogram" << std::endl;
break;
319 case 2: std::cout <<
"graph" << std::endl;
break;
320 default: std::cout <<
fiDataType << std::endl;
322 std::cout <<
" Use bin scale: " <<
fbUseBinScale << std::endl;
323 std::cout <<
" Take sigmas from: " ;
325 case 0: std::cout <<
"none" << std::endl;
break;
326 case 1: std::cout <<
"data" << std::endl;
break;
327 case 2: std::cout <<
"const value " <<
GetSigmaValue() << std::endl;
break;
330 std::cout <<
" Axis transformation data: " << std::endl;
334 void TGo4FitData::Streamer(TBuffer& b)
338 TGo4FitData::Class()->ReadBuffer(b,
this);
346 TGo4FitData::Class()->WriteBuffer(b,
this);
354 fxIndexes(), fxScales(), fxWidths(), fdValue(0.), fdStandardDeviation(1.), fiNumPoint(0), fbReachEnd(kTRUE) {
362 if (data==0)
return kFALSE;
368 else size = NumOwnAxis;
370 if (size<=0)
return kFALSE;
391 if (data==0)
return kFALSE;
394 if (index==0)
return kFALSE;
396 for(Int_t n=0;n<
fxScales.GetSize();n++)
400 for(Int_t n=0; n<
fxScales.GetSize();n++)
403 for(Int_t n=0; n<
fxWidths.GetSize();n++)
417 fxWidths[n] = TMath::Abs(arr2[n]-arr1[n]);
428 while (n<Index.GetSize()) {
430 if (Index[n]<Limits[n])
return kTRUE;
438 if (data==0)
return kFALSE;
442 }
else return kFALSE;
447 if (data==0)
return kFALSE;
460 if (!UseRanges) {
fbReachEnd = kFALSE;
return kTRUE; }
481 if (!UseRanges)
return kTRUE;
492 for(
int n=0;n<
fxWidths.GetSize();n++)
498 if (!
Reset(UseRanges))
return 0;
502 }
while (
Next(UseRanges)) ;
507 if (!
Reset(kFALSE))
return kFALSE;
513 }
while(
Next(kFALSE));
523 if (NumDim>3) NumDim=3;
528 case 1: histo =
new TH1D(HistoName,
"result", Limits[0]+1, dummy);
break;
529 case 2: histo =
new TH2D(HistoName,
"result", Limits[0]+1, dummy, Limits[1]+1, dummy);
break;
530 case 3: histo =
new TH3D(HistoName,
"result", Limits[0]+1, dummy, Limits[1]+1, dummy, Limits[2]+1, dummy);
break;
534 histo->SetDirectory(0);
537 for (Int_t n=0;n<NumDim;n++)
538 Axises[n] =
new Double_t[Limits[n]+2];
542 if (
Reset(UseRanges))
do {
545 case 1: histo->SetBinContent(
Indexes()[0]+1, ampl*
Value());
break;
549 for(Int_t n=0;n<NumDim;n++) {
554 }
while(
Next(UseRanges));
556 histo->GetXaxis()->Set(Limits[0]+1,Axises[0]);
557 if (NumDim>1) histo->GetYaxis()->Set(Limits[1]+1,Axises[1]);
558 if (NumDim>2) histo->GetZaxis()->Set(Limits[2]+1,Axises[2]);
560 for (Int_t n=0;n<NumDim;n++)
568 if ((NumPoints<=0) || (
ScalesSize()<1))
return 0;
570 TGraph* gr =
new TGraph(NumPoints);
571 gr->SetName(GraphName);
572 if (
Reset(UseRanges))
do {
573 (gr->GetX())[
Point()] =
x();
576 }
while(
Next(UseRanges));
582 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)