1 #ifndef ALIEMCALCLUSTERIZERNXN_H
2 #define ALIEMCALCLUSTERIZERNXN_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
6 /* $Id: AliEMCALClusterizerNxN.h 41181 2010-05-12 13:58:06Z gconesab $ */
8 //_________________________________________________________________________
9 // This class derives from AliEMCALClustrerizer but also keeps the API of AliEMCALClusterizerv1
11 // 1. peek the most energetic cell
12 // 2. assign it as a center of the cluster and add cells surrounding it: 3x3, 5x5...
13 // 3. remove the cells contributing to the cluster
14 // 4. start from 1 for the remaining clusters
15 // 5. cluster splitting (not implemented yet) - use the shape analysis to resolve the energy sharing
16 // - for high energy clusters check the surrounding of the 3x3 clusters for extra energy
17 // (merge 3x3 clusters and resolve the internal energy sharing - case for 2 clusters merged)
19 #include "AliEMCALClusterizer.h"
20 class AliEMCALRecPoint ;
23 class AliEMCALClusterizerNxN : public AliEMCALClusterizer {
27 AliEMCALClusterizerNxN() ;
28 AliEMCALClusterizerNxN(AliEMCALGeometry* geometry);
29 AliEMCALClusterizerNxN(AliEMCALGeometry* geometry, AliEMCALCalibData * calib, AliCaloCalibPedestal * pedestal);
31 virtual ~AliEMCALClusterizerNxN() ;
33 virtual Int_t AreNeighbours(AliEMCALDigit * d1, AliEMCALDigit * d2, Bool_t & shared)const ;
34 // Checks if digits are in neighbour cells
36 virtual void Digits2Clusters(Option_t *option); // Does the job
39 static Double_t ShowerShape(Double_t x, Double_t y) ; // Shape of EM shower used in unfolding;
40 //class member function (not object member function)
41 static void SetInputCalibrated(Bool_t val);
43 virtual const char * Version() const { return "clu-NxN" ; }
48 virtual void MakeClusters();
50 static Bool_t fgkIsInputCalibrated; // to enable reclusterization from ESD cells
53 AliEMCALClusterizerNxN(const AliEMCALClusterizerNxN &); //copy ctor
54 AliEMCALClusterizerNxN & operator = (const AliEMCALClusterizerNxN &);
57 virtual void MakeUnfolding();
58 void UnfoldCluster(AliEMCALRecPoint * iniEmc, Int_t Nmax,
59 AliEMCALDigit ** maxAt,
60 Float_t * maxAtEnergy ); //Unfolds cluster using TMinuit package
64 ClassDef(AliEMCALClusterizerNxN,1) // Clusterizer implementation version 1
68 #endif // AliEMCALCLUSTERIZERNXN_H