10 #include <FairLogger.h>
13 #include <TGeoManager.h>
16 #include <TMathBase.h>
25 using std::setprecision;
37 :
CbmTrdRadiator(SimpleTR, Nfoils, FoilThick, GapThick,
"polyethylen",
"") {}
53 , fFoilThick(FoilThick)
55 , fFoilMaterial(material)
70 , fSpBinWidth((Float_t) fSpRange / (Float_t) fSpNBins)
75 , fWinSpectrum(nullptr)
76 , fDetSpectrumA(nullptr)
77 , fDetSpectrum(nullptr)
78 , fTrackMomentum(nullptr)
83 , fMom(-1., -1., -1.) {
94 : fWindowFoil(
"Kapton")
118 , fSpBinWidth((Float_t) fSpRange / (Float_t) fSpNBins)
123 , fWinSpectrum(nullptr)
124 , fDetSpectrumA(nullptr)
125 , fDetSpectrum(nullptr)
126 , fTrackMomentum(nullptr)
131 , fMom(-1., -1., -1.) {
147 LOG(info) <<
" -I DELETING fSpectrum ";
167 Float_t SpUpper = SpLower + (Float_t)
fSpRange;
176 "fWinSpectrum",
"TR spectrum in Mylar",
fSpNBins, SpLower, SpUpper);
180 "TR spectrum escaped from detector",
187 "TR spectrum absorbed in detector",
193 sprintf(name,
"fFinal%d",
i + 1);
205 TString material =
"polyethylen") {
207 LOG(info) <<
"================CbmTrdRadiator===============";
219 LOG(info) <<
"CbmTrdRadiator::Init : Foil material : " << material;
220 LOG(info) <<
"CbmTrdRadiator::Init : Nr. of foils : " << Nfoils;
221 LOG(info) <<
"CbmTrdRadiator::Init : Foil thickness : "
222 << setprecision(4) << FoilThick <<
" cm";
223 LOG(info) <<
"CbmTrdRadiator::Init : Gap thickness : " << GapThick
225 LOG(info) <<
"CbmTrdRadiator::Init : Simple TR production: "
226 << setprecision(2) << SimpleTR;
230 if (material ==
"" || material ==
"polyethylen") {
233 }
else if (material ==
"pefoam20") {
237 }
else if (material ==
"pefiber") {
241 }
else if (material ==
"mylar") {
245 }
else if (material ==
"pokalon") {
251 material =
"polyethylen";
282 LOG(info) <<
"CbmTrdRadiator::Init : Detector noble gas : "
284 LOG(info) <<
"CbmTrdRadiator::Init : Detector cruncher gas: "
286 LOG(info) <<
"CbmTrdRadiator::Init : Detector type : "
288 LOG(info) <<
"CbmTrdRadiator::Init : Detector gas thick. : "
301 TFile* oldfile = gFile;
302 TFile* f1 =
new TFile(
"TRhistos.root",
"recreate");
322 LOG(info) <<
"================CbmTrdRadiator===============";
334 LOG(info) <<
"CbmTrdRadiator::Init : Nr. of foils : " << Nfoils;
335 LOG(info) <<
"CbmTrdRadiator::Init : Foil thickness : "
336 << setprecision(4) << FoilThick <<
" cm";
337 LOG(info) <<
"CbmTrdRadiator::Init : Gap thickness : " << GapThick
339 LOG(info) <<
"CbmTrdRadiator::Init : Simple TR production: "
340 << setprecision(2) << SimpleTR;
389 TFile* oldfile = gFile;
390 TFile* f1 =
new TFile(
"TRhistos.root",
"recreate");
406 LOG(info) <<
"================CbmTrdRadiator===============";
439 material =
"polyethylen";
445 material =
"polyethylen";
451 material =
"pokalon";
457 material =
"pokalon";
463 material =
"pokalon";
469 material =
"polyethylen";
475 material =
"polyethylen";
481 material =
"polyethylen";
487 material =
"polyethylen";
493 material =
"pefiber";
499 material =
"pefoam20";
505 material =
"pefoam20";
511 LOG(warn) <<
"CbmTrdRadiator::Init : *********** Radiator prototype not "
513 LOG(warn) <<
"CbmTrdRadiator::Init : switch to default "
515 material =
"polyethylen";
522 if (material ==
"" || material ==
"polyethylen") {
525 }
else if (material ==
"pefoam20") {
529 }
else if (material ==
"pefiber") {
533 }
else if (material ==
"mylar") {
537 }
else if (material ==
"pokalon") {
553 LOG(info) <<
"CbmTrdRadiator::Init : Prototype : " <<
fRadType;
554 LOG(info) <<
"CbmTrdRadiator::Init : Scaling factor : "
556 LOG(info) <<
"CbmTrdRadiator::Init : Foil material : "
558 LOG(info) <<
"CbmTrdRadiator::Init : Nr. of foils : " <<
fNFoils;
559 LOG(info) <<
"CbmTrdRadiator::Init : Foil thickness : "
561 LOG(info) <<
"CbmTrdRadiator::Init : Gap thickness : " <<
fGapThick
563 LOG(info) <<
"CbmTrdRadiator::Init : Simple TR production: "
565 LOG(info) <<
"CbmTrdRadiator::Init : Foil plasm. frequ. : " <<
fFoilOmega
567 LOG(info) <<
"CbmTrdRadiator::Init : Gap plasm. frequ. : " <<
fGapOmega
569 LOG(info) <<
"CbmTrdRadiator::Init : Window density : " <<
fWinDens
571 LOG(info) <<
"CbmTrdRadiator::Init : Window thickness : " <<
fWinThick
588 LOG(info) <<
"CbmTrdRadiator::Init : Detector noble gas : "
590 LOG(info) <<
"CbmTrdRadiator::Init : Detector cruncher gas: "
592 LOG(info) <<
"CbmTrdRadiator::Init : Detector type : "
594 LOG(info) <<
"CbmTrdRadiator::Init : Detector gas thick. : "
606 TFile* f1 =
new TFile(
"TRhistos.root",
"recreate");
620 Double_t point_in[3];
621 Double_t point_out[3];
622 if (
nullptr != point) {
623 point_in[0] = point->
GetXIn();
624 point_in[1] = point->
GetYIn();
625 point_in[2] = point->
GetZIn();
627 point_out[0] = point->
GetXOut();
628 point_out[1] = point->
GetYOut();
629 point_out[2] = point->
GetZOut();
630 Double_t back_direction[3] = {(point_in[0] - point_out[0]),
631 (point_in[1] - point_out[1]),
632 (point_in[2] - point_out[2])};
633 if (back_direction[2] > 0) {
635 <<
"CbmTrdRadiator::LatticeHit: MC-track points towards target!";
640 Double_t trackLength = TMath::Sqrt(back_direction[0] * back_direction[0]
641 + back_direction[1] * back_direction[1]
642 + back_direction[2] * back_direction[2]);
646 gGeoManager->FindNode((point_out[0] + point_in[0]) / 2,
647 (point_out[1] + point_in[1]) / 2,
648 (point_out[2] + point_in[2]) / 2);
651 point_in[0], point_in[1], point_in[2]};
653 for (Int_t
i = 0;
i < 3;
i++) {
654 back_direction[
i] /= trackLength;
657 if (TString(gGeoManager->GetPath()).Contains(
"gas")) {
661 pos[2] >= point_in[2] - 5
665 for (Int_t
i = 0;
i < 3;
i++) {
666 pos[
i] += back_direction[
i];
670 gGeoManager->FindNode(
pos[0],
pos[1],
pos[2]);
671 if (TString(gGeoManager->GetPath()).Contains(
"radiator")) {
674 }
else if (TString(gGeoManager->GetPath()).Contains(
"lattice")) {
677 }
else if (TString(gGeoManager->GetPath()).Contains(
"frame")) {
685 LOG(error) <<
"CbmTrdRadiator::LatticeHit: MC-track not in TRD! Node:"
686 << TString(gGeoManager->GetPath()).Data()
687 <<
" gGeoManager->MasterToLocal() failed!";
691 LOG(error) <<
"CbmTrdRadiator::LatticeHit: CbmTrdPoint == nullptr!";
702 Double_t trackMomentum[
fNMom] = {
703 0.1, 0.25, 0.5, 1.0, 1.5, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0};
705 for (Int_t imom = 0; imom <
fNMom; imom++) {
720 for (Int_t j = 0; j <
fSpNBins; j++) {
722 fFinal[
i]->SetBinContent(j + 1, tmp);
740 Float_t
m = Mom.Mag();
776 Float_t fNormPhi =
fMom.Mag() /
fMom.Pz();
797 Float_t energiefirst =
fELoss;
798 Float_t fTRAbsfirst =
fnTRab;
821 Int_t maxPhoton = 50;
822 Double32_t eLoss = 0;
827 LOG(error) <<
" -Err :: No input spectra ";
832 if (nPhoton > maxPhoton) nPhoton = maxPhoton;
833 for (Int_t
i = 0;
i < nPhoton;
i++) {
840 LOG(error) <<
" -Err :: No input spectra ";
845 if (nPhoton > maxPhoton) nPhoton = maxPhoton;
846 for (Int_t
i = 0;
i < nPhoton;
i++) {
848 eTR =
fFinal[index]->GetRandom();
854 fELoss = eLoss / 1000000.0;
871 const Float_t kAlpha = 0.0072973;
872 const Int_t kSumMax = 30;
889 for (Int_t iBin = 0; iBin <
fSpNBins; iBin++) {
892 Float_t energyeV = (
fSpBinWidth * iBin + 1.0) * 1e3;
898 * (1.0 / (gamma * gamma) + csFoil * csFoil);
900 * (1.0 / (gamma * gamma) + csGap * csGap);
904 for (Int_t iSum = 0; iSum < kSumMax; iSum++) {
905 Float_t tetan = (
TMath::Pi() * 2.0 * (iSum + 1) - (rho1 + kappa * rho2))
907 if (tetan < 0.0) { tetan = 0.0; }
908 Float_t aux = 1.0 / (rho1 + tetan) - 1.0 / (rho2 + tetan);
909 sum += tetan * (aux * aux) * (1.0 - TMath::Cos(rho1 + tetan));
914 Float_t energykeV = energyeV * 0.001;
918 kAlpha * 4.0 / (
fSigma[iBin] * (kappa + 1.0)) * conv * sum / energykeV;
954 for (Int_t iBin = 0; iBin <
fSpNBins; iBin++) {
963 Float_t conv = TMath::Exp(-
fSigmaWin[iBin]);
964 Float_t wn = sp * conv;
989 for (Int_t iBin = 0; iBin <
fSpNBins; iBin++) {
994 Float_t conv = TMath::Exp(-
fSigmaDet[iBin]);
995 Float_t wn = sp * conv;
1001 Float_t conv2 = 1 - TMath::Exp(-
fSigmaDet[iBin]);
1002 Float_t wn2 = sp * conv2;
1025 Float_t massE = 5.1099907e-4;
1027 Float_t p2 =
fMom.Mag2();
1028 Float_t result = TMath::Sqrt(p2 + massE * massE) / massE;
1044 for (Int_t iBin = 0; iBin <
fSpNBins; iBin++) {
1053 for (Int_t iBin = 0; iBin <
fSpNBins; iBin++) {
1062 for (Int_t iBin = 0; iBin <
fSpNBins; iBin++) {
1077 Float_t energyMeV = energykeV * 0.001;
1091 LOG(error) <<
"ERROR:: unknown radiator material";
1094 if (energyMeV >= 0.001) {
1110 Float_t energyMeV = energykeV * 0.001;
1120 if (energyMeV >= 0.001) {
1136 Float_t energyMeV = energykeV * 0.001;
1138 if (energyMeV >= 0.001) {
1157 const Int_t kN = 46;
1159 1.000E-03, 1.500E-03, 2.000E-03, 3.000E-03, 4.000E-03, 5.000E-03, 6.000E-03,
1160 8.000E-03, 1.000E-02, 1.500E-02, 2.000E-02, 3.000E-02, 4.000E-02, 5.000E-02,
1161 6.000E-02, 8.000E-02, 1.000E-01, 1.500E-01, 2.000E-01, 3.000E-01, 4.000E-01,
1162 5.000E-01, 6.000E-01, 8.000E-01, 1.000E+00, 1.022E+00, 1.250E+00, 1.500E+00,
1163 2.000E+00, 2.044E+00, 3.000E+00, 4.000E+00, 5.000E+00, 6.000E+00, 7.000E+00,
1164 8.000E+00, 9.000E+00, 1.000E+01, 1.100E+01, 1.200E+01, 1.300E+01, 1.400E+01,
1165 1.500E+01, 1.600E+01, 1.800E+01, 2.000E+01};
1167 2.537E+03, 8.218E+02, 3.599E+02, 1.093E+02, 4.616E+01, 2.351E+01, 1.352E+01,
1168 5.675E+00, 2.938E+00, 9.776E-01, 5.179E-01, 2.847E-01, 2.249E-01, 2.003E-01,
1169 1.866E-01, 1.705E-01, 1.600E-01, 1.422E-01, 1.297E-01, 1.125E-01, 1.007E-01,
1170 9.193E-02, 8.501E-02, 7.465E-02, 6.711E-02, 6.642E-02, 6.002E-02, 5.463E-02,
1171 4.686E-02, 4.631E-02, 3.755E-02, 3.210E-02, 2.851E-02, 2.597E-02, 2.409E-02,
1172 2.263E-02, 2.149E-02, 2.056E-02, 1.979E-02, 1.916E-02, 1.862E-02, 1.816E-02,
1173 1.777E-02, 1.743E-02, 1.687E-02, 1.644E-02};
1182 const Int_t kN = 46;
1184 1.000E-03, 1.500E-03, 2.000E-03, 3.000E-03, 4.000E-03, 5.000E-03, 6.000E-03,
1185 8.000E-03, 1.000E-02, 1.500E-02, 2.000E-02, 3.000E-02, 4.000E-02, 5.000E-02,
1186 6.000E-02, 8.000E-02, 1.000E-01, 1.500E-01, 2.000E-01, 3.000E-01, 4.000E-01,
1187 5.000E-01, 6.000E-01, 8.000E-01, 1.000E+00, 1.022E+00, 1.250E+00, 1.500E+00,
1188 2.000E+00, 2.044E+00, 3.000E+00, 4.000E+00, 5.000E+00, 6.000E+00, 7.000E+00,
1189 8.000E+00, 9.000E+00, 1.000E+01, 1.100E+01, 1.200E+01, 1.300E+01, 1.400E+01,
1190 1.500E+01, 1.600E+01, 1.800E+01, 2.000E+01};
1192 2.731E+03, 8.875E+02, 3.895E+02, 1.185E+02, 5.013E+01, 2.555E+01, 1.470E+01,
1193 6.160E+00, 3.180E+00, 1.043E+00, 5.415E-01, 2.880E-01, 2.235E-01, 1.973E-01,
1194 1.830E-01, 1.666E-01, 1.560E-01, 1.385E-01, 1.263E-01, 1.095E-01, 9.799E-02,
1195 8.944E-02, 8.270E-02, 7.262E-02, 6.529E-02, 6.462E-02, 5.839E-02, 5.315E-02,
1196 4.561E-02, 4.507E-02, 3.659E-02, 3.133E-02, 2.787E-02, 2.543E-02, 2.362E-02,
1197 2.223E-02, 2.114E-02, 2.025E-02, 1.953E-02, 1.893E-02, 1.842E-02, 1.799E-02,
1198 1.762E-02, 1.730E-02, 1.678E-02, 1.638E-02};
1209 const Int_t kN = 48;
1212 1.000E-03, 1.500E-03, 1.560E-03, 1.560E-03, 2.000E-03, 3.000E-03, 4.000E-03,
1213 5.000E-03, 6.000E-03, 8.000E-03, 1.000E-02, 1.500E-02, 2.000E-02, 3.000E-02,
1214 4.000E-02, 5.000E-02, 6.000E-02, 8.000E-02, 1.000E-01, 1.500E-01, 2.000E-01,
1215 3.000E-01, 4.000E-01, 5.000E-01, 6.000E-01, 8.000E-01, 1.000E+00, 1.022E+00,
1216 1.250E+00, 1.500E+00, 2.000E+00, 2.044E+00, 3.000E+00, 4.000E+00, 5.000E+00,
1217 6.000E+00, 7.000E+00, 8.000E+00, 9.000E+00, 1.000E+01, 1.100E+01, 1.200E+01,
1218 1.300E+01, 1.400E+01, 1.500E+01, 1.600E+01, 1.800E+01, 2.000E+01};
1221 1.185E+03, 4.023E+02, 3.621E+02, 3.957E+03, 2.263E+03, 7.881E+02, 3.605E+02,
1222 1.934E+02, 1.153E+02, 5.032E+01, 2.621E+01, 7.955E+00, 3.442E+00, 1.128E+00,
1223 5.684E-01, 3.681E-01, 2.778E-01, 2.018E-01, 1.704E-01, 1.378E-01, 1.223E-01,
1224 1.042E-01, 9.276E-02, 8.445E-02, 7.802E-02, 6.841E-02, 6.146E-02, 6.080E-02,
1225 5.496E-02, 5.006E-02, 4.324E-02, 4.277E-02, 3.541E-02, 3.106E-02, 2.836E-02,
1226 2.655E-02, 2.529E-02, 2.437E-02, 2.369E-02, 2.318E-02, 2.279E-02, 2.249E-02,
1227 2.226E-02, 2.208E-02, 2.195E-02, 2.185E-02, 2.173E-02, 2.168E-02};
1240 const Int_t kN = 36;
1243 1.894E+03, 5.999E+02, 2.593E+02, 7.743E+01, 3.242E+01, 1.643E+01,
1244 9.432E+00, 3.975E+00, 2.088E+00, 7.452E-01, 4.315E-01, 2.706E-01,
1245 2.275E-01, 2.084E-01, 1.970E-01, 1.823E-01, 1.719E-01, 1.534E-01,
1246 1.402E-01, 1.217E-01, 1.089E-01, 9.947E-02, 9.198E-02, 8.078E-02,
1247 7.262E-02, 6.495E-02, 5.910E-02, 5.064E-02, 4.045E-02, 3.444E-02,
1248 3.045E-02, 2.760E-02, 2.383E-02, 2.145E-02, 1.819E-02, 1.658E-02};
1251 1.000E-03, 1.500E-03, 2.000E-03, 3.000E-03, 4.000E-03, 5.000E-03,
1252 6.000E-03, 8.000E-03, 1.000E-02, 1.500E-02, 2.000E-02, 3.000E-02,
1253 4.000E-02, 5.000E-02, 6.000E-02, 8.000E-02, 1.000E-01, 1.500E-01,
1254 2.000E-01, 3.000E-01, 4.000E-01, 5.000E-01, 6.000E-01, 8.000E-01,
1255 1.000E+00, 1.250E+00, 1.500E+00, 2.000E+00, 3.000E+00, 4.000E+00,
1256 5.000E+00, 6.000E+00, 8.000E+00, 1.000E+01, 1.500E+01, 2.000E+01};
1268 const Int_t kN = 38;
1272 0.35854E+04, 0.11841E+04, 0.52458E+03, 0.16143E+03, 0.15722E+03,
1273 0.14250E+03, 0.77538E+02, 0.40099E+02, 0.23313E+02, 0.98816E+01,
1274 0.51000E+01, 0.16079E+01, 0.77536E+00, 0.35282E+00, 0.24790E+00,
1275 0.20750E+00, 0.18703E+00, 0.16589E+00, 0.15375E+00, 0.13530E+00,
1276 0.12311E+00, 0.10654E+00, 0.95297E-01, 0.86939E-01, 0.80390E-01,
1277 0.70596E-01, 0.63452E-01, 0.56754E-01, 0.51644E-01, 0.44382E-01,
1278 0.35733E-01, 0.30721E-01, 0.27450E-01, 0.25171E-01, 0.22205E-01,
1279 0.20399E-01, 0.18053E-01, 0.18057E-01};
1282 0.10000E-02, 0.15000E-02, 0.20000E-02, 0.30000E-02, 0.32029E-02,
1283 0.32029E-02, 0.40000E-02, 0.50000E-02, 0.60000E-02, 0.80000E-02,
1284 0.10000E-01, 0.15000E-01, 0.20000E-01, 0.30000E-01, 0.40000E-01,
1285 0.50000E-01, 0.60000E-01, 0.80000E-01, 0.10000E+00, 0.15000E+00,
1286 0.20000E+00, 0.30000E+00, 0.40000E+00, 0.50000E+00, 0.60000E+00,
1287 0.80000E+00, 0.10000E+01, 0.12500E+01, 0.15000E+01, 0.20000E+01,
1288 0.30000E+01, 0.40000E+01, 0.50000E+01, 0.60000E+01, 0.80000E+01,
1289 0.10000E+02, 0.15000E+02, 0.20000E+02};
1301 const Int_t kN = 48;
1304 9.413E+03, 8.151E+03, 7.035E+03, 7.338E+03, 4.085E+03, 2.088E+03, 7.780E+02,
1305 3.787E+02, 2.408E+02, 6.941E+02, 6.392E+02, 6.044E+02, 8.181E+02, 7.579E+02,
1306 6.991E+02, 8.064E+02, 6.376E+02, 3.032E+02, 1.690E+02, 5.743E+01, 2.652E+01,
1307 8.930E+00, 6.129E+00, 3.316E+01, 2.270E+01, 1.272E+01, 7.825E+00, 3.633E+00,
1308 2.011E+00, 7.202E-01, 3.760E-01, 1.797E-01, 1.223E-01, 9.699E-02, 8.281E-02,
1309 6.696E-02, 5.785E-02, 5.054E-02, 4.594E-02, 4.078E-02, 3.681E-02, 3.577E-02,
1310 3.583E-02, 3.634E-02, 3.797E-02, 3.987E-02, 4.445E-02, 4.815E-02};
1313 1.00000E-03, 1.07191E-03, 1.14900E-03, 1.14900E-03, 1.50000E-03,
1314 2.00000E-03, 3.00000E-03, 4.00000E-03, 4.78220E-03, 4.78220E-03,
1315 5.00000E-03, 5.10370E-03, 5.10370E-03, 5.27536E-03, 5.45280E-03,
1316 5.45280E-03, 6.00000E-03, 8.00000E-03, 1.00000E-02, 1.50000E-02,
1317 2.00000E-02, 3.00000E-02, 3.45614E-02, 3.45614E-02, 4.00000E-02,
1318 5.00000E-02, 6.00000E-02, 8.00000E-02, 1.00000E-01, 1.50000E-01,
1319 2.00000E-01, 3.00000E-01, 4.00000E-01, 5.00000E-01, 6.00000E-01,
1320 8.00000E-01, 1.00000E+00, 1.25000E+00, 1.50000E+00, 2.00000E+00,
1321 3.00000E+00, 4.00000E+00, 5.00000E+00, 6.00000E+00, 8.00000E+00,
1322 1.00000E+01, 1.50000E+01, 2.00000E+01};
1334 const Int_t kN = 36;
1336 Float_t mu[kN] = {0.39383E+04, 0.13166E+04, 0.58750E+03, 0.18240E+03,
1337 0.77996E+02, 0.40024E+02, 0.23116E+02, 0.96997E+01,
1338 0.49726E+01, 0.15543E+01, 0.74915E+00, 0.34442E+00,
1339 0.24440E+00, 0.20589E+00, 0.18632E+00, 0.16578E+00,
1340 0.15394E+00, 0.13558E+00, 0.12336E+00, 0.10678E+00,
1341 0.95510E-01, 0.87165E-01, 0.80587E-01, 0.70769E-01,
1342 0.63626E-01, 0.56894E-01, 0.51782E-01, 0.44499E-01,
1343 0.35839E-01, 0.30825E-01, 0.27555E-01, 0.25269E-01,
1344 0.22311E-01, 0.20516E-01, 0.18184E-01, 0.17152E-01};
1346 Float_t en[kN] = {0.10000E-02, 0.15000E-02, 0.20000E-02, 0.30000E-02,
1347 0.40000E-02, 0.50000E-02, 0.60000E-02, 0.80000E-02,
1348 0.10000E-01, 0.15000E-01, 0.20000E-01, 0.30000E-01,
1349 0.40000E-01, 0.50000E-01, 0.60000E-01, 0.80000E-01,
1350 0.10000E+00, 0.15000E+00, 0.20000E+00, 0.30000E+00,
1351 0.40000E+00, 0.50000E+00, 0.60000E+00, 0.80000E+00,
1352 0.10000E+01, 0.12500E+01, 0.15000E+01, 0.20000E+01,
1353 0.30000E+01, 0.40000E+01, 0.50000E+01, 0.60000E+01,
1354 0.80000E+01, 0.10000E+02, 0.15000E+02, 0.20000E+02};
1366 const Int_t kN = 36;
1369 2.911E+03, 9.536E+02, 4.206E+02, 1.288E+02, 5.466E+01, 2.792E+01,
1370 1.608E+01, 6.750E+00, 3.481E+00, 1.132E+00, 5.798E-01, 3.009E-01,
1371 2.304E-01, 2.020E-01, 1.868E-01, 1.695E-01, 1.586E-01, 1.406E-01,
1372 1.282E-01, 1.111E-01, 9.947E-02, 9.079E-02, 8.395E-02, 7.372E-02,
1373 6.628E-02, 5.927E-02, 5.395E-02, 4.630E-02, 3.715E-02, 3.181E-02,
1374 2.829E-02, 2.582E-02, 2.257E-02, 2.057E-02, 1.789E-02, 1.664E-02};
1376 Float_t en[kN] = {1.00000E-03, 1.50000E-03, 2.00000E-03, 3.00000E-03,
1377 4.00000E-03, 5.00000E-03, 6.00000E-03, 8.00000E-03,
1378 1.00000E-02, 1.50000E-02, 2.00000E-02, 3.00000E-02,
1379 4.00000E-02, 5.00000E-02, 6.00000E-02, 8.00000E-02,
1380 1.00000E-01, 1.50000E-01, 2.00000E-01, 3.00000E-01,
1381 4.00000E-01, 5.00000E-01, 6.00000E-01, 8.00000E-01,
1382 1.00000E+00, 1.25000E+00, 1.50000E+00, 2.00000E+00,
1383 3.00000E+00, 4.00000E+00, 5.00000E+00, 6.00000E+00,
1384 8.00000E+00, 1.00000E+01, 1.50000E+01, 2.00000E+01};
1402 Int_t istat =
Locate(en, n, energyMeV, index, de);
1406 - de * (mu[index] - mu[index + 1]) / (en[index + 1] - en[index]));
1424 if (xval >= xv[n - 1])
return 1;
1425 if (xval < xv[0])
return -1;
1431 while (kh - kl > 1) {
1432 if (xval < xv[km = (kl + kh) / 2])
1437 if (xval < xv[kl] || xval > xv[kl + 1] || kl >= n - 1) {
1438 printf(
"Locate failed xv[%d] %f xval %f xv[%d] %f!!!\n",
1448 if (xval == 0.001) LOG(info) <<
"Locat = 0";