TimeModel.h
Go to the documentation of this file.
1 #ifndef h_TimeModel
2 #define h_TimeModel
3 
4 using namespace std;
5 
6 #include "TMath.h"
7 #include "TF1.h"
8 #include "TObject.h"
9 
10 #include <evt/ShowerSimData.h>
11 
12 class TProfile;
13 
14 namespace utl {
15  class TabulatedFunction;
16 };
17 
18 
19 class TimeModel {
20 
21  public:
22 
23  TimeModel (double angle_in, // angle in deg
24  int primary,
25  int Da_flag_in=1);
26 
27  TimeModel (double angle_in, // angle in deg
28  const utl::TabulatedFunction& MuonProfile,
29  double Xobs,
31  int Da_flag_in=1);
32 
33  ~TimeModel();
34 
35 
36 
37  void Info(void);
38 
39 
40 
41  TProfile *Get_dNdz (float zMin, float zMax, int nBin);
42  TProfile *Get_dNdX (float zMin, float zMax, int nBin,
43  double cosTheta, double HeightObs);
44  TProfile *Get_dNdz_FromProfile();
45  TProfile *Get_dNdX_FromProfile (double cosTheta, double HeightObs);
46 
47 private:
48 
51  double fZmin;
52  double fZmax;
53 
54  double m;
55  double m2;
56  double pk;
57  double kappa;
58  double lambda;
59  double ptc;
60  double gam;
61  double c;
62  double logt_e_up;
63 
64  double logMean;
65  double logSigma;
66  double logLambda;
67  double angle;
68  double zMean;
69 
70  double logt_g_up;
71  double logt_g_low;
72 
73  double Delta;
74 
76  double int_e;
77  double int_g;
78 
79  int Da_flag;
80 
81 
82  void MakeProductionHeightParameters (double thetadeg,
83  int primary /*,double logE*/);
84 
85 
86  void MakeProductionHeightDistribution (double thetadeg,
87  const utl::TabulatedFunction& MuonProfile,
88  double XobsVertical);
89 
90  void ConvertProductionHeightDistribution (double thetadeg,
91  const utl::TabulatedFunction& MuonProdProfile,
92  double Xobs); // vert. depth
93 
94  double L_t(double z,double r);
95  double cosaDa(double z,double r,double Delta);
96  double z_t(double t,double r);
97  double dzdt(double t,double r);
98  double dNdlogz(double logz);
99  double dNdz(double z);
100  double g_t(double t,double r,double Delta,double n);
101  double fg_t(double *t,double *r);
102 
103 
104  double E(double t,double x);
105  double dEdt(double t,double x);
106  double dNdE(double E,double x,double r);
107  double dNdlogE(double logE,double x,double r);
108  double fdNdlogE(double *logE,double *p);
109  double e_t(double t,double r,double z,double n);
110  double fe_t(double *t,double *r);
111 
112 // double TotaldNdt(double t,double r,double z,double Delta, double n);
113 
114  public:
115  TF1 *Fe_logt;
116  TF1 *FtMe_logt;
117  TF1 *Fg_logt;
118  TF1 *FtMg_logt;
120 
121 
122  double fe_logt(double *logt,double *r);
123  double ftMe_logt(double *logt,double *r);
124  double fg_logt(double *logt,double *r);
125  double ftMg_logt(double *logt,double *r);
126  double fTotaldNdlogt(double *logt,double *r);
127 
128 
129 
130  double SetCoordinates(double r,double psi);//psi rad
131  void SetMomentumNumber(double MomentumNumber_in);
132  double GetMomentumNumber();
133 
134  double GetFirstTime(int N=1);
135  double GetTimes(int N,double *at);
136  double GetMeanTime(int N=1);
137  void GetFirstAndMeanTime(double& t_first,double& t_mean,int N=1);
138  double GetLastTime(int N=1);
139  void GetMeanAndRMSOfFirstTime(double& mean_t1,double& RMS_t1,int N=1,int stats=1000);
140  double GetDeltaTime();
141  double Eval_e_t(double t);
142 
143  double Get_tM_g_t(double MomentumNumber_in);
144  double Get_tM_e_t(double MomentumNumber_in);
145  double Get_tM_e_t(double MomentumNumber_in,double z);
146 
147  double TotaldNdt(double t,double r,double Delta, double n);
148 
149 
150  double function(double logt,double level);
151  double get_function_zero(double level);
152  double GetRiseTime(double down=0.1,double up=0.5);
153 
154 };
155 
156 #endif
double pk
Definition: TimeModel.h:56
double angle
Definition: TimeModel.h:67
double fZmin
Definition: TimeModel.h:51
double int_g
Definition: TimeModel.h:77
double MomentumNumber
Definition: TimeModel.h:75
double Delta
Definition: TimeModel.h:73
double fZmax
Definition: TimeModel.h:52
int Da_flag
Definition: TimeModel.h:79
double ptc
Definition: TimeModel.h:59
double c
Definition: TimeModel.h:61
Class to hold collection (x,y) points and provide interpolation between them.
TF1 * FtMg_logt
Definition: TimeModel.h:118
TF1 * FtMe_logt
Definition: TimeModel.h:116
double m
Definition: TimeModel.h:54
double logt_g_up
Definition: TimeModel.h:70
TF1 * Fe_logt
Definition: TimeModel.h:115
double kappa
Definition: TimeModel.h:57
TF1 * Fg_logt
Definition: TimeModel.h:117
double logt_g_low
Definition: TimeModel.h:71
double logMean
Definition: TimeModel.h:64
double lambda
Definition: TimeModel.h:58
double logSigma
Definition: TimeModel.h:65
double gam
Definition: TimeModel.h:60
double logt_e_up
Definition: TimeModel.h:62
bool fProductionHeightFromProfile
Definition: TimeModel.h:49
TF1 * FTotaldNdlogt
Definition: TimeModel.h:119
utl::TabulatedFunction * fMuonProductionHeightDistribution
Definition: TimeModel.h:50
double int_e
Definition: TimeModel.h:76
int stats
Definition: dump1090.h:293
double zMean
Definition: TimeModel.h:68
double logLambda
Definition: TimeModel.h:66
double m2
Definition: TimeModel.h:55

, generated on Tue Sep 26 2023.