257 trackCorrelation = ibooker.
book2D(
"tracks correlation near-far",
258 title +
" tracks correlation near-far;x (mm);x (mm)",
265 trackCorrelationLowMultiplicity =
266 ibooker.
book2D(
"tracks correlation with low multiplicity near-far",
267 title +
" tracks correlation with low multiplicity near-far;x (mm);x (mm)",
285 LeadingOnlyCounter(0),
286 TrailingOnlyCounter(0),
288 pixelTracksMap(
"Pixel track maps for efficiency",
"Pixel track maps for efficiency", 25, 0, 25, 12, -2, 10) {
297 ibooker.
book2D(
"hits in planes lumisection",
298 title +
" hits in planes in the last lumisection;plane number;x (mm)",
307 ibooker.
book2D(
"hits with OOT in planes (le only)",
308 title +
" hits with OOT in planes (le only);plane number, OOT index;x (mm)",
317 ibooker.
book1D(
"active planes inclusive",
318 title +
" active planes, MH and le only included (per event);number of active planes",
323 ECCheck = ibooker.
book1D(
"optorxEC(8bit) - vfatEC",
title +
" EC Error;optorxEC-vfatEC", 50, -25, 25);
326 ibooker.
book2D(
"Efficiency in channels",
327 title +
" Efficiency (%) in channels (diamonds only);plane number;ch number",
341 ibooker.
book2D(
"track time vs BX",
title +
" track time vs BX;BX;track_time(ns)", 4000, 0, 4000, 500, -25, 25);
348 "track time vs BX profile",
title +
" track time vs BX profile;BX;track_time(ns)", 500, -25, 25, 4000, 0, 4000);
363 "activity per BX " +
window,
title +
" Activity per BX " +
window +
" ns;Event.BX", 3600, -1.5, 3598. + 0.5);
366 title +
" tomography with pixel " +
window +
" ns (all planes);x + 25*plane(mm);y (mm)",
376 title +
" hits in planes;plane number;x (mm)",
385 title +
" hits with OOT in planes;plane number, OOT index;x (mm)",
395 for (
int pl = 0; pl < 4; ++pl)
396 for (
unsigned int oot = 0; oot <
windowsNum; ++oot) {
409 ibooker.
book1D(
"active planes",
title +
" active planes (per event);number of active planes", 6, -0.5, 5.5);
414 title +
" tracks with OOT;plane number;x (mm)",
423 title +
" leading edge (le and te) (recHits); leading edge (ns)",
428 title +
" leading edge (with or without te) (DIGIs); leading edge (ns)",
433 title +
" leading edge (le only) (DIGIs); leading edge (ns)",
438 title +
" trailing edge (te only) (DIGIs); trailing edge (ns)",
443 ibooker.
book1D(
"time over threshold",
title +
" time over threshold;time over threshold (ns)", 250, -25, 100);
455 ibooker.
book1D(
"event category",
title +
" leading edges without trailing;;%", 3, 0.5, 3.5);
461 for (
unsigned short error_index = 1; error_index < 16; ++error_index)
476 ibooker.
book2D(
"MH in channels",
title +
" MH (%) in channels;plane number;ch number", 10, -0.5, 4.5, 14, -1, 13);
488 : pixelTracksMapWithDiamonds(
"Pixel track maps for efficiency with coincidence",
489 "Pixel track maps for efficiency with coincidence",
503 title +
" digi profile; ch number",
512 title +
" tomography with pixel;x + 25 OOT (mm);y (mm)",
520 ibooker.
book2D(
"Efficiency wrt pixels",
title +
" Efficiency wrt pixels;x (mm);y (mm)", 25, 0, 25, 12, -2, 10);
526 : HitCounter(0), MHCounter(0), LeadingOnlyCounter(0), TrailingOnlyCounter(0), CompleteCounter(0) {
541 "activity per BX " +
window,
title +
" Activity per BX " +
window +
" ns;Event.BX", 3600, -1.5, 3598. + 0.5);
545 for (
unsigned short error_index = 1; error_index < 16; ++error_index)
550 title +
" leading edge (recHits); leading edge (ns)",
557 title +
" trailing edge (te only) (DIGIs); trailing edge (ns)",
562 ibooker.
book1D(
"time over threshold",
title +
" time over threshold;time over threshold (ns)", 75, -25, 50);
574 "tomography pixel",
"tomography with pixel;x + 25 OOT (mm);y (mm)", 25 *
windowsNum, 0, 25 *
windowsNum, 8, 0, 8);
586 ps.getUntrackedParameter<
edm::
InputTag>(
"tagPixelLocalTracks"))),
588 ps.getUntrackedParameter<
edm::
InputTag>(
"tagDiamondRecHits"))),
590 ps.getUntrackedParameter<
edm::
InputTag>(
"tagDiamondLocalTracks"))),
596 verbosity_(ps.getUntrackedParameter<unsigned
int>(
"verbosity", 0)),
599 windowsNum_(ps.getUntrackedParameter<unsigned
int>(
"windowsNum", 3)),
608 for (
const auto&
pset : ps.
getParameter<std::vector<edm::ParameterSet>>(
"offsetsOOT")) {
630 const auto diam =
geom.sensor(
it->first);
631 diamShifts_[diam_id].global = diam->translation().x() - diam->getDiamondDimensions().xHalfWidth;
634 auto pix =
geom.sensor(pixid);
637 pix->translation().x() - pix->getDiamondDimensions().xHalfWidth -
diamShifts_[diam_id].global - 1.;
652 for (
auto it =
geom.beginSensor();
it !=
geom.endSensor(); ++
it) {
680 auto d = std::make_shared<dds::Cache>();
681 d->hitDistribution2dMap.reserve(
potPlots_.size());
684 d->hitDistribution2dMap[
plot.first] = std::make_unique<TH2F>(
685 "hits in planes lumisection",
686 (
std::string(
plot.second.hitDistribution2d_lumisection->getTH2F()->GetTitle()) +
";plane number;x (mm)")
738 <<
"ERROR in CTPPSDiamondDQMSource::analyze > some of the required inputs are not valid. Skipping this " 741 <<
" diamondVFATStatus.isValid = " << diamondVFATStatus.
isValid() <<
"\n" 742 <<
" diamondDigis.isValid = " << diamondDigis.
isValid() <<
"\n" 743 <<
" fedInfo.isValid = " << fedInfo.
isValid() <<
"\n" 745 <<
" pixelTracks.isValid = " <<
pixelTracks.isValid() <<
"\n" 746 <<
" diamondRecHits.isValid = " << diamondRecHits.
isValid() <<
"\n" 747 <<
" diamondLocalTracks.isValid = " << diamondLocalTracks.
isValid();
756 for (
const auto&
tracks : *diamondLocalTracks) {
760 if (!
track.isValid())
762 if (
potPlots_.count(detId_near.rpId()) == 0)
764 TH1F* trackHistoInTimeTmp =
potPlots_[detId_near.rpId()].trackDistribution->getTH1F();
769 for (
const auto& tracks_far : *diamondLocalTracks) {
771 if (detId_near.arm() != detId_far.arm() || detId_near.station() == detId_far.station())
773 for (
const auto& track_far : tracks_far) {
774 if (!
track.isValid())
778 TH2F* trackHistoTmp =
sectorPlots_[detId_far.armId()].trackCorrelation->getTH2F();
779 TAxis* trackHistoTmpXAxis = trackHistoTmp->GetXaxis();
780 TAxis* trackHistoTmpYAxis = trackHistoTmp->GetYaxis();
781 int startBin_far = trackHistoTmpYAxis->FindBin(track_far.x0() -
diamShifts_[detId_far.rpId()].global -
782 track_far.x0Sigma());
784 for (
int i = 0;
i < numOfBins_near; ++
i)
785 for (
int y = 0;
y < numOfBins_far; ++
y) {
786 trackHistoTmp->Fill(trackHistoTmpXAxis->GetBinCenter(startBin_near +
i),
787 trackHistoTmpYAxis->GetBinCenter(startBin_far +
y));
789 sectorPlots_[detId_far.armId()].trackCorrelationLowMultiplicity->Fill(
790 trackHistoTmpXAxis->GetBinCenter(startBin_near +
i),
791 trackHistoTmpYAxis->GetBinCenter(startBin_far +
y));
808 for (
const auto& digis : *diamondDigis) {
810 for (
const auto& digi : digis) {
816 if (digi.leadingEdge() != 0 || digi.trailingEdge() != 0) {
818 if (digi.leadingEdge() != 0) {
821 if (digi.leadingEdge() != 0 && digi.trailingEdge() == 0) {
822 ++
potPlots_[detId_pot].LeadingOnlyCounter;
825 if (digi.leadingEdge() == 0 && digi.trailingEdge() != 0) {
826 ++
potPlots_[detId_pot].TrailingOnlyCounter;
829 if (digi.leadingEdge() != 0 && digi.trailingEdge() != 0) {
841 for (
unsigned short hptdcErrorIndex = 1; hptdcErrorIndex < 16; ++hptdcErrorIndex)
842 if (hptdcErrors.
errorId(hptdcErrorIndex - 1))
843 potPlots_[detId_pot].HPTDCErrorFlags_2D->Fill(hptdcErrorIndex, verticalIndex);
845 if (digi.multipleHit())
853 for (
const auto& vfat_status : *diamondVFATStatus) {
855 for (
const auto&
status : vfat_status) {
864 for (
const auto& optorx : *fedInfo) {
875 std::unordered_map<unsigned int, std::set<unsigned int>> planes;
876 std::unordered_map<unsigned int, std::set<unsigned int>> planes_inclusive;
878 auto lumiCache = luminosityBlockCache(
event.getLuminosityBlock().index());
879 for (
const auto&
rechits : *diamondRecHits) {
883 for (
const auto& rechit :
rechits) {
884 planes_inclusive[detId_pot].insert(
detId.plane());
893 potPlots_[detId_pot].recHitTime->Fill(rechit.time());
895 float UFSDShift = 0.0;
896 if (rechit.yWidth() < 3)
900 TH2F* hitHistoTmp =
potPlots_[detId_pot].hitDistribution2d->getTH2F();
901 TAxis* hitHistoTmpYAxis = hitHistoTmp->GetYaxis();
902 int startBin = hitHistoTmpYAxis->FindBin(rechit.x() - x_shift.global - 0.5 * rechit.xWidth());
904 for (
int i = 0;
i < numOfBins; ++
i)
905 hitHistoTmp->Fill(
detId.plane() + UFSDShift, hitHistoTmpYAxis->GetBinCenter(startBin +
i));
908 hitHistoTmp = lumiCache->hitDistribution2dMap[detId_pot].get();
909 hitHistoTmpYAxis = hitHistoTmp->GetYaxis();
910 startBin = hitHistoTmpYAxis->FindBin(rechit.x() - x_shift.global - 0.5 * rechit.xWidth());
912 for (
int i = 0;
i < numOfBins; ++
i)
913 hitHistoTmp->Fill(
detId.plane() + UFSDShift, hitHistoTmpYAxis->GetBinCenter(startBin +
i));
917 if (rechit.toT() > 0) {
919 potPlots_[detId_pot].leadingEdgeCumulative_both->Fill(rechit.time() + 25 * rechit.ootIndex());
920 potPlots_[detId_pot].timeOverThresholdCumulativePot->Fill(rechit.toT());
922 TH2F* hitHistoOOTTmp =
potPlots_[detId_pot].hitDistribution2dOOT->getTH2F();
923 TAxis* hitHistoOOTTmpYAxis = hitHistoOOTTmp->GetYaxis();
924 int startBin = hitHistoOOTTmpYAxis->FindBin(rechit.x() - x_shift.global - 0.5 * rechit.xWidth());
926 for (
int i = 0;
i < numOfBins; ++
i)
928 hitHistoOOTTmpYAxis->GetBinCenter(startBin +
i));
932 TH2F* hitHistoOOTTmp =
potPlots_[detId_pot].hitDistribution2dOOT_le->getTH2F();
933 TAxis* hitHistoOOTTmpYAxis = hitHistoOOTTmp->GetYaxis();
934 int startBin = hitHistoOOTTmpYAxis->FindBin(rechit.x() - x_shift.global - 0.5 * rechit.xWidth());
936 for (
int i = 0;
i < numOfBins; ++
i)
938 hitHistoOOTTmpYAxis->GetBinCenter(startBin +
i));
941 potPlots_[detId_pot].activity_per_bx.count(rechit.ootIndex()) > 0)
942 potPlots_[detId_pot].activity_per_bx.at(rechit.ootIndex())->
Fill(
event.bunchCrossing());
950 plt.second.activePlanes->Fill(planes[plt.first].size());
952 plt.second.activePlanesInclusive->Fill(planes_inclusive[plt.first].size());
956 for (
const auto&
tracks : *diamondLocalTracks) {
961 if (!
track.isValid())
970 TH2F* trackHistoOOTTmp =
potPlots_[detId_pot].trackDistributionOOT->getTH2F();
971 TAxis* trackHistoOOTTmpYAxis = trackHistoOOTTmp->GetYaxis();
972 int startBin = trackHistoOOTTmpYAxis->FindBin(
track.x0() - x_shift.global -
track.x0Sigma());
974 for (
int i = 0;
i < numOfBins; ++
i)
975 trackHistoOOTTmp->Fill(
track.ootIndex(), trackHistoOOTTmpYAxis->GetBinCenter(startBin +
i));
978 TH1F* trackHistoInTimeTmp =
potPlots_[detId_pot].trackDistribution->getTH1F();
979 int startBin = trackHistoInTimeTmp->FindBin(
track.x0() - x_shift.global -
track.x0Sigma());
981 for (
int i = 0;
i < numOfBins; ++
i)
982 trackHistoInTimeTmp->Fill(trackHistoInTimeTmp->GetBinCenter(startBin +
i));
992 for (
const auto&
tracks : *diamondLocalTracks) {
997 std::set<int> planesInTrackSet;
998 for (
const auto& vec : *diamondRecHits) {
1000 if (detid.arm() != detId_pot.arm())
1003 for (
const auto&
hit : vec) {
1007 planesInTrackSet.insert(detid.plane());
1012 if (numOfHits > 0 && numOfHits <= 10 && planesInTrackSet.size() > 2) {
1015 if (
detId.rpId() != detId_pot)
1017 const unsigned short map_index =
detId.plane() * 100 +
detId.channel();
1018 if (
potPlots_[detId_pot].effDoublecountingChMap.count(map_index) == 0) {
1019 potPlots_[detId_pot].effTriplecountingChMap[map_index] = 0;
1020 potPlots_[detId_pot].effDoublecountingChMap[map_index] = 0;
1024 ++
potPlots_[detId_pot].effDoublecountingChMap[map_index];
1025 for (
const auto&
rechits : *diamondRecHits) {
1027 if (detId_hit ==
detId)
1028 for (
const auto& rechit :
rechits)
1029 if (
track.containsHit(rechit, 1))
1030 ++
potPlots_[detId_pot].effTriplecountingChMap[map_index];
1039 for (
const auto&
rechits : *diamondRecHits) {
1041 const auto pix_shift =
diamShifts_.at(detId_pot).withPixels;
1042 for (
const auto& rechit :
rechits) {
1045 if (rechit.toT() == 0)
1058 for (
const auto& lt : ds) {
1059 if (lt.isValid() && pixId.arm() == detId_pot.arm()) {
1061 potPlots_[detId_pot].pixelTomographyAll.count(rechit.ootIndex()) > 0 && lt.x0() - pix_shift < 24)
1063 .pixelTomographyAll.at(rechit.ootIndex())
1064 ->
Fill(lt.x0() - pix_shift + 25 *
detId.plane(), lt.y0());
1098 std::unordered_map<unsigned int, unsigned int> channelsPerPlane;
1100 for (
const auto& digis : *diamondDigis) {
1102 for (
const auto& digi : digis) {
1108 if (digi.leadingEdge() != 0) {
1109 planePlots_[detId_plane].digiProfileCumulativePerPlane->Fill(
detId.channel());
1110 channelsPerPlane[detId_plane]++;
1116 for (
const auto& plt : channelsPerPlane)
1117 planePlots_[plt.first].hit_multiplicity->Fill(plt.second);
1120 for (
const auto&
rechits : *diamondRecHits) {
1122 for (
const auto& rechit :
rechits) {
1125 if (rechit.toT() == 0)
1129 TH1F* hitHistoTmp =
planePlots_[detId_plane].hitProfile->getTH1F();
1130 int startBin = hitHistoTmp->FindBin(rechit.x() -
diamShifts_.at(detId_pot).global - 0.5 * rechit.xWidth());
1132 for (
int i = 0;
i < numOfBins; ++
i)
1133 hitHistoTmp->Fill(hitHistoTmp->GetBinCenter(startBin +
i));
1146 for (
const auto& lt : ds) {
1150 const auto&
shift = sh_vs_id.second;
1151 if (detId_pot.
arm() == pixId.arm())
1153 potPlots_[detId_pot].pixelTracksMap.Fill(lt.x0() -
shift.withPixels, lt.y0());
1156 std::set<CTPPSDiamondDetId> planesWitHits_set;
1157 for (
const auto&
rechits : *diamondRecHits) {
1159 const auto pix_shift =
diamShifts_.at(detId_pot).withPixels;
1160 for (
const auto& rechit :
rechits) {
1167 if (pixId.arm() == detId_plane.arm() && lt.x0() - pix_shift < 24) {
1168 planePlots_[detId_plane].pixelTomography_far->Fill(lt.x0() - pix_shift + 25 * rechit.ootIndex(), lt.y0());
1170 planesWitHits_set.insert(detId_plane);
1175 for (
auto& planeId : planesWitHits_set)
1176 planePlots_[planeId].pixelTracksMapWithDiamonds.Fill(lt.x0() -
diamShifts_.at(planeId.rpId()).withPixels,
1188 for (
const auto& digis : *diamondDigis) {
1190 for (
const auto& digi : digis) {
1196 for (
unsigned short hptdcErrorIndex = 1; hptdcErrorIndex < 16; ++hptdcErrorIndex)
1197 if (hptdcErrors.
errorId(hptdcErrorIndex - 1))
1199 if (digi.multipleHit())
1203 if (digi.leadingEdge() != 0 || digi.trailingEdge() != 0) {
1205 if (digi.trailingEdge() == 0) {
1208 }
else if (digi.leadingEdge() == 0) {
1224 for (
const auto&
rechits : *diamondRecHits) {
1226 for (
const auto& rechit :
rechits) {
1232 channelPlots_[
detId].leadingEdgeCumulative_both->Fill(rechit.time() + 25 * rechit.ootIndex());
1235 ++lumiCache->hitsCounterMap[
detId];
1245 for (
const auto&
rechits : *diamondRecHits) {
1247 const auto shift_pix =
diamShifts_.at(detId_pot).withPixels;
1248 for (
const auto& rechit :
rechits) {
1264 for (
const auto& lt : ds) {
1265 if (lt.isValid() && pixId.arm() ==
detId.arm() && lt.x0() - shift_pix < 24)
1266 channelPlots_[
detId].pixelTomography_far->Fill(lt.x0() - shift_pix + 25 * rechit.ootIndex(), lt.y0());
1276 auto lumiCache = luminosityBlockCache(iLumi.
index());
1280 *(
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);
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();
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));
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" 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.
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