From 6bb2b22efd85342b790fb90b6fc979c54e532af5 Mon Sep 17 00:00:00 2001
From: Nikos Karastathis <n.karastathis@kit.edu>
Date: Wed, 24 Mar 2021 13:48:52 +0100
Subject: [PATCH] small updates to make our CoREAS smarter

---
 corsika/modules/radio/CoREAS.hpp                     | 6 +++---
 corsika/modules/radio/antennas/TimeDomainAntenna.hpp | 1 +
 examples/radio_shower.cpp                            | 4 ++--
 examples/radio_shower2.cpp                           | 8 ++++----
 tests/modules/testRadio.cpp                          | 6 +++++-
 5 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/corsika/modules/radio/CoREAS.hpp b/corsika/modules/radio/CoREAS.hpp
index 9907baf56..24d695e50 100755
--- a/corsika/modules/radio/CoREAS.hpp
+++ b/corsika/modules/radio/CoREAS.hpp
@@ -93,8 +93,9 @@ namespace corsika {
         // This is a SignalPathCollection
         auto paths2{this->propagator_.propagate(endPoint_, antenna.getLocation(), 1_m)};
 
-        if (paths1.size() == paths2.size()) {
-          for (size_t i = 0; (i < paths1.size() && i < paths2.size()); i++) {
+          // loop over both paths at once and directly compare 'start' and 'end' attributes
+          for (size_t i = (paths1.size() == paths2.size()) ? 0 : paths1.size();
+               (i < paths1.size() && i < paths2.size()); i++) {
 
             // First start with the 'start' point
             // calculate preDoppler factor
@@ -342,7 +343,6 @@ namespace corsika {
             antenna.receive(endPointReceiveTime_, ReceiveVectorEnd_, EV2_);
 
           } // End of loop over both paths to get signal info
-        } // End of checking that we have the same number of paths
       } // End of looping over antennas
     } // End of simulate method
 
diff --git a/corsika/modules/radio/antennas/TimeDomainAntenna.hpp b/corsika/modules/radio/antennas/TimeDomainAntenna.hpp
index 236478957..9e5b539d0 100644
--- a/corsika/modules/radio/antennas/TimeDomainAntenna.hpp
+++ b/corsika/modules/radio/antennas/TimeDomainAntenna.hpp
@@ -86,6 +86,7 @@ namespace corsika {
      * @param field            The incident electric field vector.
      *
      */
+     // TODO: rethink this method a bit. If the endpoint is at the end of the antenna resolution then you get the startpoint signal but you lose the endpoint signal!
     void receive(TimeType const time, Vector<dimensionless_d> const& receive_vector,
                  ElectricFieldVector const& efield) {
 
diff --git a/examples/radio_shower.cpp b/examples/radio_shower.cpp
index 9745cdbba..6132620d9 100644
--- a/examples/radio_shower.cpp
+++ b/examples/radio_shower.cpp
@@ -131,8 +131,8 @@ int main(int argc, char** argv) {
   const auto point1{Point(env.getCoordinateSystem(), 50_m, 50_m, 50_m)};
   const auto point2{Point(env.getCoordinateSystem(), 25_m, 25_m, 25_m)};
   // the antennas
-  TimeDomainAntenna ant1("antenna1", point1, 0_s, 100_s, 1/1e-8_s);
-  TimeDomainAntenna ant2("antenna2", point2, 0_s, 100_s, 1/1e-8_s);
+  TimeDomainAntenna ant1("antenna1", point1, 0_s, 100_s, 1/1e-6_s);
+  TimeDomainAntenna ant2("antenna2", point2, 0_s, 100_s, 1/1e-6_s);
   // the detector
   AntennaCollection<TimeDomainAntenna> detector;
   detector.addAntenna(ant1);
diff --git a/examples/radio_shower2.cpp b/examples/radio_shower2.cpp
index 8859c9651..269b3dcbc 100644
--- a/examples/radio_shower2.cpp
+++ b/examples/radio_shower2.cpp
@@ -89,10 +89,10 @@ int main() {
   const auto point4{Point(rootCS, -50_m, -50_m, 0_m)};
 
   // the antennas
-  TimeDomainAntenna ant1("antenna1", point1, 0_s, 1_s, 1/1e+6_s);
-  TimeDomainAntenna ant2("antenna2", point2, 0_s, 1_s, 1/1e+6_s);
-  TimeDomainAntenna ant3("antenna3", point3, 0_s, 1_s, 1/1e+6_s);
-  TimeDomainAntenna ant4("antenna4", point4, 0_s, 1_s, 1/1e+6_s);
+  TimeDomainAntenna ant1("antenna1", point1, 0_s, 1_s, 1/1e-6_s);
+  TimeDomainAntenna ant2("antenna2", point2, 0_s, 1_s, 1/1e-6_s);
+  TimeDomainAntenna ant3("antenna3", point3, 0_s, 1_s, 1/1e-6_s);
+  TimeDomainAntenna ant4("antenna4", point4, 0_s, 1_s, 1/1e-6_s);
 
   // the detector
   AntennaCollection<TimeDomainAntenna> detector;
diff --git a/tests/modules/testRadio.cpp b/tests/modules/testRadio.cpp
index 0cec7d9e1..0391d8fbb 100644
--- a/tests/modules/testRadio.cpp
+++ b/tests/modules/testRadio.cpp
@@ -170,6 +170,8 @@ TEST_CASE("Radio", "[processes]") {
     // check that I can create an antenna at (1, 2, 3)
     TimeDomainAntenna ant1("antenna_name", point1, t1, t2, t3);
     TimeDomainAntenna ant2("antenna_name2", point2, t1, t2, t3);
+//    TimeDomainAntenna ant3("antenna1", point1, 0_s, 2_s, 1/1e-7_s);
+
 
     // construct a radio detector instance to store our antennas
     AntennaCollection<TimeDomainAntenna> detector;
@@ -177,6 +179,8 @@ TEST_CASE("Radio", "[processes]") {
     // add the antennas to the detector
     detector.addAntenna(ant1);
     detector.addAntenna(ant2);
+//    detector.addAntenna(ant3);
+
 
 
     // create a particle
@@ -193,7 +197,7 @@ TEST_CASE("Radio", "[processes]") {
 
     auto const k{1_m * ((1_m) / ((1_s * 1_s) * 1_V))};
 
-    auto const t = 10000_ms;
+    auto const t = 10_s;
     LeapFrogTrajectory base(point4, v0, B0, k, t);
 
     // create a new stack for each trial
-- 
GitLab