ROOT logo
AliRoot » EMCAL » AliCaloFastAltroFitv0

class AliCaloFastAltroFitv0: public TNamed

 Author : Aleksei Pavlinov; IHEP, Protvino, Russia
 Feb 17, 2009
 Implementation of fit procedure from ALICE-INT-2008-026:
 "Time and amplitude reconstruction from sampling 
  measurements of the PHOS signal profile"
  M.Yu.Bogolyubsky and ..

  Fit by function en*x*x*exp(-2.*x): x = (t-t0)/tau.
  The main goal is fast estimation of amplitude and t0.

Function Members (Methods)

public:
AliCaloFastAltroFitv0()
AliCaloFastAltroFitv0(const char* name, const char* title, const Double_t sig = 1.3, const Double_t tau = 2.35, const Double_t n = 2.)
virtual~AliCaloFastAltroFitv0()
voidTObject::AbstractMethod(const char* method) const
static voidAmplitude(const Double_t* t, const Double_t* y, const Int_t nPoints, const Double_t sig, const Double_t tau, Double_t t0, Double_t& amp, Double_t& chi2)
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
static voidCalculateParsErrors(const Double_t* t, const Double_t* y, const Int_t nPoints, const Double_t sig, const Double_t tau, Double_t& amp, Double_t& t0, Double_t& eamp, Double_t& et0)
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTNamed::Clear(Option_t* option = "")
virtual TObject*TNamed::Clone(const char* newname = "") const
virtual Int_tTNamed::Compare(const TObject* obj) const
virtual voidTNamed::Copy(TObject& named) const
static voidCutRightPart(Int_t* t, Int_t* y, Int_t nPoints, Double_t tMax, Int_t& ii)
static voidDeductPedestal(Int_t* t, Int_t* y, Int_t nPointsIn, Double_t ped, Double_t tau, Double_t* tn, Double_t* yn, Int_t& nPointsOut)
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
TCanvas*DrawFastFunction()MENU
virtual voidTObject::Dump() constMENU
virtual voidTObject::Error(const char* method, const char* msgfmt) 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)
voidFastFit(TH1F* h, Double_t sig, Double_t tau, Double_t n, Double_t ped, Double_t tMax)
virtual voidFastFit(Int_t* t, Int_t* y, Int_t nPoints, Double_t sig, Double_t tau, Double_t n, Double_t ped, Double_t tMax)
static voidFastFit(const Double_t* t, const Double_t* y, const Int_t nPoints, const Double_t sig, const Double_t tau, Double_t& amp, Double_t& eamp, Double_t& t0, Double_t& et0, Double_t& chi2)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
virtual voidTNamed::FillBuffer(char*& buffer)
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
Double_tGetAmp() const
Double_tGetAmpErr() const
Double_tGetChi2() const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
Double_tGetEnergy() const
voidGetFitResult(Double_t& amp, Double_t& eamp, Double_t& t0, Double_t& et0, Double_t& chi2, Int_t& ndf) const
voidGetFittedPoints(Int_t& nfit, Double_t** ar) const
virtual const char*TObject::GetIconName() const
Double_tGetN() const
virtual const char*TNamed::GetName() const
Int_tGetNDF() const
Int_tGetNfit() const
Int_tGetNoFit() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
Double_tGetPed() const
Double_tGetSig() const
Double_tGetT0() const
Double_tGetT0Err() const
Double_tGetTau() const
Double_tGetTime() const
virtual const char*TNamed::GetTitle() const
virtual UInt_tTObject::GetUniqueID() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTNamed::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
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_tTNamed::IsSortable() const
Bool_tTObject::IsZombie() const
virtual voidTNamed::ls(Option_t* option = "") const
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)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidTNamed::Print(Option_t* option = "") const
static Bool_tQuadraticRoots(const Double_t a, const Double_t b, const Double_t c, Double_t& x1, Double_t& x2)
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
voidReset()
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)
voidSetN(const Double_t n)
virtual voidTNamed::SetName(const char* name)MENU
virtual voidTNamed::SetNameTitle(const char* name, const char* title)
static voidTObject::SetObjectStat(Bool_t stat)
voidSetParameters(const Double_t sig, const Double_t tau, const Double_t n)
voidSetSig(const Double_t sig)
voidSetTau(const Double_t tau)
virtual voidTNamed::SetTitle(const char* title = "")MENU
virtual voidTObject::SetUniqueID(UInt_t uid)
virtual voidShowMembers(TMemberInspector&)
virtual Int_tTNamed::Sizeof() const
static Double_tStdResponseFunction(const Double_t* x, const Double_t* par)
virtual voidStreamer(TBuffer&)
voidStreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
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:
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
voidTObject::MakeZombie()

Data Members

protected:
Double_tfAmpamplitude
Double_tfAmpErramplitude error
Double_t*fAmpfit! - amplitudes
Double_tfChi2chi square
Double_tfNsecond fixed parameter od fitting function (should be positive)
Int_tfNDFnumber degree of freedom
TStringTNamed::fNameobject identifier
Int_tfNfit! number points for fit
Int_tfNoFitno solution for square equation
Double_tfPedpedestal
Double_tfSigerror in amplitude - used in chi2 calculation
TF1*fStdFun! function for drawing
Double_tfT0time
Double_tfT0Errtime error
Double_tfTaufirst fixed parameter od fitting function (should be - filter time response
Double_t*fTfit! points for fit after selection - time bins
TStringTNamed::fTitleobject title

Class Charts

Inheritance Chart:
TNamed
AliCaloFastAltroFitv0

Function documentation

AliCaloFastAltroFitv0()
AliCaloFastAltroFitv0(const char* name, const char* title, const Double_t sig = 1.3, const Double_t tau = 2.35, const Double_t n = 2.)
AliCaloFastAltroFitv0(const AliCaloFastAltroFitv0& obj)
~AliCaloFastAltroFitv0()
AliCaloFastAltroFitv0& operator=(const AliCaloFastAltroFitv0& obj)
 Not implemented yet
void FastFit(Int_t* t, Int_t* y, Int_t nPoints, Double_t sig, Double_t tau, Double_t n, Double_t ped, Double_t tMax)
void FastFit(TH1F* h, Double_t sig, Double_t tau, Double_t n, Double_t ped, Double_t tMax)
 Service method for convinience only
 h - hist with altro response, could have empty bin
 and center of bin could be different from bin number
void Reset()
 Reset variables
void GetFitResult(Double_t& amp, Double_t& eamp, Double_t& t0, Double_t& et0, Double_t& chi2, Int_t& ndf) const
 Return results of fitting procedure
void GetFittedPoints(Int_t& nfit, Double_t** ar) const
void CutRightPart(Int_t* t, Int_t* y, Int_t nPoints, Double_t tMax, Int_t& ii)
 Cut right part of altro sample : static function
void DeductPedestal(Int_t* t, Int_t* y, Int_t nPointsIn, Double_t ped, Double_t tau, Double_t* tn, Double_t* yn, Int_t& nPointsOut)
 Pedestal deduction if ped is positive : static function
 Discard part od samle if it is not compact.
void FastFit(const Double_t* t, const Double_t* y, const Int_t nPoints, const Double_t sig, const Double_t tau, Double_t& amp, Double_t& eamp, Double_t& t0, Double_t& et0, Double_t& chi2)
 Static function
 It is case of n=k=2 : fnn = x*x*exp(2 - 2*x)
 Input:
nPoints  - number of points
   t[]   - array of time bins
   y[]   - array of amplitudes after pedestal subtractions;
   sig   - error of amplitude measurement (one value for all channels)
   tau   - filter time response (in timebin units)
 Output:
       amp - amplitude at t0;
      eamp - error of amplitude;
        t0 - time of max amplitude;
       et0 - error of t0;
      chi2 - chi2
Bool_t QuadraticRoots(const Double_t a, const Double_t b, const Double_t c, Double_t& x1, Double_t& x2)
 Resolve quadratic equations a*x**2 + b*x + c
printf(" a %12.5e b %12.5e c %12.5e \n", a, b, c);
void Amplitude(const Double_t* t, const Double_t* y, const Int_t nPoints, const Double_t sig, const Double_t tau, Double_t t0, Double_t& amp, Double_t& chi2)
 Calculate parameters error too - Mar 24,09
 sig is independent from points
void CalculateParsErrors(const Double_t* t, const Double_t* y, const Int_t nPoints, const Double_t sig, const Double_t tau, Double_t& amp, Double_t& t0, Double_t& eamp, Double_t& et0)
 Remember that fmax = exp(-n);
 fmax_nk = (n/k)**n*exp(-n) => n=k=2 => exp(-n) = exp(-2.)
TCanvas* DrawFastFunction()
 QA of fitting
Double_t StdResponseFunction(const Double_t* x, const Double_t* par)
 Static Standard Response Function :
 look to Double_t AliEMCALRawUtils::RawResponseFunction(Double_t *x, Double_t *par)
 Using for drawing only.

 Shape of the electronics raw reponse:
 It is a semi-gaussian, 2nd order Gamma function (n=2) of the general form

 t' = (t - t0 + tau) / tau
 F = A * t**N * exp( N * ( 1 - t) )   for t >= 0
 F = 0                                for t < 0

 parameters:
 A:   par[0]   // Amplitude = peak value
 t0:  par[1]
 tau: par[2]
 N:   par[3]
 ped: par[4]

void SetSig(const Double_t sig)
{fSig = sig;}
void SetTau(const Double_t tau)
{fTau = tau;}
void SetN(const Double_t n)
{fN = n;}
void SetParameters(const Double_t sig, const Double_t tau, const Double_t n)
{fSig = sig; fTau = tau; fN = n;}
Double_t GetSig() const
{return fSig;}
Double_t GetTau() const
{return fTau;}
Double_t GetN() const
{return fN;}
Double_t GetPed() const
{return fPed;}
Double_t GetEnergy() const
{return fAmp;}
Double_t GetAmp() const
{return GetEnergy();}
Double_t GetAmpErr() const
{return fAmpErr;}
Double_t GetTime() const
{return fT0;}
Double_t GetT0() const
{return GetTime();}
Double_t GetT0Err() const
{return fT0Err;}
Double_t GetChi2() const
{return fChi2;}
Int_t GetNDF() const
{return fNDF;}
Int_t GetNfit() const
{return fNfit;}
Int_t GetNoFit() const
{return fNoFit;}