ROOT logo
AliRoot » PWGLF » FORWARD » ANALYSIS2 » AliFMDDensityCalculator

class AliFMDDensityCalculator: public TNamed

Function Members (Methods)

public:
AliFMDDensityCalculator()
AliFMDDensityCalculator(const char* name)
AliFMDDensityCalculator(const AliFMDDensityCalculator& o)
virtual~AliFMDDensityCalculator()
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
virtual Bool_tCalculate(const AliESDFMD& fmd, AliForwardUtil::Histos& hists, Bool_t lowFlux, Double_t cent = -1, const TVector3& ip = TVector3(1024,1024,0))
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
virtual voidCreateOutputObjects(TList* dir)
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
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 voidTNamed::FillBuffer(char*& buffer)
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
AliFMDMultCuts&GetCuts()
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual const char*TObject::GetIconName() const
UShort_tGetMinQuality() const
Double_tGetMultCut(UShort_t d, Char_t r, Double_t eta, Bool_t errors = true) const
Double_tGetMultCut(UShort_t d, Char_t r, Int_t ieta, Bool_t errors = true) const
virtual const char*TNamed::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*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)
AliFMDDensityCalculator&operator=(const AliFMDDensityCalculator& o)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidPrint(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)
voidSetCuts(const AliFMDMultCuts& c)
voidSetDebug(Int_t dbg = 1)
voidSetDoTiming(Bool_t enable = true)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
voidSetLumping(Int_t eta, Int_t phi)
voidSetMaxOutliers(Double_t ratio = 0.10)
voidSetMaxParticles(UShort_t m)
voidSetMinQuality(UShort_t cut = 10)
virtual voidTNamed::SetName(const char* name)MENU
virtual voidTNamed::SetNameTitle(const char* name, const char* title)
static voidTObject::SetObjectStat(Bool_t stat)
voidSetOutlierCut(Double_t cut = 0.50)
voidSetRecalculatePhi(Bool_t use)
virtual voidTNamed::SetTitle(const char* title = "")MENU
virtual voidTObject::SetUniqueID(UInt_t uid)
virtual voidSetupForData(const TAxis& etaAxis)
voidSetUsePhiAcceptance(UShort_t u = kPhiCorrectNch)
voidSetUsePoisson(Bool_t u)
virtual voidShowMembers(TMemberInspector&)
virtual Int_tTNamed::Sizeof() const
virtual voidStreamer(TBuffer&)
voidStreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
virtual voidTerminate(const TList* dir, TList* output, Int_t nEvents)
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 Float_tAcceptanceCorrection(Char_t r, UShort_t t) const
voidCacheMaxWeights(const TAxis& axis)
virtual Bool_tCheckOutlier(Double_t eloss, Double_t poisson, Double_t cut = 0.5) const
virtual Float_tCorrection(UShort_t d, Char_t r, UShort_t t, Float_t eta, Bool_t lowFlux) const
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
Int_tFindMaxWeight(const AliFMDCorrELossFit* cor, UShort_t d, Char_t r, Int_t iEta) const
Int_tFindMaxWeight(const AliFMDCorrELossFit* cor, UShort_t d, Char_t r, Double_t iEta) const
virtual TH1D*GenerateAcceptanceCorrection(Char_t r) const
Int_tGetMaxWeight(UShort_t d, Char_t r, Int_t iEta) const
Int_tGetMaxWeight(UShort_t d, Char_t r, Float_t eta) const
AliFMDDensityCalculator::RingHistos*GetRingHistos(UShort_t d, Char_t r) const
voidTObject::MakeZombie()
virtual Float_tNParticles(Float_t mult, UShort_t d, Char_t r, Float_t eta, Bool_t lowFlux) const

Data Members

public:
enum { kPhiNoCorrect
kPhiCorrectNch
kPhiCorrectELoss
};
enum TObject::EStatusBits { kCanDelete
kMustCleanup
kObjInCanvas
kIsReferenced
kHasUUID
kCannotPick
kNoContextMenu
kInvalidObject
};
enum TObject::[unnamed] { kIsOnHeap
kNotDeleted
kZombie
kBitMask
kSingleKey
kOverwrite
kWriteDelete
};
public:
static const char*fgkFolderName
protected:
TH1D*fAccIAcceptance correction for inner rings
TH1D*fAccOAcceptance correction for outer rings
AliForwardUtil::HistosfCache
TH1D*fCorrectionsHistogram
AliFMDMultCutsfCutsCuts
Int_tfDebugDebug level
Bool_tfDoTiming
Int_tfEtaLumpingHow to lump eta bins for Poisson
TArrayIfFMD1iMaxArray of max weights
TArrayIfFMD2iMaxArray of max weights
TArrayIfFMD2oMaxArray of max weights
TArrayIfFMD3iMaxArray of max weights
TArrayIfFMD3oMaxArray of max weights
TProfile*fHTiming
TH2D*fLowCutsHistogram of low cuts
Double_tfMaxOutliersMaximum ratio of outlier bins
UShort_tfMaxParticlesMaximum particle weight to use
TH2D*fMaxWeightsHistogram of max weights
UShort_tfMinQualityLeast quality for fits
TStringTNamed::fNameobject identifier
Double_tfOutlierCutMaximum relative diviation
Int_tfPhiLumpingHow to lump phi bins for Poisson
Bool_tfRecalculatePhiWhether to correct for (X,Y) offset
TListfRingHistosList of histogram containers
TH1D*fSumOfWeightsHistogram
TStringTNamed::fTitleobject title
UShort_tfUsePhiAcceptanceWhether to correct for corners
Bool_tfUsePoissonIf true, then use poisson statistics
TH1D*fWeightedSumHistogram

Class Charts

Inheritance Chart:
TNamed
AliFMDDensityCalculator
AliFMDMCDensityCalculator

Function documentation

AliFMDDensityCalculator()
 Constructor

AliFMDDensityCalculator(const char* name)
 Constructor

 Parameters:
    name Name of object

AliFMDDensityCalculator(const AliFMDDensityCalculator& o)
 Copy constructor

 Parameters:
    o Object to copy from

~AliFMDDensityCalculator()
 Destructor

operator=(const AliFMDDensityCalculator& o)
 Assignement operator

 Parameters:
    o Object to assign from

 Return:
    Reference to this object

SetupForData(const TAxis& etaAxis)
 Intialize this sub-algorithm

 Parameters:
   etaAxis   Eta axis
GetRingHistos(UShort_t d, Char_t r) const
 Get the ring histogram container

 Parameters:
    d Detector
    r Ring

 Return:
    Ring histogram container

GetMultCut(UShort_t d, Char_t r, Int_t ieta, Bool_t errors = true) const
 Get the multiplicity cut.  If the user has set fMultCut (via
 SetMultCut) then that value is used.  If not, then the lower
 value of the fit range for the enery loss fits is returned.

 Return:
    Lower cut on multiplicity

GetMultCut(UShort_t d, Char_t r, Double_t eta, Bool_t errors = true) const
 Get the multiplicity cut.  If the user has set fMultCut (via
 SetMultCut) then that value is used.  If not, then the lower
 value of the fit range for the enery loss fits is returned.

 Return:
    Lower cut on multiplicity

Calculate(const AliESDFMD& fmd, AliForwardUtil::Histos& hists, Bool_t lowFlux, Double_t cent = -1, const TVector3& ip = TVector3(1024,1024,0))
 Do the calculations

 Parameters:
    fmd      AliESDFMD object (possibly) corrected for sharing
    hists    Histogram cache
    vtxBin   Vertex bin
    lowFlux  Low flux flag.

 Return:
    true on successs
CheckOutlier(Double_t eloss, Double_t poisson, Double_t cut = 0.5) const
FindMaxWeight(const AliFMDCorrELossFit* cor, UShort_t d, Char_t r, Int_t iEta) const
 Find the max weight to use for FMD<i>dr</i> in eta bin @a iEta

 Parameters:
    cor   Correction
    d     Detector
    r     Ring
    iEta  Eta bin

FindMaxWeight(const AliFMDCorrELossFit* cor, UShort_t d, Char_t r, Double_t iEta) const
 Find the max weight to use for FMD<i>dr</i> in eta bin @a iEta

 Parameters:
    cor   Correction
    d     Detector
    r     Ring
    eta   Eta

CacheMaxWeights(const TAxis& axis)
 Find the max weights and cache them

GetMaxWeight(UShort_t d, Char_t r, Int_t iEta) const
 Find the (cached) maximum weight for FMD<i>dr</i> in
 @f$\eta@f$ bin @a iEta

 Parameters:
    d     Detector
    r     Ring
    iEta  Eta bin

 Return:
    max weight or <= 0 in case of problems

GetMaxWeight(UShort_t d, Char_t r, Float_t eta) const
 Find the (cached) maximum weight for FMD<i>dr</i> iat
 @f$\eta@f$

 Parameters:
    d     Detector
    r     Ring
    eta   Eta bin

 Return:
    max weight or <= 0 in case of problems

NParticles(Float_t mult, UShort_t d, Char_t r, Float_t eta, Bool_t lowFlux) const
 Get the number of particles corresponding to the signal mult

 Parameters:
    mult     Signal
    d        Detector
    r        Ring
    s        Sector
    t        Strip (not used)
    v        Vertex bin
    eta      Pseudo-rapidity
    lowFlux  Low-flux flag

 Return:
    The number of particles

 if (mult <= GetMultCut()) return 0;
Correction(UShort_t d, Char_t r, UShort_t t, Float_t eta, Bool_t lowFlux) const
 Get the inverse correction factor.  This consist of

 - acceptance correction (corners of sensors)
 - double hit correction (for low-flux events)
 - dead strip correction

 Parameters:
    d        Detector
    r        Ring
    s        Sector
    t        Strip (not used)
    v        Vertex bin
    eta      Pseudo-rapidity
    lowFlux  Low-flux flag

 Return:


GenerateAcceptanceCorrection(Char_t r) const
 Generate the acceptance corrections

 Parameters:
    r Ring to generate for

 Return:
    Newly allocated histogram of acceptance corrections

AcceptanceCorrection(Char_t r, UShort_t t) const
 Get the acceptance correction for strip @a t in an ring of type @a r

 Parameters:
    r  Ring type ('I' or 'O')
    t  Strip number

 Return:
    Inverse acceptance correction

Terminate(const TList* dir, TList* output, Int_t nEvents)
 Scale the histograms to the total number of events

 Parameters:
    dir     where to put the output
    nEvents Number of events

CreateOutputObjects(TList* dir)
 Output diagnostic histograms to directory

 Parameters:
    dir List to write in

Print(Option_t* option = "") const
 Print information

 Parameters:
    option Not used

void SetDebug(Int_t dbg = 1)
   * Set the debug level.  The higher the value the more output
   *
   * @param dbg Debug level

{ fDebug = dbg; }
void SetDoTiming(Bool_t enable = true)
   * Maximum particle weight to use
   *
   * @param m

{ fDoTiming = enable; }
void SetMaxParticles(UShort_t m)
   * Set whether to use poisson statistics to estimate the
   * number of particles that has hit within a region.  If this is true,
   * then the average charge particle density is given by
   * @f[
   *  \lambda = -\log\left(\frac{N_e}{N_t}\right)
   * @f]
   * where $N_e$ is the number of strips within the region that has no
   * hits over threshold, and $N_t$ is the total number of strips in the
   * region/
   *
   * @param u Whether to use poisson statistics to estimate the
   * number of particles that has hit within a region.

{ fMaxParticles = m; }
void SetUsePoisson(Bool_t u)
   * In case of a displaced vertices recalculate eta and angle correction
   *
   * @param use recalculate or not
   *

{ fUsePoisson = u; }
void SetRecalculatePhi(Bool_t use)
   * Set whether to use the phi acceptance correction.
   *
   * How the phi acceptance is used depends on the value passed.
   * - 0:  No phi acceptance
   * - 1:  Phi acceptance correction done to estimate of particles
   * - 2:  Phi acceptance correction done to energy deposited
   *
   * @param u If >0, use the phi acceptance (default is false)

{ fRecalculatePhi = use; }
void SetUsePhiAcceptance(UShort_t u = kPhiCorrectNch)
   * Set the luming factors used in the Poisson method
   *
   * @param eta Must be 1 or larger
   * @param phi Must be 1 or larger

void SetLumping(Int_t eta, Int_t phi)
void SetMinQuality(UShort_t cut = 10)
   * Set the minimum quality of the energy loss fits
   *
   * @param cut Cut value

{ fMinQuality = cut; }
void SetMaxOutliers(Double_t ratio = 0.10)
   * Set the maximum ratio of outlier bins to the total number of bins
   * with data.
   *
   * @param ratio Maximum ratio (number between 0 and 1)

{ fMaxOutliers = ratio; }
void SetOutlierCut(Double_t cut = 0.50)
   * Set the maximum relative diviation between @f$N_{ch}^{Poisson}@f$
   * and @f$N_{ch}^{\Delta}@f$
   *
   * @param cut Relative cut (number between 0 and 1)

{ fOutlierCut = cut; }
UShort_t GetMinQuality() const
   * Set the minimum quality of the energy loss fits
   *
   * @return Cut value

{ return fMinQuality; }
AliFMDMultCuts& GetCuts()
   * Get the cuts used
   *
   * @return Reference to cuts object

{ return fCuts; }
void SetCuts(const AliFMDMultCuts& c)
   * Set the cuts to use
   *
   * @param c Cuts to use

{ fCuts = c; }