ROOT logo
AliRoot » PHOS » AliPHOSClusterizerv1

class AliPHOSClusterizerv1: public AliPHOSClusterizer

Function Members (Methods)

public:
AliPHOSClusterizerv1()
AliPHOSClusterizerv1(AliPHOSGeometry* geom)
virtual~AliPHOSClusterizerv1()
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
virtual Int_tAreNeighbours(AliPHOSDigit* d1, AliPHOSDigit* d2) const
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(Option_t* option)
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 TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
virtual Float_tGetCpvClusteringThreshold() const
virtual Float_tGetCpvLocalMaxCut() const
virtual Float_tGetCpvLogWeight() const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual Float_tGetEcoreRadius() const
virtual Float_tGetEmcClusteringThreshold() const
virtual Float_tGetEmcLocalMaxCut() const
virtual Float_tGetEmcLogWeight() const
virtual const char*TObject::GetIconName() const
virtual const char*TObject::GetName() const
virtual voidGetNumberOfClustersFound(int* numb) 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*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
voidInitParameters()
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 voidPrint(Option_t* = "") 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 voidSetCoreRadius(Float_t coreRadius)
virtual voidSetCpvClusteringThreshold(Float_t cluth)
virtual voidSetCpvLocalMaxCut(Float_t cut)
virtual voidSetCpvLogWeight(Float_t w)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
virtual voidSetEmcClusteringThreshold(Float_t cluth)
virtual voidSetEmcLocalMaxCut(Float_t cut)
virtual voidSetEmcLogWeight(Float_t w)
virtual voidAliPHOSClusterizer::SetInput(TTree* digitsTree)
static voidTObject::SetObjectStat(Bool_t stat)
virtual voidAliPHOSClusterizer::SetOutput(TTree* clustersTree)
virtual voidSetUnfolding(Bool_t toUnfold = kTRUE)
virtual voidTObject::SetUniqueID(UInt_t uid)
voidSetWriting(Bool_t toWrite = kFALSE)
static Double_tShowerShape(Double_t x, Double_t z)
virtual voidShowMembers(TMemberInspector&)
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
static voidUnfoldingChiSquare(Int_t& nPar, Double_t* Grad, Double_t& fret, Double_t* x, Int_t iflag)
virtual voidTObject::UseCurrentStyle()
virtual const char*Version() const
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_tCalibrate(Float_t amp, Int_t absId) const
virtual Float_tCalibrateT(Float_t amp, Int_t absId, Bool_t isLG) const
Bool_tCheckTimeGate(Float_t t1, Float_t amp1, Float_t t2, Float_t amp2) const
voidCleanDigits(TClonesArray* digits)
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
virtual Bool_tIsInCpv(AliPHOSDigit* digit) const
virtual Bool_tIsInEmc(AliPHOSDigit* digit) const
virtual voidMakeClusters()
voidTObject::MakeZombie()
voidSetDistancesToBadChannels()
voidWriteRecPoints()
private:
AliPHOSClusterizerv1(const AliPHOSClusterizerv1& clu)
Bool_tFindFit(AliPHOSEmcRecPoint* emcRP, AliPHOSDigit** MaxAt, Float_t* maxAtEnergy, Int_t NPar, Float_t* FitParametres) const
voidInit()
virtual voidMakeUnfolding()
AliPHOSClusterizerv1&operator=(const AliPHOSClusterizerv1& obj)
voidPrintRecPoints(Option_t* option)
voidUnfoldCluster(AliPHOSEmcRecPoint* iniEmc, Int_t Nmax, AliPHOSDigit** maxAt, Float_t* maxAtEnergy)

Data Members

protected:
TObjArray*AliPHOSClusterizer::fCPVRecPointsArray with CPV clusters
TClonesArray*AliPHOSClusterizer::fDigitsArrArray with input digits
TObjArray*AliPHOSClusterizer::fEMCRecPointsArray with EMC clusters
AliPHOSGeometry*AliPHOSClusterizer::fGeomPointer to PHOS geometry
TTree*AliPHOSClusterizer::fTreeRTree with output clusters
static AliPHOSCalibData*AliPHOSClusterizer::fgCalibData! Calibration database if aval.
private:
Float_tfCpvClusteringThresholdminimum energy to start CPV cluster
Float_tfCpvLocMaxCutminimum energy difference to distinguish local maxima in a CPV cluster
Bool_tfDefaultInit! Says if the task was created by defaut ctor (only parameters are initialized)
Bool_tfDigitsUsed[53760]Mark digits as already used in cluster (EMC:5*56*64 ; CPV: 5*56*128)
Float_tfEcoreRadiusRadius within which the core energy is calculated, in cm
Float_tfEmcClusteringThresholdminimum energy to start EMC cluster
Int_tfEmcCrystalsnumber of EMC cristals in PHOS
Float_tfEmcLocMaxCutminimum energy difference to distinguish local maxima in a cluster
Int_tfNumberOfCpvClustersnumber of CPV clusters found
Int_tfNumberOfEmcClustersnumber of EMC clusters found
Float_tfTimeGateHighTime difference between cells with good time measurement
Float_tfTimeGateLowTime difference between cells with low amplitude
Float_tfTimeGateLowAmpThreshold for good/bad time measurement
Bool_tfToUnfoldTo perform unfolding
Float_tfW0logarithmic weight for the cluster center of gravity calculation
Float_tfW0CPVlogarithmic weight for the CPV cluster center of gravity calculation
Bool_tfWriteWrite RecPoints to TreeR

Class Charts

Inheritance Chart:
TObject
AliPHOSClusterizer
AliPHOSClusterizerv1
AliPHOSClusterizerv2

Function documentation

AliPHOSClusterizerv1()
 default ctor (to be used mainly by Streamer)
AliPHOSClusterizerv1(AliPHOSGeometry* geom)
 ctor with the indication of the file where header Tree and digits Tree are stored
~AliPHOSClusterizerv1()
 dtor
void Digits2Clusters(Option_t* option)
 Steering method to perform clusterization for one event
 The input is the tree with digits.
 The output is the tree with clusters.
Bool_t FindFit(AliPHOSEmcRecPoint* emcRP, AliPHOSDigit** MaxAt, Float_t* maxAtEnergy, Int_t NPar, Float_t* FitParametres) const
 Calls TMinuit to fit the energy distribution of a cluster with several maxima
 The initial values for fitting procedure are set equal to the positions of local maxima.
 Cluster will be fitted as a superposition of nPar/3 electromagnetic showers
void Init()
 Make all memory allocations which can not be done in default constructor.
 Attach the Clusterizer task to the list of PHOS tasks
void InitParameters()
Int_t AreNeighbours(AliPHOSDigit* d1, AliPHOSDigit* d2) const
 Gives the neighbourness of two digits = 0 are not neighbour but continue searching
                                       = 1 are neighbour
                                       = 2 are not neighbour but do not continue searching
                                       =-1 are not neighbour, continue searching, but do not look before d2 next time
 neighbours are defined as digits having at least a common vertex
 The order of d1 and d2 is important: first (d1) should be a digit already in a cluster
                                      which is compared to a digit (d2)  not yet in a cluster
Bool_t CheckTimeGate(Float_t t1, Float_t amp1, Float_t t2, Float_t amp2) const
Check if two cells have reasonable time difference
Note that at low amplitude time is defined up to 1 tick == 100 ns.
Bool_t IsInEmc(AliPHOSDigit* digit) const
 Tells if (true) or not (false) the digit is in a PHOS-EMC module
Bool_t IsInCpv(AliPHOSDigit* digit) const
 Tells if (true) or not (false) the digit is in a PHOS-CPV module
void WriteRecPoints()
void MakeClusters()
 Steering method to construct the clusters stored in a list of Reconstructed Points
 A cluster is defined as a list of neighbour digits
void MakeUnfolding()
 Unfolds clusters using the shape of an ElectroMagnetic shower
 Performs unfolding of all EMC/CPV clusters
Double_t ShowerShape(Double_t x, Double_t z)
 Shape of the shower (see PHOS TDR)
 If you change this function, change also the gradient evaluation in ChiSquare()
void UnfoldCluster(AliPHOSEmcRecPoint* iniEmc, Int_t Nmax, AliPHOSDigit** maxAt, Float_t* maxAtEnergy)
 Performs the unfolding of a cluster with nMax overlapping showers
void UnfoldingChiSquare(Int_t& nPar, Double_t* Grad, Double_t& fret, Double_t* x, Int_t iflag)
 Calculates the Chi square for the cluster unfolding minimization
 Number of parameters, Gradient, Chi squared, parameters, what to do
void Print(Option_t* = "") const
 Print clusterizer parameters
void PrintRecPoints(Option_t* option)
 Prints list of RecPoints produced at the current pass of AliPHOSClusterizer
void SetDistancesToBadChannels()
For each EMC rec. point set the distance to the nearest bad crystal.
Author: Boris Polichtchouk
Float_t Calibrate(Float_t amp, Int_t absId) const
 Calibrate EMC digit, i.e. multiply its Amp by a factor read from CDB
Float_t CalibrateT(Float_t amp, Int_t absId, Bool_t isLG) const
 Calibrate time in EMC digit
AliPHOSClusterizerv1()
void GetNumberOfClustersFound(int* numb) const
 Checks if digits are in neighbour cells
Float_t GetEmcClusteringThreshold() const
Float_t GetEmcLocalMaxCut() const
{ return fEmcLocMaxCut;}
Float_t GetEmcLogWeight() const
{ return fW0;}
Float_t GetCpvClusteringThreshold() const
Float_t GetCpvLocalMaxCut() const
{ return fCpvLocMaxCut;}
Float_t GetCpvLogWeight() const
{ return fW0CPV;}
Float_t GetEcoreRadius() const
  virtual const char *  GetRecPointsBranch() const{ return GetName() ;}
{ return fEcoreRadius;}
void SetEmcClusteringThreshold(Float_t cluth)
void SetEmcLocalMaxCut(Float_t cut)
{ fEmcLocMaxCut = cut ; }
void SetEmcLogWeight(Float_t w)
{ fW0 = w ; }
void SetCpvClusteringThreshold(Float_t cluth)
void SetCpvLocalMaxCut(Float_t cut)
{ fCpvLocMaxCut = cut ; }
void SetCpvLogWeight(Float_t w)
{ fW0CPV = w ; }
void SetUnfolding(Bool_t toUnfold = kTRUE)
{ fToUnfold = toUnfold ;}
void SetCoreRadius(Float_t coreRadius)
Switch to "on flyght" mode, without writing to TreeR and file
{ fEcoreRadius = coreRadius ;}
void SetWriting(Bool_t toWrite = kFALSE)
{fWrite = toWrite;}
const char * Version() const
 Chi^2 of the fit. Should be static to be passed to MINUIT
  void Unload() ;
{ return "clu-v1"; }
void CleanDigits(TClonesArray* digits)