ROOT logo
AliRoot » TPC » REC » AliTPCclusterer

class AliTPCclusterer: public TObject

          Implementation of the TPC clusterer

  1. The Input data for reconstruction - Options
      1.a Simulated data  - TTree - invoked Digits2Clusters()
      1.b Raw data        - Digits2Clusters(AliRawReader* rawReader);
      1.c HLT clusters    - Digits2Clusters and Digits2Clusters(AliRawReader* rawReader)
                            invoke ReadHLTClusters()

      fUseHLTClusters     - switches between different inputs
                            1 -> only TPC raw/sim data
                            2 -> if present TPC raw/sim data, otherwise HLT clusters
                            3 -> only HLT clusters
                            4 -> if present HLT clusters, otherwise TPC raw/sim data

  2. The Output data
      2.a TTree with clusters - if  SetOutput(TTree * tree) invoked
      2.b TObjArray           - Faster option for HLT
      2.c TClonesArray        - Faster option for HLT (smaller memory consumption), activate with fBClonesArray flag

  3. Reconstruction setup
     see AliTPCRecoParam for list of parameters
     The reconstruction parameterization taken from the
     AliTPCReconstructor::GetRecoParam()
     Possible to setup it in reconstruction macro  AliTPCReconstructor::SetRecoParam(...)



   Origin: Marian Ivanov

Function Members (Methods)

public:
AliTPCclusterer(const AliTPCParam* par, const AliTPCRecoParam* recoParam = 0)
virtual~AliTPCclusterer()
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
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
virtual voidTObject::Delete(Option_t* option = "")MENU
virtual voidDigits2Clusters()
virtual voidDigits2Clusters(AliRawReader* rawReader)
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 voidFillRow()
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual const char*TObject::GetIconName() 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
TObjArray*GetOutputArray()
TClonesArray*GetOutputClonesArray()
virtual const char*TObject::GetTitle() const
virtual UInt_tTObject::GetUniqueID() 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
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
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 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)
virtual voidSetInput(TTree* tree)
static voidTObject::SetObjectStat(Bool_t stat)
virtual voidSetOutput(TTree* tree)
virtual voidTObject::SetUniqueID(UInt_t uid)
voidSetUseHLTClusters(Int_t useHLTClusters)
virtual voidShowMembers(TMemberInspector&)
voidStoreInClonesArray(Bool_t bOutput = kTRUE)
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()
private:
AliTPCclusterer(const AliTPCclusterer& param)
Bool_tAcceptCluster(AliTPCclusterMI* c)
voidAddCluster(AliTPCclusterMI& c, Float_t* matrix, Int_t pos)
voidFindClusters(AliTPCCalROC* noiseROC)
Float_tFitMax(Float_t vmatrix[][5], Float_t y, Float_t z, Float_t sigmay, Float_t sigmaz)
Float_tGetSigmaY2(Int_t iz)
Float_tGetSigmaZ2(Int_t iz)
Bool_tIsMaximum(Float_t q, Int_t max, const Float_t* bins) const
voidMakeCluster(Int_t k, Int_t max, Float_t* bins, UInt_t m, AliTPCclusterMI& c)
voidMakeCluster2(Int_t k, Int_t max, Float_t* bins, UInt_t m, AliTPCclusterMI& c)
AliTPCclusterer&operator=(const AliTPCclusterer& param)
Double_tProcesSignal(Float_t* signal, Int_t nchannels, Int_t* id, Double_t& rms, Double_t& pedestalCalib)
voidProcessSectorData()
Int_tReadHLTClusters()
voidUnfoldCluster(Float_t** matrix, Float_t recmatrix[][5], Float_t& meani, Float_t& meanj, Float_t& sum, Float_t& overlap)

Data Members

private:
Float_t**fAllBins! All sector bins
Int_t*fAllNSigBins! Number of signal bins in a sector
Int_t**fAllSigBins! All signal bins in a sector
Bool_tfBClonesArrayoutput clusters stored in TClonesArray
Bool_tfBDumpSignaldump signal flag
Float_t*fBins!digits array
TTreeSRedirector*fDebugStreamer!debug streamer
AliRawEventHeaderBase*fEventHeader! event header information
UInt_tfEventTypeEvent Type
TObject*fHLTClusterAccessinterface to HLT clusters
TTree*fInput!input tree with digits - object not owner
Int_tfLooploop - cf in 2 loops
Int_tfMaxBincurrent ( for current sector) maximal bin
Int_tfMaxPadcurrent ( for current sector) maximal pad
Int_tfMaxTimecurrent ( for current sector) maximal time
Int_tfNSigBins!size of fSigBins
Int_tfNclusternumber of clusters - for given row
Int_tfNclusterstot number of clusters
TTree*fOutput!output tree with digits - object not owner
TObjArray*fOutputArray! output TObjArray with pointers arrays of cluster
TClonesArray*fOutputClonesArray! output TClonesArray with clusters
Float_tfPadLengththe width of the pad
Float_tfPadWidththe width of the pad
const AliTPCParam*fParam! tpc parameters
Bool_tfPedSubtractionperform pedestal subtraction or not
const AliTPCRecoParam*fRecoParam! reconstruction parameters
Int_tfRow!current row
AliTPCClustersRow*fRowCl! current cluster row
AliSimDigits*fRowDig! current digits row
Float_tfRxcurrent radius
Int_tfSector!current sector
Int_t*fSigBins!digits array containg only timebins above threshold
Float_tfSign!current sign
UInt_tfTimeStampTime Stamp
Int_tfUseHLTClustersuse HLT clusters instead of offline clusters
Float_tfZWidththe z bin width

Class Charts

Inheritance Chart:
TObject
AliTPCclusterer

Function documentation

AliTPCclusterer(const AliTPCParam* par, const AliTPCRecoParam* recoParam = 0)
 COSNTRUCTOR
 param     - tpc parameters for given file
 recoparam - reconstruction parameters

~AliTPCclusterer()


void SetInput(TTree* tree)
 set input tree with digits

void SetOutput(TTree* tree)
 Set the output tree
 If not set the ObjArray used - Option for HLT

void FillRow()
 fill the output container -
 2 Options possible
          Tree
          TObjArray

Float_t GetSigmaY2(Int_t iz)
 sigma y2 = in digits  - we don't know the angle
Float_t GetSigmaZ2(Int_t iz)
sigma z2 = in digits - angle estimated supposing vertex constraint
void MakeCluster(Int_t k, Int_t max, Float_t* bins, UInt_t m, AliTPCclusterMI& c)
  Make cluster: characterized by position ( mean-  COG) , shape (RMS) a charge, QMax and Q tot
  Additional correction:
  a) To correct for charge below threshold, in the +1 neghborhood to the max charge charge
       is extrapolated using gaussian approximation assuming given cluster width..
       Additional empirical factor is used to account for the charge fluctuation (kVirtualChargeFactor).
       Actual value of the  kVirtualChargeFactor should obtained minimimizing residuals between the cluster
       and track interpolation.
  b.) For space points with extended shape (in comparison with expected using parameterization) clusters are
      unfoded

  NOTE. Actual/Empirical  values for correction are hardwired in the code.

 Input paramters for function:
  k    - Make cluster at position k
  bins - 2 D array of signals mapped to 1 dimensional array -
  max  - the number of time bins er one dimension
  c    - reference to cluster to be filled

void UnfoldCluster(Float_t** matrix, Float_t recmatrix[][5], Float_t& meani, Float_t& meanj, Float_t& sum, Float_t& overlap)
unfold cluster from input matrix
data corresponding to cluster writen in recmatrix
output meani and meanj
Float_t FitMax(Float_t vmatrix[][5], Float_t y, Float_t z, Float_t sigmay, Float_t sigmaz)
 estimate max
void AddCluster(AliTPCclusterMI& c, Float_t* matrix, Int_t pos)

 Transform cluster to the rotated global coordinata
 Assign labels to the cluster
 add the cluster to the array
 for more details - See  AliTPCTranform::Transform(x,i,0,1)
void Digits2Clusters()
 This is a simple cluster finder.

void ProcessSectorData()
 Process the data for the current sector

void Digits2Clusters(AliRawReader* rawReader)
 This is a cluster finder for the TPC raw data.
 The method assumes NO ordering of the altro channels.
 The pedestal subtraction can be switched on and off
 using an option of the TPC reconstructor

void FindClusters(AliTPCCalROC* noiseROC)
Bool_t AcceptCluster(AliTPCclusterMI* c)
 -- Depricated --
 Currently hack to filter digital noise (15.06.2008)
 To be parameterized in the AliTPCrecoParam
 More inteligent way  to be used in future
 Acces to the proper pedestal file needed

Double_t ProcesSignal(Float_t* signal, Int_t nchannels, Int_t* id, Double_t& rms, Double_t& pedestalCalib)
 process signal on given pad - + streaming of additional information in special mode

 id[0] - sector
 id[1] - row
 id[2] - pad
Int_t ReadHLTClusters()
 read HLT clusters instead of off line custers,
 used in Digits2Clusters

Bool_t IsMaximum(Float_t q, Int_t max, const Float_t* bins) const
is this a local maximum ?
AliTPCclusterer(const AliTPCParam* par, const AliTPCRecoParam* recoParam = 0)
TObjArray * GetOutputArray()
{return fOutputArray;}
TClonesArray * GetOutputClonesArray()
void StoreInClonesArray(Bool_t bOutput = kTRUE)
{fBClonesArray = bOutput;}
void SetUseHLTClusters(Int_t useHLTClusters)
{fUseHLTClusters = useHLTClusters;}
void MakeCluster2(Int_t k, Int_t max, Float_t* bins, UInt_t m, AliTPCclusterMI& c)