13 const std::string&
name,
28 ATH_CHECK(m_rpcDataPreparator.retrieve());
32 ATH_CHECK(m_tgcDataPreparator.retrieve());
35 ATH_CHECK(m_mdtDataPreparator.retrieve());
38 ATH_CHECK(m_cscDataPreparator.retrieve(DisableTool{m_cscDataPreparator.empty()}));
42 ATH_CHECK(m_stgcDataPreparator.retrieve(DisableTool{m_stgcDataPreparator.empty()}));
47 ATH_CHECK(m_mmDataPreparator.retrieve(DisableTool{m_mmDataPreparator.empty()}));
60 ATH_CHECK(m_clusterRoadDefiner.retrieve());
66 return StatusCode::SUCCESS;
74 m_use_mcLUT = use_mcLUT;
78 if ( ptEndcapLUTSvc.retrieve().isFailure() ) {
80 return StatusCode::FAILURE;
82 m_tgcRoadDefiner->setPtLUT(&*ptEndcapLUTSvc);
85 if ( ptEndcapLUTSvc.retrieve().isFailure() ) {
87 return StatusCode::FAILURE;
89 m_tgcRoadDefiner->setPtLUT(&*ptEndcapLUTSvc);
92 return StatusCode::SUCCESS;
99 double rWidth_TGC_Failed)
101 m_rpcRoadDefiner->setRoadWidthForFailure(rWidth_RPC_Failed);
102 m_tgcRoadDefiner->setRoadWidthForFailure(rWidth_TGC_Failed);
111 m_rpcRoadDefiner->setRpcGeometry(use_rpc);
120 bool use_RoIBasedDataAccess_RPC,
121 bool use_RoIBasedDataAccess_TGC,
122 bool use_RoIBasedDataAccess_CSC,
123 bool use_RoIBasedDataAccess_STGC,
124 bool use_RoIBasedDataAccess_MM)
126 m_mdtDataPreparator ->setRoIBasedDataAccess(use_RoIBasedDataAccess_MDT);
127 m_rpcDataPreparator ->setRoIBasedDataAccess(use_RoIBasedDataAccess_RPC);
128 m_tgcDataPreparator ->setRoIBasedDataAccess(use_RoIBasedDataAccess_TGC);
129 if(!m_cscDataPreparator.empty()) m_cscDataPreparator->setRoIBasedDataAccess(use_RoIBasedDataAccess_CSC);
130 if(!m_stgcDataPreparator.empty()) m_stgcDataPreparator->setRoIBasedDataAccess(use_RoIBasedDataAccess_STGC);
131 if(!m_mmDataPreparator.empty()) m_mmDataPreparator->setRoIBasedDataAccess(use_RoIBasedDataAccess_MM);
140 m_backExtrapolatorTool = backExtrapolator;
141 m_tgcRoadDefiner->setExtrapolatorTool(m_backExtrapolatorTool);
150 const bool insideOut,
156 const bool dynamicDeltaRpc)
const
166 rpcLayerHits.
clear();
168 if(m_use_rpc && !insideOut) {
170 sc = m_rpcDataPreparator->prepareData(p_roids,
176 if (!
sc.isSuccess()) {
177 ATH_MSG_DEBUG(
"Error in RPC data prepapration. Continue using RoI");
185 if (!
sc.isSuccess()){
189 double roiEtaMinLow = 0.;
190 double roiEtaMaxLow = 0.;
191 double roiEtaMinHigh = 0.;
192 double roiEtaMaxHigh = 0.;
193 if(!m_recRPCRoiTool->etaDimLow(
data, roiEtaMinLow, roiEtaMaxLow)) {
194 roiEtaMinLow = p_roids->
eta();
195 roiEtaMaxLow = p_roids->
eta();
197 if(!m_recRPCRoiTool->etaDimHigh(
data, roiEtaMinHigh, roiEtaMaxHigh)) {
198 roiEtaMinHigh = p_roids->
eta();
199 roiEtaMaxHigh = p_roids->
eta();
204 sc = m_rpcRoadDefiner->defineRoad(p_roi,
214 if (!
sc.isSuccess()) {
219 sc = m_mdtDataPreparator->prepareData(p_roids,
226 if (!
sc.isSuccess()) {
232 return StatusCode::SUCCESS;
242 std::vector<TrigL2MuonSA::MuonRoad>& clusterRoad,
243 std::vector<TrigL2MuonSA::RpcFitResult>& clusterFitResults,
245 std::vector<TrigL2MuonSA::MdtHits>& mdtHits_cluster_normal,
246 const bool dynamicDeltaRpc)
const
252 rpcLayerClusters.
clear();
264 sc = m_rpcDataPreparator->prepareData(p_roids,
269 if (!
sc.isSuccess()) {
270 ATH_MSG_DEBUG(
"Error in RPC data prepapration and clustering. Continue using RoI");
277 if (!
sc.isSuccess()){
281 double roiEtaMinLow = 0.;
282 double roiEtaMaxLow = 0.;
283 double roiEtaMinHigh = 0.;
284 double roiEtaMaxHigh = 0.;
285 if(!m_recRPCRoiTool->etaDimLow(
data, roiEtaMinLow, roiEtaMaxLow)) {
286 roiEtaMinLow = p_roids->
eta();
287 roiEtaMaxLow = p_roids->
eta();
289 if(!m_recRPCRoiTool->etaDimHigh(
data, roiEtaMinHigh, roiEtaMaxHigh)) {
290 roiEtaMinHigh = p_roids->
eta();
291 roiEtaMaxHigh = p_roids->
eta();
294 sc = m_clusterRoadDefiner->defineRoad(p_roi,
303 if (!
sc.isSuccess()) {
308 if(!clusterRoad.empty()){
309 sc = m_mdtDataPreparator->prepareData(p_roids,
310 clusterFitResults.back(),
315 if (!
sc.isSuccess()) {
322 for(
unsigned int i_road = 0; i_road < clusterRoad.size(); i_road++){
324 for(
unsigned int i_hit = 0; i_hit < mdtHits.size(); i_hit++){
325 unsigned int chamber = mdtHits[i_hit].Chamber;
328 double Z = mdtHits[i_hit].Z;
329 double R = mdtHits[i_hit].R;
331 unsigned int clusterRoadID = 9999;
332 for(
unsigned int j_road = 0; j_road < clusterRoad.size(); j_road++){
333 double aw = clusterRoad.at(j_road).aw[
chamber][0];
334 double bw = clusterRoad.at(j_road).bw[
chamber][0];
342 double dz = Z - (R-bw)*ia;
343 tmp_residual = dz/std::sqrt(1.+iaq);
345 if(std::abs(
residual) > std::abs(tmp_residual)){
347 clusterRoadID = j_road;
350 if(clusterRoadID == i_road){
351 mdt_normal.push_back(mdtHits[i_hit]);
354 mdtHits_cluster_normal.push_back(mdt_normal);
358 return StatusCode::SUCCESS;
366 const bool insideOut,
380 sc = m_tgcDataPreparator->prepareData(p_roi,
386 if (!
sc.isSuccess()) {
387 ATH_MSG_DEBUG(
"Error in TGC data preparation. Continue using RoI");
391 sc = m_tgcRoadDefiner->defineRoad(p_roids,
396 if (!
sc.isSuccess()) {
401 sc = m_mdtDataPreparator->prepareData(p_roids,
407 if (!
sc.isSuccess()) {
413 if(!m_cscDataPreparator.empty()) {
414 sc = m_cscDataPreparator->prepareData(muonRoad,
416 if (!
sc.isSuccess()) {
423 if(m_use_stgc && !m_stgcDataPreparator.empty()){
424 sc = m_stgcDataPreparator->prepareData(p_roids,
426 if (!
sc.isSuccess()) {
433 if(m_use_mm && !m_mmDataPreparator.empty()){
434 sc = m_mmDataPreparator->prepareData(p_roids,
436 if (!
sc.isSuccess()) {
443 return StatusCode::SUCCESS;