#include "T49SumGaus.h"

T49SumGaus


class description - source file - inheritance tree (.pdf)

class T49SumGaus : public TF1

Inheritance Chart:
TObject
<-
TNamed
<-
TFormula
TAttLine
TAttFill
TAttMarker
<-
TF1
<-
T49SumGaus
    private:
T49SumGaus() Int_t Binom(Int_t n, Int_t k) Double_t OnePeak(Double_t x, Double_t* par) void PolyFit(const Int_t NPoints, Float_t* x, Float_t* y, Float_t* err, Int_t Order, Float_t* Result) public:
T49SumGaus(Char_t* name) ~T49SumGaus() static TClass* Class() void DrawPeaks(Int_t LineWidth = 2) virtual Double_t Eval(Double_t x, Double_t y = 0, Double_t z = 0) virtual Double_t EvalPar(const Double_t* x, const Double_t* params = 0) Float_t GetAmpError(Int_t i) Float_t GetAmplitude(Int_t i) Float_t GetAsymmetry() void GetBBPars(Float_t& c, Float_t& d, Float_t& e, Float_t& f) Float_t GetMaximum(Int_t i) Float_t GetPosError(Int_t i) Float_t GetPosition(Int_t i) Float_t GetPowSigScale() Float_t GetPtot() Float_t GetRelPosition(Int_t i) Float_t GetRelRise(Int_t part) Float_t GetResError() Float_t GetResolution() Float_t GetSigCut(Int_t part, Float_t frac = 0.9) Float_t GetStep() void Init(TH1* Hist, Char_t* Opt = "") void InitPositions(Float_t pipos) virtual TClass* IsA() const Bool_t IsAmplitudeFixed(Int_t i) Float_t RelRise(Float_t Ptot, Int_t Part) void ResetFreePosition(Int_t i) void RestoreParameters() void SetAmplitude(Int_t i, Float_t x, Float_t lowlim, Float_t uplim) void SetAmplitude(Int_t i, Float_t x) void SetAsymmetry(Float_t asym) void SetAsymmetry(Float_t asym, Float_t lowlim, Float_t uplim) void SetBBPars(Float_t c, Float_t d, Float_t e, Float_t f) void SetFixedAmplitude(Int_t i, Float_t x) void SetFixedAmplitude(Int_t i) void SetFixedPosition(Int_t i, Float_t x) void SetFixedPosition(Int_t i) void SetFree() void SetFreePosition(Int_t i, Float_t x) void SetFreePosition(Int_t i) void SetNpHist(TH1* Hist) void SetPosition(Int_t i, Float_t x, Float_t lowlim = 0, Float_t uplim = 0) void SetPowSigScale(Float_t power) void SetPtot(Float_t p) void SetResolution(Float_t x) virtual void ShowMembers(TMemberInspector& insp, char* parent) void StoreCovMat() void StoreParameters() virtual void Streamer(TBuffer& b) void StreamerNVirtual(TBuffer& b)

Data Members


    protected:
Float_t fParaC Constants for rel rise parametrisation Float_t fParaD Float_t fParaE Float_t fParaF Float_t fPtot Bool_t fAmpFix[4] Double_t fStoredPars[10] Double_t fStoredLowLim[10] Double_t fStoredUpLim[10] Bool_t fStored TH1* fNpHist Float_t fXstep Float_t fYvals[801] TObjArray* fGraphs ! To store the graphs for the different peaks Bool_t fLinSigScale Float_t fPowSigScale Double_t fTailPar1 Double_t fTailPar2 public:
Double_t fCovMatMinuit[9][9] Float_t fCovMat[9][9]

Class Description

  dE/dx fit function class

 This is an interface to a TF1, used to fit dE/dx spectra. The
 interface of this function is identical to the older
 T49DedxFunction, but here the function consists of four peaks,
 which are built up as sum of Gaussians with widths proportional to
 1/sqrt(n_point). You have to specify a number-of-point-histogram
 for initialization.

 Note 1: The function has a finite precision, since internally, the
 sum of gaussians is stored once and then rescaled according to the
 parameters.

 Note 2: The amplitude for each particle species is now equal to the
 surface area of the corresponding peak. Use GetMaximum to get the
 peak value.

 Note 7 aug 2001:
 Changed internal meaning of parameter 0. This parameter is now the
 pion resolution, instead of relative resolution. For fitting stability.

T49SumGaus(Char_t* name): TF1()
TF1(name,(Double_t (*)(Double_t *, Double_t *)) 0,0.5,2.0,9)

~T49SumGaus()

void SetNpHist(TH1 *Hist)
 Use this function to specify the number-of-points histogram.

Double_t EvalPar(const Double_t* x, const Double_t* params)

Double_t Eval(Double_t x, Double_t y, Double_t z)

Float_t GetSigCut(Int_t part, Float_t frac)
 This function is still under study...

void SetFree()
  Release bounds on relative positions (N.B. the pion position
  is not affected)

void SetFreePosition(Int_t i,Float_t x)
  Release bound on peak position i, and set position to x.

void SetFixedPosition(Int_t i,Float_t x)
  Set fixed value for peak position i

void SetFreePosition(Int_t i)
  Release bounds on position of peak i

void SetFixedPosition(Int_t i)
  Fix position of peak i

void ResetFreePosition(Int_t i)
  Set position to Bethe Bloch value, and

void SetPosition(Int_t i, Float_t x, Float_t lowlim, Float_t uplim)
  Set position and bounds. (N.B.: the bounds of non-pion peaks
  change with the pion peak position, since they are relative positions)

void InitPositions(Float_t pipos)
  Sets pion position to pipos, and relative positions of other peaks
  acoording to Bethe-Bloch parametrization

void SetAmplitude(Int_t i, Float_t x,Float_t lowlim, Float_t uplim)
 Set the amplitude of a particle species. Note that the amplitudes
 are properly normalised now. Therefore the Amplitude directly
 provides the integral of each peak.

void SetAmplitude(Int_t i, Float_t x)

void SetFixedAmplitude(Int_t i, Float_t x)
  Facility to fix the amplitude. Mainly used to fix amplitudes at zero.

void SetFixedAmplitude(Int_t i)

void SetResolution(Float_t x)

void SetAsymmetry(Float_t asym)

void SetAsymmetry(Float_t asym, Float_t lowlim, Float_t uplim)

Float_t GetPosition(Int_t i)

Float_t GetRelPosition(Int_t i)

Float_t GetAmplitude(Int_t i)

Float_t GetResolution()

Float_t GetMaximum(Int_t i)
 This function returns the peak value of a single particle
 species. Use this function for normalisations, etc.

Float_t GetAsymmetry()

Float_t GetPosError(Int_t i)
 Use this function to get the errors after a Minuit fit. First
 call StoreCovMat!

Float_t GetAmpError(Int_t i)
 Use this function to get the errors after a Minuit fit. First
 call StoreCovMat!

Float_t GetResError()
 Use this function to get the errors after a Minuit fit. First
 call StoreCovMat!

void StoreCovMat()
 Store the covariance matrix from Minuit, in order to later
 calculate errors on parameters.

void StoreParameters()
  The class may hold one alternative set of parameters. This method
  stores the parameters internally.

void RestoreParameters()
  Sets the parameters to the values stored using StoreParameters().

Float_t GetRelRise(Int_t part)
  Returns the value of dE/dx from the Bethe-Bloch-parametrization. First
  call SetPtot()

void DrawPeaks(Int_t LineWidth)
 Draws four peaks, one for each particle species.

void Init(TH1* Hist,Char_t* Opt)
  This method uses the histogram to provide an estimate for the peak
  positions, amplitudes and widths. Relies heavily on the Bethe-Bloch
  parametrization, so first call SetPtot(). Option "V" triggers
  verbose behaviour.

Float_t RelRise(Float_t Ptot, Int_t Part)
  Returns expected dE/dx values, according to Bethe-Bloch parametrization
  (Called by GetRelRise())
  ** Code provided by Christof Roland **

Double_t OnePeak(Double_t x, Double_t *par)

void PolyFit(const Int_t NPoints, Float_t* x, Float_t* y, Float_t* err, Int_t Order, Float_t* Result)
  Fits polynomial of form par[0] + par[1]*x +par[2]*x^2, etc
  Uses the provided errors as weights.
  (Called internally by Init())

Int_t Binom(Int_t n,Int_t k)
  Calculates binomial coefficient n over k.
  Called by PolyFit()



Inline Functions


            TClass* Class()
            TClass* IsA() const
               void ShowMembers(TMemberInspector& insp, char* parent)
               void Streamer(TBuffer& b)
               void StreamerNVirtual(TBuffer& b)
               void SetBBPars(Float_t c, Float_t d, Float_t e, Float_t f)
               void GetBBPars(Float_t& c, Float_t& d, Float_t& e, Float_t& f)
               void SetPowSigScale(Float_t power)
            Float_t GetPowSigScale()
               void SetPtot(Float_t p)
             Bool_t IsAmplitudeFixed(Int_t i)
            Float_t GetPtot()
            Float_t GetStep()
         T49SumGaus T49SumGaus()


Last update: Thu Aug 17 15:33:50 2006


ROOT page - Class index - Class Hierarchy - Top of the page

This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.