54 ATH_MSG_DEBUG(
"SP monitoring, handle validity " << spCountsHandle.isValid());
55 if (!spCountsHandle.isValid())
58 return StatusCode::SUCCESS;
60 if (spCountsHandle->size() == 0)
62 return StatusCode::SUCCESS;
74 auto pixelCL =
Scalar(
"PixelCL", spCountsHandle->at(0)->getDetail<
int>(
"pixCL"));
75 auto PixBarr_SP =
Scalar(
"PixBarr_SP", spCountsHandle->at(0)->getDetail<
int>(
"pixCLBarrel"));
76 auto PixECA_SP =
Scalar(
"PixECA_SP", spCountsHandle->at(0)->getDetail<
int>(
"pixCLEndcapA"));
77 auto PixECC_SP =
Scalar(
"PixECC_SP", spCountsHandle->at(0)->getDetail<
int>(
"pixCLEndcapC"));
79 auto SctTot =
Scalar(
"SctTot", spCountsHandle->at(0)->getDetail<
int>(
"sctSP"));
80 auto SctBarr_SP =
Scalar(
"SctBarr_SP", spCountsHandle->at(0)->getDetail<
int>(
"sctSPBarrel"));
81 auto SctECA_SP =
Scalar(
"SctECA_SP", spCountsHandle->at(0)->getDetail<
int>(
"sctSPEndcapA"));
82 auto SctECC_SP =
Scalar(
"SctECC_SP", spCountsHandle->at(0)->getDetail<
int>(
"sctSPEndcapC"));
84 fill(trig +
"_SpacePoints", pixelCL, PixBarr_SP, PixECA_SP, PixECC_SP, SctTot, SctBarr_SP, SctECA_SP, SctECC_SP);
90 return StatusCode::SUCCESS;
100 if (!trkCountsHandle.isValid())
103 return StatusCode::SUCCESS;
106 if (trkCountsHandle->size() == 0)
108 return StatusCode::SUCCESS;
111 auto nTrkOnline =
Scalar(
"nTrkOnline", trkCountsHandle->at(0)->getDetail<
int>(
"ntrks"));
112 const std::vector<int>& counts = trkCountsHandle->at(0)->getDetail<std::vector<int>>(
"counts");
114 int countTrkVtxOnline = -1;
115 auto countsOnline =
Collection(
"countsOnline", counts);
116 const std::vector<float>& ptCutValues = trkCountsHandle->at(0)->getDetail<std::vector<float>>(
"pTcuts");
117 const std::vector<float>& z0CutValues = trkCountsHandle->at(0)->getDetail<std::vector<float>>(
"z0cuts");
118 const std::vector<float>& vtxCutValues = trkCountsHandle->at(0)->getDetail<std::vector<float>>(
"vertexZcuts");
119 std::vector<std::string> descriptions(counts.size());
121 for (
size_t i = 0; i < countsOnline.size(); ++i) {
122 std::ostringstream s;
123 s <<
"pt: " << ptCutValues[i];
124 s <<
" z0: " << z0CutValues[i];
125 auto vtxCut = vtxCutValues[i];
126 s <<
" vtx-z: " << vtxCut;
127 descriptions[i] = s.str();
129 countTrkVtxOnline = counts[i];
132 auto countsOnlineNames =
Collection(
"countsOnlineNames", descriptions);
133 auto nTrkOnlineVtx =
Scalar(
"nTrkOnlineVtx", countTrkVtxOnline);
137 const float priVtxZ = priVtx ==
nullptr ? 999 : priVtx->
z();
139 auto offlineVtxZ =
Scalar(
"offlineVtxZ", priVtxZ);
142 int countPassing = 0;
143 int countPassingVtx = 0;
149 for (
const auto trk : *offlineTrkHandle) {
150 if (track_selector(trk) and std::abs(trk->pt()) >
m_minPt) {
157 ATH_MSG_DEBUG(
"::monitorTrkCounts countPassing = " << countPassing);
161 float maxWeight = -1;
165 for (
auto vertex : *zFinderDataHandle) {
166 float weight = vertex->getDetail<
float>(
"zfinder_vtx_weight");
167 if (weight > maxWeight) {
168 maxWeight = std::max(weight, maxWeight);
169 zPos = vertex->getDetail<
float>(
"zfinder_vtx_z");
173 auto zFinderWeight =
Scalar(
"zFinderWeight", maxWeight);
174 auto zFinderVtxZ =
Scalar(
"zFinderVtxZ", zPos);
175 auto onlineOfflineVtxDelta =
Scalar(
"onlineOfflineVtxDelta", priVtxZ - zPos);
177 auto nTrkOffline =
Scalar(
"nTrkOffline", countPassing);
178 auto nTrkOfflineVtx =
Scalar(
"nTrkOfflineVtx", countPassingVtx);
179 auto nAllTrkOffline =
Scalar(
"nAllTrkOffline", offlineTrkHandle->size());
180 auto trkMask =
Collection(
"trkMask", *offlineTrkHandle, [&](
const auto& trk) {
return track_selector(trk); });
181 auto trkPt =
Collection(
"trkPt", *offlineTrkHandle, [](
const auto& trk) {
return trk->pt() * 1.e-3; });
182 auto trkEta =
Collection(
"trkEta", *offlineTrkHandle, [](
const auto& trk) {
return trk->eta(); });
183 auto trkPhi =
Collection(
"trkPhi", *offlineTrkHandle, [](
const auto& trk) {
return trk->phi(); });
184 auto trkD0 =
Collection(
"trkD0", *offlineTrkHandle, [](
const auto& trk) {
return trk->d0(); });
185 auto trkZ0 =
Collection(
"trkZ0", *offlineTrkHandle, [](
const auto& trk) {
return trk->z0(); });
186 auto trkZ0wrtPV =
Collection(
"trkZ0wrtPV", *offlineTrkHandle, [priVtx](
const auto& trk) {
187 return (priVtx !=
nullptr) ?
Utils::z0wrtPV(trk, priVtx) : -999; });
191 uint32_t pattern = trk->hitPattern();
192 for (
int bit = 0; bit < 32; bit++)
193 nhits += (pattern & (1u << bit) ? 1 : 0);
196 auto trkHits =
Collection(
"trkHits", *offlineTrkHandle, getNhits);
198 auto onlTrkPt =
Collection(
"onlTrkPt", *onlineTrkHandle, [](
const auto& trk) {
return trk->pt() * 1.e-3; });
199 auto onlTrkEta =
Collection(
"onlTrkEta", *onlineTrkHandle, [](
const auto& trk) {
return trk->eta(); });
200 auto onlTrkPhi =
Collection(
"onlTrkPhi", *onlineTrkHandle, [](
const auto& trk) {
return trk->phi(); });
201 auto onlTrkD0 =
Collection(
"onlTrkD0", *onlineTrkHandle, [](
const auto& trk) {
return trk->d0(); });
202 auto onlTrkZ0 =
Collection(
"onlTrkZ0", *onlineTrkHandle, [](
const auto& trk) {
return trk->z0(); });
203 auto onlTrkHits =
Collection(
"onlTrkHits", *onlineTrkHandle, getNhits);
205 auto nMBTrkTrkOfflineRatio =
Scalar(
"trkSelOfflineRatio", (offlineTrkHandle->size() == 0 ? -1 :
static_cast<double>(nTrkOffline) / offlineTrkHandle->size()));
208 ATH_MSG_DEBUG(
"L1TE monitoring, handle validity " << L1TEHandle.isValid());
209 float sum_roi_sumEt = 0.;
210 if (!L1TEHandle.isValid()) sum_roi_sumEt = -1.;
211 else sum_roi_sumEt =
static_cast<float>(L1TEHandle->energyT()) * 1.e-3;
212 auto L1sumEt =
Scalar(
"L1sumEt", sum_roi_sumEt);
215 ATH_MSG_DEBUG(
"SP monitoring, handle validity " << spCountsHandle.isValid());
216 if (!spCountsHandle.isValid())
219 return StatusCode::SUCCESS;
221 if (spCountsHandle->size() == 0)
223 return StatusCode::SUCCESS;
231 auto pixelCL =
Scalar(
"PixelCL", spCountsHandle->at(0)->getDetail<
int>(
"pixCL"));
232 auto PixBarr_SP =
Scalar(
"PixBarr_SP", spCountsHandle->at(0)->getDetail<
int>(
"pixCLBarrel"));
233 auto PixECA_SP =
Scalar(
"PixECA_SP", spCountsHandle->at(0)->getDetail<
int>(
"pixCLEndcapA"));
234 auto PixECC_SP =
Scalar(
"PixECC_SP", spCountsHandle->at(0)->getDetail<
int>(
"pixCLEndcapC"));
236 auto SctTot =
Scalar(
"SctTot", spCountsHandle->at(0)->getDetail<
int>(
"sctSP"));
237 auto SctBarr_SP =
Scalar(
"SctBarr_SP", spCountsHandle->at(0)->getDetail<
int>(
"sctSPBarrel"));
238 auto SctECA_SP =
Scalar(
"SctECA_SP", spCountsHandle->at(0)->getDetail<
int>(
"sctSPEndcapA"));
239 auto SctECC_SP =
Scalar(
"SctECC_SP", spCountsHandle->at(0)->getDetail<
int>(
"sctSPEndcapC"));
243 double nTrkRatio = nTrkOnline > 0 ?
static_cast<double>(offlineTrkHandle->size()) /
static_cast<double>(nTrkOnline) : -1.0;
244 auto trkRatio =
Scalar(
"nTrkRatio", nTrkRatio);
245 fill(trig +
"_Tracking", nTrkOffline, nTrkOfflineVtx, nAllTrkOffline, nTrkOnline, trkRatio, nMBTrkTrkOfflineRatio, pixelCL,
246 PixBarr_SP, PixECA_SP, PixECC_SP,
247 SctTot, SctBarr_SP, SctECA_SP, SctECC_SP,
249 countsOnline, countsOnlineNames,
250 trkMask, trkPt, trkEta, trkPhi, trkD0, trkZ0, trkZ0wrtPV, trkHits,
251 onlTrkPt, onlTrkEta, onlTrkPhi, onlTrkHits, onlTrkD0, onlTrkZ0,
252 zFinderWeight, zFinderVtxZ, offlineVtxZ, onlineOfflineVtxDelta,
257 const unsigned int passBits = trigDecTool->isPassedBits(trig);
260 fill(trig +
"_Tracking", nTrkOffline, nAllTrkOffline, nTrkOnline, decision);
265 return StatusCode::SUCCESS;