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);
151 const bool insideOut,
157 const bool dynamicDeltaRpc)
const
167 rpcLayerHits.
clear();
169 if(m_use_rpc && !insideOut) {
171 sc = m_rpcDataPreparator->prepareData(ctx,
178 if (!
sc.isSuccess()) {
179 ATH_MSG_DEBUG(
"Error in RPC data prepapration. Continue using RoI");
187 if (!
sc.isSuccess()){
191 double roiEtaMinLow = 0.;
192 double roiEtaMaxLow = 0.;
193 double roiEtaMinHigh = 0.;
194 double roiEtaMaxHigh = 0.;
195 if(!m_recRPCRoiTool->etaDimLow(
data, roiEtaMinLow, roiEtaMaxLow)) {
196 roiEtaMinLow = p_roids->
eta();
197 roiEtaMaxLow = p_roids->
eta();
199 if(!m_recRPCRoiTool->etaDimHigh(
data, roiEtaMinHigh, roiEtaMaxHigh)) {
200 roiEtaMinHigh = p_roids->
eta();
201 roiEtaMaxHigh = p_roids->
eta();
206 sc = m_rpcRoadDefiner->defineRoad(ctx,
217 if (!
sc.isSuccess()) {
222 sc = m_mdtDataPreparator->prepareData(ctx,
230 if (!
sc.isSuccess()) {
236 return StatusCode::SUCCESS;
247 std::vector<TrigL2MuonSA::MuonRoad>& clusterRoad,
248 std::vector<TrigL2MuonSA::RpcFitResult>& clusterFitResults,
250 std::vector<TrigL2MuonSA::MdtHits>& mdtHits_cluster_normal,
251 const bool dynamicDeltaRpc)
const
257 rpcLayerClusters.
clear();
269 sc = m_rpcDataPreparator->prepareData(ctx,
275 if (!
sc.isSuccess()) {
276 ATH_MSG_DEBUG(
"Error in RPC data prepapration and clustering. Continue using RoI");
283 if (!
sc.isSuccess()){
287 double roiEtaMinLow = 0.;
288 double roiEtaMaxLow = 0.;
289 double roiEtaMinHigh = 0.;
290 double roiEtaMaxHigh = 0.;
291 if(!m_recRPCRoiTool->etaDimLow(
data, roiEtaMinLow, roiEtaMaxLow)) {
292 roiEtaMinLow = p_roids->
eta();
293 roiEtaMaxLow = p_roids->
eta();
295 if(!m_recRPCRoiTool->etaDimHigh(
data, roiEtaMinHigh, roiEtaMaxHigh)) {
296 roiEtaMinHigh = p_roids->
eta();
297 roiEtaMaxHigh = p_roids->
eta();
300 sc = m_clusterRoadDefiner->defineRoad(ctx,
310 if (!
sc.isSuccess()) {
315 if(!clusterRoad.empty()){
316 sc = m_mdtDataPreparator->prepareData(ctx,
318 clusterFitResults.back(),
323 if (!
sc.isSuccess()) {
330 for(
unsigned int i_road = 0; i_road < clusterRoad.size(); i_road++){
332 for(
unsigned int i_hit = 0; i_hit < mdtHits.size(); i_hit++){
333 unsigned int chamber = mdtHits[i_hit].Chamber;
336 double Z = mdtHits[i_hit].Z;
337 double R = mdtHits[i_hit].R;
339 unsigned int clusterRoadID = 9999;
340 for(
unsigned int j_road = 0; j_road < clusterRoad.size(); j_road++){
341 double aw = clusterRoad.at(j_road).aw[
chamber][0];
342 double bw = clusterRoad.at(j_road).bw[
chamber][0];
350 double dz = Z - (R-bw)*ia;
351 tmp_residual = dz/std::sqrt(1.+iaq);
353 if(std::abs(
residual) > std::abs(tmp_residual)){
355 clusterRoadID = j_road;
358 if(clusterRoadID == i_road){
359 mdt_normal.push_back(mdtHits[i_hit]);
362 mdtHits_cluster_normal.push_back(mdt_normal);
366 return StatusCode::SUCCESS;
375 const bool insideOut,
389 sc = m_tgcDataPreparator->prepareData(ctx, p_roi, tgcHits);
394 if (!
sc.isSuccess()) {
395 ATH_MSG_DEBUG(
"Error in TGC data preparation. Continue using RoI");
399 sc = m_tgcRoadDefiner->defineRoad(ctx,
405 if (!
sc.isSuccess()) {
410 sc = m_mdtDataPreparator->prepareData(ctx,
417 if (!
sc.isSuccess()) {
423 if(!m_cscDataPreparator.empty()) {
424 sc = m_cscDataPreparator->prepareData(ctx, muonRoad, cscHits);
425 if (!
sc.isSuccess()) {
432 if(m_use_stgc && !m_stgcDataPreparator.empty()){
433 sc = m_stgcDataPreparator->prepareData(ctx, p_roids, stgcHits);
434 if (!
sc.isSuccess()) {
441 if(m_use_mm && !m_mmDataPreparator.empty()){
442 sc = m_mmDataPreparator->prepareData(ctx, p_roids, mmHits);
443 if (!
sc.isSuccess()) {
450 return StatusCode::SUCCESS;