11 #include <arich/dbobjects/ARICHReconstructionPar.h>
20 void ARICHReconstructionPar::initializeDefault()
23 double parsBkg[8] = {1, 0, 0.0062, 5.0, 0.10364, 20.0596, 0.002103, -0.0031283};
24 m_bkgPDF =
new TF1(
"bkgPDF",
25 "((1-[1])*[2]*exp(-[3]*x) + [1]*([4]*exp(-[5]*x)+[6]+[7]*x))*(1-1/1.5/1.5/[0]/[0])*TMath::Floor(1.5*[0])");
26 m_bkgPDF->SetParameters(parsBkg);
28 double parsRes[4] = {1.12147e-01, 3.81701e+00, 0.0093, -6.14984e-04};
29 m_thcResolution =
new TF1(
"thcResolution",
"[0]*exp(-[1]*x)+[2]+[3]*x");
30 m_thcResolution->SetParameters(parsRes);
32 m_pars = {0.18, 0.13};
33 m_flatBkgPerPad = 0.0014;
35 m_aerogelFOM = {11.3, 13.0};
38 double ARICHReconstructionPar::getBackgroundPerPad(
double th_cer,
const std::vector<double>& pars)
const
42 for (
auto par : pars) {
43 m_bkgPDF->SetParameter(ipar, par);
46 return m_bkgPDF->Eval(th_cer) + m_flatBkgPerPad;
49 double ARICHReconstructionPar::getExpectedBackgroundHits(std::vector<double>& pars,
double minThc,
double maxThc)
const
53 for (
auto par : pars) {
54 m_bkgPDF->SetParameter(ipar, par);
59 double surf[4] = { -2.19669e-02, 3.59010e+01, -2.77441e+01, 1.43564e+02};
61 double thc = minThc + step / 2.;
63 while (thc < maxThc) {
64 bkg += (surf[0] + surf[1] * thc + surf[2] * pow(thc, 2) + surf[3] * pow(thc, 3)) * getBackgroundPerPad(thc, pars);
71 double ARICHReconstructionPar::getNPadsInRing(
double maxThc,
double minThc,
double trackTh)
const
74 double s1 = sqrt(tan(maxThc)) * pow((tan(maxThc + trackTh) + tan(maxThc - trackTh)) / 2, 3. / 2.);
76 if (minThc > 0) s2 = sqrt(tan(minThc)) * pow((tan(minThc + trackTh) + tan(minThc - trackTh)) / 2, 3. / 2.);
77 return 3.1416 * 0.18 * 0.18 * (s1 - s2) * 0.6 / 0.005 / 0.005;
80 void ARICHReconstructionPar::print()
const
83 cout << endl <<
"-----bkg PDF-----" << endl;
85 int Npar = m_bkgPDF->GetNpar();
86 std::vector<double> bkgPars(Npar, 0);
87 m_bkgPDF->GetParameters(bkgPars.data());
88 for (
int i = 0; i < Npar; i++)cout << Form(
"bkg Pars %d = %e", i, bkgPars[i]) << endl;
90 cout << endl <<
"-----flat backgroud per pad-----" << endl;
91 cout <<
" flat background per pad is " << m_flatBkgPerPad << endl;
93 cout << endl <<
"----additional parameters (for wide gaus)-----" << endl;
94 for (
int i = 0; i < (int)m_pars.size(); i++) {
95 printf(
"m_pars[%d] = %e\n", i, m_pars[i]);
98 cout << endl <<
"----Aerogel FOM-----" << endl;
99 for (
int i = 0; i < (int)m_aerogelFOM.size(); i++) {
100 printf(
"m_aerogelFOM[%d] = %f\n", i, m_aerogelFOM[i]);
103 cout << endl <<
"----- Resolution PDF-----" << endl;
104 m_thcResolution->Print();
106 m_thcResolution->GetParameters(resPars);
107 for (
int i = 0; i < 4; i++)cout << Form(
"resolution Pars %d = %e", i, resPars[i]) << endl;