ROOT logo
AliRoot » STEER » CDB » AliSplineFit

class AliSplineFit: public TObject

                Implementation of the AliSplineFit class
   The class performs a spline fit on an incoming TGraph. The graph is
   divided into several parts (identified by knots between each part).
   Spline fits are performed on each part. According to user parameters,
   the function, first and second derivative are requested to be continuous
   at each knot.
        Origin: Marian Ivanov, CERN, Marian.Ivanov@cern.ch
   Adjustments by Haavard Helstrup,  Haavard.Helstrup@cern.ch

Function Members (Methods)

public:
AliSplineFit()
AliSplineFit(const AliSplineFit&)
virtual~AliSplineFit()
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
static TClass*Class()
virtual const char*TObject::ClassName() const
voidCleanup()
virtual voidTObject::Clear(Option_t* = "")
virtual TObject*TObject::Clone(const char* newname = "") const
virtual Int_tTObject::Compare(const TObject* obj) const
virtual voidTObject::Copy(TObject& object) const
voidCopyGraph()
virtual voidTObject::Delete(Option_t* option = "")MENU
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
virtual voidTObject::Dump() constMENU
virtual voidTObject::Error(const char* method, const char* msgfmt) const
Double_tEval(Double_t x, Int_t deriv = 0) const
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
static TGraph*GenerGraph(Int_t npoints, Double_t fraction, Double_t s1, Double_t s2, Double_t s3, Int_t der = 0)
static TGraph*GenerNoise(TGraph* graph0, Double_t s0)
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual const char*TObject::GetIconName() const
Int_tGetKnots() const
Int_tGetMinPoints() const
virtual const char*TObject::GetName() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
virtual const char*TObject::GetTitle() const
virtual UInt_tTObject::GetUniqueID() const
Double_t*GetX() const
Double_t*GetY0() const
Double_t*GetY1() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTObject::Hash() const
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
voidInitKnots(TGraph* graph, Int_t min, Int_t iter, Double_t maxDelta)
virtual voidTObject::Inspect() constMENU
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tTObject::IsSortable() const
Bool_tTObject::IsZombie() const
virtual voidTObject::ls(Option_t* option = "") const
TGraph*MakeDiff(TGraph* graph) const
TH1F*MakeDiffHisto(TGraph* graph) const
TGraph*MakeGraph(Double_t xmin, Double_t xmax, Int_t npoints, Int_t deriv = 0) const
voidMakeKnots0(TGraph* graph, Double_t maxdelta, Int_t minpoints)
voidMakeSmooth(TGraph* graph, Float_t ratio, Option_t* type)
voidTObject::MayNotUse(const char* method) const
virtual Bool_tTObject::Notify()
voidTObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const
static voidTObject::operator delete(void* ptr)
static voidTObject::operator delete(void* ptr, void* vp)
static voidTObject::operator delete[](void* ptr)
static voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
AliSplineFit&operator=(const AliSplineFit&)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidTObject::Print(Option_t* option = "") const
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
voidTObject::ResetBit(UInt_t f)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "")
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
voidSetGraph(TGraph* graph)
voidSetMinPoints(Int_t minPoints)
static voidTObject::SetObjectStat(Bool_t stat)
virtual voidTObject::SetUniqueID(UInt_t uid)
virtual voidShowMembers(TMemberInspector&)
voidSplineFit(Int_t nder)
virtual voidStreamer(TBuffer&)
voidStreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
static voidTest(Int_t npoints = 2000, Int_t ntracks = 100, Float_t snoise = 0.05)
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
voidUpdate(TSpline3* spline, Int_t nknots)
virtual voidTObject::UseCurrentStyle()
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const
protected:
Float_tCheckKnot(Int_t iKnot)
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
static TLinearFitter*fitterStatic()
voidTObject::MakeZombie()
Int_tOptimizeKnots(Int_t nIter)
Bool_tRefitKnot(Int_t iKnot)

Data Members

protected:
Bool_tfBDumpdump debug information flag
Double_tfChi2chi2 per degree of freedom
Double_t*fChi2I[fN] - chi2 on interval
TClonesArray*fCovarsobject array of covariance in knots
TGraph*fGraph! initial graph
Int_t*fIndex[fN0] index of point corresponding to knot
Double_tfMaxDeltamaximal deviation of the spline fit
Int_tfMinPointsminimum number of points to create AliSplineFit
Int_tfNnumber of knots after compression
Int_tfN0number of knots in iteration 0
Int_tfNminnumber of points per one knot in iteration 0
TClonesArray*fParamsobject array of parameters in knots
Double_tfSigmalocally estimated sigma
Double_t*fX[fN] - xknot value
Double_t*fY0[fN] - y value at X
Double_t*fY1[fN] - y derivative value at X

Class Charts

Inheritance Chart:
TObject
AliSplineFit

Function documentation

TLinearFitter* fitterStatic()
AliSplineFit()
 Default constructor

{ }
AliSplineFit(const AliSplineFit& )
  Copy constructor

AliSplineFit& operator=(const AliSplineFit& )
  assignment operator

~AliSplineFit()
 destructor. Don't delete fGraph, as this normally comes as input parameter

Double_t Eval(Double_t x, Int_t deriv = 0) const
 evaluate value at x
   deriv = 0: function value
         = 1: first derivative
         = 2: 2nd derivative
         = 3: 3rd derivative

  a2 = -(3*a0 -3*b0 + 2*a1*dx +b1*dx)/(dx*dx)
  a3 = -(-2*a0+2*b0 - a1*dx - b1*dx)/(dx*dx*dx)
TGraph * GenerGraph(Int_t npoints, Double_t fraction, Double_t s1, Double_t s2, Double_t s3, Int_t der = 0)
 generate random graph
 xrange 0,1
 yrange 0,1
 s1, s2, s3 -  sigma of derivative
 fraction   -
TGraph * GenerNoise(TGraph* graph0, Double_t s0)
 add noise to graph

TGraph * MakeGraph(Double_t xmin, Double_t xmax, Int_t npoints, Int_t deriv = 0) const
 if npoints<=0 draw derivative

TGraph * MakeDiff(TGraph* graph) const
 Make graph of difference to reference graph

TH1F * MakeDiffHisto(TGraph* graph) const
 Make histogram of difference to reference graph

void InitKnots(TGraph* graph, Int_t min, Int_t iter, Double_t maxDelta)
 initialize knots + estimate sigma of noise + make initial parameters


Int_t OptimizeKnots(Int_t nIter)


Bool_t RefitKnot(Int_t iKnot)


Float_t CheckKnot(Int_t iKnot)


void SplineFit(Int_t nder)
 Cubic spline fit of graph

 nder
 nder<0  - no continuity requirement
     =0  - continous  0 derivative
     =1  - continous  1 derivative
     >1  - continous  2 derivative

void MakeKnots0(TGraph* graph, Double_t maxdelta, Int_t minpoints)
 make knots  - restriction max distance and minimum points

void MakeSmooth(TGraph* graph, Float_t ratio, Option_t* type)
 Interface to GraphSmooth

void Update(TSpline3* spline, Int_t nknots)


void Test(Int_t npoints = 2000, Int_t ntracks = 100, Float_t snoise = 0.05)
 test function

void Cleanup()
 deletes extra information to reduce amount of information stored on the data
 base
void CopyGraph()
 enter graph points directly to fit parameters
 (to bee used when too few points are available)

Int_t GetKnots() const
{return fN;}
Double_t* GetX() const
{return fX;}
Double_t* GetY0() const
{return fY0;}
Double_t* GetY1() const
 Test functions

{return fY1;}
void SetGraph(TGraph* graph)
{ fGraph=graph; }
void SetMinPoints(Int_t minPoints)
{ fMinPoints=minPoints;}
Int_t GetMinPoints() const
{ return fMinPoints; }