|
CORSIKA8
0.0.0
The framework to simulate particle cascades for astroparticle physics
|
The cascade namespace assembles all objects needed to simulate full particles cascades. More...
Namespaces | |
| constants | |
| Physical and mathematical constants with units. | |
| history | |
| units | |
| Extension of the phys::units package. | |
Classes | |
| class | BaseExponential |
| This class provides the grammage/length conversion functionality for (locally) flat exponential atmospheres. More... | |
| class | BaseOutput |
| This is the base class for all outputs so that they can be stored in homogeneous containers. More... | |
| struct | BaseProcess |
| Each process in C8 must derive from BaseProcess. More... | |
| class | BaseTabular |
| This class provides the grammage/length conversion functionality for (locally) flat tabulated atmospheres. More... | |
| class | BaseTrajectory |
| A Trajectory is a description of a momvement of an object in three-dimensional space that describes the trajectory (connection between two Points in space), as well as the direction of motion at any given point. More... | |
| class | BaseVector |
| class | BetheBlochPDG |
| PDG2018, passage of particles through matter. More... | |
| class | BoundaryCrossingProcess |
| Processes acting on the particles traversion from one volume into another volume. More... | |
| class | Cascade |
| The Cascade class is constructed from template arguments making it very versatile. More... | |
| class | ClassTimer |
| Measure the runtime of a single class function. More... | |
| class | ClassTimer< TRet(TClass::*)(TArgs...) const, TFuncPtr, TTimer > |
| Specialisation for const member functions. More... | |
| class | ClassTimer< TRet(TClass::*)(TArgs...), TFuncPtr, TTimer > |
| Measure the runtime of a single class function. More... | |
| class | ClassTimer< void(TClass::*)(TArgs...) const, TFuncPtr, TTimer > |
| Specialisation for const member functions without return value. More... | |
| class | ClassTimer< void(TClass::*)(TArgs...), TFuncPtr, TTimer > |
| Specialisation for member functions without return value. More... | |
| class | ClassTimerImpl |
| struct | CombinedParticleInterface |
| CombinedParticleInterface can be used to combine the data of several StackData objects. More... | |
| class | CombinedStackImpl |
| Memory implementation of a combined data stack. More... | |
| class | COMBoost |
| This utility class handles Lorentz boost between different referenence frames, using FourVector. More... | |
| class | CONEXhybrid |
| class | ConstStackIteratorInterface |
| This is the iterator class for const-access to stack data. More... | |
| struct | contains_stack_process |
| A traits marker to identify ProcessSequence that contain a StackProcess. More... | |
| class | ContinuousProcess |
| Processes with continuous effects along a particle Trajectory. More... | |
| class | ContinuousProcessIndex |
| To index individual processes (continuous processes) inside a ProcessSequence. More... | |
| class | ContinuousProcessStepLength |
| To store step length in LengthType and unique index in ProcessSequence of shortest step ContinuousProcess. More... | |
| class | CoordinateSystem |
| A class to store the reference coordinate system for a geometric object. More... | |
| struct | count_processes |
| traits class to count any type of Process, general version More... | |
| struct | count_processes< NullModel, N, void > |
| count_processes traits specialization to increase process count by one. More... | |
| struct | count_processes< TProcess, N, typename std::enable_if_t< is_process_v< std::decay_t< TProcess > > &&!std::decay_t< TProcess >::is_process_sequence > > |
| count_processes traits specialization to increase process count by one. More... | |
| struct | count_processes< TProcess, N, typename std::enable_if_t< is_process_v< std::decay_t< TProcess > > &&std::decay_t< TProcess >::is_process_sequence > > |
| count_processes traits specialization to increase process count by getNumberOfProcesses(). More... | |
| struct | DecayProcess |
| Process decribing the decay of particles. More... | |
| class | DefaultSecondaryProducer |
| Class to handle the generation of new secondaries. More... | |
| class | DensityFunction |
| class | DummyOutputManager |
| class | Empty |
| class | Environment |
| Base Evnironment class Describes the Environment in which the shower is propagated. More... | |
| class | ExponentialDistribution |
| class | ExponentialRefractiveIndex |
| An exponential refractive index. More... | |
| class | FlatExponential |
| flat exponential density distribution with \[ \varrho(r) = \varrho_0 \exp\left( \frac{1}{\lambda} (r - p) \cdot \vec{a} \right). \] \( \vec{a} \) denotes the axis and should be normalized to avoid degeneracy with the scale parameter \( \lambda \). More... | |
| class | FourVector |
| Description of physical four-vectors. More... | |
| class | FunctionTimer |
| Wraps and measures the runtime of a single function type object. More... | |
| class | HadronicElasticInteraction |
| A simple model for elastic hadronic interactions based on the formulas in Gaisser, Engel, Resconi, Cosmic Rays and Particle Physics (Cambridge Univ. More... | |
| struct | has_method_doBoundaryCrossing |
| traits test for BoundaryCrossingProcess::doBoundaryCrossing method More... | |
| struct | has_method_doContinuous |
| traits test for ContinuousProcess::doContinuous method More... | |
| struct | has_method_doDecay |
| traits test for DecayProcess::doDecay method More... | |
| struct | has_method_doInteract |
| traits test for InteractionProcess::doInteraction method More... | |
| struct | has_method_doSecondaries |
| traits test for SecondariesProcess::doSecondaries method More... | |
| struct | has_method_doStack |
| traits test for StackProcess::doStack method More... | |
| struct | has_method_getInteractionLength |
| traits test for InteractionProcess::getInteractionLength method More... | |
| struct | has_method_getLifetime |
| traits test for DecayProcess::getLifetime method More... | |
| struct | has_method_getMaxStepLength |
| traits test for ContinuousProcess::getMaxStepLength method More... | |
| class | Helix |
| class | HomogeneousMedium |
| class | IEmpty |
| Intended for usage as default template argument for environments with no properties. More... | |
| class | IMagneticFieldModel |
| An interface for magnetic field models. More... | |
| class | IMediumModel |
| class | IMediumPropertyModel |
| An interface for type of media, needed e.g. More... | |
| class | InhomogeneousMedium |
| class | InteractionCounter |
| class | InteractionHistogram |
| Class that creates and stores histograms of collisions \(dN/dE_{lab}\), \(dN/d\sqrt{s}\) which is used by class InteractionCounter. More... | |
| class | InteractionLengthModifier |
| class | InteractionProcess |
| Process describing the interaction of particles. More... | |
| class | Intersect |
| This is a CRTP class to provide a generic volume-tree intersection for the purpose of tracking. More... | |
| class | Intersections |
| Container to store and return a list of intersections of a trajectory with a geometric volume objects in space. More... | |
| class | IRefractiveIndexModel |
| An interface for refractive index models. More... | |
| struct | is_boundary_process |
| A traits marker to identify BoundaryProcess. More... | |
| struct | is_boundary_process< TProcess, std::enable_if_t< std::is_base_of_v< BoundaryCrossingProcess< typename std::decay_t< TProcess > >, typename std::decay_t< TProcess > > > > |
| ProcessTraits specialization to flag BoundaryProcess objects. More... | |
| struct | is_continuous_process |
| A traits marker to identify ContinuousProcess. More... | |
| struct | is_continuous_process< TProcess, std::enable_if_t< std::is_base_of_v< ContinuousProcess< typename std::decay_t< TProcess > >, typename std::decay_t< TProcess > > > > |
| ProcessTraits specialization to flag ContinuousProcess objects. More... | |
| struct | is_decay_process |
| A traits marker to identify DecayProcess. More... | |
| struct | is_decay_process< TProcess, std::enable_if_t< std::is_base_of_v< DecayProcess< typename std::decay_t< TProcess > >, typename std::decay_t< TProcess > > > > |
| ProcessTraits specialization to flag DecayProcess objects. More... | |
| struct | is_interaction_process |
| A traits marker to identify InteractionProcess. More... | |
| struct | is_interaction_process< TProcess, std::enable_if_t< std::is_base_of_v< InteractionProcess< typename std::decay_t< TProcess > >, typename std::decay_t< TProcess > > > > |
| ProcessTraits specialization to flag InteractionProcess objects. More... | |
| struct | is_process |
| A traits marker to identify BaseProcess, thus any type of process. More... | |
| struct | is_process< TNull, std::enable_if_t< std::is_base_of_v< NullModel, typename std::decay_t< TNull > > > > |
| is_process traits specialization to indicate compatibility with BaseProcess More... | |
| struct | is_process< TProcess, std::enable_if_t< std::is_base_of_v< BaseProcess< typename std::decay_t< TProcess > >, typename std::decay_t< TProcess > > > > |
| is_process traits specialization to indicate inheritance from BaseProcess More... | |
| struct | is_secondaries_process |
| A traits marker to identify SecondariesProcess. More... | |
| struct | is_secondaries_process< TProcess, std::enable_if_t< std::is_base_of_v< SecondariesProcess< typename std::decay_t< TProcess > >, typename std::decay_t< TProcess > > > > |
| ProcessTraits specialization to flag SecondariesProcess objects. More... | |
| struct | is_stack_process |
| A traits marker to identify StackProcess. More... | |
| struct | is_stack_process< TProcess, std::enable_if_t< std::is_base_of_v< StackProcess< typename std::decay_t< TProcess > >, typename std::decay_t< TProcess > > > > |
| ProcessTraits specialization to flag StackProcess objects. More... | |
| class | IVolume |
| class | LayeredSphericalAtmosphereBuilder |
| Helper class to setup concentric spheres of layered atmosphere with spcified density profiles (exponential, linear, ...). More... | |
| class | LeapFrogTrajectory |
| The LeapFrogTrajectory stores information on one leap-frog step. More... | |
| class | Line |
| A Line describes a movement in three dimensional space. More... | |
| class | LinearApproximationIntegrator |
| class | LongitudinalProfile |
| class | make_layered_spherical_atmosphere_builder |
Helper class to create LayeredSphericalAtmosphereBuilder, the extra environment models have to be passed as template-template argument to make_layered_spherical_atmosphere_builder, the member function create does then take an unspecified number of extra parameters to internalize those models for all layers later produced. More... | |
| struct | MediumData |
| Simple object to group together the properties of a medium. More... | |
| class | MediumPropertyModel |
| A model for the energy loss property of a medium. More... | |
| struct | NameModel |
| class | NoOutput |
| This is the base class for all outputs so that they can be stored in homogeneous containers. More... | |
| class | NuclearComposition |
| Describes the composition of matter Allowes and handles the creation of custom matter compositions. More... | |
| class | NullModel |
| Process that does nothing. More... | |
| class | ObservationPlane |
| The ObservationPlane writes PDG codes, energies, and distances of particles to the central point of the plane into its output file. More... | |
| class | ObservationPlaneWriterParquet |
| class | OnShellCheck |
| class | OutputManager |
| class | ParquetStreamer |
| This class automates the construction of simple tabular Parquet files using the parquet::StreamWriter. More... | |
| class | ParticleBase |
| The base class to define the readout of particle properties from a particle stack. More... | |
| class | ParticleCut |
| simple ParticleCut process. More... | |
| class | ParticleInterface |
| Example of a particle object on the stack. More... | |
| class | Path |
| This class represents a (potentially) curved path between two points using N >= 1 straight-line segments. More... | |
| class | Plane |
| class | Point |
| class | ProcessSequence |
Definition of a static process list/sequenceMore... | |
| class | QuantityVector |
| class | RNGManager |
| class | SecondariesProcess |
| Processes acting on the secondaries produced by other processes. More... | |
| class | SecondaryView |
| SecondaryView can only be constructed by giving a valid Projectile particle, following calls to addSecondary will populate the original Stack, but will be directly accessible via the SecondaryView, e.g.StackViewPr. More... | |
| class | ShowerAxis |
| The environment::ShowerAxis is created from a Point and a Vector and inside an Environment. More... | |
| class | Singleton |
| Curiously Recurring Template Pattern (CRTP) for Meyers singleton. More... | |
| class | SlidingPlanarExponential |
| The SlidingPlanarExponential models mass density as \[ \varrho(r) = \varrho_0 \exp\left( \frac{|p_0 - r|}{\lambda} \right). \] For grammage/length conversion, the density distribution is approximated as locally flat at the starting point \( r_0 \) of the trajectory with the axis pointing from \( p_0 \) to \( r_0 \). More... | |
| class | SlidingPlanarTabular |
| The SlidingPlanarTabular models mass density as \[ \varrho(r) = \varrho_0 \rho\left( |p_0 - r| \right). \] For grammage/length conversion, the density distribution is approximated as locally flat at the starting point \( r_0 \) of the trajectory with the axis pointing rom \( p_0 \) to \( r_0 \) defining the local height. More... | |
| class | Sphere |
| Describes a sphere in space. More... | |
| class | Stack |
| The Stack class provides (and connects) the main particle data storage machinery. More... | |
| class | StackInspector |
| class | StackIteratorInterface |
| The StackIteratorInterface is the main interface to iterator over particles on a stack. More... | |
| class | StackProcess |
| Process to act on the entire particle stack. More... | |
| class | StraightTrajectory |
| This implements a straight trajectory between two points. More... | |
| class | SwitchProcessSequence |
| Class to switch between two process branches. More... | |
| class | Timer |
| class | TrackWriter |
| class | TrackWriterParquet |
| class | UniformMagneticField |
| A uniform (constant) magnetic field. More... | |
| class | UniformRealDistribution |
| class | UniformRefractiveIndex |
| A uniform refractive index. More... | |
| struct | Universe |
| class | Vector |
| class | VectorStackImpl |
| Memory implementation of the most simple (stupid) particle stack object. More... | |
| class | VolumeTreeNode |
| class | WeightProviderIterator |
| Double Iterator Iterator that allowes the iteration of two individual lists at the same time. More... | |
Typedefs | |
| using | CodeIntType = int32_t std::underlying_type< Code >::type |
| The Code enum is the actual place to define CORSIKA 8 particle codes. More... | |
| using | PDGCodeType = std::underlying_type< PDGCode >::type |
| typedef Vector< hepmomentum_d > | MomentumVector |
| A 3D vector defined in a specific coordinate system with units HEPMomentumType. | |
| typedef Vector< dimensionless_d > | DirectionVector |
| A 3D vector defined in a specific coordinate system with no units. More... | |
| typedef Vector< SpeedType::dimension_type > | VelocityVector |
| A 3D vector defined in a specific coordinate system with units "velocity_t". | |
| typedef Eigen::Transform< double, 3, Eigen::Affine > | EigenTransform |
| typedef Eigen::Translation< double, 3 > | EigenTranslation |
| using | CoordinateSystemPtr = std::shared_ptr< CoordinateSystem const > |
| To refer to CoordinateSystems, only the CoordinateSystemPtr must be used. | |
| typedef Vector< magnetic_flux_density_d > | MagneticFieldVector |
| typedef RNGManager ::prng_type | default_prng_type |
| template<typename Stack1Impl , typename Stack2Impl , template< typename > typename _PI, template< typename T1, template< class > class T2 > class _MSecondaryProducer = DefaultSecondaryProducer> | |
| using | CombinedStack = Stack< CombinedStackImpl< Stack1Impl, Stack2Impl >, _PI, _MSecondaryProducer > |
Helper template alias CombinedStack to construct new combined stack from two stack data objects and a particle readout interface. More... | |
| using | MediumIntType = int16_t std::underlying_type< Medium >::type |
| typedef Stack< VectorStackImpl, ParticleInterface > | VectorStack |
Enumerations | |
| enum | MediumType { Unknown, Element, RadioactiveElement, InorganicCompound, OrganicCompound, Polymer, Mixture, BiologicalDosimetry } |
| General type of medium. | |
| enum | StateOfMatter { Unknown, Solid, Liquid, Gas, DiatomicGas } |
| Physical state of medium. | |
Functions | |
| std::false_type | is_timer_impl (...) |
| template<typename T , typename U > | |
| std::true_type | is_timer_impl (Timer< T, U > const volatile &) |
| std::shared_ptr< spdlog::logger > | create_logger (std::string const &name, bool const defaultlog=false) |
| Create a new C8-style logger. More... | |
| std::shared_ptr< spdlog::logger > | get_logger (std::string const &name, bool const defaultlog=false) |
| Get a smart pointer to an existing logger. More... | |
| int16_t constexpr | get_charge_number (Code const) |
| electric charge in units of e | |
| ElectricChargeType constexpr | get_charge (Code const) |
| electric charge | |
| HEPMassType constexpr | get_mass (Code const) |
| mass | |
| HEPEnergyType constexpr | get_kinetic_energy_threshold (Code const) |
| get kinetic energy threshold below which the particle is discarded, by default set to zero | |
| void constexpr | set_kinetic_energy_threshold (Code const, HEPEnergyType const) |
| set kinetic energy threshold below which the particle is discarded | |
| void | set_kinetic_energy_threshold (std::pair< Code const, HEPEnergyType const > p) |
| void | set_kinetic_energy_thresholds (std::unordered_map< Code const, HEPEnergyType const > const &eCuts) |
| PDGCode constexpr | get_PDG (Code const) |
| Particle code according to PDG, "Monte Carlo Particle Numbering Scheme". | |
| PDGCode constexpr | get_PDG (unsigned int A, unsigned int Z) |
| std::string_view constexpr | get_name (Code const) |
| name of the particle as string | |
| TimeType constexpr | get_lifetime (Code const) |
| lifetime | |
| bool constexpr | is_nucleus (Code const) |
| true iff the particle is a hard-coded nucleus or Code::Nucleus | |
| bool constexpr | is_hadron (Code const) |
| true iff particle is hadron | |
| bool constexpr | is_em (Code const) |
| true iff particle is electron, positron or photon | |
| bool constexpr | is_muon (Code const) |
| true iff particle is mu+ or mu- | |
| bool constexpr | is_neutrino (Code const) |
| true iff particle is (anti-) neutrino | |
| int constexpr | get_nucleus_A (Code const) |
| returns A for hard-coded nucleus, otherwise 0 | |
| int constexpr | get_nucleus_Z (Code const) |
| returns Z for hard-coded nucleus, otherwise 0 | |
| HEPMassType | get_nucleus_mass (unsigned int const, unsigned int const) |
| returns mass of (A,Z) nucleus, disregarding binding energy | |
| Code | convert_from_PDG (PDGCode const) |
| convert PDG code to CORSIKA 8 internal code | |
| std::initializer_list< Code > constexpr | get_all_particles () |
| std::ostream & | operator<< (std::ostream &, corsika::Code) |
| the output stream operator for human-readable particle codes | |
| CoordinateSystemPtr | make_translation (CoordinateSystemPtr const &cs, QuantityVector< length_d > const &vector) |
| Creates new CoordinateSystemPtr by translation along vector. | |
| template<typename TDim > | |
| CoordinateSystemPtr | make_rotationToZ (CoordinateSystemPtr const &cs, Vector< TDim > const &vVec) |
| creates a new CoordinateSystem in which vVec points in direction of the new z-axis, vVec | |
| template<typename TDim > | |
| CoordinateSystemPtr | make_rotation (CoordinateSystemPtr const &cs, QuantityVector< TDim > const &axis, double const angle) |
| creates a new CoordinateSystem, rotated around axis by angle. | |
| template<typename TDim > | |
| CoordinateSystemPtr | make_translationAndRotation (CoordinateSystemPtr const &cs, QuantityVector< length_d > const &translation, QuantityVector< TDim > const &axis, double const angle) |
| creates a new CoordinateSystem, translated by translation and rotated around axis by angle. | |
| EigenTransform | get_transformation (CoordinateSystem const &c1, CoordinateSystem const &c2) |
| Transformation matrix from one reference system to another. More... | |
| template<typename TTimeType , typename TSpaceVecType > | |
| std::ostream & | operator<< (std::ostream &os, corsika::FourVector< TTimeType, TSpaceVecType > const &qv) |
| streaming operator | |
| LengthType | distance (Point const &p1, Point const &p2) |
| template<typename TDimension > | |
| std::ostream & | operator<< (std::ostream &os, corsika::QuantityVector< TDimension > const &qv) |
| streaming operator | |
| template<typename... TProcesses, typename TProcess1 > | |
| ProcessSequence< TProcess1, decltype(make_sequence(std::declval< TProcesses >)...))> | make_sequence (TProcess1 &&vA, TProcesses &&... vBs) |
| template<typename TProcess1 , typename TProcess2 > | |
| ProcessSequence< TProcess1, TProcess2 > | make_sequence (TProcess1 &&vA, TProcess2 &&vB) |
| template<typename TProcess > | |
| ProcessSequence< TProcess, NullModel > | make_sequence (TProcess &&vA) |
| std::vector< double > | solve_linear_real (double a, double b) |
| std::vector< std::complex< double > > | solve_linear (double a, double b) |
| std::vector< std::complex< double > > | solve_quadratic (long double a, long double b, long double c, double const epsilon=1e-12) |
| std::vector< double > | solve_quadratic_real (long double a, long double b, long double c, double const epsilon=1e-12) |
| template<class Axes , class Storage > | |
| void | save_hist (boost::histogram::histogram< Axes, Storage > const &h, std::string const &filename, bool overwrite=true) |
| template<typename TCondition , typename TSequence , typename USequence , typename = std::enable_if_t<is_process_v<typename std::decay_t<TSequence>> && is_process_v<typename std::decay_t<USequence>>>> | |
| SwitchProcessSequence< TCondition, TSequence, USequence > | make_select (TCondition &&selector, TSequence &&vA, USequence &&vB) |
the functin make_select(select, proc1, proc1) assembles many BaseProcesses, and ProcessSequences into a SwitchProcessSequence, all combinatorics are allowed. More... | |
| boost::filesystem::path | corsika_data (boost::filesystem::path const &filename) |
| std::vector< double > | solve_cubic_depressed_disciminant_real (long double p, long double q, long double const disc, double const epsilon=1e-12) |
| Solve depressed cubic: x^3 + p x + q = 0. | |
| std::vector< double > | solve_cubic_depressed_real (long double p, long double q, double const epsilon=1e-12) |
| std::vector< double > | solve_cubic_real_analytic (long double a, long double b, long double c, long double d, double const epsilon=1e-12) |
| Solve a x^3 + b x^2 + c x + d = 0. More... | |
| template<typename T > | |
| T | cubic_function (T x, T a, T b, T c, T d) |
| Cubic function. More... | |
| template<typename T > | |
| T | cubic_function_dfdx (T x, T a, T b, T c) |
| template<typename T > | |
| T | cubic_function_d2fd2x (T x, T a, T b) |
| std::vector< double > | solve_cubic_real (long double a, long double b, long double c, long double d, double const epsilon=1e-12) |
| Iterative approach to solve: a x^3 + b x^2 + c x + d = 0. More... | |
| std::vector< double > | solve_quartic_real (long double a, long double b, long double c, long double d, long double e, double const epsilon=1e-12) |
| solve quartic equation a*x^4 + b*x^3 + c*x^2 + d*x + e | |
| constexpr MediumData const & | mediumData (Medium const m) |
Variables | |
| template<class TProcess , typename TReturn , typename TParticle > | |
| bool constexpr | has_method_doBoundaryCrossing_v |
| template<class TProcess , typename TReturn , typename TArg1 , typename TArg2 > | |
| bool constexpr | has_method_doContinuous_v |
| template<class TProcess , typename TReturn , typename... TArgs> | |
| bool constexpr | has_method_getMaxStepLength_v |
| value traits type More... | |
| template<class TProcess , typename TReturn , typename... TArgs> | |
| bool constexpr | has_method_doDecay_v |
| template<class TProcess , typename TReturn , typename... TArgs> | |
| bool constexpr | has_method_getLifetime_v |
| value traits type More... | |
| template<class TProcess , typename TReturn , typename... TArgs> | |
| bool constexpr | has_method_doInteract_v |
| template<class TProcess , typename TReturn , typename... TArgs> | |
| bool constexpr | has_method_getInteractionLength_v |
| template<class TProcess , typename TReturn , typename... TArg> | |
| bool constexpr | has_method_doSecondaries_v |
| template<class TProcess , typename TReturn , typename... TArgs> | |
| bool constexpr | has_method_doStack_v |
| template<typename T > | |
| constexpr bool | is_timer_v |
| const std::string | minimal_pattern {"[%n:%^%-8l%$] %v"} |
| const std::string | default_pattern {"[%n:%^%-8l%$(%s:%#)] %v"} |
| const std::string | source_pattern {"[%n:%^%-8l%$(%s:%!:%#)] %v"} |
| template<typename TProcess > | |
| bool constexpr | is_process_v = is_process<TProcess>::value |
| template<typename TProcess > | |
| bool constexpr | is_continuous_process_v = is_continuous_process<TProcess>::value |
| template<typename TProcess > | |
| bool constexpr | is_decay_process_v = is_decay_process<TProcess>::value |
| template<typename TProcess > | |
| bool constexpr | is_stack_process_v = is_stack_process<TProcess>::value |
| template<typename TProcess > | |
| bool constexpr | is_secondaries_process_v = is_secondaries_process<TProcess>::value |
| template<typename TProcess > | |
| bool constexpr | is_boundary_process_v = is_boundary_process<TProcess>::value |
| template<typename TProcess > | |
| bool constexpr | is_interaction_process_v = is_interaction_process<TProcess>::value |
| template<typename TClass > | |
| bool constexpr | contains_stack_process_v = contains_stack_process<TClass>::value |
| enum | ProcessReturn : int { Ok = (1 << 0), ParticleAbsorbed = (1 << 2), Interacted = (1 << 3), Decayed = (1 << 4) } |
| since in a process sequence many status updates can accumulate for a single particle, this enum should define only bit-flags that can be accumulated easily with "|=" | |
| ProcessReturn | operator| (ProcessReturn a, ProcessReturn b) |
| ProcessReturn & | operator|= (ProcessReturn &a, const ProcessReturn b) |
| ProcessReturn | operator & (const ProcessReturn a, const ProcessReturn b) |
| bool | operator== (const ProcessReturn a, const ProcessReturn b) |
| bool | isOk (const ProcessReturn a) |
| bool | isAbsorbed (const ProcessReturn a) |
| bool | isDecayed (const ProcessReturn a) |
| bool | isInteracted (const ProcessReturn a) |
The cascade namespace assembles all objects needed to simulate full particles cascades.
A general inhomogeneous medium.
a homogeneous medium
`, since they are used everywhere as integral part of the framework.
With this class modules can register streams of random numbers.
The mass density distribution TDensityFunction must be a \(C^2\)-function.
| using corsika::CombinedStack = typedef Stack<CombinedStackImpl<Stack1Impl, Stack2Impl>, _PI, _MSecondaryProducer> |
Helper template alias CombinedStack to construct new combined stack from two stack data objects and a particle readout interface.
Note that the Stack2Impl provides only /additional/ data to Stack1Impl. This is important (see above) since tuple data for initialization are forwarded to Stack1Impl (first).
Definition at line 135 of file CombinedStack.hpp.
| typedef Vector< dimensionless_d > corsika::DirectionVector |
A 3D vector defined in a specific coordinate system with no units.
But, note, this is not automatically normaliyed! It is not a "NormalVector".
Definition at line 32 of file PhysicalGeometry.hpp.
| std::shared_ptr<spdlog::logger> corsika::create_logger | ( | std::string const & | name, |
| bool const | defaultlog = false |
||
| ) |
Create a new C8-style logger.
Use this if you are explicitly (and can guarantee) that you are creating a logger for the first time. It is recommended that for regular usage, the get_logger function is used instead as that will also create the logger if it has not yet been created.
Calling create_logger twice to create the same logger will result in an spdlog duplicate exception.
| name | The unique name of the logger. |
| defaultlog | If True, set this as the default logger. |
| T corsika::cubic_function | ( | T | x, |
| T | a, | ||
| T | b, | ||
| T | c, | ||
| T | d | ||
| ) |
Cubic function.
T must be a floating point type.
| T corsika::cubic_function_d2fd2x | ( | T | x, |
| T | a, | ||
| T | b | ||
| ) |
| T corsika::cubic_function_dfdx | ( | T | x, |
| T | a, | ||
| T | b, | ||
| T | c | ||
| ) |
| std::shared_ptr<spdlog::logger> corsika::get_logger | ( | std::string const & | name, |
| bool const | defaultlog = false |
||
| ) |
Get a smart pointer to an existing logger.
This should be the default method for code to obtain a logger. If the logger does not exist, it is created and returned to the caller.
This should be preferred over create_logger.
| name | The name of the logger to get. |
| defaultlog | If True, make this the default logger. |
| EigenTransform corsika::get_transformation | ( | CoordinateSystem const & | c1, |
| CoordinateSystem const & | c2 | ||
| ) |
Transformation matrix from one reference system to another.
returns the transformation matrix necessary to transform primitives with coordinates in pFrom to pTo, e.g. \( \vec{v}^{\text{(to)}} = \mathcal{M} \vec{v}^{\text{(from)}} \) ( \( \vec{v}^{(.)} \) denotes the coordinates/components of the component in the indicated CoordinateSystem).
| SwitchProcessSequence<TCondition, TSequence, USequence> corsika::make_select | ( | TCondition && | selector, |
| TSequence && | vA, | ||
| USequence && | vB | ||
| ) |
the functin make_select(select, proc1, proc1) assembles many BaseProcesses, and ProcessSequences into a SwitchProcessSequence, all combinatorics are allowed.
| selector | must provide bool operator()(Particle const&) const |
| vA | needs to derive from BaseProcess or ProcessSequence |
| vB | needs to derive from BaseProcess or ProcessSequence |
Definition at line 210 of file SwitchProcessSequence.hpp.
| std::vector<double> corsika::solve_cubic_real | ( | long double | a, |
| long double | b, | ||
| long double | c, | ||
| long double | d, | ||
| double const | epsilon = 1e-12 |
||
| ) |
Iterative approach to solve: a x^3 + b x^2 + c x + d = 0.
This is often fastest and most precise.
| std::vector<double> corsika::solve_cubic_real_analytic | ( | long double | a, |
| long double | b, | ||
| long double | c, | ||
| long double | d, | ||
| double const | epsilon = 1e-12 |
||
| ) |
Solve a x^3 + b x^2 + c x + d = 0.
Analytical approach. Not very stable in all conditions.
| bool constexpr corsika::has_method_doBoundaryCrossing_v |
Definition at line 57 of file BoundaryCrossingProcess.hpp.
| bool constexpr corsika::has_method_doContinuous_v |
Definition at line 52 of file ContinuousProcess.hpp.
| bool constexpr corsika::has_method_doDecay_v |
Definition at line 54 of file DecayProcess.hpp.
| bool constexpr corsika::has_method_doInteract_v |
Definition at line 52 of file InteractionProcess.hpp.
| bool constexpr corsika::has_method_doSecondaries_v |
Definition at line 52 of file SecondariesProcess.hpp.
| bool constexpr corsika::has_method_doStack_v |
Definition at line 55 of file StackProcess.hpp.
| bool constexpr corsika::has_method_getInteractionLength_v |
Definition at line 93 of file InteractionProcess.hpp.
| bool constexpr corsika::has_method_getLifetime_v |
value traits type
Definition at line 92 of file DecayProcess.hpp.
| bool constexpr corsika::has_method_getMaxStepLength_v |
value traits type
Definition at line 91 of file ContinuousProcess.hpp.