coding convention
[u/mrichter/AliRoot.git] / PHOS / AliPHOSRecEmcManager.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
17 //_________________________________________________________________________
18 // Class for the management by the Emc reconstruction.
19 ////                  
20 //*-- Author   : Boris Polichtchouk (IHEP, Protvino) 6 Mar 2001
21 //
22 // --- ROOT system ---
23
24 // --- Standard library ---
25
26 // --- AliRoot header files ---
27
28 #include "AliPHOSRecEmcManager.h"
29
30 ClassImp(AliPHOSRecEmcManager) 
31
32 //____________________________________________________________________________
33
34   AliPHOSRecEmcManager::AliPHOSRecEmcManager()
35 {
36   // default ctor
37 //    fOneGamChisqCut = 3.;
38   fOneGamChisqCut = 1.3; // bvp 31.08.2001 
39
40   fOneGamInitialStep = 0.00005;
41   fOneGamChisqMin = 1.;
42   fOneGamStepMin = 0.0005;
43   fOneGamNumOfIterations = 50;
44
45   fTwoGamInitialStep = 0.00005;
46   fTwoGamChisqMin = 1.;
47   fTwoGamEmin = 0.1;
48   fTwoGamStepMin = 0.00005;
49   fTwoGamNumOfIterations = 50;  
50
51 //    fThr0 = 0.6;
52   fThr0 = 0.;
53 //    fSqdCut = 3.;
54 //    fSqdCut = 0.5; // bvp 31.08.2001
55   fSqdCut = 0.;
56
57   SetTitle("Emc Reconstruction Manager");
58
59 }
60
61 AliPHOSRecEmcManager::~AliPHOSRecEmcManager(void) {}
62
63 Float_t AliPHOSRecEmcManager::Dispersion(Float_t ei) const
64 {
65   //"Dispresion" of energy deposition in the cell.
66   // eTot is the total shower energy, ai is the
67   // calculated cell response,
68   // ei is the measured cell response.
69
70   return ei;
71 }
72
73 Float_t AliPHOSRecEmcManager::OneGamChi2(Float_t ai, Float_t ei, Float_t fi, Float_t& gi) const
74 {
75   // Chi2 used in OneGam (one-gamma fitting).
76   // gi is d(Chi2)/d(ai).
77
78   fi = 0 ; 
79   Float_t da = ai - ei;
80   Float_t d = ei; // we assume that sigma(E) = sqrt(E)
81   gi = 2.*(ai-ei)/d;
82
83   return da*da/d;
84
85 }
86
87 Float_t AliPHOSRecEmcManager::TwoGamChi2(Float_t ai, Float_t ei, Float_t fi, Float_t& gi) const
88 {
89   // calculates chi^2
90   fi = 0 ; 
91   Float_t da = ai - ei;
92   Float_t d = ei; // we assume that sigma(E) = sqrt(E)
93   gi = 2.*(ai-ei)/d;
94
95   return da*da/d;
96
97 }
98
99 void AliPHOSRecEmcManager::AG(Float_t ei, Float_t xi, Float_t yi, Float_t& ai, Float_t& gxi, Float_t& gyi )
100 {
101   //Calculates amplitude (ai) and gradients (gxi, gyi) of CPV pad response.
102   //Integrated response (total "shower energy") is E, 
103   //xi and yi are the distances along x and y from reference point 
104   // to the pad center.
105   //Shape of the shower is from PHOS TDR.
106
107
108   Float_t r = TMath::Sqrt(xi*xi + yi*yi);
109   Float_t r4    = r*r*r*r ;
110   Float_t r295  = TMath::Power(r, 2.95) ;
111   Float_t shape = ei*TMath::Exp( -r4 * (1. / (2.32 + 0.26 * r4) + 0.0316 / (1 + 0.0652 * r295) ) ) ;
112   ai = shape;
113
114
115   //d(shape)/d(xi)
116   gxi = (-(TMath::Power(TMath::Power(xi,2) + TMath::Power(yi,2),2)*
117        ((-0.006077944*xi*TMath::Power(TMath::Power(xi,2) + TMath::Power(yi,2),
118              0.4750000000000001))/
119           TMath::Power(1 + 0.0652*TMath::Power(TMath::Power(xi,2) + TMath::Power(yi,2),1.475),2) - 
120          (1.04*xi*(TMath::Power(xi,2) + TMath::Power(yi,2)))/
121           TMath::Power(2.32 + 0.26*TMath::Power(TMath::Power(xi,2) + TMath::Power(yi,2),2),2))) - 
122     4*xi*(TMath::Power(xi,2) + TMath::Power(yi,2))*
123      (0.0316/(1 + 0.0652*TMath::Power(TMath::Power(xi,2) + TMath::Power(yi,2),1.475)) + 
124        1./(2.32 + 0.26*TMath::Power(TMath::Power(xi,2) + TMath::Power(yi,2),2))))/
125   TMath::Power(TMath::E(),TMath::Power(TMath::Power(xi,2) + TMath::Power(yi,2),2)*
126     (0.0316/(1 + 0.0652*TMath::Power(TMath::Power(xi,2) + TMath::Power(yi,2),1.475)) + 
127      1./(2.32 + 0.26*TMath::Power(TMath::Power(xi,2) + TMath::Power(yi,2),2))));
128   
129   gxi = gxi*ei;
130
131   //d(shape)/d(yi)
132   gyi = (-(TMath::Power(TMath::Power(xi,2) + TMath::Power(yi,2),2)*
133        ((-0.006077944*yi*TMath::Power(TMath::Power(xi,2) + TMath::Power(yi,2),
134              0.4750000000000001))/
135           TMath::Power(1 + 0.0652*TMath::Power(TMath::Power(xi,2) + TMath::Power(yi,2),1.475),2) - 
136          (1.04*yi*(TMath::Power(xi,2) + TMath::Power(yi,2)))/
137           TMath::Power(2.32 + 0.26*TMath::Power(TMath::Power(xi,2) + TMath::Power(yi,2),2),2))) - 
138     4*yi*(TMath::Power(xi,2) + TMath::Power(yi,2))*
139      (0.0316/(1 + 0.0652*TMath::Power(TMath::Power(xi,2) + TMath::Power(yi,2),1.475)) + 
140        1./(2.32 + 0.26*TMath::Power(TMath::Power(xi,2) + TMath::Power(yi,2),2))))/
141   TMath::Power(TMath::E(),TMath::Power(TMath::Power(xi,2) + TMath::Power(yi,2),2)*
142     (0.0316/(1 + 0.0652*TMath::Power(TMath::Power(xi,2) + TMath::Power(yi,2),1.475)) + 
143      1./(2.32 + 0.26*TMath::Power(TMath::Power(xi,2) + TMath::Power(yi,2),2))));
144
145
146   gyi = gyi*ei;
147
148 }
149
150
151
152
153
154
155