Skip to content
Snippets Groups Projects
Commit 0626df6c authored by Nicholas Styles's avatar Nicholas Styles
Browse files

fix for stereo angle calculation in ITk strip endcaps

parent 0f520293
No related branches found
No related tags found
6 merge requests!58791DataQualityConfigurations: Modify L1Calo config for web display,!46784MuonCondInterface: Enable thread-safety checking.,!46776Updated LArMonitoring config file for WD to match new files produced using MT,!45405updated ART test cron job,!42417Draft: DIRE and VINCIA Base Fragments for Pythia 8.3,!39499Coordinate fixes for ITk Strips
......@@ -506,11 +506,29 @@ namespace InDetDD {
// sinStereo = (refVector cross etaAxis) . normal
// = -(center cross etaAxis) . zAxis
// = (etaAxis cross center). z()
//Since these are barrel, endcap, sensor-type, specific, might be better for these to be calculated in the design()
//However, not clear how one could do that for the annulus calculation which uses global frame
double sinStereo = 0.;
if (isBarrel()) {
sinStereo = m_phiAxis.z();
} else { // endcap
sinStereo = (m_center.y() * m_etaAxis.x() - m_center.x() * m_etaAxis.y()) / m_center.perp();
if (m_design->shape() == InDetDD::Annulus) { //built-in Stereo angle for Annulus shape sensor
Amg::Vector3D sensorCenter = m_design->sensorCenter();
//Below retrieved method will return -sin(m_Stereo), thus sinStereolocal = sin(m_Stereo)
double sinStereoReco = - (m_design->sinStripAngleReco(sensorCenter[1], sensorCenter[0]));
double cosStereoReco = sqrt(1-sinStereoReco*sinStereoReco);
double radialShift = sensorCenter[0];
//The focus of all strips in the local reco frame
Amg::Vector2D localfocus(-radialShift*sinStereoReco, radialShift - radialShift*cosStereoReco);
//The focus of all strips in the global frame
Amg::Vector3D globalfocus(globalPosition(localfocus));
//The direction of x-axis of the Strip frame in the global frame
Amg::Vector3D globalSFxAxis =(m_center - globalfocus)/radialShift;
//Stereo angle is the angle between global radial direction and the x-axis of the Strip frame in the global frame
sinStereo = (m_center.y() * globalSFxAxis.x() - m_center.x() * globalSFxAxis.y()) / m_center.perp();
}
else sinStereo = (m_center.y() * m_etaAxis.x() - m_center.x() * m_etaAxis.y()) / m_center.perp();
}
return sinStereo;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment