]>
Commit | Line | Data |
---|---|---|
ee08edde | 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 | /* $Id: AliEMCALClusterizerNxN.h 41181 2010-05-12 13:58:06Z gconesab $ */ | |
7 | ||
8 | //_________________________________________________________________________ | |
9 | // This class derives from AliEMCALClustrerizer but also keeps the API of AliEMCALClusterizerv1 | |
10 | // Algorithm: | |
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) | |
18 | ||
19 | #include "AliEMCALClusterizer.h" | |
20 | class AliEMCALRecPoint ; | |
21 | class AliEMCALDigit ; | |
22 | ||
23 | class AliEMCALClusterizerNxN : public AliEMCALClusterizer { | |
24 | ||
25 | public: | |
26 | ||
27 | AliEMCALClusterizerNxN() ; | |
28 | AliEMCALClusterizerNxN(AliEMCALGeometry* geometry); | |
29 | AliEMCALClusterizerNxN(AliEMCALGeometry* geometry, AliEMCALCalibData * calib, AliCaloCalibPedestal * pedestal); | |
30 | ||
31 | virtual ~AliEMCALClusterizerNxN() ; | |
32 | ||
33 | virtual Int_t AreNeighbours(AliEMCALDigit * d1, AliEMCALDigit * d2, Bool_t & shared)const ; | |
34 | // Checks if digits are in neighbour cells | |
35 | ||
65bec413 | 36 | virtual void Digits2Clusters(Option_t *option); // Does the job |
ee08edde | 37 | |
ee08edde | 38 | virtual const char * Version() const { return "clu-NxN" ; } |
ee08edde | 39 | |
8a84b948 | 40 | void SetNRowDiff(Int_t nd) { fNRowDiff = nd; } |
41 | void SetNColDiff(Int_t nd) { fNColDiff = nd; } | |
42 | Int_t GetNRowDiff() const { return fNRowDiff; } | |
43 | Int_t GetNColDiff() const { return fNColDiff; } | |
303ff65c | 44 | void SetEnergyGrad(Bool_t b) { fEnergyGrad= b; } |
45 | Bool_t GetEnergyGrad() const { return fEnergyGrad; } | |
8a84b948 | 46 | |
ee08edde | 47 | protected: |
48 | ||
49 | virtual void MakeClusters(); | |
50 | ||
ee08edde | 51 | private: |
52 | AliEMCALClusterizerNxN(const AliEMCALClusterizerNxN &); //copy ctor | |
53 | AliEMCALClusterizerNxN & operator = (const AliEMCALClusterizerNxN &); | |
54 | ||
8a84b948 | 55 | Int_t fNRowDiff; //how many neighbors to consider along row (phi) |
56 | Int_t fNColDiff; //how many neighbors to consider along col (eta) | |
303ff65c | 57 | Bool_t fEnergyGrad; //if true only cluster if neighboring cell has less energy |
ee08edde | 58 | |
303ff65c | 59 | ClassDef(AliEMCALClusterizerNxN,4) // Clusterizer implementation version 1 |
ee08edde | 60 | }; |
61 | ||
62 | #endif // AliEMCALCLUSTERIZERNXN_H |