174 unsigned int windowsNum,
262 trackCorrelation = ibooker.
book2D(
"tracks correlation near-far",
263 title +
" tracks correlation near-far;x (mm);x (mm)",
270 trackCorrelationLowMultiplicity =
271 ibooker.
book2D(
"tracks correlation with low multiplicity near-far",
272 title +
" tracks correlation with low multiplicity near-far;x (mm);x (mm)",
284 unsigned int windowsNum,
290 LeadingOnlyCounter(0),
291 TrailingOnlyCounter(0),
293 pixelTracksMap(
"Pixel track maps for efficiency",
"Pixel track maps for efficiency", 25, 0, 25, 12, -2, 10) {
302 ibooker.
book2D(
"hits in planes lumisection",
303 title +
" hits in planes in the last lumisection;plane number;x (mm)",
312 ibooker.
book2D(
"hits with OOT in planes (le only)",
313 title +
" hits with OOT in planes (le only);plane number, OOT index;x (mm)",
322 ibooker.
book1D(
"active planes inclusive",
323 title +
" active planes, MH and le only included (per event);number of active planes",
328 ECCheck = ibooker.
book1D(
"optorxEC(8bit) - vfatEC", title +
" EC Error;optorxEC-vfatEC", 50, -25, 25);
331 ibooker.
book2D(
"Efficiency in channels",
332 title +
" Efficiency (%) in channels (diamonds only);plane number;ch number",
341 if (plotOffline && !perLSsaving) {
346 ibooker.
book2D(
"track time vs BX", title +
" track time vs BX;BX;track_time(ns)", 4000, 0, 4000, 500, -25, 25);
353 "track time vs BX profile", title +
" track time vs BX profile;BX;track_time(ns)", 500, -25, 25, 4000, 0, 4000);
365 for (
unsigned int i = 0;
i < windowsNum;
i++) {
368 "activity per BX " + window, title +
" Activity per BX " + window +
" ns;Event.BX", 3600, -1.5, 3598. + 0.5);
370 ibooker.
book2D(
"tomography pixel " + window,
371 title +
" tomography with pixel " + window +
" ns (all planes);x + 25*plane(mm);y (mm)",
381 title +
" hits in planes;plane number;x (mm)",
390 title +
" hits with OOT in planes;plane number, OOT index;x (mm)",
400 for (
int pl = 0; pl < 4; ++pl)
401 for (
unsigned int oot = 0; oot < windowsNum; ++oot) {
403 (oot == 0 ?
"Plane " + std::to_string(pl) +
", " :
"") +
"OOT" + std::to_string(oot);
411 recHitTime = ibooker.
book1D(
"recHit time", title +
" recHit time; t (ns)", 500, -25, 25);
414 ibooker.
book1D(
"active planes", title +
" active planes (per event);number of active planes", 6, -0.5, 5.5);
419 title +
" tracks with OOT;plane number;x (mm)",
428 title +
" leading edge (le and te) (recHits); leading edge (ns)",
433 title +
" leading edge (with or without te) (DIGIs); leading edge (ns)",
438 title +
" leading edge (le only) (DIGIs); leading edge (ns)",
443 title +
" trailing edge (te only) (DIGIs); trailing edge (ns)",
448 ibooker.
book1D(
"time over threshold", title +
" time over threshold;time over threshold (ns)", 250, -25, 100);
460 ibooker.
book1D(
"event category", title +
" leading edges without trailing;;%", 3, 0.5, 3.5);
466 for (
unsigned short error_index = 1; error_index < 16; ++error_index)
481 ibooker.
book2D(
"MH in channels", title +
" MH (%) in channels;plane number;ch number", 10, -0.5, 4.5, 14, -1, 13);
493 : pixelTracksMapWithDiamonds(
"Pixel track maps for efficiency with coincidence",
494 "Pixel track maps for efficiency with coincidence",
508 title +
" digi profile; ch number",
514 hit_multiplicity = ibooker.
book1D(
"channels per plane", title +
" channels per plane; ch per plane", 13, -0.5, 12.5);
517 title +
" tomography with pixel;x + 25 OOT (mm);y (mm)",
525 ibooker.
book2D(
"Efficiency wrt pixels", title +
" Efficiency wrt pixels;x (mm);y (mm)", 25, 0, 25, 12, -2, 10);
531 : HitCounter(0), MHCounter(0), LeadingOnlyCounter(0), TrailingOnlyCounter(0), CompleteCounter(0) {
543 for (
unsigned int i = 0;
i < windowsNum;
i++) {
546 "activity per BX " + window, title +
" Activity per BX " + window +
" ns;Event.BX", 3600, -1.5, 3598. + 0.5);
550 for (
unsigned short error_index = 1; error_index < 16; ++error_index)
555 title +
" leading edge (recHits); leading edge (ns)",
560 "leading edge (le only)", title +
" leading edge (DIGIs); leading edge (ns)", 25 * windowsNum, 0, 25 * windowsNum);
562 title +
" trailing edge (te only) (DIGIs); trailing edge (ns)",
567 ibooker.
book1D(
"time over threshold", title +
" time over threshold;time over threshold (ns)", 75, -25, 50);
579 "tomography pixel",
"tomography with pixel;x + 25 OOT (mm);y (mm)", 25 * windowsNum, 0, 25 * windowsNum, 8, 0, 8);
581 hit_rate = ibooker.
book1D(
"hit rate", title +
"hit rate;rate (Hz)", 40, 0, 20);
583 recHitTime = ibooker.
book1D(
"recHit Time", title +
" recHit Time; t (ns)", 500, -25, 25);
602 verbosity_(ps.getUntrackedParameter<unsigned int>(
"verbosity", 0)),
605 windowsNum_(ps.getUntrackedParameter<unsigned int>(
"windowsNum", 3)),
614 for (
const auto&
pset : ps.
getParameter<std::vector<edm::ParameterSet>>(
"offsetsOOT")) {
633 for (
auto it = geom.
beginRP(); it != geom.
endRP(); ++it)
636 const auto diam = geom.
sensor(it->first);
637 diamShifts_[diam_id].global = diam->translation().x() - diam->getDiamondDimensions().xHalfWidth;
640 auto pix = geom.
sensor(pixid);
643 pix->translation().x() - pix->getDiamondDimensions().xHalfWidth -
diamShifts_[diam_id].global - 1.;
686 auto d = std::make_shared<dds::Cache>();
687 d->hitDistribution2dMap.reserve(
potPlots_.size());
690 d->hitDistribution2dMap[
plot.first] =
691 std::unique_ptr<TH2F>(
static_cast<TH2F*
>(
plot.second.hitDistribution2d_lumisection->getTH2F()->Clone()));
725 valid &= diamondVFATStatus.
isValid();
726 valid &= diamondDigis.
isValid();
729 valid &= pixelTracks.
isValid();
730 valid &= diamondRecHits.
isValid();
731 valid &= diamondLocalTracks.
isValid();
736 <<
"ERROR in CTPPSDiamondDQMSource::analyze > some of the required inputs are not valid. Skipping this "
739 <<
" diamondVFATStatus.isValid = " << diamondVFATStatus.
isValid() <<
"\n"
740 <<
" diamondDigis.isValid = " << diamondDigis.
isValid() <<
"\n"
741 <<
" fedInfo.isValid = " << fedInfo.
isValid() <<
"\n"
743 <<
" pixelTracks.isValid = " << pixelTracks.
isValid() <<
"\n"
744 <<
" diamondRecHits.isValid = " << diamondRecHits.
isValid() <<
"\n"
745 <<
" diamondLocalTracks.isValid = " << diamondLocalTracks.
isValid();
754 for (
const auto&
tracks : *diamondLocalTracks) {
758 if (!
track.isValid())
760 if (
potPlots_.count(detId_near.rpId()) == 0)
762 TH1F* trackHistoInTimeTmp =
potPlots_[detId_near.rpId()].trackDistribution->getTH1F();
767 for (
const auto& tracks_far : *diamondLocalTracks) {
769 if (detId_near.arm() != detId_far.arm() || detId_near.station() == detId_far.station())
771 for (
const auto& track_far : tracks_far) {
772 if (!
track.isValid())
776 TH2F* trackHistoTmp =
sectorPlots_[detId_far.armId()].trackCorrelation->getTH2F();
777 TAxis* trackHistoTmpXAxis = trackHistoTmp->GetXaxis();
778 TAxis* trackHistoTmpYAxis = trackHistoTmp->GetYaxis();
779 int startBin_far = trackHistoTmpYAxis->FindBin(track_far.x0() -
diamShifts_[detId_far.rpId()].global -
780 track_far.x0Sigma());
782 for (
int i = 0;
i < numOfBins_near; ++
i)
783 for (
int y = 0;
y < numOfBins_far; ++
y) {
784 trackHistoTmp->Fill(trackHistoTmpXAxis->GetBinCenter(startBin_near +
i),
785 trackHistoTmpYAxis->GetBinCenter(startBin_far +
y));
787 sectorPlots_[detId_far.armId()].trackCorrelationLowMultiplicity->Fill(
788 trackHistoTmpXAxis->GetBinCenter(startBin_near +
i),
789 trackHistoTmpYAxis->GetBinCenter(startBin_far +
y));
806 for (
const auto& digis : *diamondDigis) {
808 for (
const auto& digi : digis) {
814 if (digi.leadingEdge() != 0 || digi.trailingEdge() != 0) {
816 if (digi.leadingEdge() != 0) {
819 if (digi.leadingEdge() != 0 && digi.trailingEdge() == 0) {
820 ++
potPlots_[detId_pot].LeadingOnlyCounter;
823 if (digi.leadingEdge() == 0 && digi.trailingEdge() != 0) {
824 ++
potPlots_[detId_pot].TrailingOnlyCounter;
827 if (digi.leadingEdge() != 0 && digi.trailingEdge() != 0) {
838 int verticalIndex = 2 * detId.plane() + (detId.channel() -
HPTDC_0_CHANNEL);
839 for (
unsigned short hptdcErrorIndex = 1; hptdcErrorIndex < 16; ++hptdcErrorIndex)
840 if (hptdcErrors.
errorId(hptdcErrorIndex - 1))
841 potPlots_[detId_pot].HPTDCErrorFlags_2D->Fill(hptdcErrorIndex, verticalIndex);
843 if (digi.multipleHit())
851 for (
const auto& vfat_status : *diamondVFATStatus) {
853 for (
const auto&
status : vfat_status) {
862 for (
const auto& optorx : *fedInfo) {
873 std::unordered_map<unsigned int, std::set<unsigned int>> planes;
874 std::unordered_map<unsigned int, std::set<unsigned int>> planes_inclusive;
877 for (
const auto&
rechits : *diamondRecHits) {
881 for (
const auto& rechit :
rechits) {
882 planes_inclusive[detId_pot].insert(detId.plane());
886 planes[detId_pot].
insert(detId.plane());
891 potPlots_[detId_pot].recHitTime->Fill(rechit.time());
893 float UFSDShift = 0.0;
894 if (rechit.yWidth() < 3)
898 TH2F* hitHistoTmp =
potPlots_[detId_pot].hitDistribution2d->getTH2F();
899 TAxis* hitHistoTmpYAxis = hitHistoTmp->GetYaxis();
900 int startBin = hitHistoTmpYAxis->FindBin(rechit.x() - x_shift.global - 0.5 * rechit.xWidth());
902 for (
int i = 0;
i < numOfBins; ++
i)
903 hitHistoTmp->Fill(detId.plane() + UFSDShift, hitHistoTmpYAxis->GetBinCenter(startBin +
i));
906 hitHistoTmp = lumiCache->hitDistribution2dMap[detId_pot].get();
907 hitHistoTmpYAxis = hitHistoTmp->GetYaxis();
908 startBin = hitHistoTmpYAxis->FindBin(rechit.x() - x_shift.global - 0.5 * rechit.xWidth());
910 for (
int i = 0;
i < numOfBins; ++
i)
911 hitHistoTmp->Fill(detId.plane() + UFSDShift, hitHistoTmpYAxis->GetBinCenter(startBin +
i));
915 if (rechit.toT() != 0) {
917 potPlots_[detId_pot].leadingEdgeCumulative_both->Fill(rechit.time() + 25 * rechit.ootIndex());
918 potPlots_[detId_pot].timeOverThresholdCumulativePot->Fill(rechit.toT());
920 TH2F* hitHistoOOTTmp =
potPlots_[detId_pot].hitDistribution2dOOT->getTH2F();
921 TAxis* hitHistoOOTTmpYAxis = hitHistoOOTTmp->GetYaxis();
922 int startBin = hitHistoOOTTmpYAxis->FindBin(rechit.x() - x_shift.global - 0.5 * rechit.xWidth());
924 for (
int i = 0;
i < numOfBins; ++
i)
925 hitHistoOOTTmp->Fill(detId.plane() + 0.25 * rechit.ootIndex(),
926 hitHistoOOTTmpYAxis->GetBinCenter(startBin +
i));
929 TH2F* hitHistoOOTTmp =
potPlots_[detId_pot].hitDistribution2dOOT_le->getTH2F();
930 TAxis* hitHistoOOTTmpYAxis = hitHistoOOTTmp->GetYaxis();
931 int startBin = hitHistoOOTTmpYAxis->FindBin(rechit.x() - x_shift.global - 0.5 * rechit.xWidth());
933 for (
int i = 0;
i < numOfBins; ++
i) {
934 hitHistoOOTTmp->Fill(detId.plane() + 0.25 * rechit.ootIndex(),
935 hitHistoOOTTmpYAxis->GetBinCenter(startBin +
i));
939 potPlots_[detId_pot].activity_per_bx.count(rechit.ootIndex()) > 0)
948 plt.second.activePlanes->Fill(planes[plt.first].size());
950 plt.second.activePlanesInclusive->Fill(planes_inclusive[plt.first].size());
954 for (
const auto&
tracks : *diamondLocalTracks) {
959 if (!
track.isValid())
965 if (potPlots_.count(detId_pot) == 0)
968 TH2F* trackHistoOOTTmp = potPlots_[detId_pot].trackDistributionOOT->getTH2F();
969 TAxis* trackHistoOOTTmpYAxis = trackHistoOOTTmp->GetYaxis();
970 int startBin = trackHistoOOTTmpYAxis->FindBin(
track.x0() - x_shift.global -
track.x0Sigma());
972 for (
int i = 0;
i < numOfBins; ++
i)
973 trackHistoOOTTmp->Fill(
track.ootIndex(), trackHistoOOTTmpYAxis->GetBinCenter(startBin +
i));
976 TH1F* trackHistoInTimeTmp = potPlots_[detId_pot].trackDistribution->getTH1F();
977 int startBin = trackHistoInTimeTmp->FindBin(
track.x0() - x_shift.global -
track.x0Sigma());
979 for (
int i = 0;
i < numOfBins; ++
i)
980 trackHistoInTimeTmp->Fill(trackHistoInTimeTmp->GetBinCenter(startBin +
i));
991 for (
const auto&
tracks : *diamondLocalTracks) {
996 std::set<int> planesInTrackSet;
997 for (
const auto& vec : *diamondRecHits) {
999 if (detid.arm() != detId_pot.arm())
1002 for (
const auto&
hit : vec) {
1006 planesInTrackSet.insert(detid.plane());
1011 if (numOfHits > 0 && numOfHits <= 10 && planesInTrackSet.size() > 2) {
1014 if (detId.
rpId() != detId_pot)
1016 const unsigned short map_index = detId.
plane() * 100 + detId.
channel();
1017 if (potPlots_[detId_pot].effDoublecountingChMap.count(map_index) == 0) {
1018 potPlots_[detId_pot].effTriplecountingChMap[map_index] = 0;
1019 potPlots_[detId_pot].effDoublecountingChMap[map_index] = 0;
1023 ++potPlots_[detId_pot].effDoublecountingChMap[map_index];
1024 for (
const auto&
rechits : *diamondRecHits) {
1026 if (detId_hit == detId)
1027 for (
const auto& rechit :
rechits)
1028 if (
track.containsHit(rechit, 1))
1029 ++potPlots_[detId_pot].effTriplecountingChMap[map_index];
1038 for (
const auto&
rechits : *diamondRecHits) {
1040 const auto pix_shift =
diamShifts_.at(detId_pot).withPixels;
1041 for (
const auto& rechit :
rechits) {
1044 if (rechit.toT() == 0)
1048 if (potPlots_.count(detId_pot) == 0)
1051 for (
const auto& ds : *pixelTracks) {
1057 for (
const auto&
lt : ds) {
1058 if (
lt.isValid() && pixId.arm() == detId_pot.arm()) {
1060 potPlots_[detId_pot].pixelTomographyAll.count(rechit.ootIndex()) > 0 &&
lt.x0() - pix_shift < 24)
1061 potPlots_[detId_pot]
1062 .pixelTomographyAll.at(rechit.ootIndex())
1063 ->
Fill(
lt.x0() - pix_shift + 25 * detId.plane(),
lt.y0());
1097 std::unordered_map<unsigned int, unsigned int> channelsPerPlane;
1099 for (
const auto& digis : *diamondDigis) {
1101 for (
const auto& digi : digis) {
1107 if (digi.leadingEdge() != 0) {
1108 planePlots_[detId_plane].digiProfileCumulativePerPlane->Fill(detId.channel());
1109 channelsPerPlane[detId_plane]++;
1115 for (
const auto& plt : channelsPerPlane)
1116 planePlots_[plt.first].hit_multiplicity->Fill(plt.second);
1119 for (
const auto&
rechits : *diamondRecHits) {
1121 for (
const auto& rechit :
rechits) {
1124 if (rechit.toT() == 0)
1128 TH1F* hitHistoTmp =
planePlots_[detId_plane].hitProfile->getTH1F();
1129 int startBin = hitHistoTmp->FindBin(rechit.x() -
diamShifts_.at(detId_pot).global - 0.5 * rechit.xWidth());
1131 for (
int i = 0;
i < numOfBins; ++
i)
1132 hitHistoTmp->Fill(hitHistoTmp->GetBinCenter(startBin +
i));
1139 for (
const auto& ds : *pixelTracks) {
1145 for (
const auto&
lt : ds) {
1149 const auto&
shift = sh_vs_id.second;
1150 if (detId_pot.
arm() == pixId.arm())
1152 potPlots_[detId_pot].pixelTracksMap.Fill(
lt.x0() -
shift.withPixels,
lt.y0());
1155 std::set<CTPPSDiamondDetId> planesWitHits_set;
1156 for (
const auto&
rechits : *diamondRecHits) {
1158 const auto pix_shift = diamShifts_.at(detId_pot).withPixels;
1159 for (
const auto& rechit :
rechits) {
1166 if (pixId.arm() == detId_plane.arm() &&
lt.x0() - pix_shift < 24) {
1167 planePlots_[detId_plane].pixelTomography_far->Fill(
lt.x0() - pix_shift + 25 * rechit.ootIndex(),
lt.y0());
1169 planesWitHits_set.insert(detId_plane);
1174 for (
auto& planeId : planesWitHits_set)
1175 planePlots_[planeId].pixelTracksMapWithDiamonds.Fill(
lt.x0() - diamShifts_.at(planeId.rpId()).withPixels,
1187 for (
const auto& digis : *diamondDigis) {
1189 for (
const auto& digi : digis) {
1195 for (
unsigned short hptdcErrorIndex = 1; hptdcErrorIndex < 16; ++hptdcErrorIndex)
1196 if (hptdcErrors.
errorId(hptdcErrorIndex - 1))
1198 if (digi.multipleHit())
1202 if (digi.leadingEdge() != 0 || digi.trailingEdge() != 0) {
1204 if (digi.trailingEdge() == 0) {
1207 }
else if (digi.leadingEdge() == 0) {
1223 for (
const auto&
rechits : *diamondRecHits) {
1225 for (
const auto& rechit :
rechits) {
1231 channelPlots_[detId].leadingEdgeCumulative_both->Fill(rechit.time() + 25 * rechit.ootIndex());
1232 channelPlots_[detId].TimeOverThresholdCumulativePerChannel->Fill(rechit.toT());
1234 ++lumiCache->hitsCounterMap[detId];
1237 channelPlots_[detId].activity_per_bx.count(rechit.ootIndex()) > 0)
1244 for (
const auto&
rechits : *diamondRecHits) {
1246 const auto shift_pix =
diamShifts_.at(detId_pot).withPixels;
1247 for (
const auto& rechit :
rechits) {
1252 if (!pixelTracks.isValid())
1257 for (
const auto& ds : *pixelTracks) {
1263 for (
const auto&
lt : ds) {
1264 if (
lt.isValid() && pixId.arm() == detId.arm() &&
lt.x0() - shift_pix < 24)
1265 channelPlots_[detId].pixelTomography_far->Fill(
lt.x0() - shift_pix + 25 * rechit.ootIndex(),
lt.y0());
1275 auto lumiCache = luminosityBlockCache(iLumi.
index());
1279 *(
plot.second.hitDistribution2d_lumisection->getTH2F()) = *(lumiCache->hitDistribution2dMap[
plot.first]);
1283 auto hitsCounterPerLumisection = lumiCache->hitsCounterMap[
plot.first];
1284 if (hitsCounterPerLumisection != 0) {
1288 double HundredOverHitCounter = .0;
1289 if (
plot.second.HitCounter != 0)
1290 HundredOverHitCounter = 100. /
plot.second.HitCounter;
1291 plot.second.HPTDCErrorFlags->setBinContent(16, HundredOverHitCounter *
plot.second.MHCounter);
1292 plot.second.leadingWithoutTrailing->setBinContent(1, HundredOverHitCounter *
plot.second.LeadingOnlyCounter);
1293 plot.second.leadingWithoutTrailing->setBinContent(2, HundredOverHitCounter *
plot.second.TrailingOnlyCounter);
1294 plot.second.leadingWithoutTrailing->setBinContent(3, HundredOverHitCounter *
plot.second.CompleteCounter);
1297 for (
auto&
plot : potPlots_) {
1298 double HundredOverHitCounterPot = 0.;
1299 if (
plot.second.HitCounter != 0)
1300 HundredOverHitCounterPot = 100. /
plot.second.HitCounter;
1301 plot.second.leadingWithoutTrailingCumulativePot->setBinContent(
1302 1, HundredOverHitCounterPot *
plot.second.LeadingOnlyCounter);
1303 plot.second.leadingWithoutTrailingCumulativePot->setBinContent(
1304 2, HundredOverHitCounterPot *
plot.second.TrailingOnlyCounter);
1305 plot.second.leadingWithoutTrailingCumulativePot->setBinContent(
1306 3, HundredOverHitCounterPot *
plot.second.CompleteCounter);
1308 plot.second.MHComprensive->Reset();
1310 for (
auto& chPlot : channelPlots_) {
1312 if (chId.
arm() == rpId.
arm() && chId.
rp() == rpId.
rp()) {
1313 plot.second.MHComprensive->Fill(
1314 chId.
plane(), chId.
channel(), chPlot.second.HPTDCErrorFlags->getBinContent(16));
1320 for (
auto&
plot : potPlots_) {
1321 plot.second.EfficiencyOfChannelsInPot->Reset();
1322 for (
auto& element :
plot.second.effTriplecountingChMap) {
1323 if (
plot.second.effDoublecountingChMap[element.first] > 0) {
1324 int plane = element.first / 100;
1325 int channel = element.first % 100;
1326 double counted = element.second;
1327 double total =
plot.second.effDoublecountingChMap[element.first];
1331 plot.second.EfficiencyOfChannelsInPot->Fill(plane, channel, 100 * efficiency);
1338 TH2F* hitHistoTmp =
plot.second.EfficiencyWRTPixelsInPlane->getTH2F();
1341 hitHistoTmp->Divide(&(
plot.second.pixelTracksMapWithDiamonds), &(potPlots_[detId_pot].pixelTracksMap));
1352 int& EC_difference)
const {
1355 plots.
ECCheck->
Fill((
int)((optorx.
lv1() & 0xFF) - ((
unsigned int)status.
ec() & 0xFF)) & 0xFF);
1356 if ((static_cast<int>((optorx.
lv1() & 0xFF) - status.
ec()) != EC_difference) &&
1357 (
static_cast<uint8_t
>((optorx.
lv1() & 0xFF) - status.
ec()) < 128))
1358 EC_difference = static_cast<int>(optorx.
lv1() & 0xFF) - (static_cast<unsigned int>(status.
ec()) & 0xFF);
1359 if (EC_difference != 1 && EC_difference != -500 &&
std::abs(EC_difference) < 127) {
1364 <<
"FED " << optorx.
fedId() <<
": ECError at EV: 0x" << std::hex << optorx.
lv1() <<
"\t\tVFAT EC: 0x"
1365 <<
static_cast<unsigned int>(status.
ec()) <<
"\twith ID: " <<
std::dec << detId
1366 <<
"\tdiff: " << EC_difference;
1375 auto plots = rpPlots.second;
1378 *(
plots.trackTimeVsBXProfile->getTProfile()) = *
plots.trackTimeVsBX->getTH2F()->ProfileX();
void analyze(const edm::Event &, const edm::EventSetup &) override
static constexpr unsigned short CTPPS_FED_ID_45
OptoRx headers and footers.
plots related to one Diamond plane
MonitorElement * TimeOverThresholdCumulativePerChannel
MonitorElement * timeOverThresholdCumulativePot
MonitorElement * trackCorrelationLowMultiplicity
plots related to one Diamond detector package
unsigned int CompleteCounter
edm::EDGetTokenT< edm::DetSetVector< CTPPSDiamondRecHit > > tokenDiamondHit_
static constexpr double SEC_PER_LUMI_SECTION
Number of seconds per lumisection: used to compute hit rates in Hz.
edm::ESGetToken< CTPPSGeometry, VeryForwardRealGeometryRecord > ctppsGeometryRunToken_
unsigned int LeadingOnlyCounter
MonitorElement * activePlanes
edm::EDGetTokenT< std::vector< TotemFEDInfo > > tokenFEDInfo_
TH2F pixelTracksMapWithDiamonds
unsigned int CompleteCounter
std::unordered_map< CTPPSDetId, DiamondShifts > diamShifts_
std::map< int, int > effDoublecountingChMap
bool contains(EventRange const &lh, EventID const &rh)
LuminosityBlockIndex index() const
virtual void setCurrentFolder(std::string const &fullpath)
static constexpr unsigned short CTPPS_DIAMOND_NUM_OF_CHANNELS
const Translation & translation() const
static constexpr double DISPLAY_RESOLUTION_FOR_HITS_MM
Bin width of histograms showing hits and tracks (in mm)
static constexpr unsigned short CTPPS_FAR_RP_ID
MonitorElement * leadingEdgeCumulative_le
Reconstructed hit in diamond detectors.
#define DEFINE_FWK_MODULE(type)
void channelName(std::string &name, NameFlag flag=nFull) const
MonitorElement * leadingEdgeCumulative_le
const DiamondDimensions & getDiamondDimensions() const
void dqmBeginRun(const edm::Run &, const edm::EventSetup &) override
MonitorElement * MHComprensive
CTPPSDiamondDetId planeId() const
MonitorElement * digiSentPercentage
CTPPSDiamondDQMSource(const edm::ParameterSet &)
MonitorElement * trailingEdgeCumulative_te
plots related to the whole system
MonitorElement * digiProfileCumulativePerPlane
int bunchCrossing() const
static constexpr unsigned short CTPPS_PIXEL_STATION_ID
std::shared_ptr< dds::Cache > globalBeginLuminosityBlock(const edm::LuminosityBlock &, const edm::EventSetup &) const override
MonitorElement * leadingEdgeCumulative_all
auto const & tracks
cannot be loose
mapType::const_iterator beginSensor() const
begin iterator over sensors
MonitorElement * EfficiencyWRTPixelsInPlane
MonitorElement * trailingEdgeCumulative_te
edm::ESGetToken< CTPPSGeometry, VeryForwardRealGeometryRecord > ctppsGeometryEventToken_
edm::EDGetTokenT< edm::DetSetVector< CTPPSDiamondLocalTrack > > tokenDiamondTrack_
Event setup record containing the real (actual) geometry information.
MonitorElement * trackTimeVsBXProfile
MonitorElement * leadingWithoutTrailingCumulativePot
edm::EDGetTokenT< edm::DetSetVector< CTPPSPixelLocalTrack > > tokenPixelTrack_
void globalEndLuminosityBlock(const edm::LuminosityBlock &, const edm::EventSetup &) override
static constexpr unsigned short HPTDC_0_CHANNEL
void dqmEndRun(edm::Run const &, edm::EventSetup const &) override
std::unordered_map< unsigned int, MonitorElement * > pixelTomographyAll
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
static std::string hptdcErrorName(const unsigned short id)
bool getData(T &iHolder) const
std::vector< std::pair< edm::EventRange, int > > runParameters_
MonitorElement * hitDistribution2d
MonitorElement * EfficiencyOfChannelsInPot
MonitorElement * hitProfile
MonitorElement * recHitTime
edm::EDGetTokenT< edm::DetSetVector< CTPPSDiamondDigi > > tokenDigi_
void bookHistograms(DQMStore::IBooker &, const edm::Run &, const edm::EventSetup &) override
MonitorElement * bookProfile(TString const &name, TString const &title, int nchX, double lowX, double highX, int, double lowY, double highY, char const *option="s", FUNC onbooking=NOOP())
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
std::unordered_map< unsigned int, ChannelPlots > channelPlots_
RPDeviceMapType::const_iterator beginRP() const
begin iterator over RPs
edm::EDGetTokenT< edm::DetSetVector< TotemVFATStatus > > tokenStatus_
static constexpr unsigned short CHANNEL_OF_VFAT_CLOCK
Channel ID of the VFAT that contains clock data.
MonitorElement * pixelTomography_far
Abs< T >::type abs(const T &t)
void rpName(std::string &name, NameFlag flag=nFull) const
static constexpr unsigned int FIRST_RUN_W_PIXELS
Number of OOT indices monitored.
std::unordered_map< unsigned int, std::unique_ptr< TH2F > > hitDistribution2dMap
plots related to one Diamond channel
LuminosityBlock const & getLuminosityBlock() const
MonitorElement * pixelTomography_far
MonitorElement * hitDistribution2d_lumisection
bool insert(Storage &iStorage, ItemType *iItem, const IdTag &iIdTag)
virtual void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
void armName(std::string &name, NameFlag flag=nFull) const
static bool check(unsigned int raw)
returns true if the raw ID is a PPS-timing one
const bool extract_digi_info_
The manager class for TOTEM RP geometry.
MonitorElement * trackDistribution
const DetGeomDesc * sensor(unsigned int id) const
returns geometry of a detector performs necessary checks, returns NULL if fails
std::unordered_map< unsigned int, SectorPlots > sectorPlots_
MonitorElement * hit_multiplicity
unsigned int TrailingOnlyCounter
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
MonitorElement * HPTDCErrorFlags_2D
T getParameter(std::string const &) const
mapType::const_iterator endSensor() const
end iterator over sensors
void planeName(std::string &name, NameFlag flag=nFull) const
std::unordered_map< unsigned int, MonitorElement * > activity_per_bx
RPDeviceMapType::const_iterator endRP() const
end iterator over RPs
MonitorElement * leadingEdgeCumulative_both
bool channelAlignedWithTrack(const CTPPSGeometry *geom, const CTPPSDiamondDetId &detid, const CTPPSDiamondLocalTrack &localTrack, const float tolerance=1)
MonitorElement * leadingWithoutTrailing
MonitorElement * trackTimeVsBX
std::unordered_map< unsigned int, PotPlots > potPlots_
static constexpr int TIMESLICE_WITHOUT_LEADING
unsigned int TrailingOnlyCounter
static constexpr unsigned short CTPPS_FED_ID_56
unsigned int LeadingOnlyCounter
static constexpr double HPTDC_BIN_WIDTH_NS
ns per HPTDC bin
bool errorId(unsigned short id) const
< trclass="colgroup">< tdclass="colgroup"colspan=5 > DT local reconstruction</td ></tr >< tr >< td >< ahref="classDTRecHit1DPair.html"> DTRecHit1DPair</a ></td >< td >< ahref="DataFormats_DTRecHit.html"> edm::RangeMap & lt
static constexpr double INV_DISPLAY_RESOLUTION_FOR_HITS_MM
void checkEventNumber(const CTPPSDiamondDetId &, const TotemFEDInfo &, const TotemVFATStatus &, PotPlots &, int &) const
std::map< int, int > effTriplecountingChMap
static unsigned int const shift
Detector ID class for CTPPS Timing Diamond detectors. Bits [19:31] : Assigend in CTPPSDetId Calss Bit...
std::unordered_map< unsigned int, PlanePlots > planePlots_
MonitorElement * trackDistributionOOT
plots related to one sector
MonitorElement * hitDistribution2dOOT_le
std::unordered_map< unsigned int, MonitorElement * > activity_per_bx
bool excludeMultipleHits_
MonitorElement * recHitTime
MonitorElement * hitDistribution2dOOT
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
MonitorElement * leadingEdgeCumulative_both
static constexpr unsigned short HPTDC_1_CHANNEL
MonitorElement * trackCorrelation
uint8_t ec() const
event Counter
std::unordered_map< unsigned int, unsigned long > hitsCounterMap
MonitorElement * hit_rate
Log< level::Error, true > LogProblem
unsigned int trackCorrelationThreshold_
MonitorElement * activePlanesInclusive