signal.hh
1 #ifndef SIGNAL_H_
2 #define SIGNAL_H_
3 //class Signal:
6 #include <cmath>
7 #include <iostream>
8 
9 
10 using std::cout;
11 
13 class Signal {
14 
15 protected:
16  // properties of ice
17  double x0ice;
18  //double X0ICE; // radiation length of ice (meters)
19  double ecice; // critical energy in ice (MeV)
20  //const static double ECICE; // critical energy in ice (MeV)
21  double nice; // index of refraction of ice
22  double nfirn; // index of refraction at the very surface - Peter
23  double invnfirn;
24  double invnice;
25  double rhoice; // density of ice (kg/m**3)
26  double kelvins_ice; // temperature in Kelvin (ice+system)
27  double changle_ice;
28  double aex_ice; //efficiency for producing charge asymmetry relative to ice. 1 by definition
29  //double n_depth; // index of refraction at the interaction depth
30  double alphaice; // exponent that goes into cutting off the spectrum at high frequencies
31  double rm_ice; // moliere radius, in g/cm^2
32  double ke_ice; // const staticant in jaime's parameterization, in V/cm/MHz
33  double kl_ice; //const staticant in jaime's parameterization
34  double kdelta_ice; // const staticant in jaime's parameterization
35  double kr_ice; // const staticant in jaime's parameterization
36  double betaice; // exponent, in jaime's parameterization
37  double nu0_modified; // nu_0 modified for a specific medium
38  double nu_r;// parameter for signal parameterization
39  int WHICHPARAMETERIZATION;
40  double vmmhz1m_reference; // reference value for V/m/MHz at f=1 MHz and pnu=10^18 eV
41  double freq_reference; // reference frequency in MHz
42  double pnu_reference; // reference energy in eV
43 
44 
45 
46 
47  double KR_MEDIUM; // constant in jaime's parameterization
48  double RM_MEDIUM; // moliere radius, in g/cm^2
49 double KL_MEDIUM; //constant in jaime's parameterization
50 
51  double KE_MEDIUM; // constant in jaime's parameterization, in V/cm/MHz
52  double ECMEDIUM; // radiation length of medium
53 
54 
55  double ALPHAMEDIUM;// exponent that goes into cutting off the spectrum at high frequencies
56  double AEXMEDIUM; // efficiency for making charge asymmetry
57  double KDELTA_MEDIUM; // constant in jaime's parameterization
58 double BETAMEDIUM; // exponent, in jaime's parameterization
59 
60 
61  double JAIME_FACTOR; // factor to multiply Jaime's parameterization for error analysis
62  int MEDIUM;
63  int LPM;
64 
65  static const double RHOSALT; // density of salt (kg/m**3)
66 
67 
68 
69  static const double RM_ICE; // moliere radius, in g/cm^2
70  static const double RM_SALT; // moliere radius, in g/cm^2
71  static const double KR_SALT; // constant in jaime's parameterization
72  static const double KR_ICE; // constant in jaime's parameterization
73  //const double X0SALT=0.1024; // radiation length of salt (meters)
74  static const double X0SALT; // radiation length of salt (meters)
75  //const double ECSALT=40.; // critical energy in salt (MeV)
76  static const double ECSALT; // critical energy in salt (MeV)
77  static const double X0ICE;
78  // //const double X0ICE=0.392; // radiation length of ice (meters)
79  static const double ECICE; // critical energy in ice (MeV)
80  // //const double ECICE=73.0; // critical energy in ice (MeV)
81 static const double AEX_ICE; //efficiency for producing charge asymmetry relative to ice. 1 by definition
82 
83 
84 
85  static const double ALPHAICE; // exponent that goes into cutting off the spectrum at high frequencies
86  static const double AEX_SALT; // efficiency for producing charge asymmetry relative to ice
87  static const double ALPHASALT; // exponent that goes into cutting off the spectrum at high frequencies
88  static const double KE_SALT; // constant in jaime's parameterization, in V/cm/MHz
89  static const double KL_SALT; //constant in jaime's parameterization
90  static const double KDELTA_SALT; // constant in jaime's parameterization
91  static const double KE_ICE; // constant in jaime's parameterization, in V/cm/MHz
92  static const double KL_ICE; //constant in jaime's parameterization
93  static const double KDELTA_ICE; // constant in jaime's parameterization
94 
95  static const double KELVINS_ICE; // temperature in Kelvin (ice+system)
96  static const double KELVINS_SALT; // temperature in salt (350) + receiver temp (150)
97  static const double BETAICE; // exponent, in jaime's parameterization
98  // double NU0_MODIFIED=0.; // nu_0 modified for a specific medium
99  // double NU_R;// parameter for signal parameterization
100  static const double BETASALT; // exponent, in jaime's parameterization
101 
102 
103 
104 
105 public:
106  Signal();
107  void TaperVmMHz(double viewangle,double deltheta_em,double deltheta_had,double emfrac,double hadfrac,
108  double& vmmhz1m,
109  double& vmmhz_em); // returns 1 if viewangle-changle<20*width for both em and had showers
110  double GetVmMHz1m(double pnu,double freq); // constructor
111  void GetVmMHz(double vmmhz_max,double vmmhz1m_max,double pnu,double *freq,double notch_min,double notch_max,double *vmmhz,int nfreq);
112  void Initialize();
113 
114  void SetParameterization(int whichparameterization);
115  double vmmhz1m_max; // V/m/MHz at 1m
116  int GetLPM(); // lpm
117 double GetELPM(); // elpm
118  void GetSpread(double pnu,
119  double emfrac,
120  double hadfrac,
121  double freq,
122  // double n_depth,
123  // double X0DEPTH,
124 
125  double& deltheta_em_max,
126  double& deltheta_had_max);
127 
128 double X0MEDIUM; // radiation length of medium
129 double KELVINS; // temperature of medium + system
130 static const double RHOICE; // density of ice (kg/m**3)
131  static const double RHOAIR; // density of air (kg/m**3)
132  static const double RHOH20; // density of water (kg/m**3)
133  double N_DEPTH; // index of refraction at the interaction depth
134  double RHO_DEPTH; // density at the interaction depth
135  double X0_DEPTH; // density at the interaction depth
136  double NMEDIUM_RECEIVER; // index of refraction at receiver
137 double changle; // cherenkov angle
138  double RHOMEDIUM; // density of medium
139  double logscalefactor_taper;
140  static const double N_AIR; // index of refr for air
141  static const double NICE; // index of refraction of ice
142  static const double NSALT; // index of refraction of salt
143  static const double CHANGLE_ICE; // cherenkov angle in ice
144  void SetMedium(int medium) {
145  MEDIUM=medium;
146  if (MEDIUM!=0) {
147  std::cout << "Medium is " << MEDIUM << "\n";
148  std::cout << "Non-default setting: Not ice!\n";
149  }
150  InitializeMedium();
151  }
152  static const double VIEWANGLE_CUT;
153  void InitializeMedium();
154 
155  void SetNMediumReceiver(double nmedium_receiver) {
156  NMEDIUM_RECEIVER=nmedium_receiver;
157  }
158 void SetLPM(double lpm) {
159  LPM=(int)lpm;
160  }
161  void SetKelvins(double kelvins) {
162  KELVINS=kelvins;
163  }
164  void SetBetaMedium(double betamedium) {
165  BETAMEDIUM=betamedium;
166  }
167 
168 
169  void SetRhoMedium(double rhomedium) {
170  RHOMEDIUM=rhomedium;
171  }
172  void SetKrMedium(double kr_medium) {
173  KR_MEDIUM=kr_medium;
174  }
175  void SetKlMedium(double kl_medium) {
176  KL_MEDIUM=kl_medium;
177  }
178 
179  void SetRmMedium(double rm_medium) {
180  RM_MEDIUM=rm_medium;
181  }
182  void SetNDepth(double n_depth) {
183  N_DEPTH=n_depth;
184  SetChangle(acos(1/N_DEPTH));
185 
186  SetrhoDepth((N_DEPTH-1.)/0.86*1000.);
187  //SetrhoDepth(RHOICE);
188 
189  SetX0Depth(X0MEDIUM); // no dependence on rho
190 
191 
192  }
193  void SetX0Depth(double x0_depth) {
194  X0_DEPTH=x0_depth;
195  }
196  void SetrhoDepth(double rho_depth) {
197  RHO_DEPTH=rho_depth;
198  }
199  void SetKeMedium(double ke_medium) {
200  KE_MEDIUM=ke_medium;
201  }
202  void SetEcMedium(double ecmedium) {
203  ECMEDIUM=ecmedium;
204  }
205  void SetX0Medium(double x0medium) {
206  X0MEDIUM=x0medium;
207  }
208  void SetChangle(double thischangle) {
209  changle=thischangle;
210  }
211  void SetAlphaMedium(double alphamedium) {
212  ALPHAMEDIUM=alphamedium;
213  }
214  void SetAexMedium(double aexmedium) {
215  AEXMEDIUM=aexmedium;
216  }
217  void SetKdelta_Medium(double kdelta_medium) {
218  KDELTA_MEDIUM=kdelta_medium;
219  }
220  void SetJaime_Factor(double jaime_factor) {
221  JAIME_FACTOR=jaime_factor;
222  if (JAIME_FACTOR!=1)
223  std::cout << "Non-default setting: JAIME_FACTOR= " << JAIME_FACTOR << "\n";
224  }
225 
226 
227 }; //class Position
228 
229 #endif
Radiation from interaction.
Definition: signal.hh:13