Jpp 19.3.0-rc.3
the software that should make you happy
Loading...
Searching...
No Matches
JPythia.hh
Go to the documentation of this file.
1#ifndef __JSIRENE__JPYTHIA__
2#define __JSIRENE__JPYTHIA__
3
4#include <cmath>
5
7
8
9/**
10 * \author mdejong
11 */
12
13namespace JSIRENE {}
14namespace JPP { using namespace JSIRENE; }
15
16namespace JSIRENE {
17
18 /**
19 * Auxiliary class to determine EM-equivalent energy as a function of PDG particle code and energy.
20 */
21 struct JPythia {
22 /**
23 * Default constructor.
24 */
26 {}
27
28
29 /**
30 * Get EM-equivalent energy.
31 *
32 * \param type particle type [PDG]
33 * \param Es particle energy [GeV]
34 * \return EM-equivalent energy [GeV]
35 */
36 double operator()(const int type, const double Es) const
37 {
38 using namespace JAANET;
39
40 switch (type) {
41
42 case TRACK_TYPE_PHOTON:
43 case TRACK_TYPE_NEUTRAL_PION:
44 case TRACK_TYPE_NEUTRAL_ANTIPION:
45 case TRACK_TYPE_ELECTRON:
46 case TRACK_TYPE_ANTIELECTRON:
47 return Es;
48
49 case TRACK_TYPE_CHARGED_PION_PLUS:
50 case TRACK_TYPE_CHARGED_PION_MINUS:
51 return getEnergy(Es);
52
53 default:
54 return 0.0;
55 }
56 }
57
58
59 /**
60 * Get equivalent EM-energy for given pion energy.
61 *
62 * Reference:
63 * Mona Dentler, "Investigation of the One-Particle Approximation in the ANTARES simulation package KM3",\n
64 * Bachelorarbeit Erlangen Centre for Astroparticle Physics,\n
65 * Friedrich-Alexander-Universit&auml;t, Erlangen-N&uuml;rnberg.
66 *
67 * \param Es particle energy [GeV]
68 * \return EM-equivalent energy [GeV]
69 */
70 static inline double getEnergy(const double Es)
71 {
72 static const double a = 72.425;
73 static const double b = -49.417;
74 static const double c = 5.858;
75 static const double d = 207.252;
76 static const double e = 132.784;
77 static const double f = -10.277;
78 static const double g = -19.441;
79 static const double h = 58.598;
80 static const double i = 53.161;
81 static const double kref = 2.698;
82
83 static const double u = (a - f) / kref;
84
85 const double x = log10(Es);
86 const double y = (e + x*(d + x*(c + x*(b + x*(a + x*u))))) / (i + x*(h + x*(g + x*(f + x*u))));
87
88 return pow(10.0, y - kref);
89 }
90 };
91
92
93 /**
94 * Function object for relative light yield as a function of GEANT particle code.
95 */
96 static const JPythia pythia;
97}
98
99#endif
Definition of hit and track types and auxiliary methods for handling Monte Carlo data.
Extensions to Evt data format.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Detector simulations.
static const JPythia pythia
Function object for relative light yield as a function of GEANT particle code.
Definition JPythia.hh:96
Auxiliary class to determine EM-equivalent energy as a function of PDG particle code and energy.
Definition JPythia.hh:21
double operator()(const int type, const double Es) const
Get EM-equivalent energy.
Definition JPythia.hh:36
JPythia()
Default constructor.
Definition JPythia.hh:25
static double getEnergy(const double Es)
Get equivalent EM-energy for given pion energy.
Definition JPythia.hh:70