diff --git a/corsika/framework/core/PhysicalConstants.hpp b/corsika/framework/core/PhysicalConstants.hpp index 92df20c2018ef382aac191517116d98363155f25..8cc4f2319ddc8340467e29eb9bcde661d04fecfa 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 c57c6faea7a5a81644014ada0554c7d8b5542c74..7730d07db31b04f775b5333f979901d1532078b4 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_)) /