#include #include #include #include //------------------------------------------------------------------ //----Geometrical asymmetries theta (rad) psi (rad) r (cm) // Mean/RMS pz: pQGSJetII, Psi=0 [deg], theta=25-60 [deg] // AmodTmod : FeQGSJetII theta=36 [deg] //------------------------------------------------------------------- namespace GeomAsymNS { //----- const int nPar=2; const double DX_Eval[4][2]={ {600.,1100.}, {100.,600.}, {600.,1100.}, {600.,1100.} }; const double PzEval[4][2]={ {1.000,0.800}, {1.000,0.500} , {1.000,0.500}, {1.000,0.500} }; const double ctheta_pCut[3]={1.e-3,1.e-3,1.e-3}; //----- const double parPzMean_WCD[2][4][3]= { { { 9.9575e-01, 9.6853e-01, 5.5454e-02 }, { 1.0194e+00, 7.3264e-01, 2.9980e-11 }, { 9.9804e-01, 9.4579e-01, 7.6906e-02 }, { 1.0179e+00, 7.9937e-01, 3.2507e-01 } }, { { 1.0004e+00, 9.9133e-01, 1.6324e-08 }, { 1.0010e+00, 8.5887e-01, 1.6521e-01 }, { 9.9712e-01, 9.7989e-01, 4.3693e-07 }, { 1.0157e+00, 8.3825e-01, 3.5533e-01 }}}; const double parPzRMS_WCD[2][4][3]= { { { 3.8346e-02, 6.8428e-02, 7.3060e-01 }, { 3.0404e-02, 2.8557e-01, 2.2243e-01 }, { 2.3723e-02, 1.0776e-01, 7.0809e-01 }, { 1.3384e-02, 2.4692e-01, 1.1370e+00 } }, { { 1.3864e-02, 2.8312e-02, 3.8616e-01 }, { 2.8687e-02, 1.7605e-01, 6.8401e-01 }, { 2.0771e-02, 5.7964e-02, 5.8607e-01 }, { 1.1642e-02, 2.1288e-01, 1.0939e+00 }}}; const double parPzMean_Scin[2][4][3]= { { { 9.8951e-01, 9.5426e-01, 1.7021e-01 }, { 9.3766e-01, 6.3307e-01, 8.0233e-01 }, { 9.5457e-01, 8.7932e-01, 4.3871e-01 }, { 9.7631e-01, 7.5652e-01, 3.0171e-01 } }, { { 9.9937e-01, 9.8823e-01, 6.8105e-09 }, { 9.3580e-01, 7.6016e-01, 7.1826e-01 }, { 9.5438e-01, 9.3102e-01, 2.4292e-01 }, { 9.7198e-01, 7.9965e-01, 2.2298e-01 }}}; const double parPzRMS_Scin[2][4][3]= { { { 7.6260e-02, 1.0083e-01, 6.8654e-01 }, { 1.1661e-01, 3.9501e-01, 2.7704e+00 }, { 9.4887e-02, 1.8969e-01, 1.3922e+00 }, { 8.8811e-02, 2.8621e-01, 8.5569e-01 } }, { { 2.5129e-02, 4.3107e-02, 4.3507e-01 }, { 1.0315e-01, 2.8875e-01, 3.1813e+00 }, { 8.7813e-02, 1.3576e-01, 2.1140e+00 }, { 7.3902e-02, 2.5370e-01, 1.0230e+00 }}}; const double parPzMean_MD[2][4][3]= { { { 1.0011e+00, 9.8668e-01, 1.9251e-07 }, { 0.0000e+00, 0.0000e+00, 0.0000e+00 }, { 0.0000e+00, 0.0000e+00, 0.0000e+00 }, { 0.0000e+00, 0.0000e+00, 0.0000e+00 } }, { { 1.0013e+00, 9.9541e-01, 2.1922e-06 }, { 0.0000e+00, 0.0000e+00, 0.0000e+00 }, { 0.0000e+00, 0.0000e+00, 0.0000e+00 }, { 0.0000e+00, 0.0000e+00, 0.0000e+00 }}}; const double parPzRMS_MD[2][4][3]= { { { 6.6988e-03, 1.9285e-02, 2.3209e-01 }, { 0.0000e+00, 0.0000e+00, 0.0000e+00 }, { 0.0000e+00, 0.0000e+00, 0.0000e+00 }, { 0.0000e+00, 0.0000e+00, 0.0000e+00 } }, { { 3.0115e-03, 8.3117e-03, 8.4402e-03 }, { 0.0000e+00, 0.0000e+00, 0.0000e+00 }, { 0.0000e+00, 0.0000e+00, 0.0000e+00 }, { 0.0000e+00, 0.0000e+00, 0.0000e+00 }}}; //----- const double parR0_WCD[4][2][3]={ { {1.04772e+00 , 1.03054e+00, 1.95236e-01 }, {0.00000e+00, 0.00000e+00, 0.00000e+00} } , { {7.26127e-01 , 7.01869e-01, 2.32225e+00 }, {8.91254e-01, 8.74466e-01, 4.02509e+00} } , { {8.12959e-01 , 7.47439e-01, 2.74171e+00 }, {9.30642e-01, 8.90228e-01, 3.73277e+00} } , { {8.33431e-01 , 7.35070e-01, 4.55377e+00 }, {9.36057e-01, 8.86934e-01, 5.22228e+00} } }; const double parR1_WCD[4][2][3]={ { {7.88850e-01 , 7.97236e-01, -3.62808e-01 }, {0.00000e+00, 0.00000e+00, 0.00000e+00} } , { {4.38047e-01 , 6.74963e-01, 6.33867e+00 }, {7.32825e-01, 8.65430e-01, 6.92041e+00} } , { {5.28840e-01 , 6.71160e-01, 2.33656e+00 }, {7.68631e-01, 8.69352e-01, 4.00505e+00} } , { {3.53183e-01 , 7.20420e-01, 2.41663e+01 }, {6.73602e-01, 8.79979e-01, 2.59057e+01} } }; const double parR2_WCD[4][2][3]={ { {3.12213e+00 , 2.21960e+00, 4.19757e-01 }, {0.00000e+00, 0.00000e+00, 0.00000e+00} } , { {5.00000e+00 , 0.00000e+00, 0.00000e+00 }, {5.00000e+00, 0.00000e+00, 0.00000e+00} } , { {5.00000e+00 , 0.00000e+00, 0.00000e+00 }, {5.00000e+00, 0.00000e+00, 0.00000e+00} } , { {5.00000e+00 , 0.00000e+00, 0.00000e+00 }, {5.00000e+00, 0.00000e+00, 0.00000e+00} } }; const double parR0_Scin[4][2][3]={ { {1.05000e+00 , 0.00000e+00, 0.00000e+00 }, {0.00000e+00, 0.00000e+00, 0.00000e+00} } , { {1.49747e+00 , 1.10730e+00, 5.00000e-02 }, {1.20000e+00, 0.00000e+00, 0.00000e+00} } , { {1.48408e+00 , 1.38380e+00, 5.00000e-02 }, {1.20000e+00, 0.00000e+00, 0.00000e+00} } , { {1.60612e+00 , 1.27749e+00, 5.00000e-02 }, {1.20000e+00, 0.00000e+00, 0.00000e+00} } }; const double parR1_Scin[4][2][3]={ { {1.05000e+00 , 0.00000e+00, 0.00000e+00 }, {0.00000e+00, 0.00000e+00, 0.00000e+00} } , { {1.47814e-01 , 8.18895e-01, 4.15429e+00 }, {5.05279e-01, 8.99160e-01, 4.60088e+00} } , { {2.79092e-01 , 6.93765e-01, 1.55325e+00 }, {4.60935e-01, 8.37745e-01, 2.37080e+00} } , { {2.48029e-01 , 9.23945e-01, 3.25141e+00 }, {5.69089e-01, 9.66640e-01, 3.70386e+00} } }; const double parR2_Scin[4][2][3]={ { {1.00000e+00 , 0.00000e+00, 0.00000e+00 }, {0.00000e+00, 0.00000e+00, 0.00000e+00} } , { {1.50000e+01 , 1.20000e+01, 1.00000e-01 }, {8.00000e+00, 0.00000e+00, 0.00000e+00} } , { {1.50000e+01 , 1.20000e+01, 1.00000e-01 }, {8.00000e+00, 0.00000e+00, 0.00000e+00} } , { {1.50000e+01 , 1.20000e+01, 1.00000e-01 }, {8.00000e+00, 0.00000e+00, 0.00000e+00} } }; const double parR0_MD[4][2][3]={ { {1.00000e+00 , 8.50000e-01, 1.00000e-01 }, {1.00000e+00, 9.50000e-01, 1.00000e-01} } , { {0.00000e+00 , 0.00000e+00, 0.00000e+00 }, {0.00000e+00, 0.00000e+00, 0.00000e+00} } , { {0.00000e+00 , 0.00000e+00, 0.00000e+00 }, {0.00000e+00, 0.00000e+00, 0.00000e+00} } , { {0.00000e+00 , 0.00000e+00, 0.00000e+00 }, {0.00000e+00, 0.00000e+00, 0.00000e+00} } }; const double parR1_MD[4][2][3]={ { {0.00000e+00 , 0.00000e+00, 0.00000e+00 }, {1.20000e-01, 0.00000e+00, 0.00000e+00} } , { {0.00000e+00 , 0.00000e+00, 0.00000e+00 }, {0.00000e+00, 0.00000e+00, 0.00000e+00} } , { {0.00000e+00 , 0.00000e+00, 0.00000e+00 }, {0.00000e+00, 0.00000e+00, 0.00000e+00} } , { {0.00000e+00 , 0.00000e+00, 0.00000e+00 }, {0.00000e+00, 0.00000e+00, 0.00000e+00} } }; const double parR2_MD[4][2][3]={ { {3.00000e+01 , 2.50000e+01, 1.00000e-01 }, {1.00000e+01, 8.00000e+00, 1.00000e-01} } , { {0.00000e+00 , 0.00000e+00, 0.00000e+00 }, {0.00000e+00, 0.00000e+00, 0.00000e+00} } , { {0.00000e+00 , 0.00000e+00, 0.00000e+00 }, {0.00000e+00, 0.00000e+00, 0.00000e+00} } , { {0.00000e+00 , 0.00000e+00, 0.00000e+00 }, {0.00000e+00, 0.00000e+00, 0.00000e+00} } }; //------ class GeomAsym { private: int fDetectorType; // [0] WCD [1] Scin [2] MD public: GeomAsym(int DetectorType); ~GeomAsym(){}; // /RMS pz double GetPzMeanPar(double r, int icomp, int ipar); double GetPzMean(double DX, double r, int icomp); // DX (g/cm^2) r (cm) double GetPzRMSPar(double r, int icomp, int ipar); double GetPzRMS(double DX, double r, int icomp); // DX (g/cm^2) r (cm) // Amod x Tmod (cos(theta_p),r,pz) double GetTmodAmod_Par_i(double r, int itheta, int icomp, int ipar); double GetTmodAmod(double ctheta_p, double *par, int icomp); double GetTmodAmod(double ctheta_p, double pz, double r, int icomp); // Radial approximation double GetARad(double r, int icomp); double GetCosTheta_p(double pz, double r, double theta, double psi, int icomp); double GetPzCut(double r, double theta, double psi, int icomp); // Geom Asymmetries double GetPzMeanRange(double alpha, double beta, double pz0, double pz1); double GetShadow(double DX, double r, double theta, double psi, int icomp); double GetGeomAsym(double DX, double r, double theta, double psi, int icomp); double GetGeomAsym(double DX, double r, double theta, double psi, int icomp, int nSteps); // Gamma function ( ROOT implementation, ideally I should isolate the routine for compatibility purposes ) double gamma_cdf(double x, double alpha, double beta); double gamma_quantile(double x, double alpha, double beta); }; }