Class PiZeroIntegrator

Inheritance Relationships

Base Type

Derived Type

Class Documentation

class PiZeroIntegrator : public hermes::IntegratorTemplate<QDiffIntensity, QEnergy>

Subclassed by BremsstrahlungIntegrator

Public Types

typedef std::pair<std::vector<QLength>, std::vector<double>> tLOSProfile

Get the line of sight profile (integrand of integrateOverLOS) of a direction where N is equidistant number of steps from the Sun’s position to the galactic border

Public Functions

PiZeroIntegrator(const std::shared_ptr<cosmicrays::CosmicRayDensity> &crDensity_, const std::shared_ptr<neutralgas::RingModel> &ngdensity_, const std::shared_ptr<interactions::DifferentialCrossSection> &crossSec_)
PiZeroIntegrator(const std::vector<std::shared_ptr<cosmicrays::CosmicRayDensity>> &crList_, const std::shared_ptr<neutralgas::RingModel> &ngdensity_, const std::shared_ptr<interactions::DifferentialCrossSection> &crossSec_)
~PiZeroIntegrator()
void setEnergy(const QEnergy &Egamma)
QEnergy getEnergy() const
QDiffIntensity integrateOverLOS(const QDirection &dir) const

Every instantiation/derived class must implement this method which represents an integral over the line of sight of an accumulated quantity \( f(s)\) for a given units::QDirection dir. When multiplied with units::QLength gives the pixel type, QPXL

\[ I(\mathrm{dir}) \sim \int_0^\infty \mathrm{d}s f(s) \]

QDiffIntensity integrateOverLOS(const QDirection &iterdir, const QEnergy &Egamma) const
QPiZeroIntegral integrateOverEnergy(const Vector3QLength &pos, const QEnergy &Egamma) const
void setupCacheTable(int N_x, int N_y, int N_z)

Caching helpers

void initCacheTable()
std::string getDescription() const

Get Description of the integrator

void setDescription(const std::string &description)

Set Description of the integrator

void setSkymapParameter(const QSTEP &p)

Setter for the skymap parameter (requires for the cacheTable, if enabled, to be re-initialized)

QSTEP setSkymapParameter() const

Getter for the skymap parameter

virtual QPXL integrateOverLOS(const QDirection &dir, const QSTEP&) const = 0

Additionally, for a frequency or energy dependent integrals one should implement the following method too.

void setSunPosition(const Vector3QLength &pos)

Set the position of the Sun in the galaxy as a vector (x, y, z) from which the LOS integration starts, default: (8.5_kpc, 0, 0)

Vector3QLength getSunPosition() const

Get the position of the Sun in the galaxy as a vector (x, y, z)

QLength getMaxDistance(const QDirection &direction) const

Wrapper within the class for distanceToGalBorder(positionSun, direction) becomes getMaxDistance(direction)

bool isCacheTableEnabled() const
bool isCacheTableInitialized() const
virtual tLOSProfile getLOSProfile(const QDirection &dir, int Nsteps) const
virtual tLOSProfile getLOSProfile(const QDirection &dir, const QSTEP&, int Nsteps) const

Protected Types

typedef Grid<QPiZeroIntegral> tCacheTable

Protected Functions

QPiZeroIntegral getIOEfromCache(const Vector3QLength &pos_, const QEnergy &Egamma_) const
void computeCacheInThread(std::size_t start, std::size_t end, const QEnergy &Egamma, std::shared_ptr<ProgressBar> &p)

Protected Attributes

std::vector<std::shared_ptr<cosmicrays::CosmicRayDensity>> crList
std::shared_ptr<neutralgas::RingModel> ngdensity
std::shared_ptr<interactions::DifferentialCrossSection> crossSec
std::shared_ptr<neutralgas::ProfileAbstract> dProfile
std::shared_ptr<tCacheTable> cacheTable
Vector3QLength positionSun
QSTEP skymapParameter
bool cacheEnabled
bool cacheTableInitialized
std::string description