IAP GITLAB
Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
corsika
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Issue analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Air Shower Physics
corsika
Commits
aaa57b5d
Commit
aaa57b5d
authored
4 years ago
by
Nikos Karastathis
Browse files
Options
Downloads
Patches
Plain Diff
Synchrotron radiation test
parent
265a6e3c
No related branches found
No related tags found
1 merge request
!329
Radio interface
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
tests/modules/testRadio.cpp
+715
-157
715 additions, 157 deletions
tests/modules/testRadio.cpp
with
715 additions
and
157 deletions
tests/modules/testRadio.cpp
+
715
−
157
View file @
aaa57b5d
...
@@ -68,111 +68,256 @@ UniformRefractiveIndex<MediumPropertyModel<UniformMagneticField<TInterface>>>;
...
@@ -68,111 +68,256 @@ UniformRefractiveIndex<MediumPropertyModel<UniformMagneticField<TInterface>>>;
TEST_CASE
(
"Radio"
,
"[processes]"
)
{
TEST_CASE
(
"Radio"
,
"[processes]"
)
{
SECTION
(
"CoREAS process"
)
{
// SECTION("CoREAS process") {
// TODO: construct sychnotron radiation example with one electron
// // Environment 1 (works)
// // first step is to construct an environment for the propagation (uniform index 1)
// using UniRIndex =
// UniformRefractiveIndex<HomogeneousMedium<IRefractiveIndexModel<IMediumModel>>>;
//
// using EnvType = Environment<IRefractiveIndexModel<IMediumModel>>;
// EnvType envCoREAS;
//
//
// // get a coordinate system
// // TODO: construct sychnotron radiation example with one electron
// const CoordinateSystemPtr rootCSCoREAS = envCoREAS.getCoordinateSystem();
//
//
// auto MediumCoREAS = EnvType::createNode<Sphere>(
//// // Environment 1 (works)
// Point{rootCSCoREAS, 0_m, 0_m, 0_m}, 1_km * std::numeric_limits<double>::infinity());
//// // first step is to construct an environment for the propagation (uniform index 1)
//// using UniRIndex =
//// UniformRefractiveIndex<HomogeneousMedium<IRefractiveIndexModel<IMediumModel>>>;
////
//// using EnvType = Environment<IRefractiveIndexModel<IMediumModel>>;
//// EnvType envCoREAS;
////
//// // get a coordinate system
//// const CoordinateSystemPtr rootCSCoREAS = envCoREAS.getCoordinateSystem();
////
//// auto MediumCoREAS = EnvType::createNode<Sphere>(
//// Point{rootCSCoREAS, 0_m, 0_m, 0_m}, 1_km * std::numeric_limits<double>::infinity());
////
//// auto const propsCoREAS = MediumCoREAS->setModelProperties<UniRIndex>(
//// 1.000327, 1_kg / (1_m * 1_m * 1_m),
//// NuclearComposition(
//// std::vector<Code>{Code::Nitrogen},
//// std::vector<float>{1.f}));
////
//// envCoREAS.getUniverse()->addChild(std::move(MediumCoREAS));
//
//
// //////////////////////////////////////////////////////////////////////////////////////
//// // Environment 2 (works)
//// using IModelInterface = IRefractiveIndexModel<IMediumPropertyModel<IMagneticFieldModel<IMediumModel>>>;
//// using AtmModel = UniformRefractiveIndex<MediumPropertyModel<UniformMagneticField<HomogeneousMedium
//// <IModelInterface>>>>;
//// using EnvType = Environment<AtmModel>;
//// EnvType envCoREAS;
//// CoordinateSystemPtr const& rootCSCoREAS = envCoREAS.getCoordinateSystem();
//// // get the center point
//// Point const center{rootCSCoREAS, 0_m, 0_m, 0_m};
//// // a refractive index
//// const double ri_{1.000327};
////
//// // the constant density
//// const auto density{19.2_g / cube(1_cm)};
////
//// // the composition we use for the homogeneous medium
//// NuclearComposition const protonComposition(std::vector<Code>{Code::Proton},
//// std::vector<float>{1.f});
////
//// // create magnetic field vector
//// Vector B1(rootCSCoREAS, 0_T, 0_T, 1_T);
////
//// auto Medium = EnvType::createNode<Sphere>(
//// center, 1_km * std::numeric_limits<double>::infinity());
////
//// auto const props = Medium->setModelProperties<AtmModel>(ri_, Medium::AirDry1Atm, B1, density, protonComposition);
//// envCoREAS.getUniverse()->addChild(std::move(Medium));
//
//
// auto const propsCoREAS = MediumCoREAS->setModelProperties<UniRIndex>(
// 1.000327, 1_kg / (1_m * 1_m * 1_m),
// NuclearComposition(
// std::vector<Code>{Code::Nitrogen},
// std::vector<float>{1.f}));
//
//
// envCoREAS.getUniverse()->addChild(std::move(MediumCoREAS));
// //////////////////////////////////////////////////////////////////////////////////////
// // Environment 3 (works)
// using EnvironmentInterface =
//////////////////////////////////////////////////////////////////////////////////////
// IRefractiveIndexModel<IMediumPropertyModel<IMagneticFieldModel<IMediumModel>>>;
// // Environment 2 (works)
// using EnvType = Environment<EnvironmentInterface>;
// using IModelInterface = IRefractiveIndexModel<IMediumPropertyModel<IMagneticFieldModel<IMediumModel>>>;
// using AtmModel = UniformRefractiveIndex<MediumPropertyModel<UniformMagneticField<HomogeneousMedium
// <IModelInterface>>>>;
// using EnvType = Environment<AtmModel>;
// EnvType envCoREAS;
// EnvType envCoREAS;
// CoordinateSystemPtr const& rootCSCoREAS = envCoREAS.getCoordinateSystem();
// CoordinateSystemPtr const& rootCSCoREAS = envCoREAS.getCoordinateSystem();
// // get the center point
// Point const center{rootCSCoREAS, 0_m, 0_m, 0_m};
// Point const center{rootCSCoREAS, 0_m, 0_m, 0_m};
// // a refractive index
// auto builder = make_layered_spherical_atmosphere_builder<
// const double ri_{1.000327};
// EnvironmentInterface, MyExtraEnv>::create(center,
// constants::EarthRadius::Mean, 1.000327,
// Medium::AirDry1Atm,
// MagneticFieldVector{rootCSCoREAS, 0_T,
// 50_uT, 0_T});
//
// builder.setNuclearComposition(
// {{Code::Nitrogen, Code::Oxygen},
// {0.7847f, 1.f - 0.7847f}}); // values taken from AIRES manual, Ar removed for now
//
//// builder.addExponentialLayer(1222.6562_g / (1_cm * 1_cm), 994186.38_cm, 4_km);
//// builder.addExponentialLayer(1144.9069_g / (1_cm * 1_cm), 878153.55_cm, 10_km);
//// builder.addExponentialLayer(1305.5948_g / (1_cm * 1_cm), 636143.04_cm, 40_km);
//// builder.addExponentialLayer(540.1778_g / (1_cm * 1_cm), 772170.16_cm, 100_km);
// builder.addLinearLayer(1e9_cm, 112.8_km);
// builder.assemble(envCoREAS);
////////////////////////////////////////////////////////////////////////////////////////////
//
//
// // now create antennas and detectors
// // the antennas location
// const auto point1{Point(envCoREAS.getCoordinateSystem(), 100_m, 2_m, 3_m)};
// const auto point2{Point(envCoREAS.getCoordinateSystem(), 4_m, 80_m, 6_m)};
// const auto point3{Point(envCoREAS.getCoordinateSystem(), 7_m, 8_m, 9_m)};
// const auto point4{Point(envCoREAS.getCoordinateSystem(), 5_m, 5_m, 10_m)};
//
//
// // the constant density
// const auto density{19.2_g / cube(1_cm)};
//
//
// // the composition we use for the homogeneous medium
// // create times for the antenna
// NuclearComposition const protonComposition(std::vector<Code>{Code::Proton},
// const TimeType t1{0_s}; // TODO: initialization of times to antennas! particle hits the observation level should be zero
// std::vector<float>{1.f});
// const TimeType t2{10_s};
// const InverseTimeType t3{1e+3_Hz};
// const TimeType t4{11_s};
//
//
// // create magnetic field vector
// // check that I can create an antenna at (1, 2, 3)
// Vector B1(rootCSCoREAS, 0_T, 0_T, 1_T);
// 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);
//
//
// auto Medium = EnvType::createNode<Sphere>(
//// std::cout << "static cast " << static_cast<int>(1/1000) << std::endl;
// center, 1_km * std::numeric_limits<double>::infinity());
//
//
// // construct a radio detector instance to store our antennas
// auto const props = Medium->setModelProperties<AtmModel>(ri_, Medium::AirDry1Atm, B1, density, protonComposition);
// AntennaCollection<TimeDomainAntenna> detector;
// envCoREAS.getUniverse()->addChild(std::move(Medium));
//
// // add the antennas to the detector
// detector.addAntenna(ant1);
//////////////////////////////////////////////////////////////////////////////////////
// detector.addAntenna(ant2);
// Environment 3 (works)
//// detector.addAntenna(ant3);
using
EnvironmentInterface
=
//
IRefractiveIndexModel
<
IMediumPropertyModel
<
IMagneticFieldModel
<
IMediumModel
>>>
;
//
using
EnvType
=
Environment
<
EnvironmentInterface
>
;
//
EnvType
envCoREAS
;
// // create a particle
CoordinateSystemPtr
const
&
rootCSCoREAS
=
envCoREAS
.
getCoordinateSystem
();
// auto const particle{Code::Electron};
Point
const
center
{
rootCSCoREAS
,
0
_m
,
0
_m
,
0
_m
};
//// auto const particle{Code::Gamma};
auto
builder
=
make_layered_spherical_atmosphere_builder
<
// const auto pmass{get_mass(particle)};
EnvironmentInterface
,
MyExtraEnv
>::
create
(
center
,
//
constants
::
EarthRadius
::
Mean
,
1.000327
,
//
Medium
::
AirDry1Atm
,
// VelocityVector v0(rootCSCoREAS, {5e+2_m / second, 5e+2_m / second, 5e+2_m / second});
MagneticFieldVector
{
rootCSCoREAS
,
0
_T
,
//
50
_uT
,
0
_T
});
// Vector B0(rootCSCoREAS, 5_T, 5_T, 5_T);
//
builder
.
setNuclearComposition
(
// Line const line(point3, v0);
{{
Code
::
Nitrogen
,
Code
::
Oxygen
},
//
{
0.7847
f
,
1.
f
-
0.7847
f
}});
// values taken from AIRES manual, Ar removed for now
// auto const k{1_m * ((1_m) / ((1_s * 1_s) * 1_V))};
//
// builder.addExponentialLayer(1222.6562_g / (1_cm * 1_cm), 994186.38_cm, 4_km);
// auto const t = 1_s;
// builder.addExponentialLayer(1144.9069_g / (1_cm * 1_cm), 878153.55_cm, 10_km);
// LeapFrogTrajectory base(point4, v0, B0, k, t);
// builder.addExponentialLayer(1305.5948_g / (1_cm * 1_cm), 636143.04_cm, 40_km);
//
// builder.addExponentialLayer(540.1778_g / (1_cm * 1_cm), 772170.16_cm, 100_km);
// // create a new stack for each trial
builder
.
addLinearLayer
(
1e9
_cm
,
112.8
_km
);
// setup::Stack stack;
builder
.
assemble
(
envCoREAS
);
//
//////////////////////////////////////////////////////////////////////////////////////////
// // construct an energy
// const HEPEnergyType E0{1_TeV};
//
// now create antennas and detectors
// // compute the necessary momentumn
// const HEPMomentumType P0{sqrt(E0 * E0 - pmass * pmass)};
//
// // and create the momentum vector
// const auto plab{MomentumVector(rootCSCoREAS, {0_GeV, 0_GeV, P0})};
//
// // and create the location of the particle in this coordinate system
// const Point pos(rootCSCoREAS, 50_m, 10_m, 80_m);
//
// // add the particle to the stack
// auto const particle1{stack.addParticle(std::make_tuple(particle, E0, plab, pos, 0_ns))};
//
// auto const charge_ {get_charge(particle1.getPID())};
//// std::cout << "charge: " << charge_ << std::endl;
//// std::cout << "1 / c: " << 1. / constants::c << std::endl;
//
// // set up a track object
//// setup::Tracking tracking;
//
//// auto startPoint_ {base.getPosition(0)};
//// auto midPoint_ {base.getPosition(0.5)};
//// auto endPoint_ {base.getPosition(1)};
//// std::cout << "startPoint_: " << startPoint_ << std::endl;
//// std::cout << "midPoint_: " << midPoint_ << std::endl;
//// std::cout << "endPoint_: " << endPoint_ << std::endl;
//
//// auto velo_ {base.getVelocity(0)};
//// std::cout << "velocity: " << velo_ << std::endl;
//
//// auto startTime_ {particle1.getTime() - base.getDuration()}; // time at the start point of the track hopefully.
//// auto endTime_ {particle1.getTime()};
//// std::cout << "startTime_: " << startTime_ << std::endl;
//// std::cout << "endTime_: " << endTime_ << std::endl;
////
//// auto beta_ {((endPoint_ - startPoint_) / (constants::c * (endTime_ - startTime_))).normalized()};
//// std::cout << "beta_: " << beta_ << std::endl;
//
//// Vector<dimensionless_d> v1(rootCSCoREAS, {0, 0, 1});
//// std::cout << "v1: " << v1.getComponents() << std::endl;
////
//// std::cout << "beta_.dot(v1): " << beta_.dot(v1) << std::endl;
////
//// std::cout << "Pi: " << 1/M_PI << std::endl;
////
//// std::cout << "speed of light: " << constants::c << std::endl;
////
//// std::cout << "vacuum permitivity: " << constants::epsilonZero << std::endl;
//
// // Create a CoREAS instance
//// CoREAS<decltype(detector), decltype(StraightPropagator(envCoREAS))> coreas1(detector, envCoREAS);
//
// // create a radio process instance using CoREAS
// RadioProcess<decltype(detector), CoREAS<decltype(detector), decltype(StraightPropagator(envCoREAS))>, decltype(StraightPropagator(envCoREAS))>
// coreas(detector, envCoREAS);
//
// // check doContinuous and simulate methods
// coreas.doContinuous(particle1, base, true);
//// coreas1.simulate(particle1, base);
//
// // check writeOutput method -> should produce 2 csv files for each antenna
// coreas.writeOutput();
// }
SECTION
(
"Synchrotron radiation"
)
{
// create a suitable environment ///////////////////////////////////////////////////
using
IModelInterface
=
IRefractiveIndexModel
<
IMediumPropertyModel
<
IMagneticFieldModel
<
IMediumModel
>>>
;
using
AtmModel
=
UniformRefractiveIndex
<
MediumPropertyModel
<
UniformMagneticField
<
HomogeneousMedium
<
IModelInterface
>>>>
;
using
EnvType
=
Environment
<
AtmModel
>
;
EnvType
env
;
CoordinateSystemPtr
const
&
rootCS
=
env
.
getCoordinateSystem
();
// get the center point
Point
const
center
{
rootCS
,
0
_m
,
0
_m
,
0
_m
};
// a refractive index for the vacuum
const
double
ri_
{
1
};
// the constant density
const
auto
density
{
19.2
_g
/
cube
(
1
_cm
)};
// the composition we use for the homogeneous medium
NuclearComposition
const
Composition
(
std
::
vector
<
Code
>
{
Code
::
Nitrogen
},
std
::
vector
<
float
>
{
1.
f
});
// create magnetic field vector
Vector
B1
(
rootCS
,
0
_T
,
0
_T
,
0.3809
_T
);
// create a Sphere for the medium
auto
Medium
=
EnvType
::
createNode
<
Sphere
>
(
center
,
1
_km
*
std
::
numeric_limits
<
double
>::
infinity
());
// set the environment properties
auto
const
props
=
Medium
->
setModelProperties
<
AtmModel
>
(
ri_
,
Medium
::
AirDry1Atm
,
B1
,
density
,
Composition
);
// bind things together
env
.
getUniverse
()
->
addChild
(
std
::
move
(
Medium
));
// now create antennas and detectors/////////////////////////////////////////////
// the antennas location
// the antennas location
const
auto
point1
{
Point
(
envCoREAS
.
getCoordinateSystem
()
,
1
00
_m
,
2
_m
,
3
_m
)};
const
auto
point1
{
Point
(
rootCS
,
2
00
_m
,
2
00
_m
,
0
_m
)};
const
auto
point2
{
Point
(
envCoREAS
.
getCoordinateSystem
(),
4
_m
,
8
0
_m
,
6
_m
)};
const
auto
point2
{
Point
(
rootCS
,
200
_m
,
-
20
0
_m
,
0
_m
)};
const
auto
point3
{
Point
(
envCoREAS
.
getCoordinateSystem
(),
7
_m
,
8
_m
,
9
_m
)};
const
auto
point3
{
Point
(
rootCS
,
-
200
_m
,
-
200
_m
,
0
_m
)};
const
auto
point4
{
Point
(
envCoREAS
.
getCoordinateSystem
(),
5
_m
,
5
_m
,
1
0
_m
)};
const
auto
point4
{
Point
(
rootCS
,
-
200
_m
,
200
_m
,
0
_m
)};
// create times for the antenna
// create times for the antenna
const
TimeType
t1
{
0
_s
};
// TODO: initialization of times to antennas! particle hits the observation level should be zero
const
TimeType
t1
{
0
_s
};
const
TimeType
t2
{
10
_s
};
const
TimeType
t2
{
1e-6
_s
};
const
InverseTimeType
t3
{
1e+3
_Hz
};
const
InverseTimeType
t3
{
1e+9
_Hz
};
const
TimeType
t4
{
11
_s
};
// 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);
// std::cout << "static cast " << static_cast<int>(1/1000) << std::endl;
// create 4 cool antennas
TimeDomainAntenna
ant1
(
"cool antenna"
,
point1
,
t1
,
t2
,
t3
);
TimeDomainAntenna
ant2
(
"cooler antenna"
,
point2
,
t1
,
t2
,
t3
);
TimeDomainAntenna
ant3
(
"coolest antenna"
,
point3
,
t1
,
t2
,
t3
);
TimeDomainAntenna
ant4
(
"No, I am the coolest antenna"
,
point4
,
t1
,
t2
,
t3
);
// construct a radio detector instance to store our antennas
// construct a radio detector instance to store our antennas
AntennaCollection
<
TimeDomainAntenna
>
detector
;
AntennaCollection
<
TimeDomainAntenna
>
detector
;
...
@@ -180,95 +325,508 @@ TEST_CASE("Radio", "[processes]") {
...
@@ -180,95 +325,508 @@ TEST_CASE("Radio", "[processes]") {
// add the antennas to the detector
// add the antennas to the detector
detector
.
addAntenna
(
ant1
);
detector
.
addAntenna
(
ant1
);
detector
.
addAntenna
(
ant2
);
detector
.
addAntenna
(
ant2
);
// detector.addAntenna(ant3);
detector
.
addAntenna
(
ant3
);
detector
.
addAntenna
(
ant4
);
// create a particle
// create points that make a 2D circle of radius=100m ////////////////////////////////
auto
const
particle
{
Code
::
Electron
};
Point
p0
(
rootCS
,
{
0
_m
,
100
_m
,
0
_m
});
// auto const particle{Code::Gamma};
Point
p1
(
rootCS
,
{
1
_m
,
99.995
_m
,
0
_m
});
const
auto
pmass
{
get_mass
(
particle
)};
Point
p2
(
rootCS
,
{
2
_m
,
99.98
_m
,
0
_m
});
Point
p3
(
rootCS
,
{
3
_m
,
99.955
_m
,
0
_m
});
Point
p4
(
rootCS
,
{
4
_m
,
99.92
_m
,
0
_m
});
Point
p5
(
rootCS
,
{
5
_m
,
99.875
_m
,
0
_m
});
Point
p6
(
rootCS
,
{
6
_m
,
99.82
_m
,
0
_m
});
Point
p7
(
rootCS
,
{
7
_m
,
99.755
_m
,
0
_m
});
Point
p8
(
rootCS
,
{
8
_m
,
99.679
_m
,
0
_m
});
Point
p9
(
rootCS
,
{
9
_m
,
99.594
_m
,
0
_m
});
Point
p10
(
rootCS
,{
10
_m
,
99.499
_m
,
0
_m
});
Point
p11
(
rootCS
,{
11
_m
,
99.393
_m
,
0
_m
});
Point
p12
(
rootCS
,{
12
_m
,
99.277
_m
,
0
_m
});
Point
p13
(
rootCS
,{
13
_m
,
99.151
_m
,
0
_m
});
Point
p14
(
rootCS
,{
14
_m
,
99.015
_m
,
0
_m
});
Point
p15
(
rootCS
,{
15
_m
,
98.869
_m
,
0
_m
});
Point
p16
(
rootCS
,{
16
_m
,
98.712
_m
,
0
_m
});
Point
p17
(
rootCS
,{
17
_m
,
98.544
_m
,
0
_m
});
Point
p18
(
rootCS
,{
18
_m
,
98.367
_m
,
0
_m
});
Point
p19
(
rootCS
,{
19
_m
,
98.178
_m
,
0
_m
});
Point
p20
(
rootCS
,{
20
_m
,
97.98
_m
,
0
_m
});
Point
p21
(
rootCS
,{
21
_m
,
97.77
_m
,
0
_m
});
Point
p22
(
rootCS
,{
22
_m
,
97.55
_m
,
0
_m
});
Point
p23
(
rootCS
,{
23
_m
,
97.319
_m
,
0
_m
});
Point
p24
(
rootCS
,{
24
_m
,
97.077
_m
,
0
_m
});
Point
p25
(
rootCS
,{
25
_m
,
96.825
_m
,
0
_m
});
Point
p26
(
rootCS
,{
26
_m
,
96.561
_m
,
0
_m
});
Point
p27
(
rootCS
,{
27
_m
,
96.286
_m
,
0
_m
});
Point
p28
(
rootCS
,{
28
_m
,
96
_m
,
0
_m
});
Point
p29
(
rootCS
,{
29
_m
,
95.703
_m
,
0
_m
});
Point
p30
(
rootCS
,{
30
_m
,
95.394
_m
,
0
_m
});
Point
p31
(
rootCS
,{
31
_m
,
95.074
_m
,
0
_m
});
Point
p32
(
rootCS
,{
32
_m
,
94.742
_m
,
0
_m
});
Point
p33
(
rootCS
,{
33
_m
,
94.398
_m
,
0
_m
});
Point
p34
(
rootCS
,{
34
_m
,
94.043
_m
,
0
_m
});
Point
p35
(
rootCS
,{
35
_m
,
93.675
_m
,
0
_m
});
Point
p36
(
rootCS
,{
36
_m
,
93.295
_m
,
0
_m
});
Point
p37
(
rootCS
,{
37
_m
,
92.903
_m
,
0
_m
});
Point
p38
(
rootCS
,{
38
_m
,
92.499
_m
,
0
_m
});
Point
p39
(
rootCS
,{
39
_m
,
92.081
_m
,
0
_m
});
Point
p40
(
rootCS
,{
40
_m
,
91.652
_m
,
0
_m
});
Point
p41
(
rootCS
,{
41
_m
,
91.209
_m
,
0
_m
});
Point
p42
(
rootCS
,{
42
_m
,
90.752
_m
,
0
_m
});
Point
p43
(
rootCS
,{
43
_m
,
90.283
_m
,
0
_m
});
Point
p44
(
rootCS
,{
44
_m
,
89.8
_m
,
0
_m
});
Point
p45
(
rootCS
,{
45
_m
,
89.303
_m
,
0
_m
});
Point
p46
(
rootCS
,{
46
_m
,
88.792
_m
,
0
_m
});
Point
p47
(
rootCS
,{
47
_m
,
88.267
_m
,
0
_m
});
Point
p48
(
rootCS
,{
48
_m
,
87.727
_m
,
0
_m
});
Point
p49
(
rootCS
,{
49
_m
,
87.171
_m
,
0
_m
});
Point
p50
(
rootCS
,{
50
_m
,
86.603
_m
,
0
_m
});
Point
p51
(
rootCS
,{
51
_m
,
86.017
_m
,
0
_m
});
Point
p52
(
rootCS
,{
52
_m
,
85.417
_m
,
0
_m
});
Point
p53
(
rootCS
,{
53
_m
,
84.8
_m
,
0
_m
});
Point
p54
(
rootCS
,{
54
_m
,
84.167
_m
,
0
_m
});
Point
p55
(
rootCS
,{
55
_m
,
83.516
_m
,
0
_m
});
Point
p56
(
rootCS
,{
56
_m
,
82.849
_m
,
0
_m
});
Point
p57
(
rootCS
,{
57
_m
,
82.164
_m
,
0
_m
});
Point
p58
(
rootCS
,{
58
_m
,
81.462
_m
,
0
_m
});
Point
p59
(
rootCS
,{
59
_m
,
80.74
_m
,
0
_m
});
Point
p60
(
rootCS
,{
60
_m
,
80
_m
,
0
_m
});
Point
p61
(
rootCS
,{
61
_m
,
79.24
_m
,
0
_m
});
Point
p62
(
rootCS
,{
62
_m
,
78.46
_m
,
0
_m
});
Point
p63
(
rootCS
,{
63
_m
,
77.66
_m
,
0
_m
});
Point
p64
(
rootCS
,{
64
_m
,
76.837
_m
,
0
_m
});
Point
p65
(
rootCS
,{
65
_m
,
75.993
_m
,
0
_m
});
Point
p66
(
rootCS
,{
66
_m
,
75.127
_m
,
0
_m
});
Point
p67
(
rootCS
,{
67
_m
,
74.236
_m
,
0
_m
});
Point
p68
(
rootCS
,{
68
_m
,
73.321
_m
,
0
_m
});
Point
p69
(
rootCS
,{
69
_m
,
72.476
_m
,
0
_m
});
Point
p70
(
rootCS
,{
70
_m
,
71.414
_m
,
0
_m
});
Point
p71
(
rootCS
,{
71
_m
,
70.42
_m
,
0
_m
});
Point
p72
(
rootCS
,{
72
_m
,
69.397
_m
,
0
_m
});
Point
p73
(
rootCS
,{
73
_m
,
68.345
_m
,
0
_m
});
Point
p74
(
rootCS
,{
74
_m
,
67.261
_m
,
0
_m
});
Point
p75
(
rootCS
,{
75
_m
,
66.144
_m
,
0
_m
});
Point
p76
(
rootCS
,{
76
_m
,
64.992
_m
,
0
_m
});
Point
p77
(
rootCS
,{
77
_m
,
63.804
_m
,
0
_m
});
Point
p78
(
rootCS
,{
78
_m
,
62.578
_m
,
0
_m
});
Point
p79
(
rootCS
,{
79
_m
,
61.311
_m
,
0
_m
});
Point
p80
(
rootCS
,{
80
_m
,
60
_m
,
0
_m
});
Point
p81
(
rootCS
,{
81
_m
,
58.643
_m
,
0
_m
});
Point
p82
(
rootCS
,{
82
_m
,
57.236
_m
,
0
_m
});
Point
p83
(
rootCS
,{
83
_m
,
55.776
_m
,
0
_m
});
Point
p84
(
rootCS
,{
84
_m
,
54.259
_m
,
0
_m
});
Point
p85
(
rootCS
,{
85
_m
,
52.678
_m
,
0
_m
});
Point
p86
(
rootCS
,{
86
_m
,
51.029
_m
,
0
_m
});
Point
p87
(
rootCS
,{
87
_m
,
49.305
_m
,
0
_m
});
Point
p88
(
rootCS
,{
88
_m
,
47.497
_m
,
0
_m
});
Point
p89
(
rootCS
,{
89
_m
,
45.596
_m
,
0
_m
});
Point
p90
(
rootCS
,{
90
_m
,
43.589
_m
,
0
_m
});
Point
p91
(
rootCS
,{
91
_m
,
41.461
_m
,
0
_m
});
Point
p92
(
rootCS
,{
92
_m
,
39.192
_m
,
0
_m
});
Point
p93
(
rootCS
,{
93
_m
,
36.756
_m
,
0
_m
});
Point
p94
(
rootCS
,{
94
_m
,
34.117
_m
,
0
_m
});
Point
p95
(
rootCS
,{
95
_m
,
31.225
_m
,
0
_m
});
Point
p96
(
rootCS
,{
96
_m
,
28
_m
,
0
_m
});
Point
p97
(
rootCS
,{
97
_m
,
24.31
_m
,
0
_m
});
Point
p98
(
rootCS
,{
98
_m
,
19.9
_m
,
0
_m
});
Point
p99
(
rootCS
,{
99
_m
,
14.107
_m
,
0
_m
});
Point
p100
(
rootCS
,{
100
_m
,
0
_m
,
0
_m
});
Point
p101
(
rootCS
,{
99
_m
,
-
14.107
_m
,
0
_m
});
Point
p102
(
rootCS
,{
98
_m
,
-
19.9
_m
,
0
_m
});
Point
p103
(
rootCS
,{
97
_m
,
-
24.31
_m
,
0
_m
});
Point
p104
(
rootCS
,{
96
_m
,
-
28
_m
,
0
_m
});
Point
p105
(
rootCS
,{
95
_m
,
-
31.225
_m
,
0
_m
});
Point
p106
(
rootCS
,{
94
_m
,
-
34.117
_m
,
0
_m
});
Point
p107
(
rootCS
,{
93
_m
,
-
36.756
_m
,
0
_m
});
Point
p108
(
rootCS
,{
92
_m
,
-
39.192
_m
,
0
_m
});
Point
p109
(
rootCS
,{
91
_m
,
-
41.461
_m
,
0
_m
});
Point
p110
(
rootCS
,{
90
_m
,
-
43.589
_m
,
0
_m
});
Point
p111
(
rootCS
,{
89
_m
,
-
45.596
_m
,
0
_m
});
Point
p112
(
rootCS
,{
88
_m
,
-
47.497
_m
,
0
_m
});
Point
p113
(
rootCS
,{
87
_m
,
-
49.305
_m
,
0
_m
});
Point
p114
(
rootCS
,{
86
_m
,
-
51.029
_m
,
0
_m
});
Point
p115
(
rootCS
,{
85
_m
,
-
52.678
_m
,
0
_m
});
Point
p116
(
rootCS
,{
84
_m
,
-
54.259
_m
,
0
_m
});
Point
p117
(
rootCS
,{
83
_m
,
-
55.776
_m
,
0
_m
});
Point
p118
(
rootCS
,{
82
_m
,
-
57.236
_m
,
0
_m
});
Point
p119
(
rootCS
,{
81
_m
,
-
58.643
_m
,
0
_m
});
Point
p120
(
rootCS
,{
80
_m
,
-
60
_m
,
0
_m
});
Point
p121
(
rootCS
,{
79
_m
,
-
61.311
_m
,
0
_m
});
Point
p122
(
rootCS
,{
78
_m
,
-
62.578
_m
,
0
_m
});
Point
p123
(
rootCS
,{
77
_m
,
-
63.804
_m
,
0
_m
});
Point
p124
(
rootCS
,{
76
_m
,
-
64.992
_m
,
0
_m
});
Point
p125
(
rootCS
,{
75
_m
,
-
66.144
_m
,
0
_m
});
Point
p126
(
rootCS
,{
74
_m
,
-
67.261
_m
,
0
_m
});
Point
p127
(
rootCS
,{
73
_m
,
-
68.345
_m
,
0
_m
});
Point
p128
(
rootCS
,{
72
_m
,
-
69.397
_m
,
0
_m
});
Point
p129
(
rootCS
,{
71
_m
,
-
70.42
_m
,
0
_m
});
Point
p130
(
rootCS
,{
70
_m
,
-
71.414
_m
,
0
_m
});
Point
p131
(
rootCS
,{
69
_m
,
-
72.476
_m
,
0
_m
});
Point
p132
(
rootCS
,{
68
_m
,
-
73.321
_m
,
0
_m
});
Point
p133
(
rootCS
,{
67
_m
,
-
74.236
_m
,
0
_m
});
Point
p134
(
rootCS
,{
66
_m
,
-
75.127
_m
,
0
_m
});
Point
p135
(
rootCS
,{
65
_m
,
-
75.993
_m
,
0
_m
});
Point
p136
(
rootCS
,{
64
_m
,
-
76.837
_m
,
0
_m
});
Point
p137
(
rootCS
,{
63
_m
,
-
77.66
_m
,
0
_m
});
Point
p138
(
rootCS
,{
62
_m
,
-
78.46
_m
,
0
_m
});
Point
p139
(
rootCS
,{
61
_m
,
-
79.24
_m
,
0
_m
});
Point
p140
(
rootCS
,{
60
_m
,
-
80
_m
,
0
_m
});
Point
p141
(
rootCS
,{
59
_m
,
-
80.74
_m
,
0
_m
});
Point
p142
(
rootCS
,{
58
_m
,
-
81.462
_m
,
0
_m
});
Point
p143
(
rootCS
,{
57
_m
,
-
82.164
_m
,
0
_m
});
Point
p144
(
rootCS
,{
56
_m
,
-
82.849
_m
,
0
_m
});
Point
p145
(
rootCS
,{
55
_m
,
-
83.516
_m
,
0
_m
});
Point
p146
(
rootCS
,{
54
_m
,
-
84.167
_m
,
0
_m
});
Point
p147
(
rootCS
,{
53
_m
,
-
84.8
_m
,
0
_m
});
Point
p148
(
rootCS
,{
52
_m
,
-
85.417
_m
,
0
_m
});
Point
p149
(
rootCS
,{
51
_m
,
-
86.017
_m
,
0
_m
});
Point
p150
(
rootCS
,{
50
_m
,
-
86.603
_m
,
0
_m
});
Point
p151
(
rootCS
,{
49
_m
,
-
87.171
_m
,
0
_m
});
Point
p152
(
rootCS
,{
48
_m
,
-
87.727
_m
,
0
_m
});
Point
p153
(
rootCS
,{
47
_m
,
-
88.267
_m
,
0
_m
});
Point
p154
(
rootCS
,{
46
_m
,
-
88.792
_m
,
0
_m
});
Point
p155
(
rootCS
,{
45
_m
,
-
89.303
_m
,
0
_m
});
Point
p156
(
rootCS
,{
44
_m
,
-
89.8
_m
,
0
_m
});
Point
p157
(
rootCS
,{
43
_m
,
-
90.283
_m
,
0
_m
});
Point
p158
(
rootCS
,{
42
_m
,
-
90.752
_m
,
0
_m
});
Point
p159
(
rootCS
,{
41
_m
,
-
91.209
_m
,
0
_m
});
Point
p160
(
rootCS
,{
40
_m
,
-
91.652
_m
,
0
_m
});
Point
p161
(
rootCS
,{
39
_m
,
-
92.081
_m
,
0
_m
});
Point
p162
(
rootCS
,{
38
_m
,
-
92.499
_m
,
0
_m
});
Point
p163
(
rootCS
,{
37
_m
,
-
92.903
_m
,
0
_m
});
Point
p164
(
rootCS
,{
36
_m
,
-
93.295
_m
,
0
_m
});
Point
p165
(
rootCS
,{
35
_m
,
-
93.675
_m
,
0
_m
});
Point
p166
(
rootCS
,{
34
_m
,
-
94.043
_m
,
0
_m
});
Point
p167
(
rootCS
,{
33
_m
,
-
94.398
_m
,
0
_m
});
Point
p168
(
rootCS
,{
32
_m
,
-
94.742
_m
,
0
_m
});
Point
p169
(
rootCS
,{
31
_m
,
-
95.074
_m
,
0
_m
});
Point
p170
(
rootCS
,{
30
_m
,
-
95.394
_m
,
0
_m
});
Point
p171
(
rootCS
,{
29
_m
,
-
95.703
_m
,
0
_m
});
Point
p172
(
rootCS
,{
28
_m
,
-
96
_m
,
0
_m
});
Point
p173
(
rootCS
,{
27
_m
,
-
96.286
_m
,
0
_m
});
Point
p174
(
rootCS
,{
26
_m
,
-
96.561
_m
,
0
_m
});
Point
p175
(
rootCS
,{
25
_m
,
-
96.825
_m
,
0
_m
});
Point
p176
(
rootCS
,{
24
_m
,
-
97.077
_m
,
0
_m
});
Point
p177
(
rootCS
,{
23
_m
,
-
97.319
_m
,
0
_m
});
Point
p178
(
rootCS
,{
22
_m
,
-
97.55
_m
,
0
_m
});
Point
p179
(
rootCS
,{
21
_m
,
-
97.77
_m
,
0
_m
});
Point
p180
(
rootCS
,{
20
_m
,
-
97.98
_m
,
0
_m
});
Point
p181
(
rootCS
,{
19
_m
,
-
98.178
_m
,
0
_m
});
Point
p182
(
rootCS
,{
18
_m
,
-
98.367
_m
,
0
_m
});
Point
p183
(
rootCS
,{
17
_m
,
-
98.544
_m
,
0
_m
});
Point
p184
(
rootCS
,{
16
_m
,
-
98.712
_m
,
0
_m
});
Point
p185
(
rootCS
,{
15
_m
,
-
98.869
_m
,
0
_m
});
Point
p186
(
rootCS
,{
14
_m
,
-
99.015
_m
,
0
_m
});
Point
p187
(
rootCS
,{
13
_m
,
-
99.151
_m
,
0
_m
});
Point
p188
(
rootCS
,{
12
_m
,
-
99.277
_m
,
0
_m
});
Point
p189
(
rootCS
,{
11
_m
,
-
99.393
_m
,
0
_m
});
Point
p190
(
rootCS
,{
10
_m
,
-
99.499
_m
,
0
_m
});
Point
p191
(
rootCS
,{
9
_m
,
-
99.594
_m
,
0
_m
});
Point
p192
(
rootCS
,{
8
_m
,
-
99.679
_m
,
0
_m
});
Point
p193
(
rootCS
,{
7
_m
,
-
99.755
_m
,
0
_m
});
Point
p194
(
rootCS
,{
6
_m
,
-
99.82
_m
,
0
_m
});
Point
p195
(
rootCS
,{
5
_m
,
-
99.875
_m
,
0
_m
});
Point
p196
(
rootCS
,{
4
_m
,
-
99.92
_m
,
0
_m
});
Point
p197
(
rootCS
,{
3
_m
,
-
99.955
_m
,
0
_m
});
Point
p198
(
rootCS
,{
2
_m
,
-
99.98
_m
,
0
_m
});
Point
p199
(
rootCS
,{
1
_m
,
-
99.995
_m
,
0
_m
});
Point
p200
(
rootCS
,{
0
_m
,
-
100
_m
,
0
_m
});
Point
p201
(
rootCS
,{
-
1
_m
,
-
99.995
_m
,
0
_m
});
Point
p202
(
rootCS
,{
-
2
_m
,
-
99.98
_m
,
0
_m
});
Point
p203
(
rootCS
,{
-
3
_m
,
-
99.955
_m
,
0
_m
});
Point
p204
(
rootCS
,{
-
4
_m
,
-
99.92
_m
,
0
_m
});
Point
p205
(
rootCS
,{
-
5
_m
,
-
99.875
_m
,
0
_m
});
Point
p206
(
rootCS
,{
-
6
_m
,
-
99.82
_m
,
0
_m
});
Point
p207
(
rootCS
,{
-
7
_m
,
-
99.755
_m
,
0
_m
});
Point
p208
(
rootCS
,{
-
8
_m
,
-
99.679
_m
,
0
_m
});
Point
p209
(
rootCS
,{
-
9
_m
,
-
99.594
_m
,
0
_m
});
Point
p210
(
rootCS
,{
-
10
_m
,
-
99.499
_m
,
0
_m
});
Point
p211
(
rootCS
,{
-
11
_m
,
-
99.393
_m
,
0
_m
});
Point
p212
(
rootCS
,{
-
12
_m
,
-
99.277
_m
,
0
_m
});
Point
p213
(
rootCS
,{
-
13
_m
,
-
99.151
_m
,
0
_m
});
Point
p214
(
rootCS
,{
-
14
_m
,
-
99.015
_m
,
0
_m
});
Point
p215
(
rootCS
,{
-
15
_m
,
-
98.869
_m
,
0
_m
});
Point
p216
(
rootCS
,{
-
16
_m
,
-
98.712
_m
,
0
_m
});
Point
p217
(
rootCS
,{
-
17
_m
,
-
98.544
_m
,
0
_m
});
Point
p218
(
rootCS
,{
-
18
_m
,
-
98.367
_m
,
0
_m
});
Point
p219
(
rootCS
,{
-
19
_m
,
-
98.178
_m
,
0
_m
});
Point
p220
(
rootCS
,{
-
20
_m
,
-
97.98
_m
,
0
_m
});
Point
p221
(
rootCS
,{
-
21
_m
,
-
97.77
_m
,
0
_m
});
Point
p222
(
rootCS
,{
-
22
_m
,
-
97.55
_m
,
0
_m
});
Point
p223
(
rootCS
,{
-
23
_m
,
-
97.319
_m
,
0
_m
});
Point
p224
(
rootCS
,{
-
24
_m
,
-
97.077
_m
,
0
_m
});
Point
p225
(
rootCS
,{
-
25
_m
,
-
96.825
_m
,
0
_m
});
Point
p226
(
rootCS
,{
-
26
_m
,
-
96.561
_m
,
0
_m
});
Point
p227
(
rootCS
,{
-
27
_m
,
-
96.286
_m
,
0
_m
});
Point
p228
(
rootCS
,{
-
28
_m
,
-
96
_m
,
0
_m
});
Point
p229
(
rootCS
,{
-
29
_m
,
-
95.703
_m
,
0
_m
});
Point
p230
(
rootCS
,{
-
30
_m
,
-
95.394
_m
,
0
_m
});
Point
p231
(
rootCS
,{
-
31
_m
,
-
95.074
_m
,
0
_m
});
Point
p232
(
rootCS
,{
-
32
_m
,
-
94.742
_m
,
0
_m
});
Point
p233
(
rootCS
,{
-
33
_m
,
-
94.398
_m
,
0
_m
});
Point
p234
(
rootCS
,{
-
34
_m
,
-
94.043
_m
,
0
_m
});
Point
p235
(
rootCS
,{
-
35
_m
,
-
93.675
_m
,
0
_m
});
Point
p236
(
rootCS
,{
-
36
_m
,
-
93.295
_m
,
0
_m
});
Point
p237
(
rootCS
,{
-
37
_m
,
-
92.903
_m
,
0
_m
});
Point
p238
(
rootCS
,{
-
38
_m
,
-
92.499
_m
,
0
_m
});
Point
p239
(
rootCS
,{
-
39
_m
,
-
92.081
_m
,
0
_m
});
Point
p240
(
rootCS
,{
-
40
_m
,
-
91.652
_m
,
0
_m
});
Point
p241
(
rootCS
,{
-
41
_m
,
-
91.209
_m
,
0
_m
});
Point
p242
(
rootCS
,{
-
42
_m
,
-
90.752
_m
,
0
_m
});
Point
p243
(
rootCS
,{
-
43
_m
,
-
90.283
_m
,
0
_m
});
Point
p244
(
rootCS
,{
-
44
_m
,
-
89.8
_m
,
0
_m
});
Point
p245
(
rootCS
,{
-
45
_m
,
-
89.303
_m
,
0
_m
});
Point
p246
(
rootCS
,{
-
46
_m
,
-
88.792
_m
,
0
_m
});
Point
p247
(
rootCS
,{
-
47
_m
,
-
88.267
_m
,
0
_m
});
Point
p248
(
rootCS
,{
-
48
_m
,
-
87.727
_m
,
0
_m
});
Point
p249
(
rootCS
,{
-
49
_m
,
-
87.171
_m
,
0
_m
});
Point
p250
(
rootCS
,{
-
50
_m
,
-
86.603
_m
,
0
_m
});
Point
p251
(
rootCS
,{
-
51
_m
,
-
86.017
_m
,
0
_m
});
Point
p252
(
rootCS
,{
-
52
_m
,
-
85.417
_m
,
0
_m
});
Point
p253
(
rootCS
,{
-
53
_m
,
-
84.8
_m
,
0
_m
});
Point
p254
(
rootCS
,{
-
54
_m
,
-
84.167
_m
,
0
_m
});
Point
p255
(
rootCS
,{
-
55
_m
,
-
83.516
_m
,
0
_m
});
Point
p256
(
rootCS
,{
-
56
_m
,
-
82.849
_m
,
0
_m
});
Point
p257
(
rootCS
,{
-
57
_m
,
-
82.164
_m
,
0
_m
});
Point
p258
(
rootCS
,{
-
58
_m
,
-
81.462
_m
,
0
_m
});
Point
p259
(
rootCS
,{
-
59
_m
,
-
80.74
_m
,
0
_m
});
Point
p260
(
rootCS
,{
-
60
_m
,
-
80
_m
,
0
_m
});
Point
p261
(
rootCS
,{
-
61
_m
,
-
79.24
_m
,
0
_m
});
Point
p262
(
rootCS
,{
-
62
_m
,
-
78.46
_m
,
0
_m
});
Point
p263
(
rootCS
,{
-
63
_m
,
-
77.66
_m
,
0
_m
});
Point
p264
(
rootCS
,{
-
64
_m
,
-
76.837
_m
,
0
_m
});
Point
p265
(
rootCS
,{
-
65
_m
,
-
75.993
_m
,
0
_m
});
Point
p266
(
rootCS
,{
-
66
_m
,
-
75.127
_m
,
0
_m
});
Point
p267
(
rootCS
,{
-
67
_m
,
-
74.236
_m
,
0
_m
});
Point
p268
(
rootCS
,{
-
68
_m
,
-
73.321
_m
,
0
_m
});
Point
p269
(
rootCS
,{
-
69
_m
,
-
72.476
_m
,
0
_m
});
Point
p270
(
rootCS
,{
-
70
_m
,
-
71.414
_m
,
0
_m
});
Point
p271
(
rootCS
,{
-
71
_m
,
-
70.42
_m
,
0
_m
});
Point
p272
(
rootCS
,{
-
72
_m
,
-
69.397
_m
,
0
_m
});
Point
p273
(
rootCS
,{
-
73
_m
,
-
68.345
_m
,
0
_m
});
Point
p274
(
rootCS
,{
-
74
_m
,
-
67.261
_m
,
0
_m
});
Point
p275
(
rootCS
,{
-
75
_m
,
-
66.144
_m
,
0
_m
});
Point
p276
(
rootCS
,{
-
76
_m
,
-
64.992
_m
,
0
_m
});
Point
p277
(
rootCS
,{
-
77
_m
,
-
63.804
_m
,
0
_m
});
Point
p278
(
rootCS
,{
-
78
_m
,
-
62.578
_m
,
0
_m
});
Point
p279
(
rootCS
,{
-
79
_m
,
-
61.311
_m
,
0
_m
});
Point
p280
(
rootCS
,{
-
80
_m
,
-
60
_m
,
0
_m
});
Point
p281
(
rootCS
,{
-
81
_m
,
-
58.643
_m
,
0
_m
});
Point
p282
(
rootCS
,{
-
82
_m
,
-
57.236
_m
,
0
_m
});
Point
p283
(
rootCS
,{
-
83
_m
,
-
55.776
_m
,
0
_m
});
Point
p284
(
rootCS
,{
-
84
_m
,
-
54.259
_m
,
0
_m
});
Point
p285
(
rootCS
,{
-
85
_m
,
-
52.678
_m
,
0
_m
});
Point
p286
(
rootCS
,{
-
86
_m
,
-
51.029
_m
,
0
_m
});
Point
p287
(
rootCS
,{
-
87
_m
,
-
49.305
_m
,
0
_m
});
Point
p288
(
rootCS
,{
-
88
_m
,
-
47.497
_m
,
0
_m
});
Point
p289
(
rootCS
,{
-
89
_m
,
-
45.596
_m
,
0
_m
});
Point
p290
(
rootCS
,{
-
90
_m
,
-
43.589
_m
,
0
_m
});
Point
p291
(
rootCS
,{
-
91
_m
,
-
41.461
_m
,
0
_m
});
Point
p292
(
rootCS
,{
-
92
_m
,
-
39.192
_m
,
0
_m
});
Point
p293
(
rootCS
,{
-
93
_m
,
-
36.756
_m
,
0
_m
});
Point
p294
(
rootCS
,{
-
94
_m
,
-
34.117
_m
,
0
_m
});
Point
p295
(
rootCS
,{
-
95
_m
,
-
31.225
_m
,
0
_m
});
Point
p296
(
rootCS
,{
-
96
_m
,
-
28
_m
,
0
_m
});
Point
p297
(
rootCS
,{
-
97
_m
,
-
24.31
_m
,
0
_m
});
Point
p298
(
rootCS
,{
-
98
_m
,
-
19.9
_m
,
0
_m
});
Point
p299
(
rootCS
,{
-
99
_m
,
-
14.107
_m
,
0
_m
});
Point
p300
(
rootCS
,{
-
100
_m
,
0
_m
,
0
_m
});
Point
p301
(
rootCS
,{
-
99
_m
,
14.107
_m
,
0
_m
});
Point
p302
(
rootCS
,{
-
98
_m
,
19.9
_m
,
0
_m
});
Point
p303
(
rootCS
,{
-
97
_m
,
24.31
_m
,
0
_m
});
Point
p304
(
rootCS
,{
-
96
_m
,
28
_m
,
0
_m
});
Point
p305
(
rootCS
,{
-
95
_m
,
31.225
_m
,
0
_m
});
Point
p306
(
rootCS
,{
-
94
_m
,
34.117
_m
,
0
_m
});
Point
p307
(
rootCS
,{
-
93
_m
,
36.756
_m
,
0
_m
});
Point
p308
(
rootCS
,{
-
92
_m
,
39.192
_m
,
0
_m
});
Point
p309
(
rootCS
,{
-
91
_m
,
41.461
_m
,
0
_m
});
Point
p310
(
rootCS
,{
-
90
_m
,
43.589
_m
,
0
_m
});
Point
p311
(
rootCS
,{
-
89
_m
,
45.596
_m
,
0
_m
});
Point
p312
(
rootCS
,{
-
88
_m
,
47.497
_m
,
0
_m
});
Point
p313
(
rootCS
,{
-
87
_m
,
49.305
_m
,
0
_m
});
Point
p314
(
rootCS
,{
-
86
_m
,
51.029
_m
,
0
_m
});
Point
p315
(
rootCS
,{
-
85
_m
,
52.678
_m
,
0
_m
});
Point
p316
(
rootCS
,{
-
84
_m
,
54.259
_m
,
0
_m
});
Point
p317
(
rootCS
,{
-
83
_m
,
55.776
_m
,
0
_m
});
Point
p318
(
rootCS
,{
-
82
_m
,
57.236
_m
,
0
_m
});
Point
p319
(
rootCS
,{
-
81
_m
,
58.643
_m
,
0
_m
});
Point
p320
(
rootCS
,{
-
80
_m
,
60
_m
,
0
_m
});
Point
p321
(
rootCS
,{
-
79
_m
,
61.311
_m
,
0
_m
});
Point
p322
(
rootCS
,{
-
78
_m
,
62.578
_m
,
0
_m
});
Point
p323
(
rootCS
,{
-
77
_m
,
63.804
_m
,
0
_m
});
Point
p324
(
rootCS
,{
-
76
_m
,
64.992
_m
,
0
_m
});
Point
p325
(
rootCS
,{
-
75
_m
,
66.144
_m
,
0
_m
});
Point
p326
(
rootCS
,{
-
74
_m
,
67.261
_m
,
0
_m
});
Point
p327
(
rootCS
,{
-
73
_m
,
68.345
_m
,
0
_m
});
Point
p328
(
rootCS
,{
-
72
_m
,
69.397
_m
,
0
_m
});
Point
p329
(
rootCS
,{
-
71
_m
,
70.42
_m
,
0
_m
});
Point
p330
(
rootCS
,{
-
70
_m
,
71.414
_m
,
0
_m
});
Point
p331
(
rootCS
,{
-
69
_m
,
72.476
_m
,
0
_m
});
Point
p332
(
rootCS
,{
-
68
_m
,
73.321
_m
,
0
_m
});
Point
p333
(
rootCS
,{
-
67
_m
,
74.236
_m
,
0
_m
});
Point
p334
(
rootCS
,{
-
66
_m
,
75.127
_m
,
0
_m
});
Point
p335
(
rootCS
,{
-
65
_m
,
75.993
_m
,
0
_m
});
Point
p336
(
rootCS
,{
-
64
_m
,
76.837
_m
,
0
_m
});
Point
p337
(
rootCS
,{
-
63
_m
,
77.66
_m
,
0
_m
});
Point
p338
(
rootCS
,{
-
62
_m
,
78.46
_m
,
0
_m
});
Point
p339
(
rootCS
,{
-
61
_m
,
79.24
_m
,
0
_m
});
Point
p340
(
rootCS
,{
-
60
_m
,
80
_m
,
0
_m
});
Point
p341
(
rootCS
,{
-
59
_m
,
80.74
_m
,
0
_m
});
Point
p342
(
rootCS
,{
-
58
_m
,
81.462
_m
,
0
_m
});
Point
p343
(
rootCS
,{
-
57
_m
,
82.164
_m
,
0
_m
});
Point
p344
(
rootCS
,{
-
56
_m
,
82.849
_m
,
0
_m
});
Point
p345
(
rootCS
,{
-
55
_m
,
83.516
_m
,
0
_m
});
Point
p346
(
rootCS
,{
-
54
_m
,
84.167
_m
,
0
_m
});
Point
p347
(
rootCS
,{
-
53
_m
,
84.8
_m
,
0
_m
});
Point
p348
(
rootCS
,{
-
52
_m
,
85.417
_m
,
0
_m
});
Point
p349
(
rootCS
,{
-
51
_m
,
86.017
_m
,
0
_m
});
Point
p350
(
rootCS
,{
-
50
_m
,
86.603
_m
,
0
_m
});
Point
p351
(
rootCS
,{
-
49
_m
,
87.171
_m
,
0
_m
});
Point
p352
(
rootCS
,{
-
48
_m
,
87.727
_m
,
0
_m
});
Point
p353
(
rootCS
,{
-
47
_m
,
88.267
_m
,
0
_m
});
Point
p354
(
rootCS
,{
-
46
_m
,
88.792
_m
,
0
_m
});
Point
p355
(
rootCS
,{
-
45
_m
,
89.303
_m
,
0
_m
});
Point
p356
(
rootCS
,{
-
44
_m
,
89.8
_m
,
0
_m
});
Point
p357
(
rootCS
,{
-
43
_m
,
90.283
_m
,
0
_m
});
Point
p358
(
rootCS
,{
-
42
_m
,
90.752
_m
,
0
_m
});
Point
p359
(
rootCS
,{
-
41
_m
,
91.209
_m
,
0
_m
});
Point
p360
(
rootCS
,{
-
40
_m
,
91.652
_m
,
0
_m
});
Point
p361
(
rootCS
,{
-
39
_m
,
92.081
_m
,
0
_m
});
Point
p362
(
rootCS
,{
-
38
_m
,
92.499
_m
,
0
_m
});
Point
p363
(
rootCS
,{
-
37
_m
,
92.903
_m
,
0
_m
});
Point
p364
(
rootCS
,{
-
36
_m
,
93.295
_m
,
0
_m
});
Point
p365
(
rootCS
,{
-
35
_m
,
93.675
_m
,
0
_m
});
Point
p366
(
rootCS
,{
-
34
_m
,
94.043
_m
,
0
_m
});
Point
p367
(
rootCS
,{
-
33
_m
,
94.398
_m
,
0
_m
});
Point
p368
(
rootCS
,{
-
32
_m
,
94.742
_m
,
0
_m
});
Point
p369
(
rootCS
,{
-
31
_m
,
95.074
_m
,
0
_m
});
Point
p370
(
rootCS
,{
-
30
_m
,
95.394
_m
,
0
_m
});
Point
p371
(
rootCS
,{
-
29
_m
,
95.703
_m
,
0
_m
});
Point
p372
(
rootCS
,{
-
28
_m
,
96
_m
,
0
_m
});
Point
p373
(
rootCS
,{
-
27
_m
,
96.286
_m
,
0
_m
});
Point
p374
(
rootCS
,{
-
26
_m
,
96.561
_m
,
0
_m
});
Point
p375
(
rootCS
,{
-
25
_m
,
96.825
_m
,
0
_m
});
Point
p376
(
rootCS
,{
-
24
_m
,
97.077
_m
,
0
_m
});
Point
p377
(
rootCS
,{
-
23
_m
,
97.319
_m
,
0
_m
});
Point
p378
(
rootCS
,{
-
22
_m
,
97.55
_m
,
0
_m
});
Point
p379
(
rootCS
,{
-
21
_m
,
97.77
_m
,
0
_m
});
Point
p380
(
rootCS
,{
-
20
_m
,
97.98
_m
,
0
_m
});
Point
p381
(
rootCS
,{
-
19
_m
,
98.178
_m
,
0
_m
});
Point
p382
(
rootCS
,{
-
18
_m
,
98.367
_m
,
0
_m
});
Point
p383
(
rootCS
,{
-
17
_m
,
98.544
_m
,
0
_m
});
Point
p384
(
rootCS
,{
-
16
_m
,
98.712
_m
,
0
_m
});
Point
p385
(
rootCS
,{
-
15
_m
,
98.869
_m
,
0
_m
});
Point
p386
(
rootCS
,{
-
14
_m
,
99.015
_m
,
0
_m
});
Point
p387
(
rootCS
,{
-
13
_m
,
99.151
_m
,
0
_m
});
Point
p388
(
rootCS
,{
-
12
_m
,
99.277
_m
,
0
_m
});
Point
p389
(
rootCS
,{
-
11
_m
,
99.393
_m
,
0
_m
});
Point
p390
(
rootCS
,{
-
10
_m
,
99.499
_m
,
0
_m
});
Point
p391
(
rootCS
,{
-
9
_m
,
99.594
_m
,
0
_m
});
Point
p392
(
rootCS
,{
-
8
_m
,
99.679
_m
,
0
_m
});
Point
p393
(
rootCS
,{
-
7
_m
,
99.755
_m
,
0
_m
});
Point
p394
(
rootCS
,{
-
6
_m
,
99.82
_m
,
0
_m
});
Point
p395
(
rootCS
,{
-
5
_m
,
99.875
_m
,
0
_m
});
Point
p396
(
rootCS
,{
-
4
_m
,
99.92
_m
,
0
_m
});
Point
p397
(
rootCS
,{
-
3
_m
,
99.955
_m
,
0
_m
});
Point
p398
(
rootCS
,{
-
2
_m
,
99.98
_m
,
0
_m
});
Point
p399
(
rootCS
,{
-
1
_m
,
99.995
_m
,
0
_m
});
// Point p400(rootCS,{0_m,100_m, 0_m}); // same as p0
VelocityVector
v0
(
rootCSCoREAS
,
{
5e+2
_m
/
second
,
5e+2
_m
/
second
,
5e+2
_m
/
second
});
// store all the points in a std::array
std
::
array
<
Point
,
400
>
points_
{
p0
,
p1
,
p2
,
p3
,
p4
,
p5
,
p6
,
p7
,
p8
,
p9
,
p10
,
p11
,
p12
,
p13
,
p14
,
p15
,
p16
,
p17
,
p18
,
p19
,
p20
,
p21
,
p22
,
p23
,
p24
,
p25
,
p26
,
p27
,
p28
,
p29
,
p30
,
p31
,
p32
,
p33
,
p34
,
p35
,
p36
,
p37
,
p38
,
p39
,
p40
,
p41
,
p42
,
p43
,
p44
,
p45
,
p46
,
p47
,
p48
,
p49
,
p50
,
p51
,
p52
,
p53
,
p54
,
p55
,
p56
,
p57
,
p58
,
p59
,
p60
,
p61
,
p62
,
p63
,
p64
,
p65
,
p66
,
p67
,
p68
,
p69
,
p70
,
p71
,
p72
,
p73
,
p74
,
p75
,
p76
,
p77
,
p78
,
p79
,
p80
,
p81
,
p82
,
p83
,
p84
,
p85
,
p86
,
p87
,
p88
,
p89
,
p90
,
p91
,
p92
,
p93
,
p94
,
p95
,
p96
,
p97
,
p98
,
p99
,
p100
,
p101
,
p102
,
p103
,
p104
,
p105
,
p106
,
p107
,
p108
,
p109
,
p110
,
p111
,
p112
,
p113
,
p114
,
p115
,
p116
,
p117
,
p118
,
p119
,
p120
,
p121
,
p122
,
p123
,
p124
,
p125
,
p126
,
p127
,
p128
,
p129
,
p130
,
p131
,
p132
,
p133
,
p134
,
p135
,
p136
,
p137
,
p138
,
p139
,
p140
,
p141
,
p142
,
p143
,
p144
,
p145
,
p146
,
p147
,
p148
,
p149
,
p150
,
p151
,
p152
,
p153
,
p154
,
p155
,
p156
,
p157
,
p158
,
p159
,
p160
,
p161
,
p162
,
p163
,
p164
,
p165
,
p166
,
p167
,
p168
,
p169
,
p170
,
p171
,
p172
,
p173
,
p174
,
p175
,
p176
,
p177
,
p178
,
p179
,
p180
,
p181
,
p182
,
p183
,
p184
,
p185
,
p186
,
p187
,
p188
,
p189
,
p190
,
p191
,
p192
,
p193
,
p194
,
p195
,
p196
,
p197
,
p198
,
p199
,
p200
,
p201
,
p202
,
p203
,
p204
,
p205
,
p206
,
p207
,
p208
,
p209
,
p210
,
p211
,
p212
,
p213
,
p214
,
p215
,
p216
,
p217
,
p218
,
p219
,
p220
,
p221
,
p222
,
p223
,
p224
,
p225
,
p226
,
p227
,
p228
,
p229
,
p230
,
p231
,
p232
,
p233
,
p234
,
p235
,
p236
,
p237
,
p238
,
p239
,
p240
,
p241
,
p242
,
p243
,
p244
,
p245
,
p246
,
p247
,
p248
,
p249
,
p250
,
p251
,
p252
,
p253
,
p254
,
p255
,
p256
,
p257
,
p258
,
p259
,
p260
,
p261
,
p262
,
p263
,
p264
,
p265
,
p266
,
p267
,
p268
,
p269
,
p270
,
p271
,
p272
,
p273
,
p274
,
p275
,
p276
,
p277
,
p278
,
p279
,
p280
,
p281
,
p282
,
p283
,
p284
,
p285
,
p286
,
p287
,
p288
,
p289
,
p290
,
p291
,
p292
,
p293
,
p294
,
p295
,
p296
,
p297
,
p298
,
p299
,
p300
,
p301
,
p302
,
p303
,
p304
,
p305
,
p306
,
p307
,
p308
,
p309
,
p310
,
p311
,
p312
,
p313
,
p314
,
p315
,
p316
,
p317
,
p318
,
p319
,
p320
,
p321
,
p322
,
p323
,
p324
,
p325
,
p326
,
p327
,
p328
,
p329
,
p330
,
p331
,
p332
,
p333
,
p334
,
p335
,
p336
,
p337
,
p338
,
p339
,
p340
,
p341
,
p342
,
p343
,
p344
,
p345
,
p346
,
p347
,
p348
,
p349
,
p350
,
p351
,
p352
,
p353
,
p354
,
p355
,
p356
,
p357
,
p358
,
p359
,
p360
,
p361
,
p362
,
p363
,
p364
,
p365
,
p366
,
p367
,
p368
,
p369
,
p370
,
p371
,
p372
,
p373
,
p374
,
p375
,
p376
,
p377
,
p378
,
p379
,
p380
,
p381
,
p382
,
p383
,
p384
,
p385
,
p386
,
p387
,
p388
,
p389
,
p390
,
p391
,
p392
,
p393
,
p394
,
p395
,
p396
,
p397
,
p398
,
p399
};
Vector
B0
(
rootCSCoREAS
,
5
_T
,
5
_T
,
5
_T
)
;
std
::
vector
<
TimeType
>
times_
;
Line
const
line
(
point3
,
v0
);
// create a particle /////////////////////////////////////////////////////////////
auto
const
particle
{
Code
::
Electron
};
auto
const
k
{
1
_m
*
((
1
_m
)
/
((
1
_s
*
1
_s
)
*
1
_V
))};
const
auto
pmass
{
get_mass
(
particle
)};
auto
const
t
=
1
_s
;
LeapFrogTrajectory
base
(
point4
,
v0
,
B0
,
k
,
t
);
// create a new stack for each trial
// create a new stack for each trial
setup
::
Stack
stack
;
setup
::
Stack
stack
;
// construct an energy
// construct an energy
// move in the for loop
const
HEPEnergyType
E0
{
1
_T
eV
};
const
HEPEnergyType
E0
{
1
1.4
_M
eV
};
// compute the necessary momentum
n
// compute the necessary momentum
// move in the for loop
const
HEPMomentumType
P0
{
sqrt
(
E0
*
E0
-
pmass
*
pmass
)};
const
HEPMomentumType
P0
{
sqrt
(
E0
*
E0
-
pmass
*
pmass
)};
// and create the momentum vector
// and create the momentum vector
const
auto
plab
{
MomentumVector
(
rootCSCoREAS
,
{
0
_GeV
,
0
_GeV
,
P0
})};
const
auto
plab
{
MomentumVector
(
rootCS
,
{
0
_GeV
,
0
_GeV
,
P0
})};
// and create the location of the particle in this coordinate system
const
Point
pos
(
rootCSCoREAS
,
50
_m
,
10
_m
,
80
_m
);
// add the particle to the stack
// create a radio process instance using CoREAS
auto
const
particle1
{
stack
.
addParticle
(
std
::
make_tuple
(
particle
,
E0
,
plab
,
pos
,
0
_ns
))};
RadioProcess
<
decltype
(
detector
),
CoREAS
<
decltype
(
detector
),
decltype
(
StraightPropagator
(
env
))
>
,
decltype
(
StraightPropagator
(
env
))
>
coreas
(
detector
,
env
);
auto
const
charge_
{
get_charge
(
particle1
.
getPID
())};
// std::cout << "charge: " << charge_ << std::endl;
// std::cout << "1 / c: " << 1. / constants::c << std::endl;
// set up a track object
// setup::Tracking tracking;
// auto startPoint_ {base.getPosition(0)};
// loop over all the tracks except the last one
// auto midPoint_ {base.getPosition(0.5)};
for
(
size_t
i
=
1
;
i
<=
399
;
i
++
)
{
// auto endPoint_ {base.getPosition(1)};
TimeType
t
{(
points_
[
i
]
-
points_
[
i
-
1
]).
getNorm
()
/
(
0.999
*
constants
::
c
)};
// std::cout << "startPoint_: " << startPoint_ << std::endl;
VelocityVector
v
{
(
points_
[
i
]
-
points_
[
i
-
1
])
/
t
};
// std::cout << "midPoint_: " << midPoint_ << std::endl;
Line
l
{
points_
[
i
-
1
],
v
};
// std::cout << "endPoint_: " << endPoint_ << std::endl;
StraightTrajectory
track
{
l
,
t
};
auto
const
particle1
{
stack
.
addParticle
(
std
::
make_tuple
(
particle
,
E0
,
plab
,
points_
[
i
-
1
],
t
))};
//TODO: plab is inconsistent
coreas
.
doContinuous
(
particle1
,
track
,
true
);
}
// auto velo_ {base.getVelocity(0)};
// std::cout << "velocity: " << velo_ << std::endl;
//
auto startTime_ {particle1.getTime() - base.getDuration()}; // time at the start point of the track hopefully.
// get the last track
//
auto endTime_ {particle1.getTime(
)};
TimeType
t
{(
points_
[
0
]
-
points_
[
399
]).
getNorm
()
/
(
0.999
*
constants
::
c
)};
//
std::cout << "startTime_: " << startTime_ << std::endl
;
VelocityVector
v
{
(
points_
[
0
]
-
points_
[
399
])
/
t
}
;
//
std::cout << "endTime_: " << endTime_ << std::endl
;
Line
l
{
points_
[
399
],
v
}
;
//
StraightTrajectory
track
{
l
,
t
};
//
auto
beta_ {((endPoint_ - startPoint_) / (constants::c * (endTime_ - startTime_))).normalized(
)};
auto
const
particle1
{
stack
.
addParticle
(
std
::
make_tuple
(
particle
,
E0
,
plab
,
points_
[
399
],
t
)
)};
//
std::cout << "beta_: " << beta_ << std::endl
;
coreas
.
doContinuous
(
particle1
,
track
,
true
)
;
// Vector<dimensionless_d> v1(rootCSCoREAS, {0, 0, 1});
// get the output
// std::cout << "v1: " << v1.getComponents() << std::endl;
coreas
.
writeOutput
();
//
// std::cout << "beta_.dot(v1): " << beta_.dot(v1) << std::endl;
//
// std::cout << "Pi: " << 1/M_PI << std::endl;
//
// std::cout << "speed of light: " << constants::c << std::endl;
//
// std::cout << "vacuum permitivity: " << constants::epsilonZero << std::endl;
// Create a CoREAS instance
// CoREAS<decltype(detector), decltype(StraightPropagator(envCoREAS))> coreas1(detector, envCoREAS);
// create a radio process instance using CoREAS
RadioProcess
<
decltype
(
detector
),
CoREAS
<
decltype
(
detector
),
decltype
(
StraightPropagator
(
envCoREAS
))
>
,
decltype
(
StraightPropagator
(
envCoREAS
))
>
coreas
(
detector
,
envCoREAS
);
// check doContinuous and simulate methods
// VelocityVector v0 {(p1 - p0) / 1_s}; //v = ((x1 - x2) + (y1 - y2)) / dt
coreas
.
doContinuous
(
particle1
,
base
,
true
);
// Line l1{p0,v0};
// coreas1.simulate(particle1, base);
// StraightTrajectory st0 {l1,1_s};
// std::cout << times_.size() << std::endl;
// check writeOutput method -> should produce 2 csv files for each antenna
// next step is to connect these points with straight trajectories
coreas
.
writeOutput
();
}
}
// SECTION("TimeDomainAntenna") {
// SECTION("TimeDomainAntenna") {
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment