256 "ERROR in ElasticPlotDQMSource::analyze > some of the required inputs are not valid. Skipping this event.\n" 257 <<
" hits.isValid = " << hits.
isValid() <<
"\n" 258 <<
" patterns.isValid = " << patterns.
isValid() <<
"\n" 259 <<
" tracks.isValid = " << tracks.
isValid();
267 map<unsigned int, unsigned int> rp_planes_u_too_full, rp_planes_v_too_full;
268 map<unsigned int, bool> rp_pat_suff;
269 map<unsigned int, const TotemRPLocalTrack*> rp_track;
271 for (
const auto &ds : *hits)
278 if (detId.isStripsCoordinateUDirection())
279 rp_planes_u_too_full[rpId]++;
281 rp_planes_v_too_full[
rpId]++;
285 for (
auto &ds : *patterns)
290 unsigned int n_pat_u = 0, n_pat_v = 0;
293 if (!
p.getFittable())
302 rp_pat_suff[
rpId] = (n_pat_u > 0 || rp_planes_u_too_full[
rpId] >= 3) && (n_pat_v > 0 || rp_planes_v_too_full[rpId] >= 3);
305 for (
auto &ds : *tracks)
327 auto &dp = dpp.second;
330 bool cond_4rp =
true, cond_2rp =
true;
331 for (
unsigned int i = 0;
i < 4;
i++)
333 if (rp_track[dp.rpIds[
i]] ==
nullptr)
336 if ((
i == 0 ||
i == 3) && rp_track[dp.rpIds[
i]] ==
nullptr)
346 for (
unsigned int i = 0;
i < 4;
i++)
354 dp.v_h2_y_vs_x_dgn_4rp[
i]->Fill(tr_i->
getX0(), tr_i->
getY0());
357 dp.v_h2_y_vs_x_dgn_2rp[
i]->Fill(tr_i->
getX0(), tr_i->
getY0());
359 for (
unsigned int j = 0; j < 4; j++)
361 if (rp_track[dp.rpIds[j]] ==
nullptr)
364 dp.h2_track_corr_vert->Fill(
i, j);
366 dp.v_h_y[
i][j]->Fill(tr_i->
getY0());
374 for (
const auto &
p : rp_pat_suff)
376 const auto &rpId =
p.first;
380 auto &
pp = pp_it->second;
382 const auto &pat_suff = rp_pat_suff[
rpId];
383 const auto &has_track = (rp_track[
rpId] !=
nullptr);
389 if (pat_suff && !has_track)
Detector ID class for TOTEM Si strip detectors.
static double ls_duration_inverse
A track fit through a single RP.
edm::EDGetTokenT< edm::DetSetVector< TotemRPLocalTrack > > tokenLocalTrack
std::map< unsigned int, PotPlots > potPlots
std::map< unsigned int, DiagonalPlots > diagonalPlots
edm::EDGetTokenT< edm::DetSetVector< TotemRPRecHit > > tokenRecHit
Base class for CTPPS detector IDs.
edm::EDGetTokenT< edm::DetSetVector< TotemRPUVPattern > > tokenUVPattern