Jpp
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
JGeane.hh
Go to the documentation of this file.
1 #ifndef __JPHYSICS__JGEANE__
2 #define __JPHYSICS__JGEANE__
3 
4 #include <cmath>
5 
6 /**
7  * \file
8  * Energy loss of muon.
9  * \author mdejong
10  */
11 
12 namespace JPHYSICS {}
13 namespace JPP { using namespace JPHYSICS; }
14 
15 namespace JPHYSICS {
16 
17 
18  /**
19  * Equivalent muon track length per unit shower energy.
20  *
21  * \return equivalent muon track length [m/Gev]
22  */
23  inline double geanc()
24  {
25  return 4.7; // dx/dE [m/GeV]
26  }
27 
28 
29  /**
30  * Function object for the Energy loss of the muon.
31  * The energy loss can be formulated as:
32  *
33  * \f[ -\frac{dE}{dx} = a + bE\f]
34  *
35  * N.B:
36  * \f$a\f$ and \f$b\f$ are assumed constant (internal units m and GeV, respectively).
37  */
38  class JGeane {
39  public:
40  /**
41  * constructor
42  * \param __a Energy loss due to ionisation [GeV/m]
43  * \param __b Energy loss due to pair production and Bremstrahlung [m^-1]
44  */
45  JGeane(const double __a,
46  const double __b) :
47  a(__a),
48  b(__b)
49  {}
50 
51 
52  /**
53  * Get energy loss constant.
54  *
55  * \return Energy loss due to ionisation [GeV/m]
56  */
57  double getA() const
58  {
59  return a;
60  }
61 
62 
63  /**
64  * Get energy loss constant.
65  *
66  * \return Energy loss due to pair production and Bremstrahlung [m^-1]
67  */
68  double getB() const
69  {
70  return b;
71  }
72 
73 
74  /**
75  * Get energy of muon after specified distance.
76  *
77  * \param E Energy of muon [GeV]
78  * \param dx distance traveled [m]
79  * \return Energy of muon [GeV]
80  */
81  double getE(const double E, const double dx) const
82  {
83  const double y = (a/b + E) * exp(-b*dx) - a/b;
84 
85  if (y > 0.0)
86  return y;
87  else
88  return 0.0;
89  }
90 
91 
92  /**
93  * Get derivative of energy of muon after specified distance.
94  *
95  * \param dx distance traveled [m]
96  * \return derivative of energy of muon
97  */
98  double getDE(const double dx) const
99  {
100  return exp(-b*dx);
101  }
102 
103 
104  /**
105  * Energy of muon after specified distance.
106  *
107  * \param E Energy of muon [GeV]
108  * \param dx distance traveled [m]
109  * \return Energy of muon [GeV]
110  */
111  double operator()(const double E, const double dx) const
112  {
113  return getE(E, dx);
114  }
115 
116 
117  /**
118  * Range of muon.
119  *
120  * \param E Energy of muon [GeV]
121  * \return range [m]
122  */
123  double operator()(const double E) const
124  {
125  const double x = b*E/a;
126 
127  if (x > -1.0)
128  return (1/b) * log(1.0 + x);
129  else
130  return 0.0;
131  }
132 
133 
134  /**
135  * Equivalent unit track length per unit shower energy and per unit track length.
136  *
137  * \return equivalent unit track length [Gev^-1]
138  */
139  double operator()() const
140  {
141  return b * geanc();
142  }
143 
144  protected:
145  const double a;
146  const double b;
147  };
148 
149 
150  /**
151  * Function object for Energy loss of muon in sea water.
152  *
153  * Approximate values of energy loss parameters taken from reference:
154  * Proceedings of ICRC 2001, "Precise parametrizations of muon energy losses in water",
155  * S. Klimushin, E. Bugaev and I. Sokalski.
156  */
157  static const JGeane gWater(2.67e-1 * JTOOLS::DENSITY_SEA_WATER,
158  3.4e-4 * JTOOLS::DENSITY_SEA_WATER);
159 
160 
161  /**
162  * Function object for Energy loss of muon in rock.
163  */
164  static const JGeane gRock(2.67e-1 * 0.9 * JTOOLS::DENSITY_ROCK,
165  3.4e-4 * 1.2 * JTOOLS::DENSITY_ROCK);
166 
167 }
168 
169 #endif
const double a
Definition: JGeane.hh:145
static const JGeane gWater(2.67e-1 *JTOOLS::DENSITY_SEA_WATER, 3.4e-4 *JTOOLS::DENSITY_SEA_WATER)
Function object for Energy loss of muon in sea water.
double getE(const double E, const double dx) const
Get energy of muon after specified distance.
Definition: JGeane.hh:81
double getDE(const double dx) const
Get derivative of energy of muon after specified distance.
Definition: JGeane.hh:98
double geanc()
Equivalent muon track length per unit shower energy.
Definition: JGeane.hh:23
static const double DENSITY_SEA_WATER
Fixed environment values.
Definition: JConstants.hh:34
double operator()() const
Equivalent unit track length per unit shower energy and per unit track length.
Definition: JGeane.hh:139
double getB() const
Get energy loss constant.
Definition: JGeane.hh:68
const double b
Definition: JGeane.hh:146
static const JGeane gRock(2.67e-1 *0.9 *JTOOLS::DENSITY_ROCK, 3.4e-4 *1.2 *JTOOLS::DENSITY_ROCK)
Function object for Energy loss of muon in rock.
JGeane(const double __a, const double __b)
constructor
Definition: JGeane.hh:45
Function object for the Energy loss of the muon.
Definition: JGeane.hh:38
double operator()(const double E) const
Range of muon.
Definition: JGeane.hh:123
double operator()(const double E, const double dx) const
Energy of muon after specified distance.
Definition: JGeane.hh:111
static const double DENSITY_ROCK
Density of rock [g/cm^3].
Definition: JConstants.hh:35
double getA() const
Get energy loss constant.
Definition: JGeane.hh:57