#include "SlastShowerGenerator.hh"

SlastShowerGenerator


class description - header file - source file - inheritance tree (.pdf)

class SlastShowerGenerator : public EventGenerator, public EsafMsgSource

Inheritance Chart:
EsafConfigurable
<-
EventGenerator
EsafMsgSource
<-
SlastShowerGenerator

    public:
SlastShowerGenerator(Bool_t quiet = kFALSE) virtual ~SlastShowerGenerator() static TClass* Class() virtual const char* ClassName() const virtual const char* ClassType() const Bool_t DevelopShower() Bool_t FindImpactOnTOA() EarthVector FoVintersection(const EarthVector&, const EarthVector&) const virtual PhysicsData* Get() Double_t GetEnergy() Bool_t GetFirstPoint() Bool_t GetNextStep() Double_t GetPhi() void GetShowerInfo() void GetShowerParametrization(Double_t) const ShowerStep& GetShowerStep() Double_t GetTheta() virtual MCTruth* GetTruth() void GetX1() Double_t GetXmax() void GFA(Double_t) void GHF(Double_t) void GIL(Double_t) Double_t HadronInteractionLength(Double_t, Double_t) Bool_t Init() virtual TClass* IsA() const Bool_t IsInFoV(const EarthVector&) const Bool_t IsXmaxInFoV() Double_t NucleonAirCrossSection(Double_t) virtual void Reset() void SetDepthStep(Double_t step) void SetEnergy(Double_t e) void SetPhi(Double_t p) void SetQuiet(Bool_t key = kTRUE) void SetShower(Double_t, Double_t, Double_t, EarthVector) void SetTheta(Double_t t) virtual void ShowMembers(TMemberInspector& insp, char* parent) virtual void Streamer(TBuffer& b) void StreamerNVirtual(TBuffer& b)

Data Members

    private:
ShowerTrack* fTrack pointer to Shower Track object ShowerStep fStep current ShowerStep object MCTruth* fTruth pointer to the Truth object Double_t fFoV Space Telescope Field of View (FoV) in rad Double_t fEusoAltitude Euso Altitude string fSpectrumType Spectrum type (powermaw / GZKHiRes2005 ..) TH1F* fSpectrumRdnm for non-analytical spectrum, used to get random energy Double_t fEnergyMin Minimum Energy Range for the ShowerTrack generation Double_t fEnergyMax Maximum Energy Range for the ShowerTrack generation Double_t fEnergySlope Slope of the Differential Energy Spectrum Double_t fThetaMin Minimum Theta Range for the ShowerTrack generation Double_t fThetaMax Maximum Theta Range for the ShowerTrack generation Double_t fPhiMin Minimum Phi Range for the ShowerTrack generation Double_t fPhiMax Maximum Phi Range for the ShowerTrack generation Double_t fFirstPointX X coordinate of the first ShowerTrack point Double_t fFirstPointY Y coordinate of the first ShowerTrack point Double_t fFirstPointZ Z coordinate of the first ShowerTrack point string fFirstType Choice of the generation type for the first interaction Double_t fDepthStep depth step Double_t fEnergy Generated ShowerTrack energy Double_t fTheta_local Generated ShowerTrack theta - frame defined at TOAimpact Double_t fPhi_local Generated ShowerTrack phi - frame defined at TOAimpact Double_t fTheta_mes Generated ShowerTrack theta - in mes frame Double_t fPhi_mes Generated ShowerTrack phi - in mes frame Double_t fAge current age of the shower (varies from 0 to 2. Age = 1 Double_t fNe current number of electrons Double_t fX1 atmosphere depth for the first point Double_t fXcurrent current slanth depth (from X1, not TOA !!) Double_t fXnext next slanth depth (from X1, not TOA !!) Double_t fTimecurrent time from the ShowerTrack origin (current) Double_t fTimenext time from the ShowerTrack origin (next) EarthVector fEusoVector vector pointing to EUSO EarthVector fInitPoint vector of init point EarthVector fOmega unit vector of the ShowerTrack object EarthVector fCurrentPoint vector of the current point. Z=0 on the Earth underneath EUSO EarthVector fNextPoint vector of the next point. Z=0 on the Earth underneath EUSO EarthVector fEarthImpact vector of the impact on the Earth. Z=0 on the Earth underneath EUSO EarthVector fTOAImpact vector of the impact on top of atmosphere Int_t fHitGround Boolian if the ShowerTrack hits the ground Bool_t fInCome Boolian if the ShowerTrack becomes visible to EUSO (in FoV) Bool_t fOutCome Boolian if the ShowerTrack becomes invisible to EUSO (in FoV) string fType Type of the UHECR particle: hadron, netrino string fEnergyDistribution Type of the Shower Parametrization for the energy distribution string fShowerParametrization Type of the Shower Parametrization for the number of charged particles Bool_t fQuiet kTRUE - no messages, kFALSE - with messages Bool_t fRejectFakeEvents kTRUE : if cosmic ray (not in the FoV || has not interacted in atmosphere) --> re-try Bool_t fRejectNoXmax kTRUE : if Xmax is not in FoV --> re-try for another event Bool_t fOutOfFoV if kTRUE : shower dvpt is switched off Double_t fAtomicMass Atomic mass of the UHECR's hadron

Class Description

_____________________________________________________________________________

 SlastShowerGenerator

 Slast is short of "Shower Light Attenuated to the Space Telescope".
 Originally written by Dmitry V.Naumov as a collection of F77 routines doing
 the full chain:
 Shower generation, light production (fluorescence and cherenkov), light
 attenuation in the atmosphere.
 See SlastLightToEuso C++ / Fortran interface which is doing the full chain.

 SlastShowerGenerator is the simple generator written in pure C++ which is
 NOT doing the full simulation chain. Instead it returnes only the
 ShowerTrack object which is taken later by ShowerLightSource and
 RadiativeTransfer parts of the ESAF package.

 ESAF prodides some testing macros which can help to understand how to use
 SlastShowerGenerator.  See macros/CheckDistrs.C as an example.

 A simple way to use SlastShowerGenerator is directly in root:

 root[]   gSystem->Load("libatmosphere.so");
 root[]   gSystem->Load("libgenbase.so");
 root[]   gSystem->Load("libshowers.so");
 root[]   SlastShowerGenerator *ShowerGenerator = new SlastShowerGenerator;
 root[]   ShowerTrack *track = ShowerGenerator->Get();
 root[]   track->DrawXYZ()

 as an example.

 Now having the track object in hand one can use whatever functions avalaible
 for it. See ShowerTrack class for documentation of ShowerTrack object
SlastShowerGenerator(Bool_t quiet)
 This is ctor
Bool_t Init()
 SlastShowerGenerator is initialized reading from config/LightToEuso/GeneratorLightToEuso.cfg file
 Edit that file to setup desired parameters of the showers such as energy, theta, phi intervals
 or initial position in case of unique parameters.
 Init() is called in SlastShowerGenerator ctor

~SlastShowerGenerator()
  This is dtor
void SetShower(Double_t e,Double_t t,Double_t p,EarthVector pos)
 This is a special method to setup desired showertrack parameters from the code (not from the config file)
 This can be a usefull function in the reconstruction code
void GetX1()
 Returns atmosphere depth before the first interaction.
 Attention: units are ESAF internal. In order to get in human way one has to multiple by cm2/g

Double_t HadronInteractionLength(Double_t A, Double_t E)
 SlastShowerGenerator internal function which computes the hadronic interactio  length.
 Used by GetX1() method
Double_t NucleonAirCrossSection(Double_t E)
Computes NUCLEN + AIR CROSS SECTION:
... USES AN EMPIRICAL PARAMETRIZATION OF TOTAL INELASTIC
... NUCLEON AIR CROSS SECTION (in mbarn)
... INPUT:  NUCLEON ENERGY in eV
... OUTPUT: NUCLEON AIR CROSS SECTION (in mbarn)
... REFERENCES:
... 1. Mielke H.H., Foller, M, Knapp J.
...    // J.Phys.G: Nucl.Part.Phys. 1994. V 20, P637
... 2. V.A. Naumov, T.S. Sinegovskaya (eq (17))

const ShowerStep& GetShowerStep()
 Filling the ShowerStep object with relevant information
void GetShowerParametrization(Double_t x)
 Assigning of fNe - number of electrons in the current step according to the Shower Parameterization.
  GIL stands for Greizen-Ilina-Linsley which is the QGSJET model
 parameterization.
 GFA stands for Gaussian Function in Age
 GHF stands for Gaisser Hillas Function

Bool_t FindImpactOnTOA()
 Generates point uniformly on top of atmosphere on the upper part of the earth hemisphere
 theta, phi angles are taken at TOA impact, then translated into MES frame for further steps of event simulation

Bool_t IsInFoV(const EarthVector& pos)
 returns true if pos is within Euso FoV cone

EarthVector FoVintersection(const EarthVector& pos, const EarthVector& dir)
 finds the intersection between the given track and the Euso FoV cone, if exists
 if does not exist, returns (0,0,HUGE)

 intersection considered only above ground

Bool_t GetFirstPoint()
 X1 is known --> find the first point fInitPoint from TOA impact
 if event goes out atmosphere / OR / reaches ground without interacting, returns kFALSE

Bool_t IsXmaxInFoV()
 Assess Xmax position and tell if it is in FoV
 used to reject event with Xmax out of FoV, without simulating the dvpt

Bool_t GetNextStep()
 This method checks if next point is visible and makes the next step if it is OK.
void GIL(Double_t x)
 Assigning of fNe - number of electrons in the current step according to GIL parameterization.
 (GIL stands for Greizen-Ilina-Linsley which is the QGSJET model parameterization.

void GFA(Double_t x)
 Assigning of fNe - number of electrons in the current step according to Gaussian Function in Age parameterization.
 Formulae from C. Song, Astropart. Physics 22(2004)151
 sigma values fitted and extrapolated, Xmax, Nmax from GHF used
 Factor 1.1 added to Ne because of threshold energy used for corsika simulation (10% particles missing)

 WARNING !!!     not usable yet, cause cannot currently handle X1 fluctuations

void GHF(Double_t x)
 Assigning of fNe - number of electrons in the current step according to
 Gaisser Hillas    parametrisation
 Formulae from C. Song, Astropart. Physics 22(2004)151
 Xmax, Nmax, lambda, X1, X0 values fitted and extrapolated
 Factor 1.1 added to Ne because of threshold energy used for corsika simulation (10% particles missing)

 WARNING !!!     not usable yet, cause cannot currently handle X1 fluctuations

PhysicsData* Get()
 method returning the ShowerTrack object

void Reset()
 Reset ShowerTrack and SlastShowerGenerator internal parameters

void GetShowerInfo()
 Fills ShowerTrack parameters
Bool_t DevelopShower()
 Method developing the shower

MCTruth* GetTruth()
 Method returning the Truth object

Double_t GetXmax()
 returns Xmax of the shower according to GIL parametrization (used by Reco)

Double_t GetEnergy()
Double_t GetTheta()
Double_t GetPhi()
void SetEnergy(Double_t e)
void SetTheta(Double_t t)
void SetPhi(Double_t p)
void SetQuiet(Bool_t key=kTRUE)
void SetDepthStep(Double_t step)

Author: Dmitry V.Naumov 03/03/2004
Last update: Mon Nov 27 14:57:08 2006


ROOT page - Class index - Class Hierarchy - Top of the page

This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.