Using look-up table to calculate the integrated spectrum (Valgrind)
authorhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 10 Apr 2006 17:15:51 +0000 (17:15 +0000)
committerhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 10 Apr 2006 17:15:51 +0000 (17:15 +0000)
TRD/AliTRDv1.cxx

index 44c2ed2..4a778d6 100644 (file)
@@ -1229,8 +1229,8 @@ Double_t IntSpecGeant(Double_t *x, Double_t *)
   // Integrated spectrum from Geant3
   //
 
-  const Int_t n_pts = 83;
-  Double_t arr_e[n_pts] = {
+  const Int_t npts = 83;
+  Double_t arre[npts] = {
     2.421257,  2.483278,  2.534301,  2.592230,
     2.672067,  2.813299,  3.015059,  3.216819,
     3.418579,  3.620338,  3.868209,  3.920198,
@@ -1253,7 +1253,8 @@ Double_t IntSpecGeant(Double_t *x, Double_t *)
     12.585884, 12.854123, 14.278421, 16.975889,
     20.829416, 24.682943, 28.536469
   };
-  Double_t arr_dndx[n_pts] = {
+  /*
+  Double_t arrdndx[npts] = {
     19.344431, 18.664679, 18.136106, 17.567745,
     16.836426, 15.677382, 14.281277, 13.140237,
     12.207677, 11.445510, 10.697049, 10.562296,
@@ -1276,20 +1277,43 @@ Double_t IntSpecGeant(Double_t *x, Double_t *)
     0.001142,  0.000873,  0.000210,  0.000014,
     0.000000,  0.000000,  0.000000
   };
+  */
+  // Differentiate
+  //  dnde = (arrdndx[i-1] - arrdndx[i]) / (arre[i] - arre[i-1]);
+
+  Double_t arrdnde[npts] = {
+    10.960000, 10.960000, 10.359500,  9.811340,
+    9.1601500,  8.206670,  6.919630,  5.655430,
+    4.6221300,  3.777610,  3.019560,  2.591950,
+    2.5414600,  2.712920,  3.327460,  4.928240,
+    7.6185300, 10.966700, 12.225800,  8.094750,
+    3.3586900,  1.553650,  1.209600,  1.263840,
+    1.3241100,  1.312140,  1.255130,  1.165770,
+    1.0594500,  0.945450,  0.813231,  0.699837,
+    0.6235580,  2.260990,  2.968350,  2.240320,
+    1.7988300,  1.553300,  1.432070,  1.535520,
+    1.4429900,  1.247990,  1.050750,  0.829549,
+    0.5900280,  0.395897,  0.268741,  0.185320,
+    0.1292120,  0.103545,  0.0949525, 0.101535,
+    0.1276380,  0.134216,  0.123816,  0.104557,
+    0.0751843,  0.0521745, 0.0373546, 0.0275391,
+    0.0204713,  0.0169234, 0.0154552, 0.0139194,
+    0.0125592,  0.0113638, 0.0107354, 0.0102137,
+    0.00845984, 0.00683338, 0.00556836, 0.00456874,
+    0.0036227,  0.00285991, 0.00226664, 0.00172234,
+    0.00131226, 0.00100284, 0.000465492, 7.26607e-05,
+    3.63304e-06, 0.0000000, 0.0000000
+  };
 
   Int_t i;
   Double_t energy = x[0];
-  Double_t dnde;
 
-  for( i = 0 ; i < n_pts ; i++ )
-    if( energy < arr_e[i] ) break;
+  for( i = 0 ; i < npts ; i++ )
+    if( energy < arre[i] ) break;
 
   if( i == 0 )
     AliErrorGeneral("AliTRDv1","Given energy value is too small or zero");
 
-  // Differentiate
-  dnde = (arr_dndx[i-1] - arr_dndx[i]) / (arr_e[i] - arr_e[i-1]);
-
-  return dnde;
+   return arrdnde[i];
 
 }