47 static const int layer100[] = {
48 2, 2, 3, 2, 2, 2, 0, 2, 3, 2, 0, 2, 3, 2, 3, 2, 0, 2, 3, 0, 2, 0, 2, 3, 2, 2, 2, 0, 0, 0, 0, 0, 0, 3, 0, 3, 2, 0, 2,
49 2, 0, 3, 3, 3, 0, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 3, 3, 2, 2, 2, 2, 2, 3, 3, 2, 3, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 3, 3,
50 2, 3, 2, 3, 3, 2, 3, 2, 2, 2, 2, 2, 2, 2
52 static const int phi100[] = {
53 29, 29, 6, 13, 23, 13, 14, 29, 9, 29, 14, 29, 9, 29, 39, 32, 21, 32, 13, 22, 32, 22, 32, 13, 32, 32, 32, 20, 20, 20,
54 20, 20, 20, 13, 21, 17, 33, 5, 33, 33, 31, 6, 19, 47, 21, 37, 37, 37, 37, 33, 37, 37, 24, 33, 33, 47, 19, 33, 33,
55 37, 37, 37, 55, 9, 38, 24, 37, 38, 8, 9, 9, 26, 38, 38, 38, 38, 39, 39, 38, 11, 45, 54, 54, 24, 31, 14, 47, 45, 47,
58 static const int eta100[] = {
59 3, -4, -6, 2, 6, 3, -5, -1, 6, -2, -6, -5, 5, -3, 2, 6, -3, 5, 5, 3, 4, 2, 2, 2, -1, -3, -4, 1, -1, -2, -3, -4, 4,
60 -1, -5, 6, 2, 4, 3, 1, 6, -2, 6, 3, -6, -1, 2, 1, 3, -5, 4, 5, -3, -4, -3, -5, -2, -1, -2, -3, -2, -4, -3, 2, 3, -6,
61 -5, 4, 6, 1, -6, 1, 1, -5, -4, -3, -3, -5, -2, 1, 5, 5, 4, 4, 5, 4, -1, -5, 3, 4, 1, -5
63 constexpr unsigned int layer100_n{
sizeof(layer100) /
sizeof(*layer100)};
64 constexpr unsigned int phi100_n{
sizeof(phi100) /
sizeof(*phi100)};
65 constexpr unsigned int eta100_n{
sizeof(eta100) /
sizeof(*eta100)};
66 constexpr bool theseArraysAreEqualInLength{(layer100_n == phi100_n) and (phi100_n == eta100_n)};
67 static_assert(theseArraysAreEqualInLength,
"Coordinate arrays for <100> wafers are not of equal length");
73 if (elements==
nullptr) {
75 return StatusCode::SUCCESS;
80 return StatusCode::SUCCESS;
84 std::unique_ptr<Trk::PRDtoTrackMap> prd_to_track_map;
86 prd_to_track_map =
m_assoTool->createPRDtoTrackMap();
101 beamSpotX = bpos.x();
102 beamSpotY = bpos.y();
103 beamSpotZ = bpos.z();
104 beamTiltX = beamSpotHandle->beamTilt(0);
105 beamTiltY = beamSpotHandle->beamTilt(1);
106 ATH_MSG_DEBUG (
"Beamspot: x0 = " << beamSpotX <<
", y0 = " << beamSpotY <<
", z0 = " << beamSpotZ <<
", tiltX = " << beamTiltX <<
", tiltY = " << beamTiltY);
110 if (track==
nullptr) {
115 if (track->perigeeParameters() ==
nullptr) {
119 std::unique_ptr<const Trk::Track> trackWithHoles(
m_holeSearchTool->getTrackWithHoles(*track));
121 if (not trackWithHoles) {
126 ATH_MSG_VERBOSE(
"Found " << trackWithHoles->trackStateOnSurfaces()->size() <<
" states on track");
129 const Trk::TrackStates* trackStates{trackWithHoles->trackStateOnSurfaces()};
130 if (trackStates==
nullptr) {
131 ATH_MSG_WARNING(
"for current track, TrackStateOnSurfaces == Null, no data will be written for this track");
136 std::unique_ptr<Trk::TrackSummary> mySummary;
137 if (summary==
nullptr) {
139 summary = mySummary.get();
140 if (summary==
nullptr) {
155 if (prd_to_track_map and prd_to_track_map->isShared(*(clus->
prepRawData())) ) {
160 if (RawDataClus==
nullptr) {
166 const std::vector<Identifier>& rdoList{RawDataClus->
rdoList()};
167 nStrip =
static_cast<int>(rdoList.size());
180 }
else if (tsos->trackParameters()) {
181 sct_id = tsos->trackParameters()->associatedSurface().associatedDetectorElementIdentifier();
202 for (
unsigned int i{0}; i < layer100_n; i++) {
203 if ((layer100[i] == layer) and (eta100[i] ==
eta) and (phi100[i] ==
phi)) {
215 const Trk::Perigee* perigee{track->perigeeParameters()};
219 float phiToWafer{90.f};
220 float thetaToWafer(90.f);
226 float etaTrack = trkp->
eta();
236 float d0bscorr = -999;
239 beamX = beamSpotX + tan(beamTiltX) * (perigee->parameters()[
Trk::z0]-beamSpotZ);
240 beamY = beamSpotY + tan(beamTiltY) * (perigee->parameters()[
Trk::z0]-beamSpotZ);
241 d0bscorr = perigee->parameters()[
Trk::d0] - ( -sin(perigee->parameters()[
Trk::phi])*beamX + cos(perigee->parameters()[
Trk::phi])*beamY );
245 if (trkp->
momentum().perp() > 500. and
248 (std::abs(d0bscorr) < 1. and trackWithHoles->perigeeParameters()->parameters()[
Trk::qOverP] < 0.)
252 std::string xVar{
"phiToWafer"};
253 std::string yVar{
"nStrip"};
255 xVar +=
"_" + std::to_string(layer);
256 yVar +=
"_" + std::to_string(layer);
273 xVar += std::to_string(layer);
274 yVar += std::to_string(layer);
278 }
else if (
eta == 1) {
298 fill(
"SCTLorentzMonitor", phiToWaferAcc, nStripAcc, isCentralAcc);
304 return StatusCode::SUCCESS;