]>
Commit | Line | Data |
---|---|---|
d9b3567c | 1 | #ifndef ALIEMCALRECOUTILS_H |
2 | #define ALIEMCALRECOUTILS_H | |
3 | ||
4 | /* $Id: AliEMCALRecoUtils.h 33808 2009-07-15 09:48:08Z gconesab $ */ | |
5 | ||
6 | /////////////////////////////////////////////////////////////////////////////// | |
7 | // | |
8 | // Class AliEMCALRecoUtils | |
9 | // Some utilities to recalculate the cluster position or energy linearity | |
10 | // | |
11 | // | |
12 | // Author: Gustavo Conesa (LPSC- Grenoble) | |
13 | /////////////////////////////////////////////////////////////////////////////// | |
14 | ||
15 | //Root includes | |
16 | #include "TNamed.h" | |
17 | ||
18 | //AliRoot includes | |
19 | class AliVCluster; | |
20 | class AliVCaloCells; | |
21 | #include "AliLog.h" | |
22 | class AliEMCALGeoUtils; | |
23 | ||
24 | class AliEMCALRecoUtils : public TNamed { | |
25 | ||
26 | public: | |
27 | ||
28 | AliEMCALRecoUtils(); | |
29 | AliEMCALRecoUtils(const AliEMCALRecoUtils&); | |
30 | AliEMCALRecoUtils& operator=(const AliEMCALRecoUtils&); | |
31 | virtual ~AliEMCALRecoUtils() {;} | |
32 | ||
33 | enum NonlinearityFunctions{kPi0MC=0,kPi0GammaGamma=1,kPi0GammaConversion=2,kNoCorrection=3}; | |
34 | ||
35 | //Position recalculation | |
36 | void RecalculateClusterPosition(AliEMCALGeoUtils *geom, AliVCaloCells* cells, AliVCluster* clu, const Int_t iParticle); | |
37 | void GetMaxEnergyCell(AliEMCALGeoUtils *geom, AliVCaloCells* cells, AliVCluster* clu, | |
38 | Int_t & absId, Int_t& iSupMod, Int_t& ieta, Int_t& iphi); | |
39 | ||
40 | Float_t GetMisalShift(const Int_t i) const { | |
41 | if(i < 15 ){return fMisalShift[i]; } | |
42 | else { AliInfo(Form("Index %d larger than 15, do nothing\n",i)); return 0.;} | |
43 | } | |
44 | Float_t *GetMisalShiftArray() {return fMisalShift; } | |
45 | ||
46 | void SetMisalShift(const Int_t i, const Float_t shift) { | |
47 | if(i < 15 ){fMisalShift[i] = shift; } | |
48 | else { AliInfo(Form("Index %d larger than 15, do nothing\n",i));} | |
49 | } | |
50 | void SetMisalShiftArray(Float_t * misal) | |
51 | { for(Int_t i = 0; i < 15; i++)fMisalShift[i] = misal[i]; } | |
52 | ||
53 | //Non Linearity | |
54 | ||
55 | Float_t CorrectClusterEnergyLinearity(AliVCluster* clu); | |
56 | ||
57 | Float_t GetNonLinearityParam(const Int_t i) const { | |
58 | if(i < 6 ){return fNonLinearityParams[i]; } | |
59 | else { AliInfo(Form("Index %d larger than 6, do nothing\n",i)); return 0.;} | |
60 | } | |
61 | void SetNonLinearityParam(const Int_t i, const Float_t param) { | |
62 | if(i < 6 ){fNonLinearityParams[i] = param; } | |
63 | else { AliInfo(Form("Index %d larger than 6, do nothing\n",i));} | |
64 | } | |
65 | ||
66 | Int_t GetNonLinearityFunction() const {return fNonLinearityFunction;} | |
67 | void SetNonLinearityFunction(Int_t fun) {fNonLinearityFunction = fun ;} | |
68 | ||
69 | void Print(const Option_t*) const; | |
70 | ||
71 | private: | |
72 | ||
73 | Float_t fMisalShift[15]; // Shift parameters | |
74 | Int_t fNonLinearityFunction; // Non linearity function choice | |
75 | Float_t fNonLinearityParams[6]; // Parameters for the non linearity function | |
76 | ||
77 | ClassDef(AliEMCALRecoUtils, 1) | |
78 | ||
79 | }; | |
80 | ||
81 | #endif // ALIEMCALRECOUTILS_H | |
82 | ||
83 |