21 #include <TBenchmark.h> 25 #include <TClonesArray.h> 52 fEMCALGeometry(geometry), fSeedList(), fDigitMap(), fCellMask(),
53 fFoundClusters(outputArray), fNumFoundClusters(0), fTimeCut(timeCut), fTimeMin(timeMin), fTimeMax(timeMax), fGradientCut(gradientCut), fDoEnergyGradientCut(doEnergyGradientCut), fThresholdSeedEnergy(thresholdSeedE),fThresholdCellEnergy(thresholdCellE)
71 Bool_t shared = kFALSE;
86 for(Int_t dir=0; dir<4; dir++)
90 if(dir==0) {rowDiff = -1; colDiff = 0;}
91 else if(dir==1) {rowDiff = 0; colDiff = -1;}
92 else if(dir==2) {rowDiff = 0; colDiff = +1;}
93 else if(dir==3) {rowDiff = +1; colDiff = 0;}
98 if(
fDigitMap[row+rowDiff][column+colDiff])
99 if(!
fCellMask[row+rowDiff][column+colDiff])
121 Int_t nSupMod=0, nModule=0, nIphi=0, nIeta=0;
135 row += nSupMod/2 * (24+1);
138 column += nSupMod%2 * 48;
140 column += nSupMod%2 * (48+1);
171 TIter nextdigit(digitArray);
172 while ( (digit = static_cast<AliEMCALDigit*>(nextdigit())) )
175 Float_t time = digit->
GetTime();
177 if (dEnergyCalibrated < fThresholdCellEnergy || time >
fTimeMax || time <
fTimeMin)
182 ehs += dEnergyCalibrated;
185 Int_t row = 0, column = 0;
199 for(Int_t i=nCells-1; i>=0; i--)
273 AliFatal(
"AliEMCALGeometry object not properly loaded.");
283 while ( (digit = static_cast<AliEMCALDigit*>(nextdigit())) )
286 Float_t time = digit->
GetTime();
Bool_t CheckAbsCellId(Int_t absId) const
Int_t fNumberOfECAClusters
number of clusters found in EC section
Double_t fTimeCut
maximum time difference between the digits inside EMC cluster
Bool_t fDoEnGradCut
cut on energy gradient
virtual void Calibrate(Float_t &, Float_t &time, const Int_t cellId)
Int_t fNumFoundClusters
number of found clusters in FindClusters()
Float_t GetTime(void) const
TObjArray * fRecPoints
array with EMCAL clusters
void SetCalibAmp(Float_t amp)
cellWithE fSeedList[EMCALClusterFinder::kNrows *EMCALClusterFinder::kNcolumns]
! seed array
virtual void MakeClusters()
Make list of clusters. Use AliEMCALClusterFinder class.
AliEMCALDigit * fDigitMap[EMCALClusterFinder::kNrows][EMCALClusterFinder::kNcolumns]
! topology arrays
Double_t fGradientCut
minimum energy difference to distinguish local maxima in a cluster
Double_t fThresholdCellEnergy
minimum energy for a digit to be a member of a cluster
Float_t fECALocMaxCut
minimum energy difference to distinguish local maxima in a cluster
Cell energy calibration factors container class.
Meta class for recursive clusterizer.
AliEMCALClusterFinder(TObjArray *outputArray, AliEMCALGeometry *geometry, Double_t timeCut, Double_t timeMin, Double_t timeMax, Double_t gradientCut, Bool_t doEnergyGradientCut, Double_t thresholdSeedE, Double_t thresholdCellE)
Constructor.
Clusterize neighbour cells, split if several maxima.
void GetCellPhiEtaIndexInSModule(Int_t nSupMod, Int_t nModule, Int_t nIphi, Int_t nIeta, Int_t &iphi, Int_t &ieta) const
void SetTime(Float_t time)
Float_t fTimeCut
maximum time difference between the digits inside EMC cluster
TObjArray * fFoundClusters
! Pointer to found cluster object array
Bool_t GetCellIndex(Int_t absId, Int_t &nSupMod, Int_t &nModule, Int_t &nIphi, Int_t &nIeta) const
virtual void AddDigit(AliEMCALDigit &digit, const Float_t energy, const Bool_t shared)
virtual ~AliEMCALClusterizerv3()
Destructtor.
Float_t fTimeMin
minimum time of physical signal in a cell/digit
AliEMCALGeometry * fGeom
! pointer to geometry for utilities
AliEMCALRecPoint * GetClusterFromNeighbours(AliEMCALRecPoint *recPoint, Int_t row, Int_t column)
Recursively search for neighbours (EMCAL)
void GetTopologicalRowColumn(AliEMCALDigit *digit, Int_t &row, Int_t &column)
Bool_t fCellMask[EMCALClusterFinder::kNrows][EMCALClusterFinder::kNcolumns]
! topology arrays
Cell time shifts container class.
Clusterize neighbour cells, no split, unfolding possible.
pedestal/bad map monitoring and calibration tools
Float_t fTimeMax
maximum time of physical signal in a cell/digit
Double_t fThresholdSeedEnergy
minimum energy to seed a EC digit in a cluster
~AliEMCALClusterFinder()
Destructor.
#define AliFatal(message)
Int_t GetSuperModuleNumber(Int_t absId) const
AliEMCALClusterFinder * fClusterFinder
! Cluster finder
TClonesArray * fDigitsArr
array with EMCAL digits
#define AliDebug(logLevel, message)
Double_t fTimeMin
minimum time of physical signal in a cell/digit
Bool_t fDoEnergyGradientCut
cut on energy gradient
Double_t fTimeMax
maximum time of physical signal in a cell/digit
AliEMCALClusterizerv3()
Default constructor.
Float_t fECAClusteringThreshold
minimum energy to seed a EC digit in a cluster
Bool_t IsDCALSM(Int_t nSupMod) const
AliEMCALGeometry * fEMCALGeometry
! pointer to geometry for utilities
virtual void SetClusterType(Int_t ver)
Float_t GetAmplitude() const
EMCal geometry, singleton.
Int_t FindClusters(TClonesArray *digits)
Return number of found clusters. Start clustering from highest energy cell.
Float_t fMinECut
minimum energy for a digit to be a member of a cluster