15 const std::string&
name,
52 if (m_backExtrapolatorTool) {
54 sc = (*m_backExtrapolatorTool)->give_eta_phi_at_vertex(muonSA, etaVtx, sigEta, phiVtx, sigPhi, winPt);
58 <<
"Pt of Muon Feature out of BackExtrapolator range.");
60 <<
"TrigRoiDescriptor for IDSCAN.");
61 etaVtx =
track.etaMap;
68 return StatusCode::FAILURE;
73 track.etaVtx = etaVtx;
74 track.phiVtx = phiVtx;
75 track.deltaEtaVtx = sigEta;
76 track.deltaPhiVtx = sigPhi;
78 if (muonSA)
delete muonSA;
90 const double eta,
const double phi)
const
93 if (
pt == 0)
return 1.0e30;
95 double AbsPtInv = std::abs(1./
pt);
96 double AbsEta = std::abs(eta);
99 const int N_PARAMS = 3;
101 const double vparBR1[N_PARAMS] = {0.0495619, 0.00180415, 0.307058};
102 const double vparBR2[N_PARAMS] = {1., 0., 0.};
103 const double vparBR3[N_PARAMS] = {0.0370408, 0.00142206, -0.492544};
106 if (
AbsEta < 0.534) { vpar = vparBR1; }
107 else if(
AbsEta < 0.687) { vpar = vparBR2; }
108 else { vpar = vparBR3; }
110 double fracRes = sqrt(
pow(vpar[0],2) +
pow(vpar[1]/AbsPtInv,2) +
pow(vpar[2]*AbsPtInv,2));
111 return std::abs(fracRes * AbsPtInv);
115 const int N_PARAMS = 5;
116 const double vparEC1[N_PARAMS] = {0.291483, -6.11348, 65.1099, -285.664, 440.041};
117 const double vparEC2[N_PARAMS] = {0.286307, -4.6759, 43.2815, -163.185, 210.786};
118 const double vparEC3[N_PARAMS] = {0.330699, -6.70755, 70.4725, -291.85, 408.739};
119 const double vparEC4[N_PARAMS] = {0.261738, -4.69971, 47.4762, -183.98, 236.813};
120 const double vparEC5[N_PARAMS] = {0.196301, -3.57276, 38.3744, -159.808, 228.256};
121 const double vparEC6[N_PARAMS] = {0.172939, -3.10788, 33.3823, -142.996, 212.957};
122 const double vparEC7[N_PARAMS] = {0.233017, -4.377, 42.5691, -171.752, 245.702};
123 const double vparEC8[N_PARAMS] = {0.22389, -4.16259, 40.1369, -162.824, 236.39};
124 const double vparEC9[N_PARAMS] = {0.197992, -3.52117, 33.5997, -136.014, 197.474};
125 const double vparECA[N_PARAMS] = {0.417289, -0.852254,-31.9257, 308.873, -719.591};
126 const double vparECB[N_PARAMS] = {0.526612, -8.04087, 82.1906, -336.87, 462.973};
128 const double AbsPtInvMin = 5
e-3;
129 const double AbsPtInvMax = 0.25;
130 if( AbsPtInv < AbsPtInvMin ) AbsPtInv = AbsPtInvMin;
131 if( AbsPtInv > AbsPtInvMax ) AbsPtInv = AbsPtInvMax;
138 if (
AbsEta < 1.20) { vpar = vparEC1; }
139 else if(
AbsEta < 1.35) { vpar = vparEC2; }
140 else if(
AbsEta < 1.50) { vpar = vparEC3; }
141 else if(
AbsEta < 1.65) { vpar = vparEC4; }
142 else if(
AbsEta < 1.80) { vpar = vparEC5; }
143 else if(
AbsEta < 1.95) { vpar = vparEC6; }
144 else if(
AbsEta < 2.10) { vpar = vparEC7; }
145 else if(
AbsEta < 2.35) { vpar = vparEC8; }
146 else { vpar = vparEC9; }
149 double fracRes = vpar[0] + vpar[1]*AbsPtInv
150 + vpar[2]*AbsPtInv*AbsPtInv
151 + vpar[3]*AbsPtInv*AbsPtInv*AbsPtInv
152 + vpar[4]*AbsPtInv*AbsPtInv*AbsPtInv*AbsPtInv;
154 return std::abs(fracRes * AbsPtInv);