00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include <Stiostream.h>
00025 #include <vector>
00026 #include "BetheBloch.h"
00027 #include "TMath.h"
00028 #ifndef ST_NO_NAMESPACES
00029 using std::vector;
00030 #endif
00031 int BetheBloch::noWarn = 0;
00032
00033 BetheBloch::BetheBloch(){
00034
00035
00036
00037
00038
00039 if (! noWarn) {
00040 cout << "BetheBloch::BetheBloch =================================================================" << endl;
00041 cout << "Warning: please don't use BetheBloch::BetheBloch for any analysis after P00hm production" << endl;
00042 cout << "but use instead : " << endl;
00043 cout << "for production before P03h static function 1.e-6*BetheBloch::Sirrf(Poverm) " << endl;
00044 cout << "for production after P03h (including P03h) " << endl;
00045 cout << "gSystem->Load(\"StBichsel\"); I70 = 1.e-6*mBichsel::Instance()->GetI70(TMath::Log10(poverm),1.)" << endl;
00046 cout << "see an example in $STAR/StRoot/macros/analysis/bichsel.C " << endl;
00047 cout << "BetheBloch::BetheBloch =================================================================" << endl;
00048 noWarn = 1;
00049 }
00050 vector<double> kinVec;
00051 vector<double> ionizVec;
00052 kinVec.push_back(0.216355);ionizVec.push_back(2.38171e-05);
00053 kinVec.push_back(0.22275 );ionizVec.push_back(2.25295e-05);
00054 kinVec.push_back(0.229145);ionizVec.push_back(2.13482e-05);
00055 kinVec.push_back(0.235539);ionizVec.push_back(2.02618e-05);
00056 kinVec.push_back(0.241934);ionizVec.push_back(1.92604e-05);
00057 kinVec.push_back(0.248329);ionizVec.push_back(1.83354e-05);
00058 kinVec.push_back(0.254723);ionizVec.push_back(1.74791e-05);
00059 kinVec.push_back(0.261118);ionizVec.push_back(1.6685e-05 );
00060 kinVec.push_back(0.267513);ionizVec.push_back(1.63046e-05);
00061 kinVec.push_back(0.273908);ionizVec.push_back(1.56024e-05);
00062 kinVec.push_back(0.280302);ionizVec.push_back(1.49478e-05);
00063 kinVec.push_back(0.286697);ionizVec.push_back(1.43364e-05);
00064 kinVec.push_back(0.293092);ionizVec.push_back(1.37647e-05);
00065 kinVec.push_back(0.299487);ionizVec.push_back(1.32291e-05);
00066 kinVec.push_back(0.305881);ionizVec.push_back(1.27268e-05);
00067 kinVec.push_back(0.312276);ionizVec.push_back(1.2255e-05 );
00068 kinVec.push_back(0.318671);ionizVec.push_back(1.18114e-05);
00069 kinVec.push_back(0.325066);ionizVec.push_back(1.13592e-05);
00070 kinVec.push_back(0.33146 );ionizVec.push_back(1.09666e-05);
00071 kinVec.push_back(0.337855);ionizVec.push_back(1.05961e-05);
00072 kinVec.push_back(0.34425 );ionizVec.push_back(1.02462e-05);
00073 kinVec.push_back(0.350644);ionizVec.push_back(9.91509e-06);
00074 kinVec.push_back(0.357039);ionizVec.push_back(9.6016e-06 );
00075 kinVec.push_back(0.363434);ionizVec.push_back(9.30456e-06);
00076 kinVec.push_back(0.369829);ionizVec.push_back(9.02278e-06);
00077 kinVec.push_back(0.376223);ionizVec.push_back(8.81998e-06);
00078 kinVec.push_back(0.382618);ionizVec.push_back(8.56388e-06);
00079 kinVec.push_back(0.389013);ionizVec.push_back(8.32029e-06);
00080 kinVec.push_back(0.395408);ionizVec.push_back(8.08844e-06);
00081 kinVec.push_back(0.401802);ionizVec.push_back(7.86756e-06);
00082 kinVec.push_back(0.408197);ionizVec.push_back(7.65699e-06);
00083 kinVec.push_back(0.414592);ionizVec.push_back(7.45608e-06);
00084 kinVec.push_back(0.420987);ionizVec.push_back(7.26426e-06);
00085 kinVec.push_back(0.427381);ionizVec.push_back(7.12715e-06);
00086 kinVec.push_back(0.433776);ionizVec.push_back(6.95077e-06);
00087 kinVec.push_back(0.440171);ionizVec.push_back(6.78204e-06);
00088 kinVec.push_back(0.446565);ionizVec.push_back(6.62049e-06);
00089 kinVec.push_back(0.45296 );ionizVec.push_back(6.46574e-06);
00090 kinVec.push_back(0.459355);ionizVec.push_back(6.3174e-06 );
00091 kinVec.push_back(0.46575 );ionizVec.push_back(6.17514e-06);
00092 kinVec.push_back(0.472144);ionizVec.push_back(6.03861e-06);
00093 kinVec.push_back(0.478539);ionizVec.push_back(5.90753e-06);
00094 kinVec.push_back(0.484934);ionizVec.push_back(5.82937e-06);
00095 kinVec.push_back(0.491329);ionizVec.push_back(5.70733e-06);
00096 kinVec.push_back(0.497723);ionizVec.push_back(5.58995e-06);
00097 kinVec.push_back(0.504118);ionizVec.push_back(5.47701e-06);
00098 kinVec.push_back(0.510513);ionizVec.push_back(5.36829e-06);
00099 kinVec.push_back(0.516908);ionizVec.push_back(5.26358e-06);
00100 kinVec.push_back(0.523302);ionizVec.push_back(5.16268e-06);
00101 kinVec.push_back(0.529697);ionizVec.push_back(5.06542e-06);
00102 kinVec.push_back(0.536092);ionizVec.push_back(4.95505e-06);
00103 kinVec.push_back(0.542486);ionizVec.push_back(4.86486e-06);
00104 kinVec.push_back(0.548881);ionizVec.push_back(4.77779e-06);
00105 kinVec.push_back(0.555276);ionizVec.push_back(4.6937e-06 );
00106 kinVec.push_back(0.561671);ionizVec.push_back(4.61248e-06);
00107 kinVec.push_back(0.568065);ionizVec.push_back(4.53397e-06);
00108 kinVec.push_back(0.57446 );ionizVec.push_back(4.45809e-06);
00109 kinVec.push_back(0.580855);ionizVec.push_back(4.38469e-06);
00110 kinVec.push_back(0.58725 );ionizVec.push_back(4.32523e-06);
00111 kinVec.push_back(0.593644);ionizVec.push_back(4.25631e-06);
00112 kinVec.push_back(0.600039);ionizVec.push_back(4.18958e-06);
00113 kinVec.push_back(0.606434);ionizVec.push_back(4.12496e-06);
00114 kinVec.push_back(0.612828);ionizVec.push_back(4.06236e-06);
00115 kinVec.push_back(0.619223);ionizVec.push_back(4.00167e-06);
00116 kinVec.push_back(0.625618);ionizVec.push_back(3.94284e-06);
00117 kinVec.push_back(0.632013);ionizVec.push_back(3.88579e-06);
00118 kinVec.push_back(0.638407);ionizVec.push_back(3.83045e-06);
00119 kinVec.push_back(0.644802);ionizVec.push_back(3.78096e-06);
00120 kinVec.push_back(0.651197);ionizVec.push_back(3.72878e-06);
00121 kinVec.push_back(0.657592);ionizVec.push_back(3.6781e-06 );
00122 kinVec.push_back(0.663986);ionizVec.push_back(3.62888e-06);
00123 kinVec.push_back(0.670381);ionizVec.push_back(3.58106e-06);
00124 kinVec.push_back(0.676776);ionizVec.push_back(3.53459e-06);
00125 kinVec.push_back(0.683171);ionizVec.push_back(3.48941e-06);
00126 kinVec.push_back(0.689565);ionizVec.push_back(3.4455e-06 );
00127 kinVec.push_back(0.69596 );ionizVec.push_back(3.39852e-06);
00128 kinVec.push_back(0.702355);ionizVec.push_back(3.35701e-06);
00129 kinVec.push_back(0.708749);ionizVec.push_back(3.31663e-06);
00130 kinVec.push_back(0.715144);ionizVec.push_back(3.27733e-06);
00131 kinVec.push_back(0.721539);ionizVec.push_back(3.23906e-06);
00132 kinVec.push_back(0.727934);ionizVec.push_back(3.20181e-06);
00133 kinVec.push_back(0.734328);ionizVec.push_back(3.16551e-06);
00134 kinVec.push_back(0.740723);ionizVec.push_back(3.13016e-06);
00135 kinVec.push_back(0.747118);ionizVec.push_back(3.08976e-06);
00136 kinVec.push_back(0.753513);ionizVec.push_back(3.05624e-06);
00137 kinVec.push_back(0.759907);ionizVec.push_back(3.02358e-06);
00138 kinVec.push_back(0.766302);ionizVec.push_back(2.99172e-06);
00139 kinVec.push_back(0.772697);ionizVec.push_back(2.96065e-06);
00140 kinVec.push_back(0.779092);ionizVec.push_back(2.93033e-06);
00141 kinVec.push_back(0.785486);ionizVec.push_back(2.90077e-06);
00142 kinVec.push_back(0.791881);ionizVec.push_back(2.87191e-06);
00143 kinVec.push_back(0.798276);ionizVec.push_back(2.84375e-06);
00144 kinVec.push_back(0.80467 );ionizVec.push_back(2.80652e-06);
00145 kinVec.push_back(0.811065);ionizVec.push_back(2.77976e-06);
00146 kinVec.push_back(0.81746 );ionizVec.push_back(2.75364e-06);
00147 kinVec.push_back(0.823855);ionizVec.push_back(2.72812e-06);
00148 kinVec.push_back(0.830249);ionizVec.push_back(2.70318e-06);
00149 kinVec.push_back(0.836644);ionizVec.push_back(2.67881e-06);
00150 kinVec.push_back(0.843039);ionizVec.push_back(2.65499e-06);
00151 kinVec.push_back(0.849434);ionizVec.push_back(2.63171e-06);
00152
00153
00154 kinVec.push_back(0.92068);ionizVec.push_back(2.44711e-06);
00155 kinVec.push_back(1.05682);ionizVec.push_back(2.12787e-06);
00156 kinVec.push_back(1.19295);ionizVec.push_back(1.91688e-06);
00157 kinVec.push_back(1.32908);ionizVec.push_back(1.76312e-06);
00158 kinVec.push_back(1.46522);ionizVec.push_back(1.65432e-06);
00159 kinVec.push_back(1.60135);ionizVec.push_back(1.56874e-06);
00160 kinVec.push_back(1.73748);ionizVec.push_back(1.50247e-06);
00161 kinVec.push_back(1.87361);ionizVec.push_back(1.46839e-06);
00162 kinVec.push_back(2.00974);ionizVec.push_back(1.42577e-06);
00163 kinVec.push_back(2.14588);ionizVec.push_back(1.39101e-06);
00164 kinVec.push_back(2.28201);ionizVec.push_back(1.38415e-06);
00165 kinVec.push_back(2.41814);ionizVec.push_back(1.35975e-06);
00166 kinVec.push_back(2.55427);ionizVec.push_back(1.34999e-06);
00167 kinVec.push_back(2.69041);ionizVec.push_back(1.34375e-06);
00168 kinVec.push_back(2.82654);ionizVec.push_back(1.3375e-06 );
00169 kinVec.push_back(2.96267);ionizVec.push_back(1.32839e-06);
00170 kinVec.push_back(3.0988 );ionizVec.push_back(1.32689e-06);
00171 kinVec.push_back(3.23494);ionizVec.push_back(1.32366e-06);
00172 kinVec.push_back(3.37107);ionizVec.push_back(1.32239e-06);
00173 kinVec.push_back(3.5072 );ionizVec.push_back(1.32112e-06);
00174 kinVec.push_back(3.64333);ionizVec.push_back(1.31949e-06);
00175 kinVec.push_back(3.77947);ionizVec.push_back(1.32095e-06);
00176 kinVec.push_back(3.9156 );ionizVec.push_back(1.32241e-06);
00177 kinVec.push_back(4.18786);ionizVec.push_back(1.3238e-06 );
00178 kinVec.push_back(4.46013);ionizVec.push_back(1.32547e-06);
00179 kinVec.push_back(4.59626);ionizVec.push_back(1.32823e-06);
00180 kinVec.push_back(5.14079);ionizVec.push_back(1.3315e-06 );
00181 kinVec.push_back(5.27692);ionizVec.push_back(1.33467e-06);
00182 kinVec.push_back(5.41306);ionizVec.push_back(1.33871e-06);
00183 kinVec.push_back(5.54919);ionizVec.push_back(1.34288e-06);
00184 kinVec.push_back(5.68532);ionizVec.push_back(1.34616e-06);
00185 kinVec.push_back(5.82145);ionizVec.push_back(1.35068e-06);
00186 kinVec.push_back(5.95759);ionizVec.push_back(1.35494e-06);
00187 kinVec.push_back(6.09372);ionizVec.push_back(1.36034e-06);
00188 kinVec.push_back(6.22985);ionizVec.push_back(1.36459e-06);
00189 kinVec.push_back(6.36598);ionizVec.push_back(1.36865e-06);
00190 kinVec.push_back(6.50212);ionizVec.push_back(1.37391e-06);
00191 kinVec.push_back(6.63825);ionizVec.push_back(1.37861e-06);
00192 kinVec.push_back(6.77438);ionizVec.push_back(1.38285e-06);
00193 kinVec.push_back(6.91051);ionizVec.push_back(1.38648e-06);
00194 kinVec.push_back(7.04665);ionizVec.push_back(1.38971e-06);
00195 kinVec.push_back(7.31891);ionizVec.push_back(1.39186e-06);
00196 kinVec.push_back(7.45504);ionizVec.push_back(1.39507e-06);
00197 kinVec.push_back(7.72731);ionizVec.push_back(1.39519e-06);
00198 kinVec.push_back(7.86344);ionizVec.push_back(1.39713e-06);
00199 kinVec.push_back(8.13571);ionizVec.push_back(1.39835e-06);
00200 kinVec.push_back(8.27184);ionizVec.push_back(1.39978e-06);
00201 kinVec.push_back(8.40797);ionizVec.push_back(1.40071e-06);
00202 kinVec.push_back(8.5441 );ionizVec.push_back(1.40363e-06);
00203 kinVec.push_back(8.81637);ionizVec.push_back(1.40651e-06);
00204 kinVec.push_back(8.9525 );ionizVec.push_back(1.40943e-06);
00205 kinVec.push_back(9.08863);ionizVec.push_back(1.41462e-06);
00206 kinVec.push_back(9.22477);ionizVec.push_back(1.41753e-06);
00207 kinVec.push_back(9.76929);ionizVec.push_back(1.42957e-06);
00208 kinVec.push_back(9.90543);ionizVec.push_back(1.43212e-06);
00209 kinVec.push_back(10.0416);ionizVec.push_back(1.4451e-06 );
00210 kinVec.push_back(10.1777);ionizVec.push_back(1.44767e-06);
00211 kinVec.push_back(10.3138);ionizVec.push_back(1.45024e-06);
00212 kinVec.push_back(10.7222);ionizVec.push_back(1.45164e-06);
00213 kinVec.push_back(10.8584);ionizVec.push_back(1.45502e-06);
00214 kinVec.push_back(10.9945);ionizVec.push_back(1.45758e-06);
00215 kinVec.push_back(12.0835);ionizVec.push_back(1.45772e-06);
00216
00217
00218
00219
00220
00221
00222
00223
00224
00225
00226
00227
00228
00229
00230
00231
00232
00233
00234
00235
00236
00237
00238
00239
00240
00241
00242
00243
00244
00245
00246
00247
00248
00249
00250
00251
00252
00253
00254
00255
00256
00257
00258
00259
00260
00261
00262
00263
00264
00265
00266
00267
00268
00269
00270
00271
00272
00273
00274
00275
00276
00277
00278
00279
00280
00281
00282
00283
00284
00285 kinVec.push_back(214.286); ionizVec.push_back(1.84391e-06*1.0583);
00286 kinVec.push_back(251.468); ionizVec.push_back(1.865e-06 *1.0583);
00287 kinVec.push_back(288.65 ); ionizVec.push_back(1.88321e-06*1.0583);
00288 kinVec.push_back(325.832); ionizVec.push_back(1.87983e-06*1.0583);
00289 kinVec.push_back(363.014); ionizVec.push_back(1.89258e-06*1.0583);
00290 kinVec.push_back(400.196); ionizVec.push_back(1.88496e-06*1.0583);
00291 kinVec.push_back(437.378); ionizVec.push_back(1.8953e-06 *1.0583);
00292 kinVec.push_back(474.56 ); ionizVec.push_back(1.90352e-06*1.0583);
00293 kinVec.push_back(511.742); ionizVec.push_back(1.89112e-06*1.0583);
00294 kinVec.push_back(548.924); ionizVec.push_back(1.89855e-06*1.0583);
00295 kinVec.push_back(586.106); ionizVec.push_back(1.90452e-06*1.0583);
00296 kinVec.push_back(623.288); ionizVec.push_back(1.90318e-06*1.0583);
00297 kinVec.push_back(660.47 ); ionizVec.push_back(1.90914e-06*1.0583);
00298 kinVec.push_back(697.652); ionizVec.push_back(1.91306e-06*1.0583);
00299 kinVec.push_back(734.834); ionizVec.push_back(1.91746e-06*1.0583);
00300 kinVec.push_back(772.016); ionizVec.push_back(1.92184e-06*1.0583);
00301 kinVec.push_back(809.198); ionizVec.push_back(1.92571e-06*1.0583);
00302 kinVec.push_back(846.38 ); ionizVec.push_back(1.93009e-06*1.0583);
00303 kinVec.push_back(883.562); ionizVec.push_back(1.93345e-06*1.0583);
00304 kinVec.push_back(920.744); ionizVec.push_back(1.93669e-06*1.0583);
00305 kinVec.push_back(957.926); ionizVec.push_back(1.93992e-06*1.0583);
00306 kinVec.push_back(995.108); ionizVec.push_back(1.94317e-06*1.0583);
00307 kinVec.push_back(1032.29); ionizVec.push_back(1.94641e-06*1.0583);
00308 kinVec.push_back(1069.47); ionizVec.push_back(1.94964e-06*1.0583);
00309 kinVec.push_back(1106.65); ionizVec.push_back(1.95206e-06*1.0583);
00310 kinVec.push_back(1143.84); ionizVec.push_back(1.95445e-06*1.0583);
00311 kinVec.push_back(1181.02); ionizVec.push_back(1.95684e-06*1.0583);
00312 kinVec.push_back(1218.2 ); ionizVec.push_back(1.95924e-06*1.0583);
00313 kinVec.push_back(1255.38); ionizVec.push_back(1.96162e-06*1.0583);
00314 kinVec.push_back(1292.56); ionizVec.push_back(1.96402e-06*1.0583);
00315 kinVec.push_back(1329.75); ionizVec.push_back(1.96641e-06*1.0583);
00316 kinVec.push_back(1366.93); ionizVec.push_back(1.96846e-06*1.0583);
00317 kinVec.push_back(1404.11); ionizVec.push_back(1.97023e-06*1.0583);
00318 kinVec.push_back(1441.29); ionizVec.push_back(1.972e-06 *1.0583);
00319 kinVec.push_back(1478.47); ionizVec.push_back(1.97379e-06*1.0583);
00320 kinVec.push_back(1515.66); ionizVec.push_back(1.97555e-06*1.0583);
00321 kinVec.push_back(1552.84); ionizVec.push_back(1.97732e-06*1.0583);
00322 kinVec.push_back(1590.02); ionizVec.push_back(1.9791e-06 *1.0583);
00323 kinVec.push_back(1627.2 ); ionizVec.push_back(1.98087e-06*1.0583);
00324 kinVec.push_back(1664.38); ionizVec.push_back(1.98265e-06*1.0583);
00325 kinVec.push_back(1701.57); ionizVec.push_back(1.98434e-06*1.0583);
00326 kinVec.push_back(1738.75); ionizVec.push_back(1.98567e-06*1.0583);
00327 kinVec.push_back(1775.93); ionizVec.push_back(1.98699e-06*1.0583);
00328 kinVec.push_back(1813.11); ionizVec.push_back(1.98832e-06*1.0583);
00329 kinVec.push_back(1850.29); ionizVec.push_back(1.98964e-06*1.0583);
00330 kinVec.push_back(1887.48); ionizVec.push_back(1.99098e-06*1.0583);
00331 kinVec.push_back(1924.66); ionizVec.push_back(1.99229e-06*1.0583);
00332 kinVec.push_back(1961.84); ionizVec.push_back(1.99361e-06*1.0583);
00333 kinVec.push_back(1999.02); ionizVec.push_back(1.99493e-06*1.0583);
00334 kinVec.push_back(2036.2 ); ionizVec.push_back(1.99625e-06*1.0583);
00335 kinVec.push_back(2073.39); ionizVec.push_back(1.99759e-06*1.0583);
00336 kinVec.push_back(2110.57); ionizVec.push_back(1.99891e-06*1.0583);
00337 kinVec.push_back(2147.75); ionizVec.push_back(2.00012e-06*1.0583);
00338 kinVec.push_back(2184.93); ionizVec.push_back(2.0011e-06 *1.0583);
00339 kinVec.push_back(2222.11); ionizVec.push_back(2.00209e-06*1.0583);
00340 kinVec.push_back(2259.3 ); ionizVec.push_back(2.00309e-06*1.0583);
00341 kinVec.push_back(2296.48); ionizVec.push_back(2.00407e-06*1.0583);
00342 kinVec.push_back(2333.66); ionizVec.push_back(2.00508e-06*1.0583);
00343 kinVec.push_back(2370.84); ionizVec.push_back(2.00606e-06*1.0583);
00344 kinVec.push_back(2408.02); ionizVec.push_back(2.00706e-06*1.0583);
00345 kinVec.push_back(2445.21); ionizVec.push_back(2.00805e-06*1.0583);
00346 kinVec.push_back(2482.39); ionizVec.push_back(2.00903e-06*1.0583);
00347 kinVec.push_back(2519.57); ionizVec.push_back(2.01003e-06*1.0583);
00348 kinVec.push_back(2556.75); ionizVec.push_back(2.01102e-06*1.0583);
00349 kinVec.push_back(2593.93); ionizVec.push_back(2.01202e-06*1.0583);
00350 kinVec.push_back(2631.12); ionizVec.push_back(2.01301e-06*1.0583);
00351 kinVec.push_back(2668.3 ); ionizVec.push_back(2.014e-06 *1.0583);
00352 kinVec.push_back(2705.48); ionizVec.push_back(2.01486e-06*1.0583);
00353 kinVec.push_back(2742.66); ionizVec.push_back(2.01561e-06*1.0583);
00354 kinVec.push_back(2779.84); ionizVec.push_back(2.01635e-06*1.0583);
00355 kinVec.push_back(2817.03); ionizVec.push_back(2.0171e-06 *1.0583);
00356 kinVec.push_back(2854.21); ionizVec.push_back(2.01784e-06*1.0583);
00357 kinVec.push_back(2891.39); ionizVec.push_back(2.01859e-06*1.0583);
00358 kinVec.push_back(2928.57); ionizVec.push_back(2.01933e-06*1.0583);
00359 kinVec.push_back(2965.75); ionizVec.push_back(2.02008e-06*1.0583);
00360 kinVec.push_back(3002.94); ionizVec.push_back(2.02081e-06*1.0583);
00361 kinVec.push_back(3040.12); ionizVec.push_back(2.02156e-06*1.0583);
00362 kinVec.push_back(3077.3 ); ionizVec.push_back(2.02231e-06*1.0583);
00363 kinVec.push_back(3114.48); ionizVec.push_back(2.02306e-06*1.0583);
00364 kinVec.push_back(3151.66); ionizVec.push_back(2.0238e-06 *1.0583);
00365 kinVec.push_back(3188.85); ionizVec.push_back(2.02454e-06*1.0583);
00366 kinVec.push_back(3226.03); ionizVec.push_back(2.02529e-06*1.0583);
00367 kinVec.push_back(3263.21); ionizVec.push_back(2.02604e-06*1.0583);
00368 kinVec.push_back(3300.39); ionizVec.push_back(2.02678e-06*1.0583);
00369 kinVec.push_back(3337.57); ionizVec.push_back(2.02752e-06*1.0583);
00370 kinVec.push_back(3374.76); ionizVec.push_back(2.02826e-06*1.0583);
00371 kinVec.push_back(3411.94); ionizVec.push_back(2.02887e-06*1.0583);
00372 kinVec.push_back(3449.12); ionizVec.push_back(2.02943e-06*1.0583);
00373 kinVec.push_back(3486.3 ); ionizVec.push_back(2.03e-06 *1.0583);
00374 kinVec.push_back(3523.48); ionizVec.push_back(2.03056e-06*1.0583);
00375 kinVec.push_back(3560.67); ionizVec.push_back(2.03113e-06*1.0583);
00376 kinVec.push_back(3597.85); ionizVec.push_back(2.03169e-06*1.0583);
00377 kinVec.push_back(3635.03); ionizVec.push_back(2.03227e-06*1.0583);
00378 kinVec.push_back(3672.21); ionizVec.push_back(2.03283e-06*1.0583);
00379 kinVec.push_back(3709.39); ionizVec.push_back(2.03339e-06*1.0583);
00380 kinVec.push_back(3746.58); ionizVec.push_back(2.03395e-06*1.0583);
00381 kinVec.push_back(3783.76); ionizVec.push_back(2.03452e-06*1.0583);
00382 kinVec.push_back(3820.94); ionizVec.push_back(2.03509e-06*1.0583);
00383 kinVec.push_back(3858.12); ionizVec.push_back(2.03565e-06*1.0583);
00384 kinVec.push_back(3895.3 ); ionizVec.push_back(2.03622e-06*1.0583);
00385
00386
00387
00388
00389
00390
00391
00392
00393
00394
00395
00396
00397
00398
00399
00400
00401
00402
00403
00404
00405
00406
00407
00408
00409
00410
00411
00412
00413
00414
00415
00416
00417
00418
00419
00420
00421
00422
00423
00424
00425
00426
00427
00428
00429
00430
00431
00432
00433
00434
00435
00436
00437
00438
00439
00440
00441
00442
00443
00444
00445
00446
00447
00448
00449
00450
00451
00452
00453
00454
00455
00456 for(size_t i=0; i<ionizVec.size(); ++i) {
00457
00458
00459
00460
00461 mMap.insert(map<double,double>::value_type(kinVec[i],ionizVec[i]));
00462
00463 }
00464
00465
00466 }
00467 BetheBloch::~BetheBloch(){
00468 mMap.clear();
00469 }
00470 double BetheBloch::operator() (double betagamma) {
00471
00472
00473
00474 double unnormalized = 0;
00475 if (betagamma < .217) {
00476 double bg2 = betagamma*betagamma;
00477
00478 unnormalized = (5.39e-4*2.0885e-3)*((1+bg2)/bg2);
00479 }
00480 else {
00481
00482
00483
00484 map<double,double>::iterator lowb = mMap.lower_bound(betagamma);
00485 if (lowb == mMap.end())
00486 unnormalized = (*(--lowb)).second;
00487
00488 else {
00489 double bghigh = (*lowb).first;
00490 double dedxhigh = (*lowb).second;
00491 if (bghigh == betagamma || lowb==mMap.begin())
00492 unnormalized = dedxhigh;
00493 else {
00494 --lowb;
00495 double bglow = (*lowb).first;
00496 double dedxlow = (*lowb).second;
00497 double slope = (dedxhigh - dedxlow)/(bghigh - bglow);
00498 unnormalized = (dedxlow + slope * (betagamma - bglow));
00499 }
00500 }
00501 }
00502
00503
00504
00505
00506
00507
00508
00509
00510
00511
00512 return 1.055*unnormalized;
00513 }
00514
00515
00516
00517
00518 Double_t BetheBloch::Sirrf(Double_t Poverm, Double_t Length, Int_t k) {
00519 Double_t Scale2keV = 1.67180;
00520 Double_t par[7] = {
00521 2.12188e-01,
00522 1.83678e-05,
00523 1.17380e+01,
00524 -3.52538e-01,
00525 9.38373e-02,
00526 -7.95122e-03,
00527 1.13168e+01
00528 };
00529 Double_t poverm = Poverm;
00530 if (poverm > 527.5) poverm = 527.5;
00531 Double_t beta2inv = 1. + 1./(poverm*poverm);
00532 Double_t gamma = TMath::Sqrt(poverm*poverm + 1);
00533 Double_t Lpoverm = TMath::Log(poverm);
00534 Double_t K = 0.307075e+3;
00535 Double_t A = 38.691;
00536 Double_t Z = 17.436;
00537 Double_t rho = 1.5607e-03;
00538 Double_t I = par[1];
00539 Double_t m = 0.510998902;
00540 Double_t pim = 139.570180;
00541 Double_t Delta;
00542 Double_t M = pim;
00543 if (k) {M = m; Delta = par[6];}
00544 else {M = pim; Delta = par[2];}
00545 Double_t r = m/M;
00546 Double_t Tmax = 2*m*poverm*poverm/(1. + r*(2*gamma + r));
00547 Double_t Tupper = Tmax;
00548 Double_t si = K*Z/A*rho/2*beta2inv*
00549 (TMath::Log(2*m*poverm*poverm*Tupper/(I*I))
00550 - (1 + Tupper/Tmax)/beta2inv - Delta);
00551 if (si <= 0) si = 1.e-12;
00552 Double_t value = par[0] + TMath::Log(si) +
00553 Lpoverm*(par[3] + Lpoverm*(par[4] + Lpoverm*par[5]));
00554 Double_t sirrf = TMath::Exp(value)*Scale2keV;
00555 const Int_t Nm = 12;
00556 Double_t coeff[Nm] = {
00557 -3.16420e-01, 6.54653e-02,-4.01169e-03, 1.10047e-04,-1.18392e-06,-7.18814e-09,
00558 3.06893e-10,-2.33023e-12,-7.70897e-15, 2.13252e-16,-1.18276e-18, 2.24178e-21
00559 };
00560 Double_t X = Length;
00561 if (X > 130) X = 130;
00562 Double_t FPARAM = 0;
00563 for (int i = Nm-1; i >= 0; i--) FPARAM = coeff[i] + X*FPARAM;
00564 sirrf *= TMath::Exp(FPARAM);
00565 return sirrf;
00566 }
00567
00568 Double_t BetheBloch::Girrf(Double_t poverm, Double_t Tmin, Int_t k) {
00569
00570
00571
00572
00573 const Int_t NPart = 2;
00574 const Int_t NTmin = 7;
00575 const Int_t Nbg = 51;
00576 Double_t si[NPart][NTmin][Nbg] = {
00577 {
00578 {
00579 0.101943, 0.131933, 0.164116, 0.193259, 0.216897,
00580 0.235737, 0.250576, 0.261979, 0.270347, 0.276080,
00581 0.281042, 0.286340, 0.290173, 0.295568, 0.300482,
00582 0.306566, 0.312465, 0.318372, 0.324223, 0.329744,
00583 0.335023, 0.340058, 0.344848, 0.349393, 0.353700,
00584 0.357779, 0.361643, 0.365304, 0.368776, 0.372072,
00585 0.374913, 0.376389, 0.376593, 0.375846, 0.374266,
00586 0.371957, 0.369016, 0.365532, 0.361584, 0.357247,
00587 0.352590, 0.347674, 0.342559, 0.337297, 0.331938,
00588 0.326529, 0.321112, 0.315727, 0.310410, 0.305197,
00589 0.300120 },
00590 {
00591 0.347994, 0.357454, 0.371919, 0.385717, 0.395994,
00592 0.403121, 0.407599, 0.409719, 0.409620, 0.407459,
00593 0.405736, 0.405501, 0.403439, 0.404088, 0.404118,
00594 0.406217, 0.408238, 0.410514, 0.413032, 0.415505,
00595 0.417925, 0.420282, 0.422560, 0.424747, 0.426835,
00596 0.428824, 0.430713, 0.432507, 0.434210, 0.435828,
00597 0.437075, 0.437035, 0.435794, 0.433671, 0.430777,
00598 0.427212, 0.423070, 0.418436, 0.413386, 0.407992,
00599 0.402319, 0.396428, 0.390375, 0.384211, 0.377984,
00600 0.371738, 0.365513, 0.359349, 0.353280, 0.347341,
00601 0.341561 },
00602 {
00603 0.593960, 0.582899, 0.579653, 0.578112, 0.575033,
00604 0.570452, 0.564575, 0.557418, 0.548858, 0.538810,
00605 0.530407, 0.524646, 0.516695, 0.512600, 0.507748,
00606 0.505866, 0.504008, 0.502654, 0.501840, 0.501266,
00607 0.500827, 0.500505, 0.500272, 0.500101, 0.499971,
00608 0.499868, 0.499783, 0.499710, 0.499644, 0.499584,
00609 0.499237, 0.497681, 0.494996, 0.491496, 0.487287,
00610 0.482467, 0.477124, 0.471339, 0.465187, 0.458736,
00611 0.452049, 0.445183, 0.438192, 0.431126, 0.424030,
00612 0.416946, 0.409914, 0.402971, 0.396151, 0.389484,
00613 0.383002 },
00614 {
00615 0.833507, 0.807579, 0.786688, 0.769868, 0.753491,
00616 0.737259, 0.721083, 0.704710, 0.687752, 0.669883,
00617 0.654863, 0.643630, 0.629838, 0.621036, 0.611330,
00618 0.605482, 0.599758, 0.594782, 0.590641, 0.587023,
00619 0.583726, 0.580727, 0.577983, 0.575454, 0.573106,
00620 0.570912, 0.568853, 0.566912, 0.565078, 0.563340,
00621 0.561399, 0.558327, 0.554198, 0.549321, 0.543798,
00622 0.537722, 0.531178, 0.524243, 0.516989, 0.509480,
00623 0.501778, 0.493937, 0.486009, 0.478040, 0.470076,
00624 0.462155, 0.454316, 0.446594, 0.439021, 0.431628,
00625 0.424443 },
00626 {
00627 0.839440, 0.852428, 0.868749, 0.883187, 0.893099,
00628 0.894966, 0.872911, 0.847920, 0.823201, 0.798172,
00629 0.777163, 0.761008, 0.741863, 0.728709, 0.714420,
00630 0.704779, 0.695307, 0.686786, 0.679366, 0.672732,
00631 0.666596, 0.660931, 0.655683, 0.650801, 0.646237,
00632 0.641954, 0.637921, 0.634114, 0.630511, 0.627096,
00633 0.623560, 0.618972, 0.613400, 0.607146, 0.600309,
00634 0.592977, 0.585231, 0.577147, 0.568790, 0.560225,
00635 0.551508, 0.542692, 0.533826, 0.524955, 0.516121,
00636 0.507363, 0.498717, 0.490216, 0.481891, 0.473772,
00637 0.465884 },
00638 {
00639 0.839440, 0.852428, 0.868749, 0.883187, 0.893099,
00640 0.898899, 0.900993, 0.899481, 0.894283, 0.885457,
00641 0.877116, 0.862326, 0.842699, 0.828748, 0.812605,
00642 0.800885, 0.788845, 0.777552, 0.767334, 0.757968,
00643 0.749173, 0.740953, 0.733272, 0.726078, 0.719325,
00644 0.712969, 0.706973, 0.701306, 0.695938, 0.690847,
00645 0.685720, 0.679616, 0.672600, 0.664970, 0.656819,
00646 0.648232, 0.639285, 0.630050, 0.620592, 0.610969,
00647 0.601237, 0.591446, 0.581643, 0.571870, 0.562167,
00648 0.552572, 0.543118, 0.533838, 0.524761, 0.515915,
00649 0.507326 },
00650 {
00651 0.839440, 0.852428, 0.868749, 0.883187, 0.893099,
00652 0.898899, 0.900993, 0.899481, 0.894283, 0.885457,
00653 0.878268, 0.874738, 0.867393, 0.866105, 0.863513,
00654 0.865548, 0.867478, 0.870049, 0.873256, 0.876516,
00655 0.879759, 0.882956, 0.886067, 0.889055, 0.891893,
00656 0.894564, 0.897060, 0.899372, 0.901496, 0.903427,
00657 0.904867, 0.904887, 0.903560, 0.901187, 0.897863,
00658 0.893675, 0.888699, 0.883011, 0.876680, 0.869776,
00659 0.862371, 0.854537, 0.846347, 0.837877, 0.829201,
00660 0.820390, 0.811514, 0.802638, 0.793821, 0.785117,
00661 0.776576 }},
00662 {
00663 {
00664 0.061287, 0.087795, 0.126397, 0.181703, 0.202595,
00665 0.220138, 0.234761, 0.246683, 0.256100, 0.263201,
00666 0.268300, 0.272757, 0.278553, 0.283217, 0.289664,
00667 0.295870, 0.302224, 0.308683, 0.314918, 0.320935,
00668 0.326709, 0.332211, 0.337422, 0.342334, 0.346949,
00669 0.351274, 0.355322, 0.359110, 0.362619, 0.365927,
00670 0.369046, 0.371274, 0.372309, 0.372300, 0.371368,
00671 0.369625, 0.367170, 0.364099, 0.360497, 0.356446,
00672 0.352020, 0.347288, 0.342316, 0.337162, 0.331881,
00673 0.326526, 0.321143, 0.315777, 0.310469, 0.305257,
00674 0.300178 },
00675 {
00676 0.125786, 0.180191, 0.259418, 0.372493, 0.379818,
00677 0.385913, 0.390665, 0.393878, 0.395446, 0.395244,
00678 0.393315, 0.391397, 0.392162, 0.391340, 0.393547,
00679 0.395422, 0.397651, 0.400503, 0.403317, 0.406129,
00680 0.408914, 0.411632, 0.414253, 0.416758, 0.419139,
00681 0.421530, 0.423843, 0.426048, 0.428093, 0.430022,
00682 0.431810, 0.432729, 0.432457, 0.431133, 0.428882,
00683 0.425818, 0.422050, 0.417685, 0.412824, 0.407566,
00684 0.401998, 0.396197, 0.390223, 0.384127, 0.377956,
00685 0.371751, 0.365554, 0.359406, 0.353343, 0.347404,
00686 0.341621 },
00687 {
00688 0.188065, 0.269407, 0.387860, 0.556745, 0.553215,
00689 0.549427, 0.545222, 0.540270, 0.534318, 0.527012,
00690 0.518178, 0.509957, 0.505733, 0.499451, 0.497444,
00691 0.495072, 0.493300, 0.492673, 0.492196, 0.491928,
00692 0.491837, 0.491870, 0.491977, 0.492123, 0.492286,
00693 0.492451, 0.492611, 0.492762, 0.492848, 0.492941,
00694 0.493006, 0.492318, 0.490554, 0.487856, 0.484391,
00695 0.480299, 0.475593, 0.470347, 0.464633, 0.458521,
00696 0.452078, 0.445373, 0.438474, 0.431444, 0.424347,
00697 0.417240, 0.410176, 0.403202, 0.396356, 0.389668,
00698 0.383168 },
00699 {
00700 0.225341, 0.322804, 0.464735, 0.667397, 0.688362,
00701 0.693097, 0.686526, 0.678489, 0.668279, 0.655910,
00702 0.641449, 0.627702, 0.618939, 0.607496, 0.601436,
00703 0.594923, 0.589212, 0.585138, 0.581386, 0.578045,
00704 0.575080, 0.572423, 0.570010, 0.567790, 0.565726,
00705 0.563791, 0.561968, 0.560244, 0.558563, 0.556967,
00706 0.555428, 0.553212, 0.549991, 0.545900, 0.541051,
00707 0.535547, 0.529485, 0.522951, 0.516028, 0.508790,
00708 0.501306, 0.493641, 0.485852, 0.477989, 0.470100,
00709 0.462227, 0.454414, 0.446703, 0.439133, 0.431741,
00710 0.424562 },
00711 {
00712 0.225341, 0.322804, 0.464735, 0.667399, 0.688502,
00713 0.707020, 0.722967, 0.736155, 0.746477, 0.753312,
00714 0.754001, 0.738000, 0.728293, 0.714387, 0.705829,
00715 0.696189, 0.687171, 0.679993, 0.673170, 0.666869,
00716 0.661084, 0.655754, 0.650813, 0.646201, 0.641872,
00717 0.637792, 0.633933, 0.630274, 0.626755, 0.623409,
00718 0.620202, 0.616395, 0.611656, 0.606113, 0.599875,
00719 0.593041, 0.585702, 0.577942, 0.569838, 0.561459,
00720 0.552871, 0.544134, 0.535304, 0.526432, 0.517565,
00721 0.508750, 0.500027, 0.491434, 0.483015, 0.474795,
00722 0.466821 },
00723 {
00724 0.225341, 0.322804, 0.464735, 0.667399, 0.688502,
00725 0.707020, 0.722967, 0.736155, 0.746477, 0.753660,
00726 0.757573, 0.761068, 0.768750, 0.772628, 0.781271,
00727 0.788131, 0.793997, 0.796536, 0.785481, 0.776785,
00728 0.769068, 0.761861, 0.754986, 0.748371, 0.741985,
00729 0.735813, 0.729846, 0.724079, 0.718458, 0.713030,
00730 0.707767, 0.701933, 0.695202, 0.687704, 0.679552,
00731 0.670848, 0.661690, 0.652161, 0.642342, 0.632307,
00732 0.622124, 0.611854, 0.601555, 0.591279, 0.581077,
00733 0.570992, 0.561067, 0.551338, 0.541840, 0.532602,
00734 0.523648 },
00735 {
00736 0.225341, 0.322804, 0.464735, 0.667399, 0.688502,
00737 0.707020, 0.722967, 0.736155, 0.746477, 0.753660,
00738 0.757573, 0.761068, 0.768750, 0.772628, 0.781271,
00739 0.788131, 0.793997, 0.799402, 0.803492, 0.806548,
00740 0.808743, 0.810210, 0.811067, 0.811423, 0.811374,
00741 0.811006, 0.810387, 0.809573, 0.808541, 0.807405,
00742 0.806174, 0.804141, 0.801002, 0.796909, 0.791990,
00743 0.786363, 0.780137, 0.773409, 0.766268, 0.758796,
00744 0.751070, 0.743158, 0.735125, 0.727027, 0.718920,
00745 0.710854, 0.702875, 0.695023, 0.687337, 0.679848,
00746 0.672586 }}
00747 };
00748
00749 Double_t beta2inv = 1. + 1./(poverm*poverm);
00750 Double_t bgL = TMath::Log10 (poverm);
00751 Double_t X = 10*(bgL+1);
00752 if (X < 0) X = 0;
00753 if (X > Nbg) X = Nbg;
00754 Int_t iX = (int) X;
00755 if (iX < 0) iX = 0;
00756 if (iX > Nbg - 2) iX = Nbg - 2;
00757 Double_t dX = X - iX;
00758 Int_t l = 0;
00759 if (k != 0) l = 1;
00760 Double_t Y = 8;
00761 if (Tmin > 0) Y = 8 + TMath::Log10(Tmin);
00762 if (Y < 0) Y = 0;
00763 if (Y > 6) Y = 6;
00764 Int_t iY = (int) Y;
00765 if (iY < 0) iY = 0;
00766 if (iY > NTmin-2) iY = NTmin-2;
00767 Double_t dY = Y - iY;
00768 Double_t Dx = 1 - dX;
00769 Double_t Dy = 1 - dY;
00770 Double_t sirrf =
00771 Dx*Dy*si[l][iY][iX] + dX*Dy*si[l][iY][iX+1] +
00772 Dx*dY*si[l][iY+1][iX] + dX*dY*si[l][iY+1][iX+1];
00773 sirrf *= beta2inv*(bgL + 2.);
00774 #if 0
00775 printf("poverm : %f l : %i iY : %i iX : %i dX = %f dY = %f sirrf = %f Tmin: %f\n",
00776 poverm,l,iY,iX,dX,dY,sirrf, Tmin);
00777 printf("Dx:%f Dy:%f si[l][iY][iX]:%f\n",Dx,Dy,si[l][iY][iX]);
00778 #endif
00779 return sirrf;
00780 }
00781