diff --git a/Documentation/Examples/cascade_example.cc b/Documentation/Examples/cascade_example.cc index abd95beef9c1c5e7f816cb53bf03ef3161757b76..764eeeba0cd920bf2fa137d6b2f0afb99e7072b8 100644 --- a/Documentation/Examples/cascade_example.cc +++ b/Documentation/Examples/cascade_example.cc @@ -290,7 +290,7 @@ int main() { const int nuclA = 4; const int nuclZ = int(nuclA / 2.15 + 0.7); const HEPMassType mass = GetNucleusMass(nuclA, nuclZ); - const HEPEnergyType E0 = nuclA * 100_GeV; + const HEPEnergyType E0 = nuclA * 10_TeV; double theta = 0.; double phi = 0.; @@ -321,7 +321,8 @@ int main() { EAS.Init(); EAS.Run(); - cout << "Result: E0=" << E0 / 1_GeV << endl; + eLoss.PrintProfile(); // print longitudinal profile + cut.ShowResults(); const HEPEnergyType Efinal = cut.GetCutEnergy() + cut.GetInvEnergy() + cut.GetEmEnergy(); @@ -329,5 +330,4 @@ int main() { << "relative difference (%): " << (Efinal / E0 - 1) * 100 << endl; cout << "total dEdX energy (GeV): " << eLoss.GetTotal() / 1_GeV << endl << "relative difference (%): " << eLoss.GetTotal() / E0 * 100 << endl; - eLoss.SaveSave(); } diff --git a/Processes/EnergyLoss/EnergyLoss.cc b/Processes/EnergyLoss/EnergyLoss.cc index 1e23f72062d449c27f0b9ac175e3dacfbb2958b0..a20158bb96623895c1af1454eae79d33740b6da5 100644 --- a/Processes/EnergyLoss/EnergyLoss.cc +++ b/Processes/EnergyLoss/EnergyLoss.cc @@ -35,7 +35,9 @@ namespace corsika::process::EnergyLoss { }; EnergyLoss::EnergyLoss() - : fEnergyLossTot(0_GeV) {} + : fEnergyLossTot(0_GeV) + , fdX(10_g / square(1_cm)) // profile binning + {} /** * PDG2018, passage of particles through matter @@ -190,8 +192,6 @@ namespace corsika::process::EnergyLoss { using namespace corsika::geometry; - const GrammageType deltaX = 10_g / square(1_cm); // binning - CoordinateSystem const& rootCS = RootCoordinateSystem::GetInstance().GetRootCoordinateSystem(); Point pos1(rootCS, 0_m, 0_m, 0_m); @@ -202,17 +202,21 @@ namespace corsika::process::EnergyLoss { GrammageType const grammage = p.GetNode()->GetModelProperties().IntegratedGrammage(t, t.GetLength()); - const int bin = grammage / deltaX; + const int bin = grammage / fdX; - if (!fSave.count(bin)) { cout << "EnergyLoss new x bin " << bin << endl; } - fSave[bin] += -dE / 1_GeV; + // fill longitudinal profile + if (!fProfile.count(bin)) { cout << "EnergyLoss new x bin " << bin << endl; } + fProfile[bin] += -dE / 1_GeV; return bin; } - void EnergyLoss::SaveSave() { + void EnergyLoss::PrintProfile() const { - cout << "EnergyLoss Save " << endl; - for (auto v : fSave) { cout << v.first << " " << v.second << endl; } + cout << "EnergyLoss PrintProfile X-bin [g/cm2] dE/dX [GeV/g/cm2] " << endl; + double const deltaX = fdX / 1_g * square(1_cm); + for (auto v : fProfile) { + cout << v.first * deltaX << " " << v.second / deltaX << endl; + } } } // namespace corsika::process::EnergyLoss diff --git a/Processes/EnergyLoss/EnergyLoss.h b/Processes/EnergyLoss/EnergyLoss.h index 75971bc8c0762b53a254f401da55ecf137407aef..5eb2a6b6782b12bb7b336e67d43e2882d666b80a 100644 --- a/Processes/EnergyLoss/EnergyLoss.h +++ b/Processes/EnergyLoss/EnergyLoss.h @@ -41,7 +41,7 @@ namespace corsika::process::EnergyLoss { corsika::setup::Trajectory&); corsika::units::si::HEPEnergyType GetTotal() const { return fEnergyLossTot; } - void SaveSave(); + void PrintProfile() const; private: corsika::units::si::HEPEnergyType BetheBloch( @@ -52,7 +52,8 @@ namespace corsika::process::EnergyLoss { const corsika::units::si::HEPEnergyType dE); corsika::units::si::HEPEnergyType fEnergyLossTot; - std::map<int, double> fSave; + corsika::units::si::GrammageType fdX; // profile binning + std::map<int, double> fProfile; // longitudinal profile }; } // namespace corsika::process::EnergyLoss