29 return (lgE - log10(pCal[0])) / pCal[1];
33 return 0.5 * (1 + TMath::Erf((x - pars[0] ) / pars[1]));
41 const double thmax =
mapParameters[
"MaxZenith"] * TMath::DegToRad();
42 const double thmin = 0.;
43 const double thStep = 0.0005;
44 double integralTheta = 0;
48 for (
double thIntegr = thmin; thIntegr < thmax; thIntegr += thStep) {
58 double fnorm = 0.5 * (
pow(TMath::Sin(thmax), 2) -
pow(TMath::Sin(thmin), 2));
59 return integralTheta / fnorm;
64 double efficiency = 1;
81 cerr <<
EfficiencyFlag <<
": no valid efficiency parameterization chosen " << endl;
82 throw std::exception();
89 double efficiency = 1;
101 cerr <<
EfficiencyFlag <<
": no valid efficiency parameterization chosen " << endl;
102 throw std::exception();
113 int ncol = lgEs.GetNoElements();
114 TVectorD biasEnergy(ncol);
116 for (
int i = 0; i < ncol; ++i) {
117 if (
BiasFlag ==
"BiasICRC19_SD1500_preliminary") {
119 double integral = 0.;
120 double deltacos2theta = 0.001;
121 for (Double_t cos2theta = 0.25; cos2theta < 1; cos2theta += deltacos2theta) {
122 double costheta =
sqrt(cos2theta);
130 biasEnergy[i] = integral;
131 }
else if (
BiasFlag ==
"BiasICRC19_SD1500_Offline") {
133 double integral = 0.;
134 double deltacos2theta = 0.001;
135 for (Double_t cos2theta = 0.25; cos2theta < 1; cos2theta += deltacos2theta) {
136 double costheta =
sqrt(cos2theta);
144 biasEnergy[i] = integral;
145 }
else if (
BiasFlag ==
"BiasICRC19_SD1500_Herald") {
147 double integral = 0.;
148 double deltacos2theta = 0.001;
149 for (Double_t cos2theta = 0.25; cos2theta < 1; cos2theta += deltacos2theta) {
150 double costheta =
sqrt(cos2theta);
158 biasEnergy[i] = integral;
159 }
else if (
BiasFlag ==
"BiasICRC19_SD750") {
160 const double fdB = pCal[1];
162 }
else if (
BiasFlag ==
"Bias_TestExample") {
170 cerr <<
BiasFlag <<
": no valid bias parameterization chosen " << endl;
171 throw std::exception();
180 if (
BiasFlag ==
"BiasICRC19_SD1500_preliminary")
182 else if (
BiasFlag ==
"BiasICRC19_SD1500_Offline")
184 else if (
BiasFlag ==
"BiasICRC19_SD1500_Herald")
186 else if (
BiasFlag ==
"BiasICRC19_SD750")
188 const double fdB = pCal[1];
191 else if (
BiasFlag ==
"Bias_TestExample")
197 cerr <<
BiasFlag <<
": no valid bias parameterization chosen " << endl;
198 throw std::exception();
210 const double xmin = 16.5;
211 const double xmax = 20.5;
212 const double z = (lgE - xmin) / (xmax - xmin);
213 const double pars[2] = {0.2, 0.0783};
214 shsh = (1 - z) * pars[0] + z * pars[1];
221 cerr <<
ShowerToShowerFlag <<
": no valid shower to shower parameterization chosen " << endl;
222 throw std::exception();
259 cerr <<
ResolutionFlag <<
": no valid resolution parameterization chosen " << endl;
260 throw std::exception();
267 const double thmax =
mapParameters[
"MaxZenith"] * TMath::DegToRad();
268 const double thmin = 0.;
269 const double thStep = 0.0005;
270 double integralTheta = 0;
271 for (
double thIntegr = thmin; thIntegr < thmax; thIntegr += thStep) {
272 integralTheta +=
ResolutionZenithDistrib(lgE, thIntegr) * thStep * TMath::Cos(thIntegr) * TMath::Sin(thIntegr);
274 double fnorm = 0.5 * (
pow(TMath::Sin(thmax), 2) -
pow(TMath::Sin(thmin), 2));
275 return integralTheta / fnorm;
279 int ncol = lgEs.GetNoElements();
280 TVectorD EnergyRes(ncol);
282 for (
int i = 0; i < ncol; ++i) {
283 double lgE = lgEs[i];
284 double Esd =
pow(10., lgE);
290 double relErrs = TMath::Sqrt(
pow(relErrs1, 2) +
pow(relErrs2, 2));
292 EnergyRes[i] = relErrs * Esd;
302 double resolution = 0;
327 cerr <<
ResolutionFlag <<
": no valid resolution parameterization chosen " << endl;
328 throw std::exception();
336 int N = xos.GetNoElements();
339 TMatrixD tmp_kmatrix(N, N);
340 for (
int j = 0; j < N; ++j) {
341 double ex =
pow(10, xos[j]);
344 for (
int i = 0; i < N; ++i) {
345 double ey =
pow(10, xos[i]);
346 tmp_kmatrix[i][j] = TMath::Gaus(ey, ex * Ebias[j], ses[j],
true) * ey * log(10.) * efficiency;
364 Int_t diagonalOfMatrix = 40;
368 diagonalOfMatrix = diagonalOfMatrix * fac;
370 cout <<
"Declination dependent migration matrix" << endl;
371 cout <<
"Calculates only +-" << diagonalOfMatrix <<
" elements out of " << xos.GetNoElements() <<
"around diagonal to speed up calculation! " << endl;
372 Double_t deltaTheta = 0.5;
376 int N = xos.GetNoElements();
377 TMatrixD tmp_kmatrixTH(N, N);
378 TMatrixD tmp_kmatrixTH_norm(N, N);
379 for (
int i = 0; i < N; ++i)
380 for (
int j = 0; j < N; ++j) {
381 tmp_kmatrixTH_norm[i][j] = 0.;
382 tmp_kmatrixTH[i][j] = 0.;
384 for (
int i = 0; i < N; ++i) {
385 double ey =
pow(10, xos[i]);
386 for (
int j = 0; j < N; ++j) {
387 double ex =
pow(10, xos[j]);
388 if (fabs(i - j) < diagonalOfMatrix)
389 for (Double_t th = minTheta; th < maxtheta; th += deltaTheta)
391 Double_t th_half = th + 0.5*deltaTheta;
392 Double_t cosTheta = cos(th_half*TMath::DegToRad());
395 double tot_sigma =
sqrt(
pow(resolution, 2) +
pow(sh_shfluct, 2));
398 tmp_kmatrixTH_norm[i][j] += sin(2.* th_half*TMath::DegToRad()) * 2. * TMath::Pi() * deltaTheta;
399 tmp_kmatrixTH[i][j] += sin(2.* th_half*TMath::DegToRad()) * 2. * TMath::Pi() * deltaTheta * efficiency * TMath::Gaus(ey, ex * bias , tot_sigma * ex,
true) * ey * log(10.);
402 if (tmp_kmatrixTH_norm[i][j] > 0)
403 tmp_kmatrixTH[i][j] /= tmp_kmatrixTH_norm[i][j];
407 ofstream outMatrixFile(
"matrixFile_FULL_TH.txt");
408 for (
int i = 0; i < N; ++i)
410 for (
int j = 0; j < N; ++j)
411 outMatrixFile<<tmp_kmatrixTH[i][j]<<
" ";
416 return tmp_kmatrixTH;
423 TMatrixD
kResolutionMatrixDD(TVectorD pCal, TVectorD xos, Double_t lat, Double_t deltaMin, Double_t deltaMax) {
424 Int_t diagonalOfMatrix = 40;
430 diagonalOfMatrix = diagonalOfMatrix * fac;
432 cout <<
"Declination dependent migration matrix" << endl;
433 cout <<
"Calculates only +-" << diagonalOfMatrix <<
" elements out of " << xos.GetNoElements() <<
"around diagonal to speed up calculation! " << endl;
434 Double_t deltah = 0.1;
435 Double_t deltadelta = 0.1;
436 int N = xos.GetNoElements();
437 TMatrixD tmp_kmatrixDD(N, N);
438 TMatrixD tmp_kmatrixDD_norm(N, N);
439 for (
int i = 0; i < N; ++i)
440 for (
int j = 0; j < N; ++j) {
441 tmp_kmatrixDD_norm[i][j] = 0.;
442 tmp_kmatrixDD[i][j] = 0.;
445 for (
int i = 0; i < N; ++i) {
446 double ey =
pow(10, xos[i]);
447 for (
int j = 0; j < N; ++j) {
448 double ex =
pow(10, xos[j]);
449 if (fabs(i - j) < diagonalOfMatrix)
450 for (Double_t h = 0; h < 2.*TMath::Pi(); h += deltah) {
451 for (Double_t delta = deltaMin; delta < deltaMax; delta += deltadelta) {
452 Double_t cosTheta = sin(lat) * sin(delta) + cos(lat) * cos(delta) * cos(h);
456 double tot_sigma =
sqrt(
pow(resolution, 2) +
pow(sh_shfluct, 2));
460 if (acos(cosTheta) <
mapParameters[
"MaxZenith"] * TMath::DegToRad() && acos(cosTheta) > 0.) {
461 tmp_kmatrixDD_norm[i][j] += deltah * deltadelta * cos (delta) * cosTheta;
462 tmp_kmatrixDD[i][j] += deltah * deltadelta * cos (delta) * cosTheta * efficiency * TMath::Gaus(ey, ex * bias , tot_sigma * ex,
true) * ey * log(10.);
466 if (tmp_kmatrixDD_norm[i][j] > 0)
467 tmp_kmatrixDD[i][j] /= tmp_kmatrixDD_norm[i][j];
482 return tmp_kmatrixDD;
494 Double_t deltaTheta = 0.1;
497 Int_t numBinTot = (maxtheta - minTheta) / deltaTheta;
499 TMatrixD tmp_kmatrixTH(N, N);
500 TMatrixD tmp_kmatrixTH_norm(N, N);
501 for (
int i = 0; i < N; ++i)
502 for (
int j = 0; j < N; ++j) {
503 tmp_kmatrixTH_norm[i][j] = 0.;
504 tmp_kmatrixTH[i][j] = 0.;
507 for (
int i = 0; i < N; ++i) {
508 double XoSi =
mapParameters[
"MinIntegration"] + 0.5 * binSize + binSize * i;
509 for (
int j = 0; j < N; ++j) {
510 double XoSj =
mapParameters[
"MinIntegration"] + 0.5 * binSize + binSize * j;
514 double ey_low =
pow(10, XoSi-0.5 * binSize);
515 double ey_high =
pow(10, XoSi+0.5 * binSize);
516 double dE_integr = (ey_high - ey_low)/binnumber;
518 double ey_lowT =
pow(10, XoSj-0.5 * binSize);
519 double ey_highT =
pow(10, XoSj+0.5 * binSize);
520 double dE_integrT = (ey_highT - ey_lowT)/binnumber;
525 double E_tmp = ey_low + ww * dE_integr;
527 double integralEreal=0;
531 double E_tmpT = ey_lowT + w * dE_integrT;
532 double logEreal = log10(E_tmpT);
533 double SpectrumJ = FitFunctionFitted->Eval(logEreal);
537 for (Double_t th = minTheta; th <= maxtheta; th += deltaTheta)
539 Double_t th_rad=th*TMath::DegToRad();
540 Double_t cosTheta = cos(th_rad);
543 double tot_sigma =
sqrt(
pow(resolution, 2) +
pow(sh_shfluct, 2));
546 if(countTh==0 || countTh==numBinTot)
548 norm += sin(2.* th_rad) * 2. * TMath::Pi()* SpectrumJ;
549 matrixTH += sin(2.* th_rad) * 2. * TMath::Pi() * efficiency * TMath::Gaus(E_tmp, E_tmpT * bias , tot_sigma * E_tmpT,
true) * SpectrumJ ;
555 norm += 4 * sin(2.* th_rad) * 2. * TMath::Pi() * SpectrumJ;
556 matrixTH += 4 * sin(2.* th_rad) * 2. * TMath::Pi() * efficiency * TMath::Gaus(E_tmp, E_tmpT * bias , tot_sigma * E_tmpT,
true) * SpectrumJ;
560 norm += 2 * sin(2.* th_rad) * 2. * TMath::Pi() * SpectrumJ;
561 matrixTH += 2 * sin(2.* th_rad) * 2. * TMath::Pi() * efficiency * TMath::Gaus(E_tmp, E_tmpT * bias , tot_sigma * E_tmpT,
true) * SpectrumJ;
567 matrixTH*=deltaTheta/3.;
569 if(w==0 || w==binnumber)
571 integralEreal+=matrixTH;
578 integralEreal+=4.*matrixTH;
583 integralEreal+=2.*matrixTH;
589 integralEreal*=dE_integrT/3.;
590 normE*=dE_integrT/3.;
593 if(ww==0 || ww==binnumber)
594 integralE+=integralEreal;
598 integralE+=4.*integralEreal;
600 integralE+=2.*integralEreal;
604 integralE*=dE_integr/3.;
609 tmp_kmatrixTH[i][j] = integralE;
613 ofstream outMatrixFile(
"matrixFile_FULL_TH_J.txt");
614 for (
int i = 0; i < N; ++i)
616 for (
int j = 0; j < N; ++j)
617 outMatrixFile<<tmp_kmatrixTH[i][j]<<
" ";
626 Double_t deltah = 0.001;
627 Double_t deltadelta = 0.00001;
628 Double_t normalization=0;
629 const double tilt = -30 * TMath::DegToRad();
633 for (Double_t delta =
mapParameters[
"ExposureMinRangeDecl"]*TMath::DegToRad(); delta <
mapParameters[
"ExposureMaxRangeDecl"]*TMath::DegToRad(); delta += 0.0001) {
634 for (Double_t h = 0; h < 2.*TMath::Pi(); h += 0.001) {
635 Double_t cosTheta = sin(lat) * sin(delta) + cos(lat) * cos(delta) * cos(h);
636 Double_t theta = acos(cosTheta);
637 if (acos(cosTheta) <
mapParameters[
"MaxZenith"]* TMath::DegToRad() && acos(cosTheta) > 0.) {
638 double phi = atan2(sin(delta) * cos(lat) - cos(delta) * cos(h) * sin(lat), cos(delta) * sin(h));
639 normalization += 0.001 * 0.0001 * cos(delta) * cosTheta * (1 + 0.00348 * tan(theta) * cos(phi - tilt));
640 if(countDelta%10000000==0)
641 cout<<
"Normalization calculation step "<<countDelta<<endl;
648 cout<<
"Normalization exposure integral "<< normalization<<endl;
651 for (Double_t delta = deltaMin; delta < deltaMax; delta += deltadelta) {
652 for (Double_t h = 0; h < 2.*TMath::Pi(); h += deltah) {
653 Double_t cosTheta = sin(lat) * sin(delta) + cos(lat) * cos(delta) * cos(h);
654 Double_t theta = acos(cosTheta);
655 if (acos(cosTheta) <
mapParameters[
"MaxZenith"]* TMath::DegToRad() && acos(cosTheta) > 0.) {
656 double phi = atan2(sin(delta) * cos(lat) - cos(delta) * cos(h) * sin(lat), cos(delta) * sin(h));
657 exposure += deltah * deltadelta * cos(delta) * cosTheta * (1 + 0.00348 * tan(theta) * cos(phi - tilt));
660 if(countDelta%10000000==0)
661 cout<<
"Exposure calculation step "<<countDelta<<endl;
666 cout <<
" Exposure " <<
mapParameters[
"Exposure"] * exposure / normalization <<
"km2 sr yr" << endl;
673 Double_t deltatheta = 0.0001;
674 Double_t normalization=0;
675 for (Double_t theta =
mapParameters[
"ExposureMinRangeZenith"]; theta <
mapParameters[
"ExposureMaxRangeZenith"]; theta += deltatheta) {
676 normalization+=sin(2.*theta*TMath::DegToRad())*deltatheta * TMath::DegToRad();
678 cout<<
"Normalization exposure integral "<< normalization<<endl;
681 for (Double_t theta = thetaMin; theta < thetaMax; theta += deltatheta) {
682 exposure+=sin(2.*theta*TMath::DegToRad())*deltatheta * TMath::DegToRad();
685 cout <<
" Exposure " << mapParameters[
"Exposure"] * exposure / normalization <<
"km2 sr yr" << endl;
687 return mapParameters[
"Exposure"] * exposure / 0.75;
692 cerr <<
"\n---------------------------------------------------\n";
693 cerr <<
"------------------Parameter Map--------------------\n";
694 cerr <<
"---------------------------------------------------\n";
696 std::map<string, Double_t>::iterator it =
mapParameters.begin();
698 std::string keyName = it->first;
699 double val = it->second;
700 cout << keyName <<
" :: " << val << endl;
704 cout <<
"Model---------------------" <<
Model << endl;
705 cout <<
"MatrixType---" <<
MatrixType << endl;
707 cout <<
"BiasFlag------------------" <<
BiasFlag << endl;
710 cout <<
"VersionInput--------------" <<
VersionInput << endl;
712 cerr <<
"---------------------------------------------------\n";
713 cerr <<
"---------------------------------------------------\n";
718 in.open(paramFileName.c_str());
719 string paramString, line;
723 Int_t pos = line.find(
'#');
724 string lineNew = line.substr(0, pos);
725 if (lineNew.length()) {
726 Int_t pos2 = lineNew.find(
' ');
727 string key = lineNew.substr(0, pos2);
729 string lineNew2 = lineNew.substr(pos2, 1000);
730 Int_t posVal = lineNew2.find_first_not_of(
' ');
731 string lineNew3 = lineNew2.substr(posVal, 1000);
732 Int_t posVal2 = lineNew3.find(
' ');
733 string val = lineNew3.substr(0, posVal2);
738 }
else if (key ==
"DataFileName") {
740 }
else if (key ==
"OutPutFileName") {
742 }
else if (key ==
"OutPutFileNameRebinned") {
744 }
else if (key ==
"ModelFunction") {
746 }
else if (key ==
"MatrixType") {
748 }
else if (key ==
"ResolutionFlag") {
750 }
else if (key ==
"BiasFlag") {
752 }
else if (key ==
"EfficiencyFlag") {
754 }
else if (key ==
"ShowerToShowerFlag") {
756 }
else if (key ==
"VersionInput") {
758 }
else if (key ==
"UseNewTriggers") {
760 }
else if (key ==
"PrintCompact") {
762 }
else if (key ==
"Verbose") {
765 istringstream stringstream(val.c_str());
766 stringstream >> tmpVal;
778 void ReadEventList(vector <double> &vLogESD, TH1D* th1, TH1D* th2,
string FileName) {
783 double lgE, S1000, dS1000, theta, phi, dec, ra;
785 string labelA, labelB;
796 evtFile.open(FileName.c_str(), ios::in);
797 if (evtFile.fail()) {
799 cerr << FileName <<
": no valid file name chosen " << endl;
800 throw std::exception();
804 getline(evtFile, headerline);
805 headerline = headerline.substr(0, 1);
806 evtFile >> labelA >> A;
807 evtFile >> labelB >> B;
808 if (headerline !=
"#" || labelA !=
"A" || labelB !=
"B") {
810 cerr << FileName <<
" does not look to be formatted properly " << endl;
811 cerr <<
"Add header line and calibration parameters" << endl;
812 throw std::exception();
840 while (!evtFile.eof()) {
842 evtFile >> AugerId >> EventId >> lgE >> S1000 >> dS1000 >> nst >> theta >> phi >> dec >> ra;
845 lgE = log10(lgE) + 18;
847 if (!evtFile.eof()) {
848 if (dec < maxDecl && dec >= minDecl && theta<maxZenith && theta>=minZenith) {
851 if ( lgE >= th1->GetBinLowEdge(1) )
852 vLogESD.push_back(lgE);
867 double lgE, S1000, dS1000, theta, dtheta, phi, dphi, dec, ra, XCore, YCore, S1000_corr, S38, Nst, Nst_sat;
869 string labelA, labelB;
879 evtFile.open(FileName.c_str(), ios::in);
880 if (evtFile.fail()) {
882 cerr << FileName <<
": no valid file name chosen " << endl;
883 throw std::exception();
886 getline(evtFile, headerline);
887 headerline = headerline.substr(0, 1);
888 evtFile >> labelA >> A;
889 evtFile >> labelB >> B;
890 if (headerline !=
"#" || labelA !=
"A" || labelB !=
"B") {
892 cerr << FileName <<
" does not look to be formatted properly " << endl;
893 cerr <<
"Add header line and calibration parameters" << endl;
894 throw std::exception();
923 while (!evtFile.eof()) {
925 evtFile >> AugerId >> EventId >> GPSTime >> isHybrid >> Nst >> Nst_sat >> lgE >> theta >> dtheta >> phi >> dphi >> XCore >> YCore >> ra >> dec >> S1000 >> dS1000 >> S1000_corr >> S38;
928 if (!evtFile.eof()) {
929 if (dec < maxDecl && dec >= minDecl && theta<maxZenith && theta>=minZenith) {
932 if ( lgE >= th1->GetBinLowEdge(1) )
933 vLogESD.push_back(lgE);
944 evtFile.open(inputName.c_str(), ios::in);
945 stringstream testString;
946 getline(evtFile, headerline);
947 getline(evtFile, headerline);
948 getline(evtFile, headerline);
949 getline(evtFile, headerline);
950 testString << headerline;
955 while (testString >> x) {
960 cout << countCol <<
" columns in the input event file" << endl;
962 cout <<
"Check consistency with... " << endl;
963 if (flagversion == 1)
964 cout <<
"evtFile >> AugerId >> EventId >> GPSTime>> isHybrid>> Nst>> Nst_sat >> lgE >> theta >> dtheta >> phi >> dphi >> XCore >> YCore >> ra>> dec >> S1000 >> dS1000 >> S1000_corr >> S38;" << endl;
965 if (flagversion == 0)
966 cout <<
"evtFile >> AugerId >> EventId >> lgE >> S1000 >> dS1000 >> nst >> theta >> phi >> dec >> ra;" << endl;
972 cerr <<
"The correct number of inputs were not found " << endl;
973 cerr <<
"Expected 2 and got " << nArgs << endl;
974 cerr <<
"Run this program as ./UnfoldSpectrum <parameter file>" << endl;
double SDTriggerEfficiency_AveragedZenithAngle(const double lgE)
double SD1500TriggerEfficiencyHybrids2019(const double lgE)
void PrintUsage(int nArgs)
string OutPutFileNameRebinned
string ShowerToShowerFlag
double ResolutionValue(double lgE, double_t cosTheta)
const bool HeraldAnalysis
TMatrixD kResolutionMatrixDD(TVectorD pCal, TVectorD xos, Double_t lat, Double_t deltaMin, Double_t deltaMax)
TVectorD EnergyResolution(TVectorD lgEs, const bool data, const bool infill)
void PrintMapParameters()
double ResolutionZenithDistrib(double *x, double *par)
double Hybrids_ICRC_2019_SD1500(const double lgE)
double EfficiencyValuesNoDeclDep(double lgE)
TVectorD GetSDCalPars(bool infill=false)
double SD1500TriggerEfficiency_ICRC2019(const double lgE, const double zenith)
void TestFormat(string, int)
double DataSD750EnergyResolution_ICRC2017(const double lgE, const double zenith, TVectorD pCal, double lgS35)
Double_t DirectionalExposureZenith(Double_t thetaMin, Double_t thetaMax)
double pow(const double x, const unsigned int i)
double EfficiencyValues(double lgE, double zenith)
double Hybrids_ICRC_2019_SD750(const double lgE)
double HybridBias_2019_11_06_Herald_SD1500(double ESD, double coszenith, double maxZenith)
void LoadParam(string paramFileName)
double HybridBias_2019_11_06_Offline_SD1500(double ESD, double coszenith, double maxZenith)
double IntegrateEnergyResolution(const double lgE, const bool data, const bool infill)
double DataSD1500EnergyResolution(const double lgE, const double zenith)
map< string, Double_t > mapParameters
double HybridBias_2019_SD750(double lgE, double fdB)
double SDTriggerEfficiencyICRC2017_SD750(const double lgE, const double zenith, TVectorD pCal)
double SimulationSD1500EnergyResolution(const double lgE, const double zenith)
double InverseSdCalibration(const double lgE, TVectorD pCal)
double EnergyBias_DD(double lgE, double cosTheta, TVectorD pCal)
double SDTriggerEfficiencyICRC2017_SD1500(const double lgE, const double zenith, TVectorD pCal)
TVectorD EnergyBias(TVectorD lgEs, TVectorD pCal, const bool infill)
double ScaledErrorFunction(const double x, const std::vector< double > &pars)
double ShowerToShowerFluctuation(const double lgE)
void ReadEventListICRC2019(TH1D *th1, TH1D *th2, string FileName)
double SimulationSD750EnergyResolution_ICRC2017(const double lgE, const double zenith)
void ReadEventList(TH1D *th1, TH1D *th2, string FileName)
TMatrixD kResolutionMatrix(TVectorD pCal, TVectorD xos, double *resolutionOffset, const bool useResFromData, const bool infill)
double Valerio12_11_2018(const double lgE)
Double_t DirectionalExposure(Double_t lat, Double_t deltaMin, Double_t deltaMax)
TMatrixD kResolutionMatrixZenith(TVectorD pCal, TVectorD xos, double *resolutionOffset)
double HybridBias_2019_SD1500(double ESD, double coszenith, double maxZenith)
void kResolutionMatrixZenith_J(TVectorD pCal, TVectorD xos, double *resolutionOffset, TF1 *FitFunctionFitted)
double Hybrids_ICRC_2019_Offline_05_07(const double lgE)
double Resolution_TestExample(const double lgE)
double Hybrids_ICRC_2019_Herald_11_06(const double lgE)
double Hybrids_ICRC_2019_Offline_11_06(const double lgE)
double Bias_TestExample(double ESD, double coszenith)
double TriggerEfficiency_TestExample(const double lgE)
double SDTriggerEfficiencyICRC2019_SD750(const double lgE, const double zenith, TVectorD pCal, bool oldTrig)