Transition to NewIO
[u/mrichter/AliRoot.git] / EMCAL / AliEMCALHadronCorrectionv0.cxx
CommitLineData
8710bb16 1/**************************************************************************
2 * Copyright(c) 1998-2002, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
15
16
17/*
18$Log$
88cb7938 19Revision 1.2.4.2 2003/07/07 14:13:31 schutz
20NewIO
21
22Revision 1.4 2002/10/14 14:55:35 hristov
23Merging the VirtualMC branch to the main development branch (HEAD)
24
b9d0a01d 25Revision 1.2.6.2 2002/07/24 10:06:16 alibrary
26Updating VirtualMC
27
28Revision 1.3 2002/04/11 19:24:42 nilsen
29fixed a complation warning about not brace-enclosing the sub-elements of
30the static Double_t c[naxVariant][nPol].
31
ffe2426f 32Revision 1.2 2002/02/04 15:11:44 hristov
33Use TMath::Abs instead of fabs (Alpha)
34
2f804294 35Revision 1.1 2002/01/17 23:52:43 morsch
36First commit.
37
8710bb16 38*/
39
40
41#include "AliEMCALHadronCorrectionv0.h"
42
43const Int_t maxVariant = 8; // size eta grid
44const Int_t nVec = 10; // size momentum grid
45const Int_t nPol = 4; // number coefficients of polinom
46static Double_t etaGrid[maxVariant]={ 0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.67};
47static Double_t pGrid[nVec]={ 0.2, 0.5, 1.0, 2.0, 3.0, 5.0,10.0,15.0,25.0,40.0};
48// c[][] - first index for eta, second for momentum
ffe2426f 49static Double_t c[maxVariant][nPol] ={
50 {1.305705e-01, 3.725653e-01, -1.219962e-02, 1.806235e-04},
51 {1.296153e-01, 3.827408e-01, -1.238640e-02, 1.822804e-04},
52 {1.337690e-01, 3.797454e-01, -1.245227e-02, 1.848243e-04},
53 {1.395796e-01, 3.623994e-01, -9.196803e-03, 1.243278e-04},
54 {1.457184e-01, 3.753655e-01, -1.035324e-02, 1.473447e-04},
55 {1.329164e-01, 4.219044e-01, -1.310515e-02, 1.948883e-04},
56 {8.136581e-02, 4.646087e-01, -1.531917e-02, 2.274749e-04},
57 {1.119836e-01, 4.262497e-01, -1.160125e-02, 1.628738e-04} };
8710bb16 58
59ClassImp(AliEMCALHadronCorrectionv0)
60
61AliEMCALHadronCorrectionv0* AliEMCALHadronCorrectionv0::fHadrCorr = 0;
62
63AliEMCALHadronCorrectionv0::AliEMCALHadronCorrectionv0(const char *name,const char *title)
64 :AliEMCALHadronCorrection(name, title)
65{
66 fHadrCorr = this;
67}
68
69AliEMCALHadronCorrectionv0*
70AliEMCALHadronCorrectionv0::Instance()
71{
72 fHadrCorr = new AliEMCALHadronCorrectionv0();
73 return fHadrCorr;
74}
75
76Double_t
77AliEMCALHadronCorrectionv0::GetEnergy(const Double_t pmom,const Double_t eta,const Int_t gid)
78{
79 Int_t iEta=0; // index
2f804294 80 Double_t etaw = TMath::Abs(eta);
8710bb16 81 if(etaw > etaGrid[maxVariant-1]) etaw = etaGrid[maxVariant-1];
82 for(Int_t i=0; i<maxVariant; i++) if(eta>=etaGrid[i]) {iEta = i; break;}
83
84 Double_t e[2], y, pw = pmom;
85 if(pmom > pGrid[nVec-1]) pw = pGrid[nVec-1];
86 for(Int_t i=0; i<2; i++){ // e for two eta value
87 e[i] = c[iEta][0];
88 y = 1.;
89 for(Int_t j=1; j<nPol; j++){
90 y *= pw;
91 e[i] += c[iEta][j]*y;
92 }
93 if(i==0) iEta ++;
94 }
95
96 Double_t deta = etaGrid[iEta] - etaGrid[iEta-1];
97 Double_t a = (e[1] - e[0])/deta; // slope
98 Double_t energy = e[0] + a*(eta-etaGrid[iEta-1]);
99 return energy;
100}