ROOT logo
AliRoot » HMPID » AliHMPIDCluster

class AliHMPIDCluster: public AliCluster3D

  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
  *                                                                        *
  * Author: The ALICE Off-line Project.                                    *
  * Contributors are mentioned in the code where appropriate.              *
  *                                                                        *
  * Permission to use, copy, modify and distribute this software and its   *
  * documentation strictly for non-commercial purposes is hereby granted   *
  * without fee, provided that the above copyright notice appears in all   *
  * copies and that both the copyright notice and this permission notice   *
  * appear in the supporting documentation. The authors make no claims     *
  * about the suitability of this software for any purpose. It is          *
  * provided "as is" without express or implied warranty.                  *

Function Members (Methods)

public:
AliHMPIDCluster()
AliHMPIDCluster(const AliHMPIDCluster& c)
virtual~AliHMPIDCluster()
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
Int_tBox() const
virtual voidTObject::Browse(TBrowser* b)
Int_tCh() const
Double_tChi2() const
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidClear(Option_t*)
virtual TObject*TObject::Clone(const char* newname = "") const
voidCoG()
virtual Int_tTObject::Compare(const TObject* obj) const
virtual voidTObject::Copy(TObject& object) const
voidCorrSin()
virtual voidTObject::Delete(Option_t* option = "")MENU
AliHMPIDDigit*Dig(Int_t i) const
voidDigAdd(AliHMPIDDigit* pDig)
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
voidDoCorrSin(Bool_t doCorrSin)
virtual voidDraw(Option_t* opt = "")
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
voidFindClusterSize(Int_t i, Int_t* pSigmaCut)
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
static voidFitFunc(Int_t& iNpars, Double_t* deriv, Double_t& chi2, Double_t* par, Int_t iflag)
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual Bool_tAliCluster3D::GetGlobalCov(Float_t* cov) const
virtual Bool_tAliCluster::GetGlobalXYZ(Float_t* xyz) const
virtual const char*TObject::GetIconName() const
Int_tAliCluster::GetLabel(Int_t i) 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
Float_tAliCluster3D::GetSigmaX2() const
Float_tAliCluster3D::GetSigmaXY() const
Float_tAliCluster3D::GetSigmaXZ() const
Float_tAliCluster::GetSigmaY2() const
Float_tAliCluster::GetSigmaYZ() const
Float_tAliCluster::GetSigmaZ2() const
virtual const char*TObject::GetTitle() const
virtual UInt_tTObject::GetUniqueID() const
UShort_tAliCluster::GetVolumeId() const
Float_tAliCluster::GetX() const
virtual Bool_tAliCluster::GetXAlphaRefPlane(Float_t& x, Float_t& alpha) const
virtual Bool_tAliCluster::GetXRefPlane(Float_t& xref) const
Float_tAliCluster::GetY() const
Float_tAliCluster::GetZ() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTObject::Hash() const
voidAliCluster::IncreaseClusterUsage()
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
Bool_tAliCluster::IsClusterShared() const
Bool_tAliCluster::IsClusterUsed() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tIsInPc()
Bool_tTObject::IsOnHeap() const
virtual Bool_tTObject::IsSortable() const
Bool_tTObject::IsZombie() const
virtual voidTObject::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
Bool_tAliCluster::Misalign()
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 voidPrint(Option_t* opt = "") const
Double_tQ() const
Double_tQe() const
Double_tQRaw() const
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)
voidSetCh(Int_t chamber)
voidSetChi2(Double_t chi2)
voidSetClusterParams(Double_t xL, Double_t yL, Int_t iCh)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
voidAliCluster::SetLabel(Int_t lab, Int_t i)
static voidTObject::SetObjectStat(Bool_t stat)
voidSetQ(Double_t q)
voidSetQRaw(Double_t qRaw)
voidAliCluster::SetSigmaY2(Float_t sigy2)
voidAliCluster::SetSigmaYZ(Float_t sigyz)
voidAliCluster::SetSigmaZ2(Float_t sigz2)
voidSetSize(Int_t size)
voidSetStatus(Int_t status)
virtual voidTObject::SetUniqueID(UInt_t uid)
voidAliCluster::SetVolumeId(UShort_t id)
voidSetX(Double_t x)
voidSetY(Double_t y)
voidAliCluster::SetZ(Float_t z)
virtual voidShowMembers(TMemberInspector&)
Int_tSize() const
Int_tSolve(TClonesArray* pCluLst, Int_t* pSigmaCut, Bool_t isUnfold)
Int_tStatus() const
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 voidAliCluster::Use(Int_t = 0)
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
Double_tX() const
Double_tXe() const
Double_tY() const
Double_tYe() const
protected:
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
virtual TGeoHMatrix*AliCluster::GetMatrix(Bool_t original = kFALSE) const
virtual const TGeoHMatrix*AliCluster::GetTracking2LocalMatrix() const
voidTObject::MakeZombie()

Data Members

public:
enum EClusterStatus { kFrm
kCoG
kLo1
kUnf
kMax
kNot
kEdg
kSi1
kNoLoc
kAbn
kBig
kEmp
};
enum AliCluster::[unnamed] { kUsed
kShared
};
enum TObject::EStatusBits { kCanDelete
kMustCleanup
kObjInCanvas
kIsReferenced
kHasUUID
kCannotPick
kNoContextMenu
kInvalidObject
};
enum TObject::[unnamed] { kIsOnHeap
kNotDeleted
kZombie
kBitMask
kSingleKey
kOverwrite
kWriteDelete
};
protected:
Int_tfBoxbox contaning this cluster
Int_tfChchamber number
Double_tfChi2some estimator of the fit quality
TObjArray*fDigs! list of digits forming this cluster
Double_tfErrQerror on Q
Double_tfErrXerror on x postion, [cm]
Double_tfErrYerror on y postion, [cm]
Double_tfMaxQthat max charge value
Int_tfMaxQpadabs pad number of a pad with the highest charge
Int_tfNlocMaxnumber of local maxima in formed cluster
AliHMPIDParam*fParam!Pointer to AliHMPIDParam
Double_tfQQDC value of the actual cluster
Double_tfQRawQDC value of the raw cluster
Int_tfSisize of the formed cluster from which this cluster deduced
Int_tfStflag to mark the quality of the cluster
Double_tfXXlocal x postion, [cm]
Double_tfYYlocal y postion, [cm]
static Bool_tfgDoCorrSinflag to switch on/off correction for Sinusoidal to cluster reco

Class Charts

Inheritance Chart:
TObject
AliCluster
AliCluster3D
AliHMPIDCluster

Function documentation

void SetClusterParams(Double_t xL, Double_t yL, Int_t iCh)
Set the cluster properties for the AliCluster3D part

~AliHMPIDCluster()
void CoG()
 Calculates naive cluster position as a center of gravity of its digits.
 Arguments: none
   Returns: none
void CorrSin()
 Correction of cluster x position due to sinoid, see HMPID TDR  page 30
 Arguments: none
   Returns: none
void Draw(Option_t* opt = "")
void FitFunc(Int_t& iNpars, Double_t* deriv, Double_t& chi2, Double_t* par, Int_t iflag)
 Cluster fit function
 par[0]=x par[1]=y par[2]=q for the first Mathieson shape
 par[3]=x par[4]=y par[5]=q for the second Mathieson shape and so on up to iNpars/3 Mathieson shapes
 For each pad of the cluster calculates the difference between actual pad charge and the charge induced to this pad by all Mathieson distributions
 Then the chi2 is calculated as the sum of this value squared for all pad in the cluster.
 Arguments: iNpars - number of parameters which is number of local maxima of cluster * 3
            chi2   - function result to be minimised
            par   - parameters array of size iNpars
   Returns: none
void Print(Option_t* opt = "") const
Print current cluster
Int_t Solve(TClonesArray* pCluLst, Int_t* pSigmaCut, Bool_t isUnfold)
This methode is invoked when the cluster is formed to solve it. Solve the cluster means to try to unfold the cluster
into the local maxima number of clusters. This methode is invoked by AliHMPIDRconstructor::Dig2Clu() on cluster by cluster basis.
At this point, cluster contains a list of digits, cluster charge and size is precalculated in AddDigit(), position is preset to (-1,-1) in ctor,
status is preset to kFormed in AddDigit(), chamber-sector info is preseted to actual values in AddDigit()
Method first finds number of local maxima and if it's more then one tries to unfold this cluster into local maxima number of clusters
Arguments: pCluLst     - cluster list pointer where to add new cluster(s)
           isTryUnfold - flag to switch on/off unfolding
  Returns: number of local maxima of original cluster
void FindClusterSize(Int_t i, Int_t* pSigmaCut)
void DigAdd(AliHMPIDDigit* pDig)
void Reset()
Bool_t IsInPc()
AliHMPIDCluster()
AliHMPIDCluster(const AliHMPIDCluster& c)
{}
Int_t Box() const
private part
{return fBox; }
Int_t Ch() const
{return fCh; }
Int_t Size() const
{return fSi; }
Int_t Status() const
{return fSt;}
Double_t QRaw() const
{return fQRaw; }
Double_t Q() const
{return fQ; }
Double_t Qe() const
{return fErrQ; }
Double_t X() const
{return fXX; }
Double_t Xe() const
{return fErrX; }
Double_t Y() const
{return fYY; }
Double_t Ye() const
{return fErrY; }
Double_t Chi2() const
{return fChi2; }
void DoCorrSin(Bool_t doCorrSin)
{fgDoCorrSin=doCorrSin;}
void SetX(Double_t x)
{fXX=x;}
void SetY(Double_t y)
{fYY=y;}
void SetQ(Double_t q)
{fQ=q;if(fQ>4095)fQ=4095;}
void SetQRaw(Double_t qRaw)
{fQRaw=qRaw;if(fQRaw>4095)fQRaw=4095;}
void SetSize(Int_t size)
{fSi=size;}
void SetCh(Int_t chamber)
{fCh=chamber;}
void SetChi2(Double_t chi2)
{fChi2=chi2;}
void SetStatus(Int_t status)
{fSt=status;}
void Clear(Option_t* )
{ delete [] fDigs; fDigs=0; delete [] fParam; fParam=0; }
AliHMPIDCluster & operator=(const AliHMPIDCluster& c)
  AliHMPIDCluster &operator=(const AliHMPIDCluster &c) {if(this == &c)return *this;AliCluster3D::operator=(c);
                                                       fSi=c.fSi;  fSt=c.fSt; fCh=c.fCh; fBox=c.fBox;fNlocMax=c.fNlocMax;fMaxQpad=c.fMaxQpad; fMaxQ=c.fMaxQ;fQRaw=c.fQRaw;
                                                        fQ=c.fQ; fErrQ=c.fErrQ;
                                                        fXX=c.fXX; fErrX=c.fErrX;
                                                        fYY=c.fYY; fErrY=c.fErrY; fChi2=c.fChi2;fDigs=c.fDigs ? new TObjArray(*c.fDigs):0; return *this;}

  AliHMPIDCluster(const AliHMPIDCluster& c);              //dummy copy constructor