21 #include <TBenchmark.h> 25 #include <TClonesArray.h> 90 if(strstr(option,
"tim"))
93 if(strstr(option,
"print"))
114 for(index = 0; index <
fRecPoints->GetEntries(); index++)
135 else AliFatal(
"Null rec point in list!");
140 for(index = 0; index <
fRecPoints->GetEntries(); index++)
148 else AliFatal(
"Null rec point in list!");
154 if(strstr(option,
"deb") || strstr(option,
"all"))
157 AliDebug(1,Form(
"EMCAL Clusterizer found %d Rec Points",
fRecPoints->GetEntriesFast()));
159 if(strstr(option,
"tim"))
162 printf(
"Exec took %f seconds for Clusterizing",
178 Int_t nSupMod1=0, nModule1=0, nIphi1=0, nIeta1=0, iphi1=0, ieta1=0;
179 Int_t nSupMod2=0, nModule2=0, nIphi2=0, nIeta2=0, iphi2=0, ieta2=0;
189 if (nSupMod1 != nSupMod2 )
195 if(!TMath::AreEqualAbs(smPhi1, smPhi2, 1e-3))
return 2;
205 Int_t rowdiff = TMath::Abs(iphi1 - iphi2);
206 Int_t coldiff = TMath::Abs(ieta1 - ieta2);
209 if ((coldiff==0 && TMath::Abs(rowdiff)==1) || (rowdiff==0 && TMath::Abs(coldiff)==1))
215 printf(
"AliEMCALClusterizerv1::AreNeighbours(): id1=%d, (row %d, col %d) ; id2=%d, (row %d, col %d), shared %d \n",
216 d1->
GetId(), iphi1,ieta1, d2->
GetId(), iphi2,ieta2, shared);
232 if (
fGeom==0)
AliFatal(
"Did not get geometry from EMCALLoader");
239 Float_t dEnergyCalibrated = 0.0, ehs = 0.0, time = 0.0;
242 while ( (digit = dynamic_cast<AliEMCALDigit *>(nextdigit())) )
259 ehs += dEnergyCalibrated;
260 digitsC->AddLast(digit);
264 AliDebug(1,Form(
"MakeClusters: Number of digits %d -> (e %f), ehs %f\n",
267 TIter nextdigitC(digitsC);
268 while ( (digit = dynamic_cast<AliEMCALDigit *>(nextdigitC())) )
271 TArrayI clusterECAdigitslist(
fDigitsArr->GetEntries());
291 clusterDigits.AddLast(digit);
292 digitsC->Remove(digit);
297 TIter nextClusterDigit(&clusterDigits);
299 while ( (digit = dynamic_cast<AliEMCALDigit*>(nextClusterDigit())) )
302 TIter nextdigitN(digitsC);
308 Bool_t shared = kFALSE;
314 clusterDigits.AddLast(digitN);
315 digitsC->Remove(digitN);
320 AliDebug(2,Form(
"MakeClusters: %d digitd, energy %f \n", clusterDigits.GetEntries(), recPoint->
GetEnergy()));
322 else AliFatal(
"Null recpoint in array!");
Bool_t CheckAbsCellId(Int_t absId) const
void EvalDistanceToBadChannels(AliCaloCalibPedestal *caloped)
printf("Chi2/npoints = %f\n", TMath::Sqrt(chi2/npoints))
virtual Int_t GetNumberOfLocalMax(Int_t nDigitMult, Float_t locMaxCut, TClonesArray *digits) const
Int_t fNumberOfECAClusters
number of clusters found in EC section
virtual void Calibrate(Float_t &, Float_t &time, const Int_t cellId)
virtual void Digits2Clusters(Option_t *option)
Float_t GetTime(void) const
TObjArray * fRecPoints
array with EMCAL clusters
void SetCalibAmp(Float_t amp)
Float_t fECAW0
logarithmic weight for the cluster center of gravity calculation
Float_t fECALocMaxCut
minimum energy difference to distinguish local maxima in a cluster
virtual void SetInput(Int_t numberOfECAClusters, TObjArray *recPoints, TClonesArray *digitsArr)
virtual Float_t GetEnergy() const
Cell energy calibration factors container class.
Double_t GetPhiCenterOfSM(Int_t nsupmod) const
AliEMCALClusterizerv1()
Default constructor.
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
Int_t GetMultiplicity(void) const
Bool_t fJustClusters
false for standard reco
virtual void GetCalibrationParameters(void)
Bool_t fToUnfold
says if unfolding should be performed
Bool_t GetCellIndex(Int_t absId, Int_t &nSupMod, Int_t &nModule, Int_t &nIphi, Int_t &nIeta) const
virtual void MakeUnfolding()
virtual void AddDigit(AliEMCALDigit &digit, const Float_t energy, const Bool_t shared)
Float_t fTimeMin
minimum time of physical signal in a cell/digit
AliEMCALGeometry * fGeom
! pointer to geometry for utilities
Cell time shifts container class.
Double_t GetCalibAmp() const
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
#define AliFatal(message)
static const int fgkEMCALCols
Number of columns per module for EMCAL.
virtual void MakeClusters()
TClonesArray * fDigitsArr
array with EMCAL digits
#define AliDebug(logLevel, message)
AliCaloCalibPedestal * fCaloPed
! tower status map if aval
virtual void Print(Option_t *option="") const
Print the list of digits belonging to the cluster.
AliEMCALEMCGeometry * GetEMCGeometry() const
virtual void GetCaloCalibPedestal(void)
AliEMCALUnfolding * fClusterUnfolding
! pointer to unfolding object
virtual void EvalAll(Float_t logWeight, TClonesArray *digits, const Bool_t justClusters)
Evaluates cluster parameters: position, shower shape, primaries ...
Float_t fECAClusteringThreshold
minimum energy to seed a EC digit in a cluster
TTree * fTreeR
tree with output clusters
virtual ~AliEMCALClusterizerv1()
Destructtor.
virtual void SetClusterType(Int_t ver)
void SetNExMax(Int_t nmax=1)
void SetIndexInList(Int_t val)
Float_t GetAmplitude() const
virtual void Print(Option_t *option) const
Print clusterizer parameters.
EMCal geometry, singleton.
virtual Int_t AreNeighbours(AliEMCALDigit *d1, AliEMCALDigit *d2, Bool_t &shared) const
Float_t fMinECut
minimum energy for a digit to be a member of a cluster
Base class for the clusterization algorithm (pure abstract)
virtual void PrintRecPoints(Option_t *option)