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)");
187 static Float_t vect[3], dir[3];
191 id = TVirtualMC::GetMC()->CurrentVolID(copy);
192 vol = TVirtualMC::GetMC()->VolName(
id);
193 Float_t step = TVirtualMC::GetMC()->TrackStep();
196 TVirtualMC::GetMC()->TrackPosition(
pos);
198 TVirtualMC::GetMC()->TrackMomentum(mom);
200 TVirtualMC::GetMC()->CurrentMaterial(
a,
z, dens, radl, absl);
203 mRZR->Fill(
pos[2],
r, step / radl);
204 mRZA->Fill(
pos[2],
r, step / absl);
205 mRZG->Fill(
pos[2],
r, step * dens);
210 if (TMath::Abs(
pos[2]) > TMath::Abs(mZmax) ||
r > mRmax) {
211 if (!TVirtualMC::GetMC()->IsNewTrack()) {
215 mTotAbso += t / absl;
218 mTotRadl += t / radl;
220 mTotGcm2 += t * dens;
224 TVirtualMC::GetMC()->StopTrack();
229 for (
i = 0;
i < 3; ++
i) {
238 mTotAbso += step / absl;
241 mTotRadl += step / radl;
243 mTotGcm2 += step * dens;