counting.hh
1 //class Counting:
4 
5 #ifndef ICEMC_COUNTING_HH
6 #define ICEMC_COUNTING_HH
7 
8 class Vector;
10 class Counting {
11 public:
12 
13  Counting();
14  void initializeEachRun();
15 
16  int npass[2]; // count events that pass
17  int npassestrigger[2]; // incremented if passes trigger
18  int nl1triggers[2][2]; // how l1 triggers. polarization, ray
19  int nchanceinhell2[2]; // based on direction of ray and thickness in Cerenkov cone,
20  // signal has a chance to pass after accounting for
21  // angle, ice attenuation and 1/r
22  int nviewanglecut[2];
23  int nchanceinhell[2]; // based on depth,
24  // signal has a chance to pass after accounting for ice attenuation and 1/r
25  int nchanceinhell_1overr[2]; // after 1/r
26 // signal has chance of passing
27  int nchanceinhell_fresnel[2]; // after fresnel coefficients
28  // signal has chance of passing
29 
30  int nconverges[2]; // ray tracing converges to within 10m at ice surface
31 
32  int nacceptablerf[2]; // ray leaves where there is ice, and not where there is water
33  int nraywithincontinent1[2]; // reality check: exiting ray is within 30 degrees of south pole
34  int nraywithincontinent2[2]; // same, after next iteration.
35  int nraypointsup1[2]; // ray from exit point to balloon does not intersect earth
36  int nnottoosmall[2]; // based on neutrino position,
37  int nraypointsup2[2]; // same, after next iteration to get refracted ray.
38  int nviewangle_lt_90[2]; // viewing angle lt 90
39  int ngoodfracs[2]; // for debugging
40  int nbadfracs[2]; // for debugging
41  int nnottir[2]; // not totally internally reflected
42  int nentersice[2]; // Reality check: place where neutrino enters ice (from below) within 30 deg of south pole
43  int nabsorbed[2]; // Event has more than 0.001 probability of surviving trip through earth
44  int noway[2]; // no way the event will see any ice give its earth entrance point and its direction
45  int wheredoesitleave_err[2]; // wheredoesitleave gives error
46  int neverseesice[2]; // determined that the neutrino path never sees ice
47  int iceinteraction[2]; // there is an interaction in the ice
48  int inhorizon[2]; // there is an interaction in the ice
49  int wheredoesitenterice_err[2]; // there is an interaction in the ice
50  int toohigh[2]; // there is an interaction in the ice
51  int toolow[2]; // there is an interaction in the ice
52  int ndeadtime[2]; // thrown out by dead time
53 
54 
55 // variables for counting neutrinos and reporting results.
56  int nnu_e; //counting the number of e,mu,tau neutrinos
57  int nnu_mu;
58  int nnu_tau;
59 
60  static constexpr int NCOSTHETA=180;
61  static constexpr int NPHI=180;
62  static constexpr double COSTHETAMAX=1.;
63  static constexpr double COSTHETAMIN=-1.;
64  static constexpr double PHIMAX=2*3.14159;
65  static constexpr double PHIMIN=0.;
66  double weights_rin[NCOSTHETA][NPHI];
67 
68  void findCosthetaPhiBins(Position r_in,int &icostheta,int &iphi);
69  void IncrementWeights_r_in(Position r_in,double weight) ;
70 
71 protected:
72 
73 };
74 
75 #endif //ICEMC_COUNTING_HH
This class is a 3-vector that represents a position on the Earth's surface.
Definition: position.hh:26
This class represents a three-vector. Operators are overloaded to provide for the familiar operations...
Definition: vector.hh:27
Handles event counting as cuts are made.
Definition: counting.hh:10