UnivParam.h
Go to the documentation of this file.
1 
19 #ifndef __UnivParamNS_h_
20 #define __UnivParamNS_h_
21 
22 #include <stdio.h>
23 #include <stdlib.h>
24 #include <math.h>
25 #include <fstream>
26 
27 #define UNDEF -100
28 
29 namespace UnivParamNS {
30 
31  // Variables needed to calculate attenuation parameter
32  //-----------------------------------------------------
33 
34  const bool XmaxShift[4] = { false, false, false, false };
35  const bool UseDiffusive[4] = { true , true , true, true };
36  const bool UseDL[4] = { false, false, false, false };
37 
38 
39  // Parameters of the model
40  //-----------------------------------------------------
41 
42  const double DXref[4] = { 400., 400., 400., 400.};
43 
44  const int nParDX = 7;
45  const std::string parNameDX[nParDX] = { "S_{ref} ", "#gamma ", "DX_{max} ", "#lambda ", "f_{#lambda,E}", "DX_{0}", "icomp" };
46  const int nParUsed[nParDX - 1][4] = { {4, 4, 4, 4}, {2, 2, 2, 2}, {3, 4, 3, 3 }, {3, 3, 3, 2}, {0, 2, 0, 1}, {1, 1, 1, 1} }; // [ipar][icomp]
47 
48 
49 
50 
51  const double parSref_WCD[4][4] = { { 1.496e+01 , 1.148e+00 , 1.145e+01 , 5.093e+03 },
52  { 1.380e+01 , 2.205e+00 , 4.334e+00 , 1.027e+03 },
53  { 3.003e+00 , 1.112e+00 , 8.522e+00 , 3.794e+03 },
54  { 3.417e+00 , 2.312e+00 , 1.039e+01 , 8.591e+03 }
55  };
56  const double parGamma_WCD[4][4] = { { 9.411e-01 , -1.930e-02 , 0.000e+00 , 0.000e+00 },
57  { 9.919e-01 , 1.484e-02 , 0.000e+00 , 0.000e+00 },
58  { 9.415e-01 , -1.793e-02 , 0.000e+00 , 0.000e+00 },
59  { 9.228e-01 , 1.244e-02 , 0.000e+00 , 0.000e+00 }
60  };
61  const double parDXmax_WCD[4][4] = { { -3.448e+02 , 6.806e+02 , 5.425e-01 , 0.000e+00 },
62  { 1.677e+02 , 8.201e+02 , 1.919e+03 , 3.842e+01 },
63  { -3.591e+01 , 3.567e+02 , 7.201e-01 , 0.000e+00 },
64  { -8.914e+01 , 4.388e+01 , 8.398e-01 , 0.000e+00 }
65  };
66  const double parLambda_WCD[4][4] = { { 2.442e+04 , -2.388e+04 , -3.354e-03 , 0.000e+00 },
67  { 6.952e+01 , 1.388e+01 , -1.153e+01 , 0.000e+00 },
68  { 2.522e+05 , -2.516e+05 , -3.589e-04 , 0.000e+00 },
69  { 1.055e+02 , 6.658e+00 , 0.000e+00 , 0.000e+00 }
70  };
71  const double parfLambdaE_WCD[4][4] = { { 0.000e+00 , 0.000e+00 , 0.000e+00 , 0.000e+00 },
72  { 3.821e-02 , 1.633e-04 , 0.000e+00 , 0.000e+00 },
73  { 0.000e+00 , 0.000e+00 , 0.000e+00 , 0.000e+00 },
74  { -1.921e-02 , 0.000e+00 , 0.000e+00 , 0.000e+00 }
75  };
76  const double parDX0_WCD[4][4] = { { -2.500e+02 , 0.000e+00 , 0.000e+00 , 0.000e+00 },
77  { -5.000e+02 , 0.000e+00 , 0.000e+00 , 0.000e+00 },
78  { -2.500e+02 , 0.000e+00 , 0.000e+00 , 0.000e+00 },
79  { -8.000e+02 , 0.000e+00 , 0.000e+00 , 0.000e+00 }
80  };
81 
82  const double parSref_Scin[4][4] = { { 3.223e+00 , 1.135e+00 , 1.292e+01 , 6.166e+03 },
83  { 9.273e+00 , 2.194e+00 , 5.890e+00 , 1.692e+03 },
84  { 1.232e+00 , 1.017e+00 , 8.543e+00 , 3.993e+03 },
85  { 1.248e+00 , 1.973e+00 , 7.309e+00 , 4.769e+03 }
86  };
87  const double parGamma_Scin[4][4] = { { 9.392e-01 , -1.324e-02 , 0.000e+00 , 0.000e+00 },
88  { 9.891e-01 , 2.095e-02 , 0.000e+00 , 0.000e+00 },
89  { 9.422e-01 , -1.596e-02 , 0.000e+00 , 0.000e+00 },
90  { 9.207e-01 , 4.101e-02 , 0.000e+00 , 0.000e+00 }
91  };
92  const double parDXmax_Scin[4][4] = { { -1.950e+02 , 4.144e+02 , 7.012e-01 , 0.000e+00 },
93  { 1.485e+02 , 1.000e+03 , 2.567e+03 , 2.997e+01 },
94  { 4.523e+01 , 1.446e+02 , 1.190e+00 , 0.000e+00 },
95  { -7.091e+01 , 3.782e+00 , 2.549e+00 , 0.000e+00 }
96  };
97  const double parLambda_Scin[4][4] = { { 2.064e+04 , -2.020e+04 , -6.592e-03 , 0.000e+00 },
98  { 7.091e+01 , 1.642e+01 , -9.233e+00 , 0.000e+00 },
99  { 6.686e+03 , -6.290e+03 , -1.396e-02 , 0.000e+00 },
100  { 1.077e+02 , 1.286e+01 , 0.000e+00 , 0.000e+00 }
101  };
102  const double parfLambdaE_Scin[4][4] = { { 0.000e+00 , 0.000e+00 , 0.000e+00 , 0.000e+00 },
103  { 3.606e-02 , -4.638e-03 , 0.000e+00 , 0.000e+00 },
104  { 0.000e+00 , 0.000e+00 , 0.000e+00 , 0.000e+00 },
105  { -3.762e-02 , 0.000e+00 , 0.000e+00 , 0.000e+00 }
106  };
107  const double parDX0_Scin[4][4] = { { -2.500e+02 , 0.000e+00 , 0.000e+00 , 0.000e+00 },
108  { -5.000e+02 , 0.000e+00 , 0.000e+00 , 0.000e+00 },
109  { -2.500e+02 , 0.000e+00 , 0.000e+00 , 0.000e+00 },
110  { -8.000e+02 , 0.000e+00 , 0.000e+00 , 0.000e+00 }
111  };
112 
113 
114 
115 
116  const double parSref_MD[4][4] = { { 8.769e+00 , 1.083e+00 , 1.130e+01 , 3.809e+03 },
117  { 0.000e+00 , 0.000e+00 , 0.000e+00 , 0.000e+00 },
118  { 0.000e+00 , 0.000e+00 , 0.000e+00 , 0.000e+00 },
119  { 0.000e+00 , 0.000e+00 , 0.000e+00 , 0.000e+00 }
120  };
121  const double parGamma_MD[4][4] = { { 9.505e-01 , -3.088e-02 , 0.000e+00 , 0.000e+00 },
122  { 0.000e+00 , 0.000e+00 , 0.000e+00 , 0.000e+00 },
123  { 0.000e+00 , 0.000e+00 , 0.000e+00 , 0.000e+00 },
124  { 0.000e+00 , 0.000e+00 , 0.000e+00 , 0.000e+00 }
125  };
126  const double parDXmax_MD[4][4] = { { -2.042e+02 , 7.968e+02 , 6.415e-01 , 0.000e+00 },
127  { 0.000e+00 , 0.000e+00 , 0.000e+00 , 0.000e+00 },
128  { 0.000e+00 , 0.000e+00 , 0.000e+00 , 0.000e+00 },
129  { 0.000e+00 , 0.000e+00 , 0.000e+00 , 0.000e+00 }
130  };
131  const double parLambda_MD[4][4] = { { 1.045e+04 , -9.968e+03 , -9.857e-03 , 0.000e+00 },
132  { 0.000e+00 , 0.000e+00 , 0.000e+00 , 0.000e+00 },
133  { 0.000e+00 , 0.000e+00 , 0.000e+00 , 0.000e+00 },
134  { 0.000e+00 , 0.000e+00 , 0.000e+00 , 0.000e+00 }
135  };
136  const double parfLambdaE_MD[4][4] = { { 0.000e+00 , 0.000e+00 , 0.000e+00 , 0.000e+00 },
137  { 0.000e+00 , 0.000e+00 , 0.000e+00 , 0.000e+00 },
138  { 0.000e+00 , 0.000e+00 , 0.000e+00 , 0.000e+00 },
139  { 0.000e+00 , 0.000e+00 , 0.000e+00 , 0.000e+00 }
140  };
141  const double parDX0_MD[4][4] = { { -2.500e+02 , 0.000e+00 , 0.000e+00 , 0.000e+00 },
142  { 0.000e+00 , 0.000e+00 , 0.000e+00 , 0.000e+00 },
143  { 0.000e+00 , 0.000e+00 , 0.000e+00 , 0.000e+00 },
144  { 0.000e+00 , 0.000e+00 , 0.000e+00 , 0.000e+00 }
145  };
146 
147 
148 
149 
150  // The core distance range in which the parameterization is accurate
151  //-----------------------------------------------------
152  const double rAccurate_low = 100.e2;
153  const double rAccurate_high = 2200.e2;
154 
155  // The core distance range in which the parameterization is well behaved
156  //-----------------------------------------------------
157  const double rLimit_low = 10.e2;
158  const double rLimit_high = 2500.e2;
159 
160  class UnivParam {
161 
162  private:
163  int fDetectorType; // [0] WCD [1] TopScin [2] BotScin ( The parameterization for TopScin/BotScin is only valid for pQGSJetII )
164  public:
165 
166  UnivParam(int DetectorType);
168 
169  double GetrLimit_low()
170  {
171  return rLimit_low;
172  }
173  double GetrLimit_high()
174  {
175  return rLimit_high;
176  }
177 
178  double DXFunc(double DX, double logE, double* parDX);
179 
180  double GetAlphaFluct(double r, int icomp);
181 
182  double RFuncPar(int icomp, int iparDX , int ipar);
183  double RFunc(double r, int icomp, int iparDX);
184  double RFunc(double r, int icomp, int iparDX , double* par);
185 
186  double GetS0(double r, double DX, double logE, int icomp, double Nmu);
187  double GetS0(double r, double DX, double logE, int icomp);
188 
189  double GetSignal(double r, double XmaxEdep, double logE, double theta, double psi, double rhoGround, double hGround, double Nmu, int icomp0, int iatm);
190  double GetLogE(double vem, double r, double XmaxEdep, double theta, double psi, double rhoGround, double hGround, double Nmu, int iatm);
191 
192  double GetSignal(double r, double* DX, double logE, double theta, double psi, double rhoGround, double hGround, double Nmu, int icomp0);
193 
194  };
195 }
196 #endif // __UnivParamNS_h_
197 
const double parDX0_MD[4][4]
Definition: UnivParam.h:141
const double rAccurate_low
Definition: UnivParam.h:152
const bool UseDiffusive[4]
Definition: UnivParam.h:35
const double parSref_Scin[4][4]
Definition: UnivParam.h:82
const double parSref_WCD[4][4]
Definition: UnivParam.h:51
const double parGamma_Scin[4][4]
Definition: UnivParam.h:87
const double parSref_MD[4][4]
Definition: UnivParam.h:116
const double parDXmax_Scin[4][4]
Definition: UnivParam.h:92
const int nParUsed[nParDX-1][4]
Definition: UnivParam.h:46
double DXFunc(double DX, double logE, double *parDX)
Definition: UnivParam.cc:37
const int nParDX
Definition: UnivParam.h:44
const double parfLambdaE_Scin[4][4]
Definition: UnivParam.h:102
double GetSignal(double r, double XmaxEdep, double logE, double theta, double psi, double rhoGround, double hGround, double Nmu, int icomp0, int iatm)
Definition: UnivParam.cc:202
const double rLimit_low
Definition: UnivParam.h:157
const bool XmaxShift[4]
Definition: UnivParam.h:34
const double parLambda_Scin[4][4]
Definition: UnivParam.h:97
const double parDX0_Scin[4][4]
Definition: UnivParam.h:107
double GetS0(double r, double DX, double logE, int icomp, double Nmu)
Definition: UnivParam.cc:188
double RFuncPar(int icomp, int iparDX, int ipar)
Definition: UnivParam.cc:62
const double parGamma_MD[4][4]
Definition: UnivParam.h:121
const double parfLambdaE_WCD[4][4]
Definition: UnivParam.h:71
const double parLambda_WCD[4][4]
Definition: UnivParam.h:66
const double rAccurate_high
Definition: UnivParam.h:153
const double rLimit_high
Definition: UnivParam.h:158
double RFunc(double r, int icomp, int iparDX)
Definition: UnivParam.cc:87
const bool UseDL[4]
Definition: UnivParam.h:36
double GetLogE(double vem, double r, double XmaxEdep, double theta, double psi, double rhoGround, double hGround, double Nmu, int iatm)
Definition: UnivParam.cc:267
const double parGamma_WCD[4][4]
Definition: UnivParam.h:56
double GetAlphaFluct(double r, int icomp)
Definition: UnivParam.cc:285
const double parDX0_WCD[4][4]
Definition: UnivParam.h:76
const double parLambda_MD[4][4]
Definition: UnivParam.h:131
const std::string parNameDX[nParDX]
Definition: UnivParam.h:45
const double DXref[4]
Definition: UnivParam.h:42
UnivParam(int DetectorType)
Definition: UnivParam.cc:27
const double parfLambdaE_MD[4][4]
Definition: UnivParam.h:136
const double parDXmax_MD[4][4]
Definition: UnivParam.h:126
const double parDXmax_WCD[4][4]
Definition: UnivParam.h:61

, generated on Tue Sep 26 2023.