Discuss the design of IO classes
This is an issue to discuss the future design of IO classes (Event
, Particles
, Tracks
, Photons
).
First we need to define current uses of these classes, and possible future uses.
I'll try to summarize all I see about these classes, please correct me if I miss or misunderstand anything.
Current usage
Event
class
is the main container for all data produced in the simulation.
- created in NTSim loop
- read & modified by most of the other modules (which read&write class attributes)
Particles
class
contains the info about the primary & secondary particles: starting points & energies etc.
-
"Primary"
- created in
ToyGen
or otherPrimaryGenerators
- appended in
PrimaryPropagator
with particles produced by g4 - read by
PrimaryPropagator
to set initial positions in g4 simulation
- created in
-
"g4_cascade_starters"
- created by
PrimaryPropagator
when a particle passes certain conditions - read by
CherenkovGenerator
to create photons based on thecherenkov_cascade
parameterizatrion
- created by
Tracks
class
contains info about each particle trajectory step
- "g4_tracks" created by
PrimaryPropagator
- "nu_tracks" created by
nuGenerator
/NuPropagator
- read by
CherenkovGenerator
to create photons based oncherenkov_tracks
parameterization
Photons
class
contains information about photons trajectories (each scattering step)
-
""
created bySolarPhotons
/Laser
/IsotropicSource
-
"g4_photons"
created byParticlePropagator
-
"{label}_{bunch}"
created byCherenkovGenerator
- read and updated by
MCPhotonPropagator
to propagate by a given number of scattering steps - read by
SmartRayTracer
to produce hits
Hits
class
contains information about each photon arriving at the sensitive detector
- produced by
SmartRayTracer
- read by triggers