]>
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 | ||
36 | virtual void Digits2Clusters(Option_t *option); // Does the job | |
37 | ||
38 | ||
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); | |
42 | ||
43 | virtual const char * Version() const { return "clu-NxN" ; } | |
44 | ||
45 | ||
46 | protected: | |
47 | ||
48 | virtual void MakeClusters(); | |
49 | ||
50 | static Bool_t fgkIsInputCalibrated; // to enable reclusterization from ESD cells | |
51 | ||
52 | private: | |
53 | AliEMCALClusterizerNxN(const AliEMCALClusterizerNxN &); //copy ctor | |
54 | AliEMCALClusterizerNxN & operator = (const AliEMCALClusterizerNxN &); | |
55 | ||
56 | ||
57 | virtual void MakeUnfolding(); | |
58 | void UnfoldCluster(AliEMCALRecPoint * iniEmc, Int_t Nmax, | |
59 | AliEMCALDigit ** maxAt, | |
60 | Float_t * maxAtEnergy ); //Unfolds cluster using TMinuit package | |
61 | ||
62 | private: | |
63 | ||
64 | ClassDef(AliEMCALClusterizerNxN,1) // Clusterizer implementation version 1 | |
65 | ||
66 | }; | |
67 | ||
68 | #endif // AliEMCALCLUSTERIZERNXN_H |