From 6d919a8808b942f1bb9f9d750f927cc09c38508c Mon Sep 17 00:00:00 2001
From: Nikos Karastathis <n.karastathis@kit.edu>
Date: Tue, 9 Mar 2021 21:17:55 +0100
Subject: [PATCH] added vacuum permittivity

---
 corsika/framework/core/PhysicalConstants.hpp |  3 +++
 corsika/modules/radio/CoREAS.hpp             | 18 ++++++------------
 2 files changed, 9 insertions(+), 12 deletions(-)

diff --git a/corsika/framework/core/PhysicalConstants.hpp b/corsika/framework/core/PhysicalConstants.hpp
index 92df20c20..8cc4f2319 100644
--- a/corsika/framework/core/PhysicalConstants.hpp
+++ b/corsika/framework/core/PhysicalConstants.hpp
@@ -35,6 +35,9 @@ namespace corsika::constants {
   // elementary charge
   constexpr quantity<electric_charge_d> e{Rep(1.6021766208e-19L) * coulomb};
 
+  // vacuum permittivity
+  constexpr quantity<dimensions<-3, -1, 4, 2>> epsilonZero{Rep(8.8541878128e-12L) * farad / meter};
+
   // electronvolt
   // constexpr quantity<hepenergy_d> eV{e / coulomb * joule};
 
diff --git a/corsika/modules/radio/CoREAS.hpp b/corsika/modules/radio/CoREAS.hpp
index c57c6faea..7730d07db 100755
--- a/corsika/modules/radio/CoREAS.hpp
+++ b/corsika/modules/radio/CoREAS.hpp
@@ -108,17 +108,11 @@ namespace corsika {
 
           // store the receive unit vector
           ReceiveVectorsStart_.push_back(path.receive_);
-//          auto kkk{path.receive_.cross(path.receive_.cross(beta_))};
-//          auto kk{path.R_distance_ * preDoppler_};
-//          auto kkkk{kkk/kk};
-//          auto kc{kkkk * (1 / 1_s) /constants::c};
-//          auto kosta{charge_ * 1_m};
 
-          //(charge_ / constants::c) *
           // calculate electric field vector for startpoint
           ElectricFieldVector EV1_=
-                     path.receive_.cross(path.receive_.cross(beta_)) /
-                     (path.R_distance_ * preDoppler_) * ((1 / 1_s) * (1 / constants::c)) * charge_;
+                     path.receive_.cross(path.receive_.cross(beta_)).getComponents() /
+                     (path.R_distance_ * preDoppler_) * (1 / (4 * M_PI * 1_s)) * ((1 / constants::epsilonZero) * (1 / constants::c)) * charge_;
 
           // store it to EVstart_ std::vector for later use
           EVstart_.push_back(EV1_);
@@ -149,8 +143,8 @@ namespace corsika {
 
           // calculate electric field vector for endpoint
           ElectricFieldVector EV2_=
-                     path.receive_.cross(path.receive_.cross(beta_)) /
-                     (path.R_distance_ * postDoppler_) * ((1 / 1_s) * (1 / constants::c)) * charge_;
+                     path.receive_.cross(path.receive_.cross(beta_)).getComponents() /
+                     (path.R_distance_ * postDoppler_) * (1 / (4 * M_PI * 1_s)) * ((1 / constants::epsilonZero) * (1 / constants::c)) * charge_;
 
           // store it to EVstart_ std::vector for later use
           EVend_.push_back(EV2_);
@@ -268,8 +262,8 @@ namespace corsika {
 
                 // CoREAS calculation -> get ElectricFieldVector3 for "midPoint"
                 ElectricFieldVector EVmid_ =
-                                             path.receive_.cross(path.receive_.cross(beta_)) /
-                                             (path.R_distance_ * midDoppler_) * ((1 / 1_s) * (1 / constants::c)) * charge_;
+                                             path.receive_.cross(path.receive_.cross(beta_)).getComponents() /
+                                             (path.R_distance_ * midDoppler_) * (1 / (4 * M_PI * 1_s)) * ((1 / constants::epsilonZero) * (1 / constants::c)) * charge_;
 
 //                ElectricFieldVector EVmid2_ = (- charge_ / constants::c) *
 //                                             path.receive_.cross(path.receive_.cross(beta_)) /
-- 
GitLab