Line data Source code
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 */
5 :
6 : //_________________________________________________________________________
7 : // This class derives from AliEMCALClustrerizer but also keeps the API of AliEMCALClusterizerv1
8 : // Algorithm:
9 : // 1. peek the most energetic cell
10 : // 2. assign it as a center of the cluster and add cells surrounding it: 3x3, 5x5...
11 : // 3. remove the cells contributing to the cluster
12 : // 4. start from 1 for the remaining clusters
13 : // 5. cluster splitting (not implemented yet) - use the shape analysis to resolve the energy sharing
14 : // - for high energy clusters check the surrounding of the 3x3 clusters for extra energy
15 : // (merge 3x3 clusters and resolve the internal energy sharing - case for 2 clusters merged)
16 :
17 : #include "AliEMCALClusterizer.h"
18 : class AliEMCALRecPoint ;
19 : class AliEMCALDigit ;
20 :
21 : class AliEMCALClusterizerNxN : public AliEMCALClusterizer {
22 :
23 : public:
24 :
25 : AliEMCALClusterizerNxN() ;
26 : AliEMCALClusterizerNxN(AliEMCALGeometry* geometry);
27 : AliEMCALClusterizerNxN(AliEMCALGeometry* geometry, AliEMCALCalibData * calib,
28 : AliEMCALCalibTime * calibt, AliCaloCalibPedestal *pedestal);
29 :
30 : virtual ~AliEMCALClusterizerNxN() ;
31 :
32 : virtual Int_t AreNeighbours(AliEMCALDigit * d1, AliEMCALDigit * d2, Bool_t & shared)const ;
33 : // Checks if digits are in neighbour cells
34 :
35 : virtual void Digits2Clusters(Option_t *option); // Does the job
36 :
37 0 : virtual const char * Version() const { return "clu-NxN" ; }
38 :
39 0 : void SetNRowDiff(Int_t nd) { fNRowDiff = nd; }
40 0 : void SetNColDiff(Int_t nd) { fNColDiff = nd; }
41 0 : Int_t GetNRowDiff() const { return fNRowDiff; }
42 0 : Int_t GetNColDiff() const { return fNColDiff; }
43 0 : void SetEnergyGrad(Bool_t b) { fEnergyGrad= b; }
44 0 : Bool_t GetEnergyGrad() const { return fEnergyGrad; }
45 :
46 : protected:
47 :
48 : virtual void MakeClusters();
49 :
50 : private:
51 : AliEMCALClusterizerNxN(const AliEMCALClusterizerNxN &); //copy ctor
52 : AliEMCALClusterizerNxN & operator = (const AliEMCALClusterizerNxN &);
53 :
54 : Int_t fNRowDiff; //how many neighbors to consider along row (phi)
55 : Int_t fNColDiff; //how many neighbors to consider along col (eta)
56 : Bool_t fEnergyGrad; //if true only cluster if neighboring cell has less energy
57 :
58 42 : ClassDef(AliEMCALClusterizerNxN,4) // Clusterizer implementation version 1
59 : };
60 :
61 : #endif // AliEMCALCLUSTERIZERNXN_H
|