261 trackCorrelation = ibooker.
book2D(
"tracks correlation near-far",
262 title +
" tracks correlation near-far;x (mm);x (mm)",
269 trackCorrelationLowMultiplicity =
270 ibooker.
book2D(
"tracks correlation with low multiplicity near-far",
271 title +
" tracks correlation with low multiplicity near-far;x (mm);x (mm)",
289 LeadingOnlyCounter(0),
290 TrailingOnlyCounter(0),
292 pixelTracksMap(
"Pixel track maps for efficiency",
"Pixel track maps for efficiency", 25, 0, 25, 12, -2, 10) {
301 ibooker.
book2D(
"hits in planes lumisection",
302 title +
" hits in planes in the last lumisection;plane number;x (mm)",
311 ibooker.
book2D(
"hits with OOT in planes (le only)",
312 title +
" hits with OOT in planes (le only);plane number, OOT index;x (mm)",
321 ibooker.
book1D(
"active planes inclusive",
322 title +
" active planes, MH and le only included (per event);number of active planes",
327 ECCheck = ibooker.
book1D(
"optorxEC(8bit) - vfatEC",
title +
" EC Error;optorxEC-vfatEC", 50, -25, 25);
330 ibooker.
book2D(
"Efficiency in channels",
331 title +
" Efficiency (%) in channels (diamonds only);plane number;ch number",
345 ibooker.
book2D(
"track time vs BX",
title +
" track time vs BX;BX;track_time(ns)", 4000, 0, 4000, 500, -25, 25);
352 "track time vs BX profile",
title +
" track time vs BX profile;BX;track_time(ns)", 500, -25, 25, 4000, 0, 4000);
367 "activity per BX " +
window,
title +
" Activity per BX " +
window +
" ns;Event.BX", 3600, -1.5, 3598. + 0.5);
370 title +
" tomography with pixel " +
window +
" ns (all planes);x + 25*plane(mm);y (mm)",
380 title +
" hits in planes;plane number;x (mm)",
389 title +
" hits with OOT in planes;plane number, OOT index;x (mm)",
399 for (
int pl = 0; pl < 4; ++pl)
400 for (
unsigned int oot = 0; oot <
windowsNum; ++oot) {
413 ibooker.
book1D(
"active planes",
title +
" active planes (per event);number of active planes", 6, -0.5, 5.5);
418 title +
" tracks with OOT;plane number;x (mm)",
427 title +
" leading edge (le and te) (recHits); leading edge (ns)",
432 title +
" leading edge (with or without te) (DIGIs); leading edge (ns)",
437 title +
" leading edge (le only) (DIGIs); leading edge (ns)",
442 title +
" trailing edge (te only) (DIGIs); trailing edge (ns)",
447 ibooker.
book1D(
"time over threshold",
title +
" time over threshold;time over threshold (ns)", 250, -25, 100);
459 ibooker.
book1D(
"event category",
title +
" leading edges without trailing;;%", 3, 0.5, 3.5);
465 for (
unsigned short error_index = 1; error_index < 16; ++error_index)
480 ibooker.
book2D(
"MH in channels",
title +
" MH (%) in channels;plane number;ch number", 10, -0.5, 4.5, 14, -1, 13);
492 : pixelTracksMapWithDiamonds(
"Pixel track maps for efficiency with coincidence",
493 "Pixel track maps for efficiency with coincidence",
507 title +
" digi profile; ch number",
516 title +
" tomography with pixel;x + 25 OOT (mm);y (mm)",
524 ibooker.
book2D(
"Efficiency wrt pixels",
title +
" Efficiency wrt pixels;x (mm);y (mm)", 25, 0, 25, 12, -2, 10);
530 : HitCounter(0), MHCounter(0), LeadingOnlyCounter(0), TrailingOnlyCounter(0), CompleteCounter(0) {
545 "activity per BX " +
window,
title +
" Activity per BX " +
window +
" ns;Event.BX", 3600, -1.5, 3598. + 0.5);
549 for (
unsigned short error_index = 1; error_index < 16; ++error_index)
554 title +
" leading edge (recHits); leading edge (ns)",
561 title +
" trailing edge (te only) (DIGIs); trailing edge (ns)",
566 ibooker.
book1D(
"time over threshold",
title +
" time over threshold;time over threshold (ns)", 75, -25, 50);
578 "tomography pixel",
"tomography with pixel;x + 25 OOT (mm);y (mm)", 25 *
windowsNum, 0, 25 *
windowsNum, 8, 0, 8);
590 ps.getUntrackedParameter<
edm::
InputTag>(
"tagPixelLocalTracks"))),
592 ps.getUntrackedParameter<
edm::
InputTag>(
"tagDiamondRecHits"))),
594 ps.getUntrackedParameter<
edm::
InputTag>(
"tagDiamondLocalTracks"))),
601 verbosity_(ps.getUntrackedParameter<unsigned
int>(
"verbosity", 0)),
604 windowsNum_(ps.getUntrackedParameter<unsigned
int>(
"windowsNum", 3)),
613 for (
const auto&
pset : ps.
getParameter<std::vector<edm::ParameterSet>>(
"offsetsOOT")) {
635 const auto diam =
geom.sensor(
it->first);
636 diamShifts_[diam_id].global = diam->translation().x() - diam->getDiamondDimensions().xHalfWidth;
639 auto pix =
geom.sensor(pixid);
642 pix->translation().x() - pix->getDiamondDimensions().xHalfWidth -
diamShifts_[diam_id].global - 1.;
657 for (
auto it =
geom.beginSensor();
it !=
geom.endSensor(); ++
it) {
685 auto d = std::make_shared<dds::Cache>();
686 d->hitDistribution2dMap.reserve(
potPlots_.size());
689 d->hitDistribution2dMap[
plot.first] = std::make_unique<TH2F>(
690 "hits in planes lumisection",
691 (
std::string(
plot.second.hitDistribution2d_lumisection->getTH2F()->GetTitle()) +
";plane number;x (mm)")
744 <<
"ERROR in CTPPSDiamondDQMSource::analyze > some of the required inputs are not valid. Skipping this " 747 <<
" diamondVFATStatus.isValid = " << diamondVFATStatus.
isValid() <<
"\n" 748 <<
" diamondDigis.isValid = " << diamondDigis.
isValid() <<
"\n" 749 <<
" fedInfo.isValid = " << fedInfo.
isValid() <<
"\n" 751 <<
" pixelTracks.isValid = " <<
pixelTracks.isValid() <<
"\n" 752 <<
" diamondRecHits.isValid = " << diamondRecHits.
isValid() <<
"\n" 753 <<
" diamondLocalTracks.isValid = " << diamondLocalTracks.
isValid();
762 for (
const auto&
tracks : *diamondLocalTracks) {
766 if (!
track.isValid())
768 if (
potPlots_.count(detId_near.rpId()) == 0)
770 TH1F* trackHistoInTimeTmp =
potPlots_[detId_near.rpId()].trackDistribution->getTH1F();
775 for (
const auto& tracks_far : *diamondLocalTracks) {
777 if (detId_near.arm() != detId_far.arm() || detId_near.station() == detId_far.station())
779 for (
const auto& track_far : tracks_far) {
780 if (!
track.isValid())
784 TH2F* trackHistoTmp =
sectorPlots_[detId_far.armId()].trackCorrelation->getTH2F();
785 TAxis* trackHistoTmpXAxis = trackHistoTmp->GetXaxis();
786 TAxis* trackHistoTmpYAxis = trackHistoTmp->GetYaxis();
787 int startBin_far = trackHistoTmpYAxis->FindBin(track_far.x0() -
diamShifts_[detId_far.rpId()].global -
788 track_far.x0Sigma());
790 for (
int i = 0;
i < numOfBins_near; ++
i)
791 for (
int y = 0;
y < numOfBins_far; ++
y) {
792 trackHistoTmp->Fill(trackHistoTmpXAxis->GetBinCenter(startBin_near +
i),
793 trackHistoTmpYAxis->GetBinCenter(startBin_far +
y));
795 sectorPlots_[detId_far.armId()].trackCorrelationLowMultiplicity->Fill(
796 trackHistoTmpXAxis->GetBinCenter(startBin_near +
i),
797 trackHistoTmpYAxis->GetBinCenter(startBin_far +
y));
814 for (
const auto& digis : *diamondDigis) {
816 for (
const auto& digi : digis) {
822 if (digi.leadingEdge() != 0 || digi.trailingEdge() != 0) {
824 if (digi.leadingEdge() != 0) {
827 if (digi.leadingEdge() != 0 && digi.trailingEdge() == 0) {
828 ++
potPlots_[detId_pot].LeadingOnlyCounter;
831 if (digi.leadingEdge() == 0 && digi.trailingEdge() != 0) {
832 ++
potPlots_[detId_pot].TrailingOnlyCounter;
835 if (digi.leadingEdge() != 0 && digi.trailingEdge() != 0) {
847 for (
unsigned short hptdcErrorIndex = 1; hptdcErrorIndex < 16; ++hptdcErrorIndex)
848 if (hptdcErrors.
errorId(hptdcErrorIndex - 1))
849 potPlots_[detId_pot].HPTDCErrorFlags_2D->Fill(hptdcErrorIndex, verticalIndex);
851 if (digi.multipleHit())
859 for (
const auto& vfat_status : *diamondVFATStatus) {
861 for (
const auto&
status : vfat_status) {
870 for (
const auto& optorx : *fedInfo) {
881 std::unordered_map<unsigned int, std::set<unsigned int>> planes;
882 std::unordered_map<unsigned int, std::set<unsigned int>> planes_inclusive;
884 auto lumiCache = luminosityBlockCache(
event.getLuminosityBlock().index());
885 for (
const auto&
rechits : *diamondRecHits) {
889 for (
const auto& rechit :
rechits) {
890 planes_inclusive[detId_pot].insert(
detId.plane());
899 potPlots_[detId_pot].recHitTime->Fill(rechit.time());
901 float UFSDShift = 0.0;
902 if (rechit.yWidth() < 3)
906 TH2F* hitHistoTmp =
potPlots_[detId_pot].hitDistribution2d->getTH2F();
907 TAxis* hitHistoTmpYAxis = hitHistoTmp->GetYaxis();
908 int 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));
914 hitHistoTmp = lumiCache->hitDistribution2dMap[detId_pot].get();
915 hitHistoTmpYAxis = hitHistoTmp->GetYaxis();
916 startBin = hitHistoTmpYAxis->FindBin(rechit.x() - x_shift.global - 0.5 * rechit.xWidth());
918 for (
int i = 0;
i < numOfBins; ++
i)
919 hitHistoTmp->Fill(
detId.plane() + UFSDShift, hitHistoTmpYAxis->GetBinCenter(startBin +
i));
923 if (rechit.toT() > 0) {
925 potPlots_[detId_pot].leadingEdgeCumulative_both->Fill(rechit.time() + 25 * rechit.ootIndex());
926 potPlots_[detId_pot].timeOverThresholdCumulativePot->Fill(rechit.toT());
928 TH2F* hitHistoOOTTmp =
potPlots_[detId_pot].hitDistribution2dOOT->getTH2F();
929 TAxis* hitHistoOOTTmpYAxis = hitHistoOOTTmp->GetYaxis();
930 int startBin = hitHistoOOTTmpYAxis->FindBin(rechit.x() - x_shift.global - 0.5 * rechit.xWidth());
932 for (
int i = 0;
i < numOfBins; ++
i)
934 hitHistoOOTTmpYAxis->GetBinCenter(startBin +
i));
938 TH2F* hitHistoOOTTmp =
potPlots_[detId_pot].hitDistribution2dOOT_le->getTH2F();
939 TAxis* hitHistoOOTTmpYAxis = hitHistoOOTTmp->GetYaxis();
940 int startBin = hitHistoOOTTmpYAxis->FindBin(rechit.x() - x_shift.global - 0.5 * rechit.xWidth());
942 for (
int i = 0;
i < numOfBins; ++
i)
944 hitHistoOOTTmpYAxis->GetBinCenter(startBin +
i));
947 potPlots_[detId_pot].activity_per_bx.count(rechit.ootIndex()) > 0)
948 potPlots_[detId_pot].activity_per_bx.at(rechit.ootIndex())->
Fill(
event.bunchCrossing());
956 plt.second.activePlanes->Fill(planes[plt.first].size());
958 plt.second.activePlanesInclusive->Fill(planes_inclusive[plt.first].size());
962 for (
const auto&
tracks : *diamondLocalTracks) {
967 if (!
track.isValid())
976 TH2F* trackHistoOOTTmp =
potPlots_[detId_pot].trackDistributionOOT->getTH2F();
977 TAxis* trackHistoOOTTmpYAxis = trackHistoOOTTmp->GetYaxis();
978 int startBin = trackHistoOOTTmpYAxis->FindBin(
track.x0() - x_shift.global -
track.x0Sigma());
980 for (
int i = 0;
i < numOfBins; ++
i)
981 trackHistoOOTTmp->Fill(
track.ootIndex(), trackHistoOOTTmpYAxis->GetBinCenter(startBin +
i));
984 TH1F* trackHistoInTimeTmp =
potPlots_[detId_pot].trackDistribution->getTH1F();
985 int startBin = trackHistoInTimeTmp->FindBin(
track.x0() - x_shift.global -
track.x0Sigma());
987 for (
int i = 0;
i < numOfBins; ++
i)
988 trackHistoInTimeTmp->Fill(trackHistoInTimeTmp->GetBinCenter(startBin +
i));
999 for (
const auto&
tracks : *diamondLocalTracks) {
1004 std::set<int> planesInTrackSet;
1005 for (
const auto& vec : *diamondRecHits) {
1007 if (detid.arm() != detId_pot.arm())
1010 for (
const auto&
hit : vec) {
1014 planesInTrackSet.insert(detid.plane());
1019 if (numOfHits > 0 && numOfHits <= 10 && planesInTrackSet.size() > 2) {
1022 if (
detId.rpId() != detId_pot)
1024 const unsigned short map_index =
detId.plane() * 100 +
detId.channel();
1025 if (
potPlots_[detId_pot].effDoublecountingChMap.count(map_index) == 0) {
1026 potPlots_[detId_pot].effTriplecountingChMap[map_index] = 0;
1027 potPlots_[detId_pot].effDoublecountingChMap[map_index] = 0;
1031 ++
potPlots_[detId_pot].effDoublecountingChMap[map_index];
1032 for (
const auto&
rechits : *diamondRecHits) {
1034 if (detId_hit ==
detId)
1035 for (
const auto& rechit :
rechits)
1036 if (
track.containsHit(rechit, 1))
1037 ++
potPlots_[detId_pot].effTriplecountingChMap[map_index];
1046 for (
const auto&
rechits : *diamondRecHits) {
1048 const auto pix_shift =
diamShifts_.at(detId_pot).withPixels;
1049 for (
const auto& rechit :
rechits) {
1052 if (rechit.toT() == 0)
1065 for (
const auto& lt : ds) {
1066 if (lt.isValid() && pixId.arm() == detId_pot.arm()) {
1068 potPlots_[detId_pot].pixelTomographyAll.count(rechit.ootIndex()) > 0 && lt.x0() - pix_shift < 24)
1070 .pixelTomographyAll.at(rechit.ootIndex())
1071 ->
Fill(lt.x0() - pix_shift + 25 *
detId.plane(), lt.y0());
1105 std::unordered_map<unsigned int, unsigned int> channelsPerPlane;
1107 for (
const auto& digis : *diamondDigis) {
1109 for (
const auto& digi : digis) {
1115 if (digi.leadingEdge() != 0) {
1116 planePlots_[detId_plane].digiProfileCumulativePerPlane->Fill(
detId.channel());
1117 channelsPerPlane[detId_plane]++;
1123 for (
const auto& plt : channelsPerPlane)
1124 planePlots_[plt.first].hit_multiplicity->Fill(plt.second);
1127 for (
const auto&
rechits : *diamondRecHits) {
1129 for (
const auto& rechit :
rechits) {
1132 if (rechit.toT() == 0)
1136 TH1F* hitHistoTmp =
planePlots_[detId_plane].hitProfile->getTH1F();
1137 int startBin = hitHistoTmp->FindBin(rechit.x() -
diamShifts_.at(detId_pot).global - 0.5 * rechit.xWidth());
1139 for (
int i = 0;
i < numOfBins; ++
i)
1140 hitHistoTmp->Fill(hitHistoTmp->GetBinCenter(startBin +
i));
1153 for (
const auto& lt : ds) {
1157 const auto&
shift = sh_vs_id.second;
1158 if (detId_pot.
arm() == pixId.arm())
1160 potPlots_[detId_pot].pixelTracksMap.Fill(lt.x0() -
shift.withPixels, lt.y0());
1163 std::set<CTPPSDiamondDetId> planesWitHits_set;
1164 for (
const auto&
rechits : *diamondRecHits) {
1166 const auto pix_shift =
diamShifts_.at(detId_pot).withPixels;
1167 for (
const auto& rechit :
rechits) {
1174 if (pixId.arm() == detId_plane.arm() && lt.x0() - pix_shift < 24) {
1175 planePlots_[detId_plane].pixelTomography_far->Fill(lt.x0() - pix_shift + 25 * rechit.ootIndex(), lt.y0());
1177 planesWitHits_set.insert(detId_plane);
1182 for (
auto& planeId : planesWitHits_set)
1183 planePlots_[planeId].pixelTracksMapWithDiamonds.Fill(lt.x0() -
diamShifts_.at(planeId.rpId()).withPixels,
1195 for (
const auto& digis : *diamondDigis) {
1197 for (
const auto& digi : digis) {
1203 for (
unsigned short hptdcErrorIndex = 1; hptdcErrorIndex < 16; ++hptdcErrorIndex)
1204 if (hptdcErrors.
errorId(hptdcErrorIndex - 1))
1206 if (digi.multipleHit())
1210 if (digi.leadingEdge() != 0 || digi.trailingEdge() != 0) {
1212 if (digi.trailingEdge() == 0) {
1215 }
else if (digi.leadingEdge() == 0) {
1231 for (
const auto&
rechits : *diamondRecHits) {
1233 for (
const auto& rechit :
rechits) {
1239 channelPlots_[
detId].leadingEdgeCumulative_both->Fill(rechit.time() + 25 * rechit.ootIndex());
1242 ++lumiCache->hitsCounterMap[
detId];
1252 for (
const auto&
rechits : *diamondRecHits) {
1254 const auto shift_pix =
diamShifts_.at(detId_pot).withPixels;
1255 for (
const auto& rechit :
rechits) {
1271 for (
const auto& lt : ds) {
1272 if (lt.isValid() && pixId.arm() ==
detId.arm() && lt.x0() - shift_pix < 24)
1273 channelPlots_[
detId].pixelTomography_far->Fill(lt.x0() - shift_pix + 25 * rechit.ootIndex(), lt.y0());
1283 auto lumiCache = luminosityBlockCache(iLumi.
index());
1287 *(
plot.second.hitDistribution2d_lumisection->getTH2F()) = *(lumiCache->hitDistribution2dMap[
plot.first]);
1290 auto hitsCounterPerLumisection = lumiCache->hitsCounterMap[
plot.first];
1291 if (hitsCounterPerLumisection != 0) {
1295 double HundredOverHitCounter = .0;
1296 if (
plot.second.HitCounter != 0)
1297 HundredOverHitCounter = 100. /
plot.second.HitCounter;
1298 plot.second.HPTDCErrorFlags->setBinContent(16, HundredOverHitCounter *
plot.second.MHCounter);
1299 plot.second.leadingWithoutTrailing->setBinContent(1, HundredOverHitCounter *
plot.second.LeadingOnlyCounter);
1300 plot.second.leadingWithoutTrailing->setBinContent(2, HundredOverHitCounter *
plot.second.TrailingOnlyCounter);
1301 plot.second.leadingWithoutTrailing->setBinContent(3, HundredOverHitCounter *
plot.second.CompleteCounter);
1305 double HundredOverHitCounterPot = 0.;
1306 if (
plot.second.HitCounter != 0)
1307 HundredOverHitCounterPot = 100. /
plot.second.HitCounter;
1308 plot.second.leadingWithoutTrailingCumulativePot->setBinContent(
1309 1, HundredOverHitCounterPot *
plot.second.LeadingOnlyCounter);
1310 plot.second.leadingWithoutTrailingCumulativePot->setBinContent(
1311 2, HundredOverHitCounterPot *
plot.second.TrailingOnlyCounter);
1312 plot.second.leadingWithoutTrailingCumulativePot->setBinContent(
1313 3, HundredOverHitCounterPot *
plot.second.CompleteCounter);
1315 plot.second.MHComprensive->Reset();
1319 if (chId.
arm() == rpId.
arm() && chId.
rp() == rpId.
rp()) {
1320 plot.second.MHComprensive->Fill(
1321 chId.
plane(), chId.
channel(), chPlot.second.HPTDCErrorFlags->getBinContent(16));
1328 plot.second.EfficiencyOfChannelsInPot->Reset();
1329 for (
auto& element :
plot.second.effTriplecountingChMap) {
1330 if (
plot.second.effDoublecountingChMap[element.first] > 0) {
1331 int plane = element.first / 100;
1332 int channel = element.first % 100;
1333 double counted = element.second;
1334 double total =
plot.second.effDoublecountingChMap[element.first];
1338 plot.second.EfficiencyOfChannelsInPot->Fill(plane, channel, 100 *
efficiency);
1345 TH2F* hitHistoTmp =
plot.second.EfficiencyWRTPixelsInPlane->getTH2F();
1348 hitHistoTmp->Divide(&(
plot.second.pixelTracksMapWithDiamonds), &(
potPlots_[detId_pot].pixelTracksMap));
1359 int& EC_difference)
const {
1362 plots.ECCheck->Fill((
int)((optorx.
lv1() & 0xFF) - ((
unsigned int)
status.ec() & 0xFF)) & 0xFF);
1363 if ((static_cast<int>((optorx.
lv1() & 0xFF) -
status.ec()) != EC_difference) &&
1364 (
static_cast<uint8_t
>((optorx.
lv1() & 0xFF) -
status.ec()) < 128))
1365 EC_difference = static_cast<int>(optorx.
lv1() & 0xFF) - (static_cast<unsigned int>(
status.ec()) & 0xFF);
1366 if (EC_difference != 1 && EC_difference != -500 &&
std::abs(EC_difference) < 127) {
1371 <<
"FED " << optorx.
fedId() <<
": ECError at EV: 0x" << std::hex << optorx.
lv1() <<
"\t\tVFAT EC: 0x" 1373 <<
"\tdiff: " << EC_difference;
1382 auto plots = rpPlots.second;
1385 *(
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.
T getParameter(std::string const &) const
const Translation & translation() const
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)
T const & getData(const ESGetToken< T, R > &iToken) const noexcept(false)
virtual void setCurrentFolder(std::string const &fullpath)
static constexpr unsigned short CTPPS_DIAMOND_NUM_OF_CHANNELS
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.
MonitorElement * leadingEdgeCumulative_le
void dqmBeginRun(const edm::Run &, const edm::EventSetup &) override
MonitorElement * MHComprensive
MonitorElement * digiSentPercentage
CTPPSDiamondDQMSource(const edm::ParameterSet &)
MonitorElement * trailingEdgeCumulative_te
plots related to the whole system
MonitorElement * digiProfileCumulativePerPlane
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
MonitorElement * EfficiencyWRTPixelsInPlane
MonitorElement * trailingEdgeCumulative_te
void planeName(std::string &name, NameFlag flag=nFull) const
edm::ESGetToken< CTPPSGeometry, VeryForwardRealGeometryRecord > ctppsGeometryEventToken_
edm::EDGetTokenT< edm::DetSetVector< CTPPSDiamondLocalTrack > > tokenDiamondTrack_
Event setup record containing the real (actual) geometry information.
static std::string to_string(const XMLCh *ch)
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)
T getUntrackedParameter(std::string const &, T const &) const
static std::string hptdcErrorName(const unsigned short id)
std::vector< std::pair< edm::EventRange, int > > runParameters_
MonitorElement * hitDistribution2d
MonitorElement * EfficiencyOfChannelsInPot
MonitorElement * hitProfile
MonitorElement * recHitTime
edm::EDGetTokenT< edm::DetSetVector< CTPPSDiamondDigi > > tokenDigi_
void rpName(std::string &name, NameFlag flag=nFull) const
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_
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)
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
bool errorId(unsigned short id) const
void armName(std::string &name, NameFlag flag=nFull) const
#define DEFINE_FWK_MODULE(type)
def window(xmin, xmax, ymin, ymax, x=0, y=0, width=100, height=100, xlogbase=None, ylogbase=None, minusInfinity=-1000, flipx=False, flipy=True)
MonitorElement * pixelTomography_far
MonitorElement * hitDistribution2d_lumisection
bool insert(Storage &iStorage, ItemType *iItem, const IdTag &iIdTag)
const DiamondDimensions & getDiamondDimensions() const
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 channelName(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
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
std::unordered_map< unsigned int, MonitorElement * > activity_per_bx
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
LuminosityBlockIndex index() const
unsigned int TrailingOnlyCounter
void checkEventNumber(const CTPPSDiamondDetId &, const TotemFEDInfo &, const TotemVFATStatus &, PotPlots &, int &) const
static constexpr unsigned short CTPPS_FED_ID_56
unsigned int LeadingOnlyCounter
static constexpr double HPTDC_BIN_WIDTH_NS
ns per HPTDC bin
static constexpr double INV_DISPLAY_RESOLUTION_FOR_HITS_MM
CTPPSDiamondDetId planeId() 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
std::unordered_map< unsigned int, unsigned long > hitsCounterMap
MonitorElement * hit_rate
Log< level::Error, true > LogProblem
unsigned int trackCorrelationThreshold_
MonitorElement * activePlanesInclusive