- Reset TProcessID count after each event
[u/mrichter/AliRoot.git] / EMCAL / AliEMCALRecParam.cxx
1  /**************************************************************************
2  * Copyright(c) 1998-1999, 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 /* $Id$ */
17 // --- AliRoot header files ---
18 #include "TObjArray.h"
19 #include "AliCDBManager.h"
20 #include "AliCDBEntry.h"
21 #include "AliEMCALRecParam.h"
22 #include "AliLog.h"
23
24 ClassImp(AliEMCALRecParam)
25
26 TObjArray* AliEMCALRecParam::fgkMaps =0; //ALTRO mappings 
27
28 //-----------------------------------------------------------------------------
29 // Container of EMCAL reconstruction parameters
30 // The purpose of this object is to store it to OCDB
31 // and retrieve it in AliEMCALClusterizerv1
32 // Author: Yuri Kharlov
33 //-----------------------------------------------------------------------------
34
35 AliEMCALRecParam::AliEMCALRecParam():
36   fClusteringThreshold(0.5),fW0(4.5),fMinECut(0.45), //clustering
37   fTrkCutX(6.0), fTrkCutY(6.0), fTrkCutZ(6.0),  fTrkCutR(10.0),//track matching
38   fTrkCutAlphaMin(-50.0), fTrkCutAlphaMax(50.0), fTrkCutAngle(10000.0), //track matching
39   fHighLowGainFactor(16.0), fOrderParameter(2), fTau(2.35), fNoiseThreshold(3), fNPedSamples(5) //raw signal
40 {
41   // default reco values
42
43   //PID parameters (Guenole)
44
45   // as a first step, all array elements are initialized to 0.0
46   Int_t i, j;
47   for (i = 0; i < 6; i++) {
48     for (j = 0; j < 6; j++) {
49       fGamma[i][j] = fHadron[i][j] = fPiZero5to10[i][j] = fPiZero10to60[i][j] = 0.;
50     }
51   }
52
53   // then, only the ones which must be not zero are initialized
54   // while the others will remain to the value 0.0
55
56   fGamma[0][0] =  0.038022;
57   fGamma[0][1] = -0.0001883;
58   fGamma[0][2] =  5.449e-06;
59
60   fGamma[1][0] =  0.207313;
61   fGamma[1][1] = -0.000978;
62   fGamma[1][2] =  0.00001634;
63
64   fGamma[2][0] =  0.043364;
65   fGamma[2][1] = -0.0002048;
66   fGamma[2][2] =  8.661e-06;
67   fGamma[2][3] = -1.353e-07;
68
69   fGamma[3][0] =  0.265004;
70   fGamma[3][1] =  0.061298;
71   fGamma[3][2] = -0.003203;
72   fGamma[3][3] =  4.73e-05;
73
74   fGamma[4][0] =  0.243579;
75   fGamma[4][1] = -1.614e-05;
76
77   fGamma[5][0] =  0.002942;
78   fGamma[5][1] = -3.976e-05;
79
80   fHadron[0][0] =  0.011945 / 3.;
81   fHadron[0][1] =  0.000386 / 3.;
82   fHadron[0][2] = -0.000014 / 3.;
83   fHadron[0][3] =  1.336e-07 / 3.;
84
85   fHadron[1][0] =  0.496544;
86   fHadron[1][1] = -0.003226;
87   fHadron[1][2] =  0.00001678;
88
89   fHadron[2][0] =  0.144838;
90   fHadron[2][1] = -0.002954;
91   fHadron[2][2] =  0.00008754;
92   fHadron[2][3] = -7.587e-07;
93
94   fHadron[3][0] =  1.264461 / 7.;
95   fHadron[3][1] =  0.002097 / 7.;
96
97   fHadron[4][0] =  0.261950;
98   fHadron[4][1] = -0.001078;
99   fHadron[4][2] =  0.00003237;
100   fHadron[4][3] = -3.241e-07;
101   fHadron[4][4] =  0.;
102   fHadron[4][5] =  0.;
103   fHadron[5][0] =  0.010317;
104   fHadron[5][1] =  0.;
105   fHadron[5][2] =  0.;
106   fHadron[5][3] =  0.;
107   fHadron[5][4] =  0.;
108   fHadron[5][5] =  0.;
109
110   fPiZero5to10[0][0] = 0.009138;
111   fPiZero5to10[0][1] = 0.0006377;
112
113   fPiZero5to10[1][0] = 0.08;
114
115   fPiZero5to10[2][0] = -0.061119;
116   fPiZero5to10[2][1] =  0.019013;
117
118   fPiZero5to10[3][0] =  0.2;
119
120   fPiZero5to10[4][0] =  0.252044;
121   fPiZero5to10[4][1] = -0.002315;
122
123   fPiZero5to10[5][0] =  0.002942;
124   fPiZero5to10[5][1] = -3.976e-05;
125   
126   fPiZero10to60[0][0] =  0.009138;
127   fPiZero10to60[0][1] =  0.0006377;
128
129   fPiZero10to60[1][0] =  1.272837;
130   fPiZero10to60[1][1] = -0.069708;
131   fPiZero10to60[1][2] =  0.001568;
132   fPiZero10to60[1][3] = -1.162e-05;
133
134   fPiZero10to60[2][0] =  0.139703;
135   fPiZero10to60[2][1] =  0.003687;
136   fPiZero10to60[2][2] = -0.000568;
137   fPiZero10to60[2][3] =  1.498e-05;
138   fPiZero10to60[2][4] = -1.174e-07;
139
140   fPiZero10to60[3][0] = -0.826367;
141   fPiZero10to60[3][1] =  0.096951;
142   fPiZero10to60[3][2] = -0.002215;
143   fPiZero10to60[3][3] =  2.523e-05;
144
145   fPiZero10to60[4][0] =  0.249890;
146   fPiZero10to60[4][1] = -0.000063;
147
148   fPiZero10to60[5][0] =  0.002942;
149   fPiZero10to60[5][1] = -3.976e-05;
150
151 }
152
153 //-----------------------------------------------------------------------------
154 void AliEMCALRecParam::Print(Option_t *) const
155 {
156   printf("AliEMCALRecParam::Print()\n");
157   // Print reconstruction parameters to stdout
158   AliInfo(Form("Clusterization parameters :\n fClusteringThreshold=%.3f,\n fW0=%.3f,\n fMinECut=%.3f\n",
159                fClusteringThreshold,fW0,fMinECut));
160
161   AliInfo(Form("Track-matching cuts :\n x %f, y %f, z %f, R %f \n alphaMin %f, alphaMax %f, Angle %f\n", fTrkCutX, fTrkCutY, fTrkCutZ, fTrkCutR,fTrkCutAlphaMin,fTrkCutAlphaMax, fTrkCutAngle));
162
163   AliInfo(Form("PID parameters, Gamma :\n"));
164   for(Int_t i = 0; i < 6; i++){
165     for(Int_t j = 0; j < 6; j++){
166       printf(" %f, ", fGamma[i][j]);
167     }
168     printf("\n");
169   }
170
171   printf("\n");
172
173   AliInfo(Form("PID parameters, Hadron :\n"));
174   for(Int_t i = 0; i < 6; i++){
175     for(Int_t j = 0; j < 6; j++){
176       printf(" %f, ", fHadron[i][j]);
177     }
178     printf("\n");
179   }
180
181   printf("\n");
182
183   AliInfo(Form("PID parameters, Pi0zero5to10 :\n"));
184   for(Int_t i = 0; i < 6; i++){
185     for(Int_t j = 0; j < 6; j++){
186       printf(" %f, ", fPiZero5to10[i][j]);
187     }
188     printf("\n");
189   }
190
191   printf("\n");
192
193   AliInfo(Form("PID parameters, Pi0zero10to60 :\n"));
194   for(Int_t i = 0; i < 6; i++){
195     for(Int_t j = 0; j < 6; j++){
196       printf(" %f, ", fPiZero10to60[i][j]);
197     }
198     printf("\n");
199   }
200
201   printf("\n");
202
203   AliInfo(Form("Raw signal parameters: \n gain factor=%f, order=%d, tau=%f, noise threshold=%d, nped samples=%d \n",
204                fHighLowGainFactor,fOrderParameter,fTau,fNoiseThreshold,fNPedSamples));
205
206 }
207
208 //-----------------------------------------------------------------------------                           
209 const TObjArray* AliEMCALRecParam::GetMappings()
210 {
211   //Returns array of AliAltroMappings for RCU0..RCUX.                                                     
212   //If not found, read it from OCDB.                                                                      
213
214   //Quick check as follows:                                                                               
215   //  root [0]
216   //AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT");                       
217   //  root [1] AliCDBManager::Instance()->SetRun(1);                                                      
218   //  root [2] TObjArray* maps = AliEMCALRecParam::GetMappings();                                      
219   //  root [3] maps->Print();                                                                             
220
221   if(fgkMaps) return fgkMaps;
222
223   AliCDBEntry* entry = AliCDBManager::Instance()->Get("EMCAL/Calib/Mapping");
224   if(entry)
225     fgkMaps = (TObjArray*)entry->GetObject();
226
227   return fgkMaps;
228
229 }
230