File indexing completed on 2026-06-15 07:54:00
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029 #include "Par02DetectorParametrisation.hh"
0030
0031 #include "G4SystemOfUnits.hh"
0032 #include "G4UnitsTable.hh"
0033
0034
0035
0036 Par02DetectorParametrisation::Par02DetectorParametrisation() = default;
0037
0038
0039
0040 Par02DetectorParametrisation::~Par02DetectorParametrisation() = default;
0041
0042
0043
0044 G4double Par02DetectorParametrisation::GetResolution(Detector aDetector, Parametrisation aParam,
0045 G4double aMomentum)
0046 {
0047 aMomentum /= GeV;
0048 G4double res = 1.0;
0049 if (aParam == eCMS) {
0050 switch (aDetector) {
0051 case Par02DetectorParametrisation::eTRACKER:
0052 res = 0.013;
0053 break;
0054 case Par02DetectorParametrisation::eEMCAL:
0055 res = std::sqrt(std::pow(0.03 / std::sqrt(aMomentum), 2)
0056 + std::pow(0.12 / aMomentum, 2)
0057 + std::pow(0.003, 2));
0058 break;
0059 case Par02DetectorParametrisation::eHCAL:
0060 res = std::sqrt(std::pow(1.1 / std::sqrt(aMomentum), 2)
0061 + std::pow(0.09, 2));
0062 break;
0063 }
0064 }
0065 else if (aParam == eATLAS) {
0066 switch (aDetector) {
0067 case Par02DetectorParametrisation::eTRACKER:
0068 res = 0.01;
0069 break;
0070 case Par02DetectorParametrisation::eEMCAL:
0071 res = std::sqrt(std::pow(0.1 / std::sqrt(aMomentum), 2)
0072 + std::pow(0.0017, 2));
0073 break;
0074 case Par02DetectorParametrisation::eHCAL:
0075 res = std::sqrt(std::pow(0.55 / std::sqrt(aMomentum), 2)
0076 + std::pow(0.06, 2));
0077 break;
0078 }
0079 }
0080 else if (aParam == eALEPH) {
0081 switch (aDetector) {
0082 case Par02DetectorParametrisation::eTRACKER:
0083 res = 0.01;
0084 break;
0085 case Par02DetectorParametrisation::eEMCAL:
0086 res = std::sqrt(std::pow(0.18 / std::sqrt(aMomentum), 2)
0087 + std::pow(0.009, 2));
0088 break;
0089 case Par02DetectorParametrisation::eHCAL:
0090 res = 0.85 / std::sqrt(aMomentum);
0091 break;
0092 }
0093 }
0094 return res;
0095 }
0096
0097
0098
0099 G4double Par02DetectorParametrisation::GetEfficiency(Detector aDetector, Parametrisation ,
0100 G4double )
0101 {
0102
0103 G4double eff = 1.0;
0104 switch (aDetector) {
0105 case Par02DetectorParametrisation::eTRACKER:
0106 eff = 1.0;
0107 break;
0108 case Par02DetectorParametrisation::eEMCAL:
0109 eff = 1.0;
0110 break;
0111 case Par02DetectorParametrisation::eHCAL:
0112 eff = 1.0;
0113 break;
0114 }
0115 return eff;
0116 }
0117
0118