icemc
Primaries.h
Go to the documentation of this file.
1 //class Primaries:
4 
5 #ifndef PRIMARIES_H_
6 #define PRIMARIES_H_
7 
8 #include "TRandom3.h"
9 #include <iostream>
10 
11 #include "TH1.h"
12 #include "TH2.h"
13 #include "TF1.h"
14 #include "TF2.h"
15 #include "TCanvas.h"
16 #include "TF3.h"
17 #include "TH2D.h"
18 #include "vector.hh"
19 #include "position.hh"
20 
21 class Vector;
22 class Position;
23 class Interaction;
24 class Primaries;
25 class IceModel;
26 class Counting;
27 class Settings;
28 
29 //using namespace std;
30 using std::string;
31 //
32 using std::cout;
33 
34 
35 
36 
38 class Y {
39 
40 
41 
42 private:
43  TF1* ffrac;
44 
45 
46  TF1* fC1_high[2][2];
47 
48  TF1 *fC1_low;
49 
50  TF1 *fC2;
51 
52 
53  TF3* fy0_low;
54  TF2* fy0_high;
55  TRandom3 Rand3;
56 
57  double pickYConnollyetal2011(int NU,int CURRENT,double e);
58  // NU=0: nubar, NU=1: nu
59  // CURRENT=0: CC, CURRENT-1: NC
60 
61  static constexpr double ymin_low = 0.00002;
62  constexpr static double ymax_low=0.001;
63  constexpr static double ymin_high=0.001;
64  constexpr static double ymax_high=1.;
65  constexpr static double dy_low=0.00002;
66  constexpr static double dy_high=0.001;
67 
68  double pickYGandhietal();
69 
70 
71  constexpr static double R1=0.36787944;
72  constexpr static double R2=0.63212056;
73 
74 
75 public:
76  Y();
77  double pickY(Settings *settings1,double pnu,int nu_nubar,int currentint);
78  double Getyweight(double pnu,double y,int nu_nubar,int currentint);
80 
81 };//Y
83 class Primaries {
84 
85 private:
86  TRandom3 Rand3;
87 
88  TH2D *m_hsigma;
89  TCanvas *m_csigma;
90  Y *m_myY;
92 
93 public:
94  double pickY(Settings *settings1,double pnu,int nu_nubar,int currentint);
95  double Getyweight(double pnu,double y,int nu_nubar,int currentint);
96 
97 
98  double A_low[4];
99  double A0_high[2][2];
100  double A1_high[2][2];
101  double A2_high[2][2];
102  double A3_high[2][2];
103  double b0;
104  double b1;
105 
106  TF1* m_fy[2][2];
107  TF1* m_fsigma[2][2];
108 
109  double c0[2][2];
110  double c1[2][2];
111  double c2[2][2];
112  double c3[2][2];
113  double c4[2][2];
114 
115  static constexpr int NSIGMAS=2;
116  double mine[NSIGMAS];
119  double maxe[NSIGMAS];
120 
121  Primaries();
122  ~Primaries();
123 
126  int GetSigma(double pnu,double& sigma,double &len_int_kgm2,Settings *settings1,int nu_nubar,int currentint);
127 
128 
129 
130  // string GetCurrent();
131  string GetNuFlavor();
132 protected:
133 };
134 
136 class Interaction {
137 
138 private:
139 
140 
141 
143 
145 
147  static constexpr double nu_banana_theta_angle=-0.413 * 3.14159/180.;
148 
149 
150  static constexpr double altitude_nu_banana=-400.;
151 
152 
153  static constexpr double lat_nu_banana=0.;
154  static constexpr double lon_nu_banana=0.;
155 
156 
157  static constexpr double banana_slopey=0.;
158  static constexpr double nu_banana_phi_angle=0. * 3.14159/180.;
159 
160 
161 
162 public:
163 
164  static constexpr double phi_nu_banana=3.14159/4;
165 
166  static constexpr double banana_observation_distance=600000.;
167  static constexpr double theta_nu_banana=170.*3.14159/180.;
168 
169  static constexpr int kcc=0;
170  static constexpr int knc=1;
171 
174  Interaction(string inttype,Primaries *primary1,Settings *settings1,int whichray,Counting *count1);
175 
176  void PickAnyDirection();
177 
178  int noway;
182  int toohigh;
183  int toolow;
184 
186 
189  double phi_nutraject;
190 
191  double weight_nu;
192  double weight_nu_prob;
193 
198  double chord;
199  double logchord;
202  double chord_kgm2_ice;
203  double d1;
204  double d2;
205 
206 
207  static constexpr double pnu_banana=2.00E19;
208  static constexpr double banana_y=0.2;
211  double banana_volts;
212  static constexpr double banana_signal_fluct=0.;
213  static constexpr double banana_sigma=0.;
214 
215 
216  void setNuFlavor(Primaries *primary1,Settings *settings1,int whichray,Counting *count1);
217  string GetCurrent();
218  void setCurrent();
221  string nuflavor;
222  string current;
225 
226 
228 
229  string banana_flavor;
230  string banana_current;
231 
233 
236 
239  double dnutries;
240 
242 
243  double altitude_int;
245 
246  double r_fromballoon[2];
247 
249  double r_exit2bn;
252 
253 
254 protected:
255 };
256 #endif
static constexpr double banana_y
Elasticity. 0.2 is an average number.
Definition: Primaries.h:208
Vector nnu_banana
Forced neutrino direction.
Definition: Primaries.h:232
static constexpr double nu_banana_theta_angle
don&#39;t let me use RADDEG which is annoying
Definition: Primaries.h:147
double pnu
energy of neutrinos
Definition: icemc.cc:181
int GetSigma(double pnu, double &sigma, double &len_int_kgm2, Settings *settings1, int nu_nubar, int currentint)
Neutrino-nucleon cross-sections using model chosen.
Definition: Primaries.cc:159
int nuflavorint
Added by Stephen for output purposes.
Definition: Primaries.h:223
static constexpr double banana_observation_distance
How far from the surface above the interaction are we when we measure the voltages? (meters) Note: Should be at least 100000 for best results.
Definition: Primaries.h:166
double chord_kgm2_bestcase
the chord the neutrino would traverse if it all was crust density
Definition: Primaries.h:201
static constexpr double pnu_banana
Definition: Primaries.h:207
Position posnu
Definition: Primaries.h:219
Primaries()
constructor
Definition: Primaries.cc:24
double A0_high[2][2]
Table V of Connolly et al. for use in Eq. 16.
Definition: Primaries.h:99
static constexpr double R1
1/e, used for Gandhi et al.
Definition: Primaries.h:71
static constexpr int kcc
Definition: Primaries.h:169
Interaction(string inttype, Primaries *primary1, Settings *settings1, int whichray, Counting *count1)
Definition: Primaries.cc:220
static constexpr double dy_low
y step in low region, Connolly et al.
Definition: Primaries.h:65
Inelasticity distributions: stores parametrizations and picks inelasticities.
Definition: Primaries.h:38
double d1
same as chord in m (earth entrance to rock-ice boundary)
Definition: Primaries.h:203
double d2
ice-rock boundary to interaction point in m
Definition: Primaries.h:204
double banana_phi_obs
Definition: Primaries.h:172
double Getyweight(double pnu, double y, int nu_nubar, int currentint)
If you want to choose y from a flat distribution this is the weight it should have according to Conno...
Definition: Primaries.cc:474
double r_exit2bn_measured
exit to balloon deduced from measured theta
Definition: Primaries.h:250
double banana_theta_obs
Definition: Primaries.h:210
void PickAnyDirection()
Constructor.
Definition: Primaries.cc:262
double c4[2][2]
Table V of Connolly et al. for Eq. 7.
Definition: Primaries.h:113
double A3_high[2][2]
Table V of Connolly et al. for use in Eq. 16.
Definition: Primaries.h:102
static constexpr double banana_sigma
NSIGMA in the case of a banana plot.
Definition: Primaries.h:213
int wheredoesitenterice_err
Definition: Primaries.h:181
int wheredoesitleave_err
Definition: Primaries.h:179
string banana_flavor
Force interaction to be a muon neutrino.
Definition: Primaries.h:229
double A_low[4]
Table V of Connolly et al. for use in Eq. 16. Same for any nu_nubar and current type.
Definition: Primaries.h:98
static constexpr double banana_slopey
Turn slopyness off for banana plots (SLOPEY)
Definition: Primaries.h:157
TF1 * fC2
parameterization of parameter C2 in the low y region according to Equation 17.
Definition: Primaries.h:50
double r_exit2bn
exit to balloon
Definition: Primaries.h:249
This class represents a three-vector. Operators are overloaded to provide for the familiar operations...
Definition: vector.hh:27
double maxe[NSIGMAS]
minimum energy for cross section parametrizations, in eV
Definition: Primaries.h:119
int toohigh
Definition: Primaries.h:182
Vector tmp_banana
Intermediate vector.
Definition: Primaries.h:142
Position r_in
position where neutrino enters the earth
Definition: Primaries.h:194
Vector banana_obs
Vector from the neutrino interaction to the observation point.
Definition: Primaries.h:173
TF1 * fC1_high[2][2]
parameterization of parameter C1 in the high y region according to Equation 16
Definition: Primaries.h:46
double b1
Eq. 17 of Connolly et al.
Definition: Primaries.h:104
double weight_bestcase
what weight1 would be if whole earth had density of crust - for quick and dirty calculation of best c...
Definition: Primaries.h:200
int whichray
Definition: icemc.cc:162
int noway
Definition: Primaries.h:178
double chord
chord in m from earth entrance to rock-ice boundary
Definition: Primaries.h:198
Y()
Definition: Primaries.cc:336
static constexpr double ymax_low
Maximum y in low-y region, Connolly et al.
Definition: Primaries.h:62
Position nu_banana
The forced interaction point of the neutrino for the banana plots.
Definition: Primaries.h:234
double b0
Eq. 17 of Connolly et al.
Definition: Primaries.h:103
double c3[2][2]
Table V of Connolly et al. for Eq. 7.
Definition: Primaries.h:112
static constexpr double lon_nu_banana
Definition: Primaries.h:154
double banana_volts
Total voltage measured at a spot on the sky.
Definition: Primaries.h:211
static constexpr int NSIGMAS
Definition: Primaries.h:115
static constexpr double R2
1-R1, used for Gandhi et al.
Definition: Primaries.h:72
double altitude_int
depth of interaction
Definition: Primaries.h:243
TH2D * m_hsigma
plot of cross section vs. log(E/GeV)
Definition: Primaries.h:88
Handles event counting as cuts are made.
Definition: counting.hh:10
static constexpr double theta_nu_banana
Location of banana neutrino in theta.
Definition: Primaries.h:167
Ice thicknesses and water depth.
Definition: icemodel.hh:88
Y * m_myY
Definition: Primaries.h:90
int iceinteraction
whether or not there is an interaction in the ice
Definition: Primaries.h:251
static constexpr double altitude_nu_banana
Depth of interaction of banana neutrino.
Definition: Primaries.h:150
string nuflavor
neutrino flavor
Definition: Primaries.h:221
TF1 * fC1_low
parameterization of parameter C1 in the low y region according to Equation 16.
Definition: Primaries.h:48
void setNuFlavor(Primaries *primary1, Settings *settings1, int whichray, Counting *count1)
Definition: Primaries.cc:284
double pickY(Settings *settings1, double pnu, int nu_nubar, int currentint)
pick inelasticity y according to chosen model
Definition: Primaries.cc:414
This class is a 3-vector that represents a position on the Earth&#39;s surface.
Definition: position.hh:26
string banana_current
Force interaction to be a neutral current.
Definition: Primaries.h:230
double pickY(Settings *settings1, double pnu, int nu_nubar, int currentint)
pick inelasticity y according to chosen model
Definition: Primaries.cc:141
double pathlength_inice
Definition: Primaries.h:185
double banana_weight
Weight measurement locations to account for phase space.
Definition: Primaries.h:209
Vector nnu
direction of neutrino (+z in south pole direction)
Definition: Primaries.h:187
static constexpr double dy_high
y step in high region, Connolly et al.
Definition: Primaries.h:66
int run_old_code
Definition: Primaries.h:91
double d_effective_area
In unbaised mode, projection of surface onto nnu.
Definition: Primaries.h:241
double chord_kgm2_ice
from ice entrance to interaction point
Definition: Primaries.h:202
Functions you need to generate a primary interaction including cross sections and picking charged cur...
Definition: Primaries.h:83
double c0[2][2]
Table V of Connolly et al. for Eq. 7.
Definition: Primaries.h:109
double r_fromballoon_db
same, for double bangs
Definition: Primaries.h:248
static constexpr double ymin_low
Minimum y in low-y region, Connolly et al.
Definition: Primaries.h:61
TF1 * m_fy[2][2]
Definition: Primaries.h:106
Position nuexit
place where neutrino would have left the earth
Definition: Primaries.h:196
static constexpr double lat_nu_banana
Definition: Primaries.h:153
double Getyweight(double pnu, double y, int nu_nubar, int currentint)
in case you choose y from a flat distribution, this is the weight you should give it according to Con...
Definition: Primaries.cc:136
TRandom3 Rand3
Definition: Primaries.h:55
static constexpr double banana_signal_fluct
Turn off noise for banana plots (settings1->SIGNAL_FLUCT) (shouldn&#39;t matter)
Definition: Primaries.h:212
Position posnu_down
Definition: Primaries.h:220
Position r_enterice
position where neutrino enters the ice
Definition: Primaries.h:195
Reads in and stores input settings for the run.
Definition: Settings.h:35
string GetNuFlavor()
pick a neutrino type, flavor ratio 1:1:1
Definition: Primaries.cc:200
double c1[2][2]
Table V of Connolly et al. for Eq. 7.
Definition: Primaries.h:110
double weight_nu_prob
Weight for neutrino that survives to posnu and interacts in the ice.
Definition: Primaries.h:192
int toolow
Definition: Primaries.h:183
TF1 * m_fsigma[2][2]
Definition: Primaries.h:107
static constexpr double ymin_high
Minimum y in high-y region, Connolly et al.
Definition: Primaries.h:63
double altitude_int_mirror
depth of the mirror point of interaction.
Definition: Primaries.h:244
Position nuexitice
place where neutrino would have left the ice
Definition: Primaries.h:197
double A2_high[2][2]
Table V of Connolly et al. for use in Eq. 16.
Definition: Primaries.h:101
~Primaries()
*primary1 must be manually deleted in icemc for deconstructor to actually be called.
Definition: Primaries.cc:146
int currentint
Ditto - Stephen.
Definition: Primaries.h:224
static constexpr double ymax_high
Maximum y in high-y region, Connolly et al.
Definition: Primaries.h:64
TF3 * fy0_low
For picking inelasticity in low y region according to Equation 14.
Definition: Primaries.h:53
double c2[2][2]
Table V of Connolly et al. for Eq. 7.
Definition: Primaries.h:111
TF2 * fy0_high
For picking inelasticity in high y region according to Equation 15.
Definition: Primaries.h:54
static constexpr double phi_nu_banana
Location in phi.
Definition: Primaries.h:164
double pickYConnollyetal2011(int NU, int CURRENT, double e)
pick an inelasticity using recipe in Connolly et al. (2011)
Definition: Primaries.cc:441
double r_fromballoon[2]
distance from interaction to balloon for each ray
Definition: Primaries.h:246
double logchord
log_10 of chord length earth entrance to where it enters ice
Definition: Primaries.h:199
TRandom3 Rand3
Definition: Primaries.h:86
TF1 * ffrac
This is the fraction of the distribution in the low y region given by Equation 18.
Definition: Primaries.h:43
double mine[NSIGMAS]
minimum energy for cross section parametrizations, in eV
Definition: Primaries.h:118
double phi_nutraject
phi of nnu with earth center to balloon as z axis
Definition: Primaries.h:189
string GetCurrent()
choose CC or NC: get from ratios in Ghandi etal paper, updated for the CTEQ6-DIS parton distribution ...
Definition: Primaries.cc:313
double costheta_nutraject
theta of nnu with earth center to balloon as z axis
Definition: Primaries.h:188
static constexpr double nu_banana_phi_angle
Definition: Primaries.h:158
Position nu_banana_surface
The location of the surface above the forced neutrino interaction point.
Definition: Primaries.h:235
double dtryingdirection
weighting factor: how many equivalent tries each neutrino counts for after having reduced angular pha...
Definition: Primaries.h:238
int neverseesice
Definition: Primaries.h:180
double surface_over_banana_nu
Definition: Primaries.h:227
double weight_nu
Weight for neutrino that survives to posnu.
Definition: Primaries.h:191
void setCurrent()
Definition: Primaries.cc:324
double pickYGandhietal()
THIS IS A ROUGH PARAMETRIZATION OF PLOT 6 FROM Ghandhi,Reno,Quigg,Sarcevic hep-ph/9512364 (the curves...
Definition: Primaries.cc:427
static constexpr int knc
Definition: Primaries.h:170
double dnutries
product of dtryingdirection and dtryingposition
Definition: Primaries.h:239
string current
CC or NC?
Definition: Primaries.h:222
Stores everything about a particular neutrino interaction. Interaction.
Definition: Primaries.h:136
TCanvas * m_csigma
canvas
Definition: Primaries.h:89
double A1_high[2][2]
Table V of Connolly et al. for use in Eq. 16.
Definition: Primaries.h:100