CORSIKA  @c8_version@
The framework to simulate particle cascades for astroparticle physics
corsika::CombinedParticleInterface< TParticleInterfaceA, TParticleInterfaceB, TStackIterator > Struct Template Reference

CombinedParticleInterface can be used to combine the data of several StackData objects. More...

#include <CombinedStack.hpp>

Inheritance diagram for corsika::CombinedParticleInterface< TParticleInterfaceA, TParticleInterfaceB, TStackIterator >:

Public Types

typedef CombinedParticleInterface< TParticleInterfaceA, TParticleInterfaceB, TStackIterator > pi_c_type
 
typedef TParticleInterfaceA< TStackIterator > pi_a_type
 
typedef TParticleInterfaceB< TParticleInterfaceA< TStackIterator > > pi_b_type
 

Public Member Functions

std::string asString () const
 
wrapper for user functions

In this set of functions we call the user-provide TParticleInterface setParticleData(...) methods, either with parent particle reference, or w/o.

There is one implicit assumption here: if only one data tuple is provided for setParticleData, the data is passed on to TParticleInterfaceA and the TParticleInterfaceB is default-initialized. There are many occasions where this is the desired behaviour, e.g. for thinning etc.

template<typename... TArgs1>
void setParticleData (std::tuple< TArgs1... > const vA)
 
template<typename... TArgs1, typename... TArgs2>
void setParticleData (std::tuple< TArgs1... > const vA, std::tuple< TArgs2... > const vB)
 
template<typename... TArgs1>
void setParticleData (pi_a_type &p, std::tuple< TArgs1... > const vA)
 
template<typename... TArgs1, typename... TArgs2>
void setParticleData (pi_c_type &p, std::tuple< TArgs1... > const vA, std::tuple< TArgs2... > const vB)
 

Detailed Description

template<template< typename > typename TParticleInterfaceA, template< typename > class TParticleInterfaceB, typename TStackIterator>
struct corsika::CombinedParticleInterface< TParticleInterfaceA, TParticleInterfaceB, TStackIterator >

CombinedParticleInterface can be used to combine the data of several StackData objects.

You may combine two StackData object, see class CombinedStackImpl below, into one Stack, using a combined StackIterator (aka CombinedParticleInterface) interface class.

This allows to add specific information to a given Stack, could be special information on a subset of entries (e.g. NuclearStackExtension) or also (multi) thinning weights for all particles.

Many Stacks can be combined into more complex object.

The two sub-stacks must both provide their independent ParticleInterface classes.

Definition at line 39 of file CombinedStack.hpp.


The documentation for this struct was generated from the following file: