48 :detector(det), primary(kin)
76 G4cout <<
"\n " << partName <<
" ("
78 << material->
GetName() <<
" (density: "
79 <<
G4BestUnit(density,
"Volumic Mass") <<
"; radiation length: "
85 G4cout <<
"\n Range cuts : \t gamma "
86 << std::setw(8) <<
G4BestUnit(rangeCut[0],
"Length")
87 <<
"\t e- " << std::setw(8) <<
G4BestUnit(rangeCut[1],
"Length");
88 G4cout <<
"\n Energy cuts : \t gamma "
89 << std::setw(8) <<
G4BestUnit(energyCut[0],
"Energy")
90 <<
"\t e- " << std::setw(8) <<
G4BestUnit(energyCut[1],
"Energy")
98 std::vector<G4String> emName;
99 std::vector<G4double> enerCut;
100 size_t length = plist->
size();
101 for (
size_t j=0; j<length; j++) {
102 procName = (*plist)[j]->GetProcessName();
104 if ((procName ==
"eBrem")||(procName ==
"muBrems")) cut = energyCut[0];
106 (procName !=
"msc")) {
107 emName.push_back(procName);
108 enerCut.push_back(cut);
113 G4cout <<
"\n processes : ";
114 for (
size_t j=0; j<emName.size();j++)
115 G4cout <<
"\t" << std::setw(13) << emName[j] <<
"\t";
116 G4cout <<
"\t" << std::setw(13) <<
"total";
127 std::vector<G4double> sigma0;
130 for (
size_t j=0; j<emName.size();j++) {
132 (energy,particle,emName[j],Z,A,enerCut[j]);
134 sigma0.push_back(sig);
136 sigma0.push_back(sigtot);
138 G4cout <<
"\n \n cross section per atom : ";
139 for (
size_t j=0; j<sigma0.size();j++) {
146 std::vector<G4double> sigma1;
147 std::vector<G4double> sigma2;
150 for (
size_t j=0; j<emName.size();j++) {
153 (energy,particle,emName[j],material,enerCut[j]);
155 sigma1.push_back(Sig);
156 sigma2.push_back(Sig/density);
158 sigma1.push_back(Sigtot);
159 sigma2.push_back(Sigtot/density);
162 G4cout <<
"\n \n cross section per volume : ";
163 for (
size_t j=0; j<sigma1.size();j++) {
164 G4cout <<
"\t" << std::setw(13) << sigma1[j]*
cm <<
" cm^-1";
167 G4cout <<
"\n cross section per mass : ";
168 for (
size_t j=0; j<sigma2.size();j++) {
176 G4cout <<
"\n \n mean free path : ";
177 for (
size_t j=0; j<sigma1.size();j++) {
179 if (sigma1[j] > 0.) lambda = 1/sigma1[j];
184 G4cout <<
"\n (g/cm2) : ";
185 for (
size_t j=0; j<sigma2.size();j++) {
187 if (sigma2[j] > 0.) lambda = 1/sigma2[j];
194 G4cout <<
"\n-------------------------------------------------------------\n"
200 std::vector<G4double> dedx1;
201 std::vector<G4double> dedx2;
204 for (
size_t j=0; j<emName.size();j++) {
205 dedx = emCal.
ComputeDEDX(energy,particle,emName[j],material,enerCut[j]);
206 dedx1.push_back(dedx);
207 dedx2.push_back(dedx/density);
209 dedxtot = emCal.
GetDEDX(energy,particle,material);
210 dedx1.push_back(dedxtot);
211 dedx2.push_back(dedxtot/density);
214 G4cout <<
"\n \n restricted dE/dx : ";
215 for (
size_t j=0; j<sigma1.size();j++) {
219 G4cout <<
"\n (MeV/g/cm2) : ";
220 for (
size_t j=0; j<sigma2.size();j++) {
221 G4cout <<
"\t" << std::setw(13) <<
G4BestUnit(dedx2[j],
"Energy*Surface/Mass");
233 G4cout <<
"\n \n range from restrict dE/dx: "
234 <<
"\t" << std::setw(8) <<
G4BestUnit(range1,
"Length")
235 <<
" (" << std::setw(8) <<
G4BestUnit(range2,
"Mass/Surface") <<
")";
237 G4cout <<
"\n range from full dE/dx : "
238 <<
"\t" << std::setw(8) <<
G4BestUnit(Range1,
"Length")
239 <<
" (" << std::setw(8) <<
G4BestUnit(Range2,
"Mass/Surface") <<
")";
246 G4cout <<
"\n \n transport mean free path : "
247 <<
"\t" << std::setw(8) <<
G4BestUnit(MSmfp1,
"Length")
248 <<
" (" << std::setw(8) <<
G4BestUnit(MSmfp2,
"Mass/Surface") <<
")";
252 G4cout <<
"\n-------------------------------------------------------------\n";
278 for (
size_t i=0; i<numOfCouples; i++) {
313 G4int iter = 0 , itermax = 10;
314 while (err > errmax && iter < itermax) {
318 err = std::abs(deioni - ekin)/ekin;
321 G4cout <<
"\n \n critical energy (Rossi) : "
322 <<
"\t" << std::setw(8) <<
G4BestUnit(ekin,
"Energy");
333 EcPdg = pdga[istat]/Zeff;
334 G4cout <<
"\t\t\t (from Pdg formula : "
335 << std::setw(8) <<
G4BestUnit(EcPdg,
"Energy") <<
")";
339 G4double rMolier1 = Es/ekin, rMolier2 = rMolier1*radl;
340 G4cout <<
"\n Moliere radius : "
341 <<
"\t" << std::setw(8) << rMolier1 <<
" X0 "
342 <<
"= " << std::setw(8) <<
G4BestUnit(rMolier2,
"Length");
346 G4cout <<
"\t (from Pdg formula : "
347 << std::setw(8) <<
G4BestUnit(rMPdg,
"Length") <<
")";