19 return StatusCode::SUCCESS;
28 float roi_eta = p_roi->
eta();
29 float roi_phi = p_roi->
phi();
30 if (roi_phi < 0) roi_phi += 2.0 *
M_PI;
37 const bool isLowPt = m_recMuonRoIUtils.isLowPt(p_roi);
40 const double mid_eta_test = (isLowPt) ? m_options.roadParameters().deltaEtaAtMiddleForLowPt()
41 : m_options.roadParameters().deltaEtaAtMiddleForHighPt();
42 const double inn_eta_test = (isLowPt) ? m_options.roadParameters().deltaEtaAtInnerForLowPt()
43 : m_options.roadParameters().deltaEtaAtInnerForHighPt();
44 const double mid_phi_test = m_options.roadParameters().deltaPhiAtMiddle();
45 const double inn_phi_test = m_options.roadParameters().deltaPhiAtInner();
48 tgcPrepContainer = tgcContainerHandle.cptr();
49 if (!tgcContainerHandle.isValid()) {
50 ATH_MSG_ERROR(
"Could not retrieve PrepDataContainer key:" << m_tgcContainerKey.key());
51 return StatusCode::FAILURE;
57 float min_dphi_wire=1000.;
58 float second_dphi_wire=1000.;
59 std::vector<float> ov_dphi;
66 if (!m_idHelperSvc->tgcIdHelper().isStrip(prepDataWi.
identify())) {
67 int stationNumWi = m_idHelperSvc->tgcIdHelper().stationRegion(prepDataWi.
identify())-1;
68 if (stationNumWi==-1) stationNumWi=3;
69 if (stationNumWi<3 && std::abs(prepDataWi.
globalPosition().eta() - roi_eta) < mid_eta_test ) {
72 for (
unsigned int ov=0;
ov<ov_dphi.size();
ov++)
73 if (std::abs(dphi-ov_dphi[
ov])<1
e-5) overlap=
true;
74 if (overlap)
continue;
75 ov_dphi.push_back(dphi);
76 if (dphi<second_dphi_wire){
77 second_dphi_wire=dphi;
79 if (dphi<min_dphi_wire) {
80 second_dphi_wire=min_dphi_wire;
90 int num_second_hits=0;
96 if (!m_idHelperSvc->tgcIdHelper().isStrip(prepDataHit.
identify())) {
97 int stationNumHit = m_idHelperSvc->tgcIdHelper().stationRegion(prepDataHit.
identify())-1;
98 if (stationNumHit==-1) stationNumHit=3;
99 if (stationNumHit<3 && std::abs(prepDataHit.
globalPosition().eta() - roi_eta) < mid_eta_test ) {
101 if (std::abs(dphi-min_dphi_wire)<1
e-5) num_min_hits++;
102 if (std::abs(dphi-second_dphi_wire)<1
e-5) num_second_hits++;
108 float dphi_wire=min_dphi_wire;
109 bool useDefault=
false;
110 if (num_min_hits<5) {
111 if (num_second_hits>5) dphi_wire=second_dphi_wire;
112 else useDefault=
true;
121 bool isInRoad =
false;
122 int stationNum = m_idHelperSvc->tgcIdHelper().stationRegion(prepData.
identify())-1;
123 if (stationNum==-1) stationNum=3;
124 if (m_idHelperSvc->tgcIdHelper().isStrip(prepData.
identify())) {
125 double dphi = std::abs(prepData.
globalPosition().phi() - roi_phi);
126 if( dphi >
M_PI*2 ) dphi = dphi -
M_PI*2;
127 if( dphi >
M_PI ) dphi =
M_PI*2 - dphi;
129 if ( stationNum < 3 && dphi < mid_phi_test ) { isInRoad =
true; }
130 else if( stationNum == 3 && dphi < inn_phi_test ) { isInRoad =
true; }
135 if ( stationNum < 3 && std::abs(prepData.
globalPosition().eta() - roi_eta) < mid_eta_test ) {
136 if (useDefault) isInRoad =
true;
137 else if (std::abs(dphi-dphi_wire)<1
e-5) isInRoad =
true;
139 else if( stationNum == 3 && std::abs(prepData.
globalPosition().eta() - roi_eta) < inn_eta_test ) { isInRoad =
true; }
141 if( ! isInRoad )
continue;
144 gasGap = m_idHelperSvc->tgcIdHelper().gasGap(prepData.
identify());
153 lutDigit.
sta = stationNum;
154 lutDigit.
isStrip = m_idHelperSvc->tgcIdHelper().isStrip(prepData.
identify());
155 if(m_idHelperSvc->tgcIdHelper().isStrip(prepData.
identify())){
165 tgcHits.push_back(lutDigit);
170 return StatusCode::SUCCESS;