85 const char* xtitles[3] = {
"#theta [degree]",
"#eta",
"z [cm]"};
86 mHistRadl =
new TH2F(
"hradl",
"Radiation length map",
87 nc1, c1min, c1max, nphi, phimin, phimax);
88 mHistRadl->SetYTitle(
"#phi [degree]");
89 mHistRadl->SetXTitle(xtitles[mMode]);
90 mHistAbso =
new TH2F(
"habso",
"Interaction length map",
91 nc1, c1min, c1max, nphi, phimin, phimax);
92 mHistAbso->SetYTitle(
"#phi [degree]");
93 mHistAbso->SetXTitle(xtitles[mMode]);
94 mHistGcm2 =
new TH2F(
"hgcm2",
"g/cm2 length map",
95 nc1, c1min, c1max, nphi, phimin, phimax);
96 mHistGcm2->SetYTitle(
"#phi [degree]");
97 mHistGcm2->SetXTitle(xtitles[mMode]);
98 mRZR =
new TH2F(
"rzR",
"Radiation length @ (r,z)",
99 zmax, -zmax, zmax, (rmax - rmin), rmin, rmax);
100 mRZR->SetXTitle(
"#it{z} [cm]");
101 mRZR->SetYTitle(
"#it{r} [cm]");
102 mRZA =
static_cast<TH2F*
>(mRZR->Clone(
"rzA"));
103 mRZA->SetTitle(
"Interaction length @ (r,z)");
104 mRZG =
static_cast<TH2F*
>(mRZR->Clone(
"rzG"));
105 mRZG->SetTitle(
"g/cm^{2} @ (r,z)");
190 id = TVirtualMC::GetMC()->CurrentVolID(copy);
191 vol = TVirtualMC::GetMC()->VolName(
id);
192 Float_t step = TVirtualMC::GetMC()->TrackStep();
195 TVirtualMC::GetMC()->TrackPosition(
pos);
197 TVirtualMC::GetMC()->TrackMomentum(mom);
199 TVirtualMC::GetMC()->CurrentMaterial(
a,
z, dens, radl, absl);
202 mRZR->Fill(
pos[2],
r, step / radl);
203 mRZA->Fill(
pos[2],
r, step / absl);
204 mRZG->Fill(
pos[2],
r, step * dens);
209 if (TMath::Abs(
pos[2]) > TMath::Abs(mZmax) ||
r > mRmax) {
210 if (!TVirtualMC::GetMC()->IsNewTrack()) {
214 mTotAbso += mDistToBoundary / absl;
217 mTotRadl += mDistToBoundary / radl;
219 mTotGcm2 += mDistToBoundary * dens;
223 TVirtualMC::GetMC()->StopTrack();
228 for (
i = 0;
i < 3; ++
i) {
237 mTotAbso += step / absl;
240 mTotRadl += step / radl;
242 mTotGcm2 += step * dens;