diff --git a/Framework/Cascade/Cascade.h b/Framework/Cascade/Cascade.h index abf341dc86097f479043b826a207d88f8e31c10a..2cdaa2b4462b134b0f546ccafa95beef11f1573c 100644 --- a/Framework/Cascade/Cascade.h +++ b/Framework/Cascade/Cascade.h @@ -41,29 +41,40 @@ using boost::typeindex::type_id_with_cvr; #include <boost/histogram/ostream.hpp> #include <corsika/process/tracking_line/dump_bh.hpp> using namespace boost::histogram; -static auto histL2 = make_histogram(axis::regular<>(100, 0, 60000, "L'")); +/*static auto histL2 = make_histogram(axis::regular<>(100, 0, 60000, "L'")); static auto histS2 = make_histogram(axis::regular<>(100, 0, 60000, "S")); -static auto histB2 = make_histogram(axis::regular<>(100, 0, 60000, "Bogenlänge")); -static auto histLlog2 = make_histogram(axis::regular<double, axis::transform::log>(100, 1, 1e7, "Leap-Frog-length L'")); -static auto histLlog2int = make_histogram(axis::regular<double, axis::transform::log>(100, 1, 1e7, "Leap-Frog-length L'")); -static auto histLlog2dec = make_histogram(axis::regular<double, axis::transform::log>(100, 1, 1e7, "Leap-Frog-length L'")); -static auto histLlog2max = make_histogram(axis::regular<double, axis::transform::log>(100, 1, 1e7, "Leap-Frog-length L'")); -static auto histLlog2geo = make_histogram(axis::regular<double, axis::transform::log>(100, 1, 1e7, "Leap-Frog-length L'")); -static auto histLlog2mag = make_histogram(axis::regular<double, axis::transform::log>(100, 1, 1e7, "Leap-Frog-length L'")); - -static auto histSlog2 = make_histogram(axis::regular<double, axis::transform::log>(100, 1, 1e7, "Direct Length S")); -static auto histBlog2 = make_histogram(axis::regular<double, axis::transform::log>(100, 1, 1e7, "Arc Length B")); +static auto histB2 = make_histogram(axis::regular<>(100, 0, 60000, "Bogenlänge"));*/ +static auto histLlog2 = make_histogram(axis::regular<double, axis::transform::log>(100, 1e-3, 1e7, "Leap-Frog-length L'")); +static auto histLlog2int = make_histogram(axis::regular<double, axis::transform::log>(100, 1e-3, 1e7, "Leap-Frog-length L'")); +static auto histLlog2dec = make_histogram(axis::regular<double, axis::transform::log>(100, 1e-3, 1e7, "Leap-Frog-length L'")); +static auto histLlog2max = make_histogram(axis::regular<double, axis::transform::log>(100, 1e-3, 1e7, "Leap-Frog-length L'")); +static auto histLlog2geo = make_histogram(axis::regular<double, axis::transform::log>(100, 1e-3, 1e7, "Leap-Frog-length L'")); +static auto histLlog2mag = make_histogram(axis::regular<double, axis::transform::log>(100, 1e-3, 1e7, "Leap-Frog-length L'")); + +/*static auto histSlog2 = make_histogram(axis::regular<double, axis::transform::log>(100, 1e-3, 1e7, "Direct Length S")); +static auto histBlog2 = make_histogram(axis::regular<double, axis::transform::log>(100, 1e-3, 1e7, "Arc Length B")); static auto histLB2 = make_histogram(axis::regular<>(100, 0, 0.01, "L - B")); static auto histLS2 = make_histogram(axis::regular<>(100, 0, 0.01, "L - S")); static auto histLBrel2 = make_histogram(axis::regular<double, axis::transform::log> (20,1e-11,1e-6,"L/B -1")); static auto histLSrel2 = make_histogram(axis::regular<double, axis::transform::log>(20,1e-11,1e-6, "L/S -1")); static auto histELSrel2 = make_histogram(axis::regular<double, axis::transform::log>(20,1e-11,1e-6, "L/S -1"),axis::regular<double, axis::transform::log>(20, 0.1, 1e4, "E / GeV")); -static auto histBS2 = make_histogram(axis::regular<>(100, 0, 0.01, "B - S")); -static auto histLp2 = make_histogram(axis::regular<double, axis::transform::log>(100, 1, 1e7, "L' für Protonen")); -static auto histLpi2 = make_histogram(axis::regular<double, axis::transform::log>(100, 1, 1e7, "L' für Pionen")); -static auto histLmu2 = make_histogram(axis::regular<double, axis::transform::log>(100, 1, 1e7, "L' für Myonen")); -static auto histLe2 = make_histogram(axis::regular<double, axis::transform::log>(100, 1, 1e7, "L' für Elektronen")); -static auto histLy2 = make_histogram(axis::regular<double, axis::transform::log>(100, 1, 1e7, "L' für Photonen")); +static auto histBS2 = make_histogram(axis::regular<>(100, 0, 0.01, "B - S")); */ + +static auto histLp2 = make_histogram(axis::regular<double, axis::transform::log>(100, 1e-3, 1e7, "L' für Protonen")); +static auto histLpi2 = make_histogram(axis::regular<double, axis::transform::log>(100, 1e-3, 1e7, "L' für Pionen")); +static auto histLpi2int = make_histogram(axis::regular<double, axis::transform::log>(100, 1e-3, 1e7, "Leap-Frog-length L'")); +static auto histLpi2dec = make_histogram(axis::regular<double, axis::transform::log>(100, 1e-3, 1e7, "Leap-Frog-length L'")); +static auto histLpi2max = make_histogram(axis::regular<double, axis::transform::log>(100, 1e-3, 1e7, "Leap-Frog-length L'")); +static auto histLpi2geo = make_histogram(axis::regular<double, axis::transform::log>(100, 1e-3, 1e7, "Leap-Frog-length L'")); +static auto histLpi2mag = make_histogram(axis::regular<double, axis::transform::log>(100, 1e-3, 1e7, "Leap-Frog-length L'")); +static auto histLmu2 = make_histogram(axis::regular<double, axis::transform::log>(100, 1e-3, 1e7, "L' für Myonen")); +static auto histLmu2int = make_histogram(axis::regular<double, axis::transform::log>(100, 1e-3, 1e7, "Leap-Frog-length L'")); +static auto histLmu2dec = make_histogram(axis::regular<double, axis::transform::log>(100, 1e-3, 1e7, "Leap-Frog-length L'")); +static auto histLmu2max = make_histogram(axis::regular<double, axis::transform::log>(100, 1e-3, 1e7, "Leap-Frog-length L'")); +static auto histLmu2geo = make_histogram(axis::regular<double, axis::transform::log>(100, 1e-3, 1e7, "Leap-Frog-length L'")); +static auto histLmu2mag = make_histogram(axis::regular<double, axis::transform::log>(100, 1e-3, 1e7, "Leap-Frog-length L'")); +static auto histLe2 = make_histogram(axis::regular<double, axis::transform::log>(100, 1e-3, 1e7, "L' für Elektronen")); +static auto histLy2 = make_histogram(axis::regular<double, axis::transform::log>(100, 1e-3, 1e7, "L' für Photonen")); /** @@ -136,21 +147,21 @@ namespace corsika::cascade { C8LOG_INFO(" - With full cascade HISTORY."); } } - - ~Cascade(){ - std::ofstream myfile; + + ~Cascade(){ + /*std::ofstream myfile; myfile.open ("histograms2.txt"); myfile << histLp2 << std::endl; myfile << histLpi2 << std::endl; myfile << histLmu2 << std::endl; myfile << histL2 << std::endl; - myfile.close(); + myfile.close(); */ /*std::cout << histLBrel << std::endl; std::cout << histLSrel << std::endl;*/ - std::ofstream file1("histL2.json"); + /*std::ofstream file1("histL2.json"); dump_bh(file1, histL2); file1.close(); std::ofstream file2("histS2.json"); @@ -159,7 +170,7 @@ namespace corsika::cascade { std::ofstream file3("histB2.json"); dump_bh(file3, histB2); file3.close(); - /*std::ofstream file4("histLB.json"); + std::ofstream file4("histLB.json"); dump_bh(file4, histLB); file4.close(); std::ofstream file5("histLS.json"); @@ -196,12 +207,12 @@ namespace corsika::cascade { std::ofstream file14("histLlog2.json"); dump_bh(file14, histLlog2); file14.close(); - std::ofstream file15("histBlog2.json"); + /*std::ofstream file15("histBlog2.json"); dump_bh(file15, histBlog2); file15.close(); std::ofstream file16("histSlog2.json"); dump_bh(file16, histSlog2); - file16.close(); + file16.close();*/ std::ofstream file17("histLlog2int.json"); dump_bh(file17, histLlog2int); file17.close(); @@ -218,6 +229,38 @@ namespace corsika::cascade { std::ofstream file22("histLlog2max.json"); dump_bh(file22, histLlog2max); file22.close(); + + std::ofstream filepi1("histLpi2int.json"); + dump_bh(filepi1, histLpi2int); + filepi1.close(); + std::ofstream filepi2("histLpi2dec.json"); + dump_bh(filepi2, histLpi2dec); + filepi2.close(); + std::ofstream filepi3("histLpi2mag.json"); + dump_bh(filepi3, histLpi2mag); + filepi3.close(); + std::ofstream filepi4("histLpi2geo.json"); + dump_bh(filepi4, histLpi2geo); + filepi4.close(); + std::ofstream filepi5("histLpi2max.json"); + dump_bh(filepi5, histLpi2max); + filepi5.close(); + + std::ofstream filemu1("histLmu2int.json"); + dump_bh(filemu1, histLmu2int); + filemu1.close(); + std::ofstream filemu2("histLmu2dec.json"); + dump_bh(filemu2, histLmu2dec); + filemu2.close(); + std::ofstream filemu3("histLmu2mag.json"); + dump_bh(filemu3, histLmu2mag); + filemu3.close(); + std::ofstream filemu4("histLmu2geo.json"); + dump_bh(filemu4, histLmu2geo); + filemu4.close(); + std::ofstream filemu5("histLmu2max.json"); + dump_bh(filemu5, histLmu2max); + filemu5.close(); }; @@ -384,20 +427,45 @@ namespace corsika::cascade { // Steplength should not be min_distance auto [position, direction, L2] = fTracking.MagneticStep(vParticle, min_distance); - histL2(L2); + //histL2(L2); histLlog2(L2); - if (min_distance == distance_interact) + int pdg = static_cast<int>(particles::GetPDG(vParticle.GetPID())); + if (min_distance == distance_interact){ histLlog2int(L2); - if (min_distance == distance_decay) + if (abs(pdg) == 13) + histLmu2int(L2); + + if (abs(pdg) == 211 || abs(pdg) == 111) + histLpi2int(L2); + } + if (min_distance == distance_decay) { histLlog2dec(L2); - if (min_distance == distance_max) + if (abs(pdg) == 13) + histLmu2dec(L2); + if (abs(pdg) == 211 || abs(pdg) == 111) + histLpi2dec(L2); + } + if (min_distance == distance_max) { histLlog2max(L2); - if (min_distance == geomMaxLength) + if (abs(pdg) == 13) + histLmu2max(L2); + if (abs(pdg) == 211 || abs(pdg) == 111) + histLpi2max(L2); + } + if (min_distance == geomMaxLength) { histLlog2geo(L2); + if (abs(pdg) == 13) + histLmu2geo(L2); + if (abs(pdg) == 211 || abs(pdg) == 111) + histLpi2geo(L2); + } if (min_distance == magMaxLength) { histLlog2mag(L2); + if (abs(pdg) == 13) + histLmu2mag(L2); + if (abs(pdg) == 211 || abs(pdg) == 111) + histLpi2mag(L2); } - int pdg = static_cast<int>(particles::GetPDG(vParticle.GetPID())); if (abs(pdg) == 13) histLmu2(L2); if (abs(pdg) == 11) @@ -411,6 +479,7 @@ namespace corsika::cascade { auto distance = position - vParticle.GetPosition(); //Building Trajectory for Continuous processes + //could also be done in MagneticStep geometry::Vector<SpeedType::dimension_type> velocity = vParticle.GetMomentum() / vParticle.GetEnergy() * corsika::units::constants::c; if (distance.norm() != 0_m) { @@ -423,7 +492,7 @@ namespace corsika::cascade { // std::visit(setup::ParticleUpdate<Particle>{vParticle}, step); vParticle.SetMomentum(direction * vParticle.GetMomentum().norm()); vParticle.SetPosition(position); - vParticle.SetTime(vParticle.GetTime() + distance.norm() / units::constants::c); + vParticle.SetTime(vParticle.GetTime() + distance.norm() / velocity.norm()); std::cout << "New Position: " << vParticle.GetPosition().GetCoordinates() << std::endl; // apply all continuous processes on particle + track diff --git a/Processes/TrackingLine/TrackingLine.h b/Processes/TrackingLine/TrackingLine.h index 1f5e096e37e4db90fcd9e49b4d256cdd6090331b..10f848089e0c032b77086177c195dc97897e77b9 100644 --- a/Processes/TrackingLine/TrackingLine.h +++ b/Processes/TrackingLine/TrackingLine.h @@ -34,16 +34,16 @@ namespace corsika::environment { } // namespace corsika::environment using namespace boost::histogram; -static auto histL = make_histogram(axis::regular<>(100, 0, 100000, "Leap-Frog-ength L'")); +/*static auto histL = make_histogram(axis::regular<>(100, 0, 100000, "Leap-Frog-ength L'")); static auto histS = make_histogram(axis::regular<>(100, 0, 100000, "Direct Length S")); -static auto histB = make_histogram(axis::regular<>(100, 0, 100000, "Arc Length B")); -static auto histLlog = make_histogram(axis::regular<double, axis::transform::log>(100, 1, 1e7, "Leap-Frog-ength L'")); -static auto histLloggeo = make_histogram(axis::regular<double, axis::transform::log>(100, 1, 1e7, "Leap-Frog-ength L for geometric steps")); -static auto histLlogmag = make_histogram(axis::regular<double, axis::transform::log>(100, 1, 1e7, "Leap-Frog-ength L for magnetic steps")); -static auto histSlog = make_histogram(axis::regular<double, axis::transform::log>(100, 1, 1e7, "Direct Length S")); -static auto histBlog = make_histogram(axis::regular<double, axis::transform::log>(100, 1, 1e7, "Arc Length B")); -static auto histLB = make_histogram(axis::regular<>(100, 0, 100, "L - B")); -static auto histLS = make_histogram(axis::regular<>(100, 0, 100, "L - S")); +static auto histB = make_histogram(axis::regular<>(100, 0, 100000, "Arc Length B")); */ +static auto histLlog = make_histogram(axis::regular<double, axis::transform::log>(100, 1e-3, 1e7, "Leap-Frog-ength L'")); +static auto histLloggeo = make_histogram(axis::regular<double, axis::transform::log>(100, 1e-3, 1e7, "Leap-Frog-length L for geometric steps")); +static auto histLlogmag = make_histogram(axis::regular<double, axis::transform::log>(100, 1e-3, 1e7, "Leap-Frog-length L for magnetic steps")); +static auto histSlog = make_histogram(axis::regular<double, axis::transform::log>(100, 1e-3, 1e7, "Direct Length S")); +static auto histBlog = make_histogram(axis::regular<double, axis::transform::log>(100, 1e-3, 1e7, "Arc Length B")); +/*static auto histLB = make_histogram(axis::regular<>(100, 0, 100, "L - B")); +static auto histLS = make_histogram(axis::regular<>(100, 0, 100, "L - S"));*/ static auto histLBrelgeo = make_histogram(axis::regular<double, axis::transform::log> (40,1e-12,1e-2,"L/B -1")); static auto histLBrelmag = make_histogram(axis::regular<double, axis::transform::log> (40,1e-12,1e-2,"L/B -1")); static auto histLSrelgeo = make_histogram(axis::regular<double, axis::transform::log>(40,1e-12,1e-2, "L/S -1")); @@ -53,17 +53,17 @@ static auto histELSrelp = make_histogram(axis::regular<double, axis::transform:: static auto histELSrelpi = make_histogram(axis::regular<double, axis::transform::log>(50,1e-8,1e-3, "L/S -1"),axis::regular<double, axis::transform::log>(30, 3, 3e1, "E / GeV")); static auto histELSrelmu = make_histogram(axis::regular<double, axis::transform::log>(50,1e-8,1e-3, "L/S -1"),axis::regular<double, axis::transform::log>(30, 3, 3e1, "E / GeV")); static auto histELSrele = make_histogram(axis::regular<double, axis::transform::log>(50,1e-8,1e-3, "L/S -1"),axis::regular<double, axis::transform::log>(30, 3, 3e1, "E / GeV")); -static auto histBS = make_histogram(axis::regular<>(100, 0, 0.01, "B - S")); -static auto histLpgeo = make_histogram(axis::regular<double, axis::transform::log>(100, 1, 1e7, "L' für Protonen")); -static auto histLpigeo = make_histogram(axis::regular<double, axis::transform::log>(100, 1, 1e7, "L' für Pionen")); -static auto histLmugeo = make_histogram(axis::regular<double, axis::transform::log>(100, 1, 1e7, "L' für Myonen")); -static auto histLegeo = make_histogram(axis::regular<double, axis::transform::log>(100, 1, 1e7, "L' für Elektronen")); -static auto histLygeo = make_histogram(axis::regular<double, axis::transform::log>(100, 1, 1e7, "L' für Photonen")); -static auto histLpmag = make_histogram(axis::regular<double, axis::transform::log>(100, 1, 1e7, "L' für Protonen")); -static auto histLpimag = make_histogram(axis::regular<double, axis::transform::log>(100, 1, 1e7, "L' für Pionen")); -static auto histLmumag = make_histogram(axis::regular<double, axis::transform::log>(100, 1, 1e7, "L' für Myonen")); -static auto histLemag = make_histogram(axis::regular<double, axis::transform::log>(100, 1, 1e7, "L' für Elektronen")); -static auto histLymag = make_histogram(axis::regular<double, axis::transform::log>(100, 1, 1e7, "L' für Photonen")); +//static auto histBS = make_histogram(axis::regular<>(100, 0, 0.01, "B - S")); +static auto histLpgeo = make_histogram(axis::regular<double, axis::transform::log>(100, 1e-3, 1e7, "L' für Protonen")); +static auto histLpigeo = make_histogram(axis::regular<double, axis::transform::log>(100, 1e-3, 1e7, "L' für Pionen")); +static auto histLmugeo = make_histogram(axis::regular<double, axis::transform::log>(100, 1e-3, 1e7, "L' für Myonen")); +static auto histLegeo = make_histogram(axis::regular<double, axis::transform::log>(100, 1e-3, 1e7, "L' für Elektronen")); +static auto histLygeo = make_histogram(axis::regular<double, axis::transform::log>(100, 1e-3, 1e7, "L' für Photonen")); +static auto histLpmag = make_histogram(axis::regular<double, axis::transform::log>(100, 1e-3, 1e7, "L' für Protonen")); +static auto histLpimag = make_histogram(axis::regular<double, axis::transform::log>(100, 1e-3, 1e7, "L' für Pionen")); +static auto histLmumag = make_histogram(axis::regular<double, axis::transform::log>(100, 1e-3, 1e7, "L' für Myonen")); +static auto histLemag = make_histogram(axis::regular<double, axis::transform::log>(100, 1e-3, 1e7, "L' für Elektronen")); +static auto histLymag = make_histogram(axis::regular<double, axis::transform::log>(100, 1e-3, 1e7, "L' für Photonen")); static double L = 0; static std::vector<double> Lsmall; static std::vector<double> Bbig; @@ -91,7 +91,7 @@ namespace corsika::process { public: TrackingLine() = default; ~TrackingLine(){ - std::ofstream myfile; + /*std::ofstream myfile; myfile.open ("histograms.txt"); myfile << histLlog << std::endl; myfile << histBlog << std::endl; @@ -156,7 +156,7 @@ namespace corsika::process { file5.close(); std::ofstream file6("histBS.json"); dump_bh(file6, histBS); - file6.close(); + file6.close();*/ std::ofstream file7("histLBrelgeo.json"); dump_bh(file7, histLBrelgeo); file7.close(); @@ -429,12 +429,12 @@ namespace corsika::process { min = Steplimit / velocity.norm(); auto lineWithB = MagneticStep(p, line, Steplimit, true); - histL(L); + //histL(L); histLlog(L); histLlogmag(L); - histS(lineWithB.ArcLength(0_s,min) / 1_m); + //histS(lineWithB.ArcLength(0_s,min) / 1_m); histSlog(lineWithB.ArcLength(0_s,min) / 1_m); - histLS(L-lineWithB.ArcLength(0_s,min) / 1_m); + //histLS(L-lineWithB.ArcLength(0_s,min) / 1_m); if(chargeNumber != 0) { if(L * 1_m/lineWithB.ArcLength(0_s,min) -1 > 0) { @@ -453,17 +453,17 @@ Emag.push_back(p.GetEnergy() / 1_GeV);Steplimitmag.push_back(Steplimit / 1_m); std::cout << "Schrittlaenge " << velocity.norm() * min << " gyroradius " << gyroradius << std::endl; LengthType B = 2 * gyroradius * asin ( lineWithB.ArcLength(0_s,min) / 2 / gyroradius); std::cout << "Bogenlaenge" << B << std::endl; - histB(B / 1_m); + //histB(B / 1_m); histBlog(B / 1_m); if(L-B/1_m > 0) { - histLB(L-B/1_m); - histBS(B/1_m - lineWithB.ArcLength(0_s,min) / 1_m); + //histLB(L-B/1_m); + //histBS(B/1_m - lineWithB.ArcLength(0_s,min) / 1_m); histLBrelmag(L * 1_m/B-1); } else { Bbigmag.push_back(B / 1_m); } } else { - histB(lineWithB.ArcLength(0_s,min) / 1_m); + //histB(lineWithB.ArcLength(0_s,min) / 1_m); histBlog(lineWithB.ArcLength(0_s,min) / 1_m); } @@ -486,12 +486,12 @@ Bbigmag.push_back(B / 1_m); auto lineWithB = MagneticStep(p, line, velocity.norm() * min, true); - histL(L); + //histL(L); histLlog(L); histLloggeo(L); - histS(lineWithB.ArcLength(0_s,min) / 1_m); + //histS(lineWithB.ArcLength(0_s,min) / 1_m); histSlog(lineWithB.ArcLength(0_s,min) / 1_m); - histLS(L-lineWithB.ArcLength(0_s,min) / 1_m); + //histLS(L-lineWithB.ArcLength(0_s,min) / 1_m); if(chargeNumber != 0) { if(L * 1_m/lineWithB.ArcLength(0_s,min) -1 > 0) { @@ -510,17 +510,17 @@ E.push_back(p.GetEnergy() / 1_GeV); std::cout << "Schrittlaenge " << velocity.norm() * min << " gyroradius " << gyroradius << std::endl; LengthType B = 2 * gyroradius * asin ( lineWithB.ArcLength(0_s,min) / 2 / gyroradius); std::cout << "Bogenlaenge" << B << std::endl; - histB(B / 1_m); + //histB(B / 1_m); histBlog(B / 1_m); if(L-B/1_m > 0) { - histLB(L-B/1_m); - histBS(B/1_m - lineWithB.ArcLength(0_s,min) / 1_m); + //histLB(L-B/1_m); + //histBS(B/1_m - lineWithB.ArcLength(0_s,min) / 1_m); histLBrelgeo(L * 1_m/B-1); } else { Bbig.push_back(B / 1_m); } } else { - histB(lineWithB.ArcLength(0_s,min) / 1_m); + //histB(lineWithB.ArcLength(0_s,min) / 1_m); histBlog(lineWithB.ArcLength(0_s,min) / 1_m); } @@ -574,7 +574,7 @@ Bbig.push_back(B / 1_m); auto const* currentLogicalVolumeNode = p.GetNode(); auto magneticfield = currentLogicalVolumeNode->GetModelProperties().GetMagneticField(p.GetPosition()); - auto k = chargeNumber * corsika::units::constants::cSquared * 1_eV / (line.GetV0().norm() * p.GetEnergy() * 1_V); + auto k = chargeNumber * corsika::units::constants::c * 1_eV / (p.GetMomentum().norm() * 1_V); geometry::Vector<dimensionless_d> direction = line.GetV0().normalized(); auto position = p.GetPosition(); @@ -621,10 +621,8 @@ Bbig.push_back(B / 1_m); auto const* currentLogicalVolumeNode = p.GetNode(); auto magneticfield = currentLogicalVolumeNode->GetModelProperties().GetMagneticField(p.GetPosition()); - geometry::Vector<SpeedType::dimension_type> velocity = - p.GetMomentum() / p.GetEnergy() * corsika::units::constants::c; - auto k = chargeNumber * corsika::units::constants::cSquared * 1_eV / (velocity.norm() * p.GetEnergy() * 1_V); - geometry::Vector<dimensionless_d> direction = velocity.normalized(); + auto k = chargeNumber * corsika::units::constants::c * 1_eV / (p.GetMomentum().norm() * 1_V); + geometry::Vector<dimensionless_d> direction = p.GetMomentum().normalized(); auto position = p.GetPosition(); // First Movement