IAP GITLAB

Skip to content
Snippets Groups Projects
Commit cfca107c authored by Nikos Karastathis's avatar Nikos Karastathis :ocean: Committed by Nikos Karastathis
Browse files

Synchrotron radiation calculates period

parent b67371db
No related branches found
No related tags found
1 merge request!329Radio interface
...@@ -89,8 +89,11 @@ int main() { ...@@ -89,8 +89,11 @@ int main() {
using MyHomogeneousModel = UniformRefractiveIndex<MediumPropertyModel< using MyHomogeneousModel = UniformRefractiveIndex<MediumPropertyModel<
UniformMagneticField<HomogeneousMedium<setup::EnvironmentInterface>>>>; UniformMagneticField<HomogeneousMedium<setup::EnvironmentInterface>>>>;
auto const Bmag {0.3809_T};
MagneticFieldVector B{rootCS, 0_T, 0_T, Bmag};
world->setModelProperties<MyHomogeneousModel>(1, world->setModelProperties<MyHomogeneousModel>(1,
Medium::AirDry1Atm, MagneticFieldVector(rootCS, 0_T, 0_T, 0.3809_T), Medium::AirDry1Atm, B,
1_kg / (1_m * 1_m * 1_m), 1_kg / (1_m * 1_m * 1_m),
NuclearComposition(std::vector<Code>{Code::Nitrogen}, NuclearComposition(std::vector<Code>{Code::Nitrogen},
std::vector<float>{(float)1.})); std::vector<float>{(float)1.}));
...@@ -145,39 +148,28 @@ int main() { ...@@ -145,39 +148,28 @@ int main() {
setup::Stack stack; setup::Stack stack;
stack.clear(); stack.clear();
const Code beamCode = Code::Electron; const Code beamCode = Code::Electron;
const HEPMassType mass = Electron::mass; auto const gyroradius = 100_m;
const HEPEnergyType E0 = 11.4_MeV; auto const pLabMag = convert_SI_to_HEP(get_charge(beamCode) * Bmag * gyroradius);
double theta = 0.; auto const omega_inv = convert_HEP_to_SI<MassType::dimension_type>(get_mass(beamCode)) / ((-1)*get_charge(beamCode) * Bmag);
double phi = 0.; MomentumVector const plab{rootCS, pLabMag, 0_MeV, 0_MeV};
auto const Elab = sqrt(plab.getSquaredNorm() + static_pow<2>(get_mass(beamCode)));
Point injectionPos(rootCS, 0_m, 100_m, 0_m); TimeType const period = 2 * M_PI * omega_inv;
{
auto elab2plab = [](HEPEnergyType Elab, HEPMassType m) { std::cout << "|p| = " << plab.getNorm() << "; E = " << Elab << std::endl;
return sqrt(Elab * Elab - m * m); std::cout << "period: " << period << std::endl;
};
HEPMomentumType P0 = elab2plab(E0, mass); Point injectionPos(rootCS, 0_m, 0_m, 0_m);
auto momentumComponents = [](double theta, double phi, HEPMomentumType ptot) { stack.addParticle(std::make_tuple(beamCode, Elab, plab, injectionPos, 0_ns));
return std::make_tuple(ptot * cos(theta), ptot * sin(theta),
ptot * sin(theta));
};
auto const [px, py, pz] =
momentumComponents(theta / 180. * M_PI, phi / 180. * M_PI, P0);
auto plab = MomentumVector(rootCS, {px, py, pz});
cout << "input particle: " << beamCode << endl;
cout << "input momentum: " << plab.getComponents() / 1_GeV << endl;
stack.addParticle(std::make_tuple(beamCode, E0, plab, injectionPos, 0_ns));
}
// setup relevant processes // setup relevant processes
setup::Tracking tracking; setup::Tracking tracking;
// StackInspector<setup::Stack> stackInspect(1, true, E0);
// put radio process here // put radio process here
RadioProcess<decltype(detector), CoREAS<decltype(detector), RadioProcess<decltype(detector), CoREAS<decltype(detector),
decltype(StraightPropagator(env))>, decltype(StraightPropagator(env))> decltype(StraightPropagator(env))>, decltype(StraightPropagator(env))>
coreas(detector, env); coreas(detector, env);
TimeCut cut(1e-9_s); TimeCut cut(period);
TrackWriter trackWriter("tracks.dat"); TrackWriter trackWriter("tracks.dat");
...@@ -190,4 +182,4 @@ int main() { ...@@ -190,4 +182,4 @@ int main() {
// get radio output // get radio output
coreas.writeOutput(); coreas.writeOutput();
} }
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment