Functions.h
Go to the documentation of this file.
1 #ifndef _un2_Functions_h_
2 #define _un2_Functions_h_
3 
4 // OFFLINE
5 #include <utl/Math.h>
6 #include <vector>
7 
8 
9 namespace un2 {
10 
11  inline
12  constexpr
13  double
14  Deg2Rad(const double deg)
15  {
16  return (M_PI/180)*deg;
17  }
18 
19 
20  inline
21  constexpr
22  double
23  Rad2Deg(const double rad)
24  {
25  return (180/M_PI)*rad;
26  }
27 
28 
29  inline
30  double
31  Mean(const std::vector<double>& v)
32  {
33  return std::accumulate(v.begin(), v.end(), 0.) / v.size();
34  }
35 
36 
37  double
38  StandardDeviation(const std::vector<double>& v, const double mean);
39 
40 
41  double
42  StandardDeviation(const std::vector<double>& v);
43 
44 
45  // universality signal model paper 2016, ave engel roth schulz, eq. (12)
46  double
47  ModifiedGH(
48  /* x */ const double DeltaX,
49  /*p[0]*/ const double Sref,
50  /*p[1]*/ const double lgE,
51  /*p[2]*/ const double gamma,
52  /*p[3]*/ const double DeltaX0,
53  /*p[4]*/ const double DeltaXmax,
54  /*p[5]*/ const double DeltaXref,
55  /*p[6]*/ const double lambda0,
56  /*p[7]*/ const double lambda1,
57  /*p[8]*/ const double lambda2
58  );
59 
60 
61  inline
62  constexpr
63  double
64  Polynomial4(/* x */ const double x,
65  /*p[0]*/ const double a0,
66  /*p[1]*/ const double a1,
67  /*p[2]*/ const double a2,
68  /*p[3]*/ const double a3,
69  /*p[4]*/ const double a4)
70  {
71  // f(x) = a_0 + a_1 x + a_2 x^2 + a_3 x^3 + a_4 x^4
72  return a0 + x * (a1 + x * (a2 + x * (a3 + x * a4)));
73  }
74 
75 
76  inline
77  constexpr
78  double
79  Exponential(/* x */ const double x,
80  /*p[0]*/ const double a,
81  /*p[1]*/ const double b,
82  /*p[2]*/ const double c)
83  {
84  // f(x) = a \e^{b x} + c
85  return a * exp(x / b) + c;
86  }
87 
88 
89  double
90  NKG(
91  /* x */ const double r,
92  /*p[0]*/ const double n,
93  /*p[1]*/ const double rG,
94  /*p[2]*/ const double s
95  );
96 
97 
98  double
100  const double f,
101  const double fThrsh,
102  const double cThrsh,
103  const double bg
104  );
105 
106 
107  double
108  AzimuthCorrectionFactor(const double theta,
109  const double psi,
110  const double r,
111  const double r0,
112  const double l);
113 
114 
115  // this is NOT empiric
116  double
117  TwoFormAzimuthCorrectionFactor(const double theta,
118  const double psi,
119  const double M1,
120  const double M3);
121 
122 
123  double
124  Gaussian(const double x,
125  const double mu,
126  const double sigma);
127 
128 
129  double
130  SpikyFunction(const double x,
131  const double sigma,
132  const double delta,
133  const std::vector<double>& nvec);
134 
135 
136  double
137  SpikyFunction(const double x,
138  const std::vector<double>& sigmavec,
139  const std::vector<double>& muvec,
140  const std::vector<double>& nvec);
141 
142 
143  double
144  SignalStartTime(const double r,
145  const double psi,
146  const double theta,
147  const double DX,
148  const double Xvert = 883,
149  const double hs = 8380,
150  const double hs2 = 0.07);
151 
152 
153  double
154  SignalStartTimePlaneFront(const double r,
155  const double psi,
156  const double theta,
157  const double DX,
158  const double Xvert = 883,
159  const double hs = 8380,
160  const double hs2 = 0.07,
161  const double height = 1400.);
162 
163 
164  double
165  LogarithmOfRayleighPDF(const double x,
166  const double sigma);
167 
168 
169  double
170  LogarithmOfTruncatedGaussianPDF(const double x,
171  const double mu,
172  const double sigma);
173 
174 
175  double
176  LogNormalPDF(const double x,
177  const double mu,
178  const double sigma);
179 
180 
181  double
182  LogNormalCDF(const double x,
183  const double mu,
184  const double sigma);
185 
186 
187  double
188  LogNormalMuFromModeAndSigma(const double mode,
189  const double sigma,
190  const double ns_bin = 8.3333);
191 
192 
193  double
194  LogNormalMuFromExpAndStd(const double exp,
195  const double std,
196  const double ns_bin = 8.3333);
197 
198 
199  double
200  LogNormalSigmaFromExpAndStd(const double exp,
201  const double std,
202  const double ns_bin = 8.3333);
203 
204 
205  double
206  LogNormalTimeQuantileFromMuAndSigma(const double mu,
207  const double sigma,
208  const double quantile,
209  const double ns_bin = 8.3333);
210 
211 
212  double
213  LogNormalMuFromTimeQuantileAndSigma(const double timeQuantile,
214  const double quantile,
215  const double sigma,
216  const double ns_bin = 8.3333);
217 
218 
219  double
220  ErfInv(double x);
221 
222 
223  double
224  ErfcInv(const double x);
225 
226 
227  double
228  GammaPDF(const double x,
229  const double mu,
230  const double theta);
231 
232 
233  double
234  AnalyticDX(const double r,
235  const double psi,
236  const double theta,
237  const double Xmax,
238  const double Xvert = 883,
239  const double hs = 8380,
240  const double hs2 = 0.07,
241  const double height = 1400);
242 
243 
244  double
245  AnalyticXmax(const double r,
246  const double psi,
247  const double theta,
248  const double DX,
249  const double Xvert = 883,
250  const double hs = 8380,
251  const double hs2 = 0.07,
252  const double height = 1400);
253 
254 
255  double
256  AnalyticHeightFromDepth(const double depth,
257  const double theta,
258  const double xVertGround,
259  const double hs,
260  const double hs2);
261 
262  double
263  BiasCorrectionXmax(const double sst,
264  const double lgE,
265  const bool realEvent = false);
266 
267  double
268  BiasCorrectionRmu(const double sst,
269  const double lgE,
270  const bool realEvent = false);
271 
272  double
273  GHGauss(const double r,
274  const double psi,
275  const double theta,
276  const double Xmax,
277  const double lambda);
278 
279  double
280  avgXmax0(const double lgE, const bool realEvent);
281 
282  double
283  avglnRmu0(const double lgE, const bool realEvent);
284 
285  double
286  XmaxFromRmu(const double Rmu, const double lgE, const bool realEvent);
287 
288  double
289  SigmaXmaxFromRmu(const double Rmu, const double lgE, const bool realEvent);
290 
291  double
292  XmaxDistribution(const double Rmu, const double Xmax, const double lgE, const bool realEvent);
293 
294  double
295  lnA(const double Rmu, const double Xmax, const double lgE, const bool realEvent);
296 
297 }
298 
299 
300 #endif
double TwoFormAzimuthCorrectionFactor(const double theta, const double psi, const double M1, const double M3)
Definition: Functions.cc:107
double StandardDeviation(const std::vector< double > &v, const double mean)
Definition: Functions.cc:26
constexpr double Exponential(const double x, const double a, const double b, const double c)
Definition: Functions.h:79
double BiasCorrectionXmax(const double sst, const double lgE, const bool realEvent)
Definition: Functions.cc:384
double BiasCorrectionRmu(const double sst, const double lgE, const bool realEvent)
Definition: Functions.cc:404
constexpr double Rad2Deg(const double rad)
Definition: Functions.h:23
double SpikyFunction(const double x, const double sigma, const double delta, const std::vector< double > &nvec)
Definition: Functions.cc:134
double AnalyticXmax(const double r, const double psi, const double theta, const double DX, const double Xvert, const double hs, const double hs2, const double height)
Definition: Functions.cc:364
double ErfcInv(const double x)
Definition: Functions.cc:341
double XmaxFromRmu(const double Rmu, const double lgE, const bool realEvent)
Definition: Functions.cc:455
double LogarithmOfTruncatedGaussianPDF(const double x, const double mu, const double sigma)
Definition: Functions.cc:213
double avglnRmu0(const double lgE, const bool realEvent)
Definition: Functions.cc:443
double LogNormalMuFromModeAndSigma(const double mode, const double sigma, const double ns_bin)
Definition: Functions.cc:244
constexpr double rad
Definition: AugerUnits.h:137
double SignalStartTimePlaneFront(const double r, const double psi, const double theta, const double DX, const double Xvert, const double hs, const double hs2, const double height)
Definition: Functions.cc:177
double ActivationFunctionBackground(const double f, const double fThrsh, const double cThrsh, const double bg)
Definition: Functions.cc:82
constexpr double deg
Definition: AugerUnits.h:140
double ModifiedGH(const double deltaX, const double sRef, const double lgE, const double gamma, const double deltaX0, const double deltaXMax, const double deltaXRef, const double lambda0, const double lambda1, const double lambda2)
Definition: Functions.cc:45
double ErfInv(double x)
Definition: Functions.cc:284
constexpr double s
Definition: AugerUnits.h:163
double XmaxDistribution(const double Rmu, const double Xmax, const double lgE, const bool realEvent)
Definition: Functions.cc:483
double LogNormalMuFromExpAndStd(const double exp_val, const double std, const double ns_bin)
Definition: Functions.cc:251
double LogNormalSigmaFromExpAndStd(const double exp_val, const double std, const double ns_bin)
Definition: Functions.cc:259
double Gaussian(const double x, const double mu, const double sigma)
Definition: Functions.cc:123
constexpr double Polynomial4(const double x, const double a0, const double a1, const double a2, const double a3, const double a4)
Definition: Functions.h:64
double lnA(const double Rmu, const double Xmax, const double lgE, const bool realEvent)
Definition: Functions.cc:505
double AnalyticDX(const double r, const double psi, const double theta, const double Xmax, const double Xvert, const double hs, const double hs2, const double height)
Definition: Functions.cc:355
double SigmaXmaxFromRmu(const double Rmu, const double lgE, const bool realEvent)
Definition: Functions.cc:473
double GHGauss(const double r, const double psi, const double theta, const double Xmax, const double lambda)
Definition: Functions.cc:427
double LogNormalTimeQuantileFromMuAndSigma(const double mu, const double sigma, const double quantile, const double ns_bin)
Definition: Functions.cc:267
double avgXmax0(const double lgE, const bool realEvent)
Definition: Functions.cc:434
double LogNormalMuFromTimeQuantileAndSigma(const double timeQuantile, const double quantile, const double sigma, const double ns_bin)
Definition: Functions.cc:274
double AnalyticHeightFromDepth(const double depth, const double theta, const double xVertGround, const double hs, const double hs2)
Definition: Functions.cc:374
double Mean(const std::vector< double > &v)
Definition: Functions.h:31
double LogNormalPDF(const double x, const double mu, const double sigma)
Definition: Functions.cc:226
double LogNormalCDF(const double x, const double mu, const double sigma)
Definition: Functions.cc:235
double GammaPDF(const double x, const double mu, const double theta)
Definition: Functions.cc:348
double LogarithmOfRayleighPDF(const double x, const double sigma)
Definition: Functions.cc:202
double AzimuthCorrectionFactor(const double theta, const double psi, const double r, const double r0, const double l)
Definition: Functions.cc:94
double NKG(const double r, const double n, const double rG, const double s)
Definition: Functions.cc:68
double SignalStartTime(const double r, const double psi, const double theta, const double DX, const double Xvert, const double hs, const double hs2)
Definition: Functions.cc:160
constexpr double Deg2Rad(const double deg)
Definition: Functions.h:14

, generated on Tue Sep 26 2023.