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 const std::string weightStr{
"zfinder_vtx_weight"};
166 const std::string zStr{
"zfinder_vtx_z"};
167 for (
const auto * vertex : *zFinderDataHandle) {
168 float weight = vertex->getDetail<
float>(weightStr);
169 if (weight > maxWeight) {
171 zPos = vertex->getDetail<
float>(zStr);
175 auto zFinderWeight =
Scalar(
"zFinderWeight", maxWeight);
176 auto zFinderVtxZ =
Scalar(
"zFinderVtxZ", zPos);
177 auto onlineOfflineVtxDelta =
Scalar(
"onlineOfflineVtxDelta", priVtxZ - zPos);
179 auto nTrkOffline =
Scalar(
"nTrkOffline", countPassing);
180 auto nTrkOfflineVtx =
Scalar(
"nTrkOfflineVtx", countPassingVtx);
181 auto nAllTrkOffline =
Scalar(
"nAllTrkOffline", offlineTrkHandle->size());
182 auto trkMask =
Collection(
"trkMask", *offlineTrkHandle, [&](
const auto& trk) {
return track_selector(trk); });
183 auto trkPt =
Collection(
"trkPt", *offlineTrkHandle, [](
const auto& trk) {
return trk->pt() * 1.e-3; });
184 auto trkEta =
Collection(
"trkEta", *offlineTrkHandle, [](
const auto& trk) {
return trk->eta(); });
185 auto trkPhi =
Collection(
"trkPhi", *offlineTrkHandle, [](
const auto& trk) {
return trk->phi(); });
186 auto trkD0 =
Collection(
"trkD0", *offlineTrkHandle, [](
const auto& trk) {
return trk->d0(); });
187 auto trkZ0 =
Collection(
"trkZ0", *offlineTrkHandle, [](
const auto& trk) {
return trk->z0(); });
188 auto trkZ0wrtPV =
Collection(
"trkZ0wrtPV", *offlineTrkHandle, [priVtx](
const auto& trk) {
189 return (priVtx !=
nullptr) ?
Utils::z0wrtPV(trk, priVtx) : -999; });
193 uint32_t pattern = trk->hitPattern();
194 for (
int bit = 0; bit < 32; bit++)
195 nhits += (pattern & (1u << bit) ? 1 : 0);
198 auto trkHits =
Collection(
"trkHits", *offlineTrkHandle, getNhits);
200 auto onlTrkPt =
Collection(
"onlTrkPt", *onlineTrkHandle, [](
const auto& trk) {
return trk->pt() * 1.e-3; });
201 auto onlTrkEta =
Collection(
"onlTrkEta", *onlineTrkHandle, [](
const auto& trk) {
return trk->eta(); });
202 auto onlTrkPhi =
Collection(
"onlTrkPhi", *onlineTrkHandle, [](
const auto& trk) {
return trk->phi(); });
203 auto onlTrkD0 =
Collection(
"onlTrkD0", *onlineTrkHandle, [](
const auto& trk) {
return trk->d0(); });
204 auto onlTrkZ0 =
Collection(
"onlTrkZ0", *onlineTrkHandle, [](
const auto& trk) {
return trk->z0(); });
205 auto onlTrkHits =
Collection(
"onlTrkHits", *onlineTrkHandle, getNhits);
207 auto nMBTrkTrkOfflineRatio =
Scalar(
"trkSelOfflineRatio", (offlineTrkHandle->size() == 0 ? -1 :
static_cast<double>(nTrkOffline) / offlineTrkHandle->size()));
210 ATH_MSG_DEBUG(
"L1TE monitoring, handle validity " << L1TEHandle.isValid());
211 float sum_roi_sumEt = 0.;
212 if (!L1TEHandle.isValid()) sum_roi_sumEt = -1.;
213 else sum_roi_sumEt =
static_cast<float>(L1TEHandle->energyT()) * 1.e-3;
214 auto L1sumEt =
Scalar(
"L1sumEt", sum_roi_sumEt);
217 ATH_MSG_DEBUG(
"SP monitoring, handle validity " << spCountsHandle.isValid());
218 if (!spCountsHandle.isValid())
221 return StatusCode::SUCCESS;
223 if (spCountsHandle->size() == 0)
225 return StatusCode::SUCCESS;
233 auto pixelCL =
Scalar(
"PixelCL", spCountsHandle->at(0)->getDetail<
int>(
"pixCL"));
234 auto PixBarr_SP =
Scalar(
"PixBarr_SP", spCountsHandle->at(0)->getDetail<
int>(
"pixCLBarrel"));
235 auto PixECA_SP =
Scalar(
"PixECA_SP", spCountsHandle->at(0)->getDetail<
int>(
"pixCLEndcapA"));
236 auto PixECC_SP =
Scalar(
"PixECC_SP", spCountsHandle->at(0)->getDetail<
int>(
"pixCLEndcapC"));
238 auto SctTot =
Scalar(
"SctTot", spCountsHandle->at(0)->getDetail<
int>(
"sctSP"));
239 auto SctBarr_SP =
Scalar(
"SctBarr_SP", spCountsHandle->at(0)->getDetail<
int>(
"sctSPBarrel"));
240 auto SctECA_SP =
Scalar(
"SctECA_SP", spCountsHandle->at(0)->getDetail<
int>(
"sctSPEndcapA"));
241 auto SctECC_SP =
Scalar(
"SctECC_SP", spCountsHandle->at(0)->getDetail<
int>(
"sctSPEndcapC"));
245 double nTrkRatio = nTrkOnline > 0 ?
static_cast<double>(offlineTrkHandle->size()) /
static_cast<double>(nTrkOnline) : -1.0;
246 auto trkRatio =
Scalar(
"nTrkRatio", nTrkRatio);
247 fill(trig +
"_Tracking", nTrkOffline, nTrkOfflineVtx, nAllTrkOffline, nTrkOnline, trkRatio, nMBTrkTrkOfflineRatio, pixelCL,
248 PixBarr_SP, PixECA_SP, PixECC_SP,
249 SctTot, SctBarr_SP, SctECA_SP, SctECC_SP,
251 countsOnline, countsOnlineNames,
252 trkMask, trkPt, trkEta, trkPhi, trkD0, trkZ0, trkZ0wrtPV, trkHits,
253 onlTrkPt, onlTrkEta, onlTrkPhi, onlTrkHits, onlTrkD0, onlTrkZ0,
254 zFinderWeight, zFinderVtxZ, offlineVtxZ, onlineOfflineVtxDelta,
259 const unsigned int passBits = trigDecTool->isPassedBits(trig);
262 fill(trig +
"_Tracking", nTrkOffline, nAllTrkOffline, nTrkOnline, decision);
267 return StatusCode::SUCCESS;