AliPHOSClusterizerv1
class description - source file - inheritance tree
private:
virtual Float_t Calibrate(Int_t amp) const
Bool_t FindFit(AliPHOSEmcRecPoint* emcRP, int* MaxAt, Float_t* maxAtEnergy, Int_t NPar, Float_t* FitParametres)
void Init()
virtual Bool_t IsInCpv(AliPHOSDigit* digit) const
virtual Bool_t IsInEmc(AliPHOSDigit* digit) const
virtual Bool_t IsInPpsd(AliPHOSDigit* digit) const
virtual void MakeClusters()
virtual void MakeUnfolding()
void PrintRecPoints(Option_t* option)
Bool_t ReadDigits()
void UnfoldCluster(AliPHOSEmcRecPoint* iniEmc, Int_t Nmax, int* maxAt, Float_t* maxAtEnergy)
void WriteRecPoints()
protected:
public:
AliPHOSClusterizerv1 AliPHOSClusterizerv1()
AliPHOSClusterizerv1 AliPHOSClusterizerv1(const char* HeaderFile, const char* DigitsBrancheFile = 0)
AliPHOSClusterizerv1 AliPHOSClusterizerv1(AliPHOSClusterizerv1&)
virtual void ~AliPHOSClusterizerv1()
Int_t AreNeighbours(AliPHOSDigit* d1, AliPHOSDigit* d2) const
static TClass* Class()
virtual void Exec(Option_t* option)
virtual Float_t GetCpvClusteringThreshold() const
virtual Float_t GetCpvLocalMaxCut() const
virtual Float_t GetCpvLogWeight() const
virtual char* GetDigitsBranch() const
virtual Float_t GetEmcClusteringThreshold() const
virtual Float_t GetEmcLocalMaxCut() const
virtual Float_t GetEmcLogWeight() const
virtual void GetNumberOfClustersFound(int* numb)
virtual Float_t GetPpsdClusteringThreshold() const
virtual char* GetRecPointsBranch() const
virtual TClass* IsA() const
virtual void Print(Option_t* option) const
virtual void SetCpvClusteringThreshold(Float_t cluth)
virtual void SetCpvLocalMaxCut(Float_t cut)
virtual void SetCpvLogWeight(Float_t w)
virtual void SetDigitsBranch(const char* file)
virtual void SetEmcClusteringThreshold(Float_t cluth)
virtual void SetEmcLocalMaxCut(Float_t cut)
virtual void SetEmcLogWeight(Float_t w)
virtual void SetPpsdClusteringThreshold(Float_t cluth)
virtual void SetRecPointsBranch(const char* file)
virtual void SetUnfolding(Bool_t toUnfold = kTRUE)
static Double_t ShowerShape(Double_t r)
virtual void ShowMembers(TMemberInspector& insp, char* parent)
virtual void Streamer(TBuffer& b)
void StreamerNVirtual(TBuffer& b)
static void UnfoldingChiSquare(Int_t& nPar, Double_t* Grad, Double_t& fret, Double_t* x, Int_t iflag)
private:
TString fHeaderFileName name of the file which contains gAlice, Tree headers etc.
TString fDigitsBranchFileName name of the file, where digits branch is stored
TString fRecPointsBranchFileName name of the file, where RecPoints branchs are stored
Int_t fEvent Number of event currently processed
Bool_t fToUnfold To perform unfolding
Bool_t fIsInitialized
AliPHOSGeometry* fGeom !pointer to PHOS geometry
AliPHOSDigitizer* fDigitizer !digitizer which produced Digits we treat
Int_t fNumberOfEmcClusters number of EMC clusters found
Int_t fNumberOfCpvClusters number of CPV+PPSD clusters found
TClonesArray* fDigits ! Initial list of digits
TObjArray* fEmcRecPoints ! Final list of EMC Rec Points
TObjArray* fCpvRecPoints ! Final list of CPV/PPSD recPoints
Float_t fPedestal Calibration parameters
Float_t fSlope read from Digitizer
Float_t fEmcClusteringThreshold minimum energy to include a EMC digit in a cluster
Float_t fPpsdClusteringThreshold minimum energy to include a PPSD digit in a cluster
Float_t fCpvClusteringThreshold minimum energy to include a CPV digit in a cluster
Float_t fEmcLocMaxCut minimum energy difference to distinguish local maxima in a cluster
Float_t fW0 logarithmic weight for the cluster center of gravity calculation
Float_t fCpvLocMaxCut minimum energy difference to distinguish local maxima in a CPV cluster
Float_t fW0CPV logarithmic weight for the CPV cluster center of gravity calculation
public:
Clusterization class. Performs clusterization (collects neighbouring active cells) and
unfolding of the clusters with several local maxima.
results are stored in TreeR#, branches PHOSEmcRP (EMC recPoints),
PHOSCpvRP (CPV RecPoints) and AliPHOSClusterizer (Clusterizer with all
parameters including input digits branch file name thresholds etc.)
This TTask normally called from Reconstructioner, but as well can be used it in
standalone mode:
root [0] AliPHOSClusterizerv1 * cl = new AliPHOSClusterizerv1("galice.root")
Warning in <TDatabasePDG::TDatabasePDG>: object already instantiated
//reads gAlice from header file "..."
root [1] cl->ExecuteTask()
//finds RecPoints in all events stored in galice.root
root [2] cl->SetDigitsBranch("PHOS.Digits.root")
//sets another input file
root [3] cl->SetRecPointsBranch("PHOS.rp.root")
//sets another aouput file
root [4] cl->SetEmcLocalMaxCut(0.03)
//set clusterization parameters
root [5] cl->ExecuteTask("deb all time")
//once more finds RecPoints options are
// deb - print number of found rec points
// deb all - print number of found RecPoints and some their characteristics
// time - print benchmarking results
AliPHOSClusterizerv1():AliPHOSClusterizer()
default ctor (to be used)
AliPHOSClusterizerv1(const char* HeaderFile,const char* DigitsFile):AliPHOSClusterizer()
void Exec(Option_t * option)
Steerign function
Bool_t FindFit(AliPHOSEmcRecPoint * emcRP, int * maxAt, Float_t * maxAtEnergy,
Int_t nPar, Float_t * fitparameters)
Calls TMinuit to fit the energy distribution of a cluster with several maxima
void Init()
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
neighbours are defined as digits having at least 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 IsInEmc(AliPHOSDigit * digit) const
Tells if (true) or not (false) the digit is in a PHOS-EMC module
Bool_t IsInPpsd(AliPHOSDigit * digit) const
Tells if (true) or not (false) the digit is in a PHOS-PPSD module
Bool_t IsInCpv(AliPHOSDigit * digit) const
Tells if (true) or not (false) the digit is in a PHOS-CPV module
Bool_t ReadDigits()
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 ElectroMagnetic shower
Performs unfolding of all EMC/CPV but NOT ppsd clusters
void SetDigitsBranch(const char * file)
void SetRecPointsBranch(const char * file)
Double_t ShowerShape(Double_t r)
Shape of the shower (see PHOS TDR)
If you change this function, change also the gradien evaluation in ChiSquare()
void UnfoldCluster(AliPHOSEmcRecPoint * iniEmc,
Int_t nMax,
int * 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 th Chi square for the cluster unfolding minimization
Number of parameters, Gradient, Chi squared, parameters, what to do
void Print(Option_t * option)const
void PrintRecPoints(Option_t * option)
Prints list of RecPoints produced at the current pass of AliPHOSClusterizer
Inline Functions
void GetNumberOfClustersFound(int* numb)
Float_t GetEmcClusteringThreshold() const
Float_t GetEmcLocalMaxCut() const
Float_t GetEmcLogWeight() const
Float_t GetCpvClusteringThreshold() const
Float_t GetCpvLocalMaxCut() const
Float_t GetCpvLogWeight() const
Float_t GetPpsdClusteringThreshold() const
char* GetRecPointsBranch() const
char* GetDigitsBranch() const
void SetEmcClusteringThreshold(Float_t cluth)
void SetEmcLocalMaxCut(Float_t cut)
void SetEmcLogWeight(Float_t w)
void SetCpvClusteringThreshold(Float_t cluth)
void SetCpvLocalMaxCut(Float_t cut)
void SetCpvLogWeight(Float_t w)
void SetPpsdClusteringThreshold(Float_t cluth)
void SetUnfolding(Bool_t toUnfold = kTRUE)
Float_t Calibrate(Int_t amp) const
TClass* Class()
TClass* IsA() const
void ShowMembers(TMemberInspector& insp, char* parent)
void Streamer(TBuffer& b)
void StreamerNVirtual(TBuffer& b)
AliPHOSClusterizerv1 AliPHOSClusterizerv1(AliPHOSClusterizerv1&)
void ~AliPHOSClusterizerv1()
Copyright (c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
ROOT page - Class index - 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.