49 x_width = 2.0 * det->
params().at(0);
135 MonitorElement *leadingEdgeCumulative_both =
nullptr, *leadingEdgeCumulative_all =
nullptr,
136 *leadingEdgeCumulative_le =
nullptr, *trailingEdgeCumulative_te =
nullptr;
137 MonitorElement *timeOverThresholdCumulativePot =
nullptr, *leadingTrailingCorrelationPot =
nullptr;
186 MonitorElement *leadingEdgeCumulative_both =
nullptr, *leadingEdgeCumulative_le =
nullptr,
187 *trailingEdgeCumulative_te =
nullptr;
231 LeadingOnlyCounter(0),
232 TrailingOnlyCounter(0),
234 pixelTracksMap(
"Pixel track maps for efficiency",
"Pixel track maps for efficiency", 25, 0, 25, 12, -2, 10) {
242 ibooker.
book1D(
"activity per BX 0 25", title +
" Activity per BX 0 - 25 ns;Event.BX", 3600, -1.5, 3598. + 0.5);
244 ibooker.
book1D(
"activity per BX 25 50", title +
" Activity per BX 25 - 50 ns;Event.BX", 3600, -1.5, 3598. + 0.5);
246 ibooker.
book1D(
"activity per BX 50 75", title +
" Activity per BX 50 - 75 ns;Event.BX", 3600, -1.5, 3598. + 0.5);
249 title +
" hits in planes;plane number;x (mm)",
257 title +
" hits in planes in the last lumisection;plane number;x (mm)",
265 title +
" hits with OOT in planes;plane number + 0.25 OOT;x (mm)",
273 title +
" hits with OOT in planes (le only);plane number + 0.25 OOT;x (mm)",
281 ibooker.
book1D(
"active planes", title +
" active planes (per event);number of active planes", 6, -0.5, 5.5);
283 ibooker.
book1D(
"active planes inclusive",
284 title +
" active planes, MH and le only included (per event);number of active planes",
292 title +
" tracks with OOT;plane number;x (mm)",
301 ibooker.
book2D(
"tomography pixel 0 25",
302 title +
" tomography with pixel 0 - 25 ns (all planes);x + 25*plane(mm);y (mm)",
310 ibooker.
book2D(
"tomography pixel 25 50",
311 title +
" tomography with pixel 25 - 50 ns (all planes);x + 25*plane(mm);y (mm)",
319 ibooker.
book2D(
"tomography pixel 50 75",
320 title +
" tomography with pixel 50 - 75 ns (all planes);x + 25*plane(mm);y (mm)",
329 "leading edge (le and te)", title +
" leading edge (le and te) (recHits); leading edge (ns)", 75, 0, 75);
331 "leading edge (all)", title +
" leading edge (with or without te) (DIGIs); leading edge (ns)", 75, 0, 75);
333 ibooker.
book1D(
"leading edge (le only)", title +
" leading edge (le only) (DIGIs); leading edge (ns)", 75, 0, 75);
335 "trailing edge (te only)", title +
" trailing edge (te only) (DIGIs); trailing edge (ns)", 75, 0, 75);
337 ibooker.
book1D(
"time over threshold", title +
" time over threshold;time over threshold (ns)", 250, -25, 100);
339 ibooker.
book2D(
"leading trailing correlation",
340 title +
" leading trailing correlation;leading edge (ns);trailing edge (ns)",
349 ibooker.
book1D(
"event category", title +
" leading edges without trailing;;%", 3, 0.5, 3.5);
354 ECCheck = ibooker.
book1D(
"optorxEC(8bit) - vfatEC", title +
" EC Error;optorxEC-vfatEC", 50, -25, 25);
357 for (
unsigned short error_index = 1; error_index < 16; ++error_index)
372 ibooker.
book2D(
"MH in channels", title +
" MH (%) in channels;plane number;ch number", 10, -0.5, 4.5, 14, -1, 13);
375 ibooker.
book2D(
"Efficiency in channels",
376 title +
" Efficiency (%) in channels (diamonds only);plane number;ch number",
394 : pixelTracksMapWithDiamonds(
"Pixel track maps for efficiency with coincidence",
395 "Pixel track maps for efficiency with coincidence",
411 hit_multiplicity = ibooker.
book1D(
"channels per plane", title +
" channels per plane; ch per plane", 13, -0.5, 12.5);
414 ibooker.
book2D(
"tomography pixel", title +
" tomography with pixel;x + 25 OOT (mm);y (mm)", 75, 0, 75, 8, 0, 8);
416 ibooker.
book2D(
"Efficiency wrt pixels", title +
" Efficiency wrt pixels;x (mm);y (mm)", 25, 0, 25, 12, -2, 10);
422 : HitCounter(0), MHCounter(0), LeadingOnlyCounter(0), TrailingOnlyCounter(0), CompleteCounter(0) {
435 ibooker.
book1D(
"activity per BX 0 25", title +
" Activity per BX 0 - 25 ns;Event.BX", 500, -1.5, 498. + 0.5);
437 ibooker.
book1D(
"activity per BX 25 50", title +
" Activity per BX 25 - 50 ns;Event.BX", 500, -1.5, 498. + 0.5);
439 ibooker.
book1D(
"activity per BX 50 75", title +
" Activity per BX 50 - 75 ns;Event.BX", 500, -1.5, 498. + 0.5);
442 for (
unsigned short error_index = 1; error_index < 16; ++error_index)
447 ibooker.
book1D(
"leading edge (le and te)", title +
" leading edge (recHits); leading edge (ns)", 75, 0, 75);
449 ibooker.
book1D(
"leading edge (le only)", title +
" leading edge (DIGIs); leading edge (ns)", 75, 0, 75);
451 "trailing edge (te only)", title +
" trailing edge (te only) (DIGIs); trailing edge (ns)", 75, 0, 75);
453 ibooker.
book1D(
"time over threshold", title +
" time over threshold;time over threshold (ns)", 75, -25, 50);
455 ibooker.
book2D(
"leading trailing correlation",
456 title +
" leading trailing correlation;leading edge (ns);trailing edge (ns)",
465 ibooker.
book2D(
"tomography pixel",
"tomography with pixel;x + 25 OOT (mm);y (mm)", 75, 0, 75, 8, 0, 8);
467 hit_rate = ibooker.
book1D(
"hit rate", title +
"hit rate;rate (Hz)", 40, 0, 20);
484 verbosity_(ps.getUntrackedParameter<unsigned
int>(
"verbosity", 0)),
487 for (
const auto&
pset : ps.
getParameter<std::vector<edm::ParameterSet>>(
"offsetsOOT")) {
518 if (iRun.
run() > 300000) {
519 det = geom->
sensor(pixid);
550 auto d = std::make_shared<dds::Cache>();
551 d->hitDistribution2dMap.reserve(
potPlots_.size());
553 d->hitDistribution2dMap[
plot.first] =
554 std::unique_ptr<TH2F>(
static_cast<TH2F*
>(
plot.second.hitDistribution2d_lumisection->getTH2F()->Clone()));
585 valid &= diamondVFATStatus.
isValid();
586 valid &= pixelTracks.
isValid();
587 valid &= diamondDigis.
isValid();
589 valid &= diamondRecHits.
isValid();
590 valid &= diamondLocalTracks.
isValid();
595 <<
"ERROR in CTPPSDiamondDQMSource::analyze > some of the required inputs are not valid. Skipping this " 597 <<
" diamondVFATStatus.isValid = " << diamondVFATStatus.
isValid() <<
"\n" 598 <<
" pixelTracks.isValid = " << pixelTracks.
isValid() <<
"\n" 599 <<
" diamondDigis.isValid = " << diamondDigis.
isValid() <<
"\n" 600 <<
" fedInfo.isValid = " << fedInfo.
isValid() <<
"\n" 601 <<
" diamondRecHits.isValid = " << diamondRecHits.
isValid() <<
"\n" 602 <<
" diamondLocalTracks.isValid = " << diamondLocalTracks.
isValid();
617 for (
const auto& digis : *diamondDigis) {
621 for (
const auto& digi : digis) {
623 detId_pot.setChannel(0);
629 if (digi.leadingEdge() != 0 || digi.trailingEdge() != 0) {
631 if (digi.leadingEdge() != 0) {
634 if (digi.leadingEdge() != 0 && digi.trailingEdge() == 0) {
635 ++(
potPlots_[detId_pot].LeadingOnlyCounter);
638 if (digi.leadingEdge() == 0 && digi.trailingEdge() != 0) {
639 ++(
potPlots_[detId_pot].TrailingOnlyCounter);
642 if (digi.leadingEdge() != 0 && digi.trailingEdge() != 0) {
643 ++(
potPlots_[detId_pot].CompleteCounter);
651 if (detId.channel() == 6 || detId.channel() == 7)
653 int verticalIndex = 2 * detId.plane() + (detId.channel() - 6);
654 for (
unsigned short hptdcErrorIndex = 1; hptdcErrorIndex < 16; ++hptdcErrorIndex)
655 if (hptdcErrors.
errorId(hptdcErrorIndex - 1))
656 potPlots_[detId_pot].HPTDCErrorFlags_2D->Fill(hptdcErrorIndex, verticalIndex);
658 if (digi.multipleHit())
664 for (
const auto& vfat_status : *diamondVFATStatus) {
668 detId_pot.setChannel(0);
669 for (
const auto&
status : vfat_status) {
678 for (
const auto& optorx : *fedInfo) {
680 potPlots_[detId_pot].ECCheck->Fill((
int)((optorx.lv1() & 0xFF) - ((
unsigned int)
status.ec() & 0xFF)) & 0xFF);
682 (
static_cast<uint8_t
>((optorx.lv1() & 0xFF) -
status.ec()) < 128))
685 if (detId.channel() == 6 || detId.channel() == 7)
686 potPlots_[detId_pot].HPTDCErrorFlags_2D->Fill(16, 2 * detId.plane() + (detId.channel() - 6));
689 <<
"FED " <<
CTPPS_FED_ID_56 <<
": ECError at EV: 0x" << std::hex << optorx.lv1() <<
"\t\tVFAT EC: 0x" 690 <<
static_cast<unsigned int>(
status.ec()) <<
"\twith ID: " <<
std::dec << detId
694 potPlots_[detId_pot].ECCheck->Fill((
int)((optorx.lv1() & 0xFF) -
status.ec()) & 0xFF);
696 (
static_cast<uint8_t
>((optorx.lv1() & 0xFF) -
status.ec()) < 128))
699 if (detId.channel() == 6 || detId.channel() == 7)
700 potPlots_[detId_pot].HPTDCErrorFlags_2D->Fill(16, 2 * detId.plane() + (detId.channel() - 6));
703 <<
"FED " <<
CTPPS_FED_ID_45 <<
": ECError at EV: 0x" << std::hex << optorx.lv1() <<
"\t\tVFAT EC: 0x" 704 <<
static_cast<unsigned int>(
status.ec()) <<
"\twith ID: " <<
std::dec << detId
713 std::unordered_map<unsigned int, std::set<unsigned int>> planes;
714 std::unordered_map<unsigned int, std::set<unsigned int>> planes_inclusive;
717 for (
const auto&
rechits : *diamondRecHits) {
720 detId_pot.setChannel(0);
723 for (
const auto& rechit :
rechits) {
724 planes_inclusive[detId_pot].insert(detId.plane());
728 planes[detId_pot].
insert(detId.plane());
733 float UFSDShift = 0.0;
734 if (rechit.yWidth() < 3)
738 TH2F* hitHistoTmp =
potPlots_[detId_pot].hitDistribution2d->getTH2F();
739 TAxis* hitHistoTmpYAxis = hitHistoTmp->GetYaxis();
742 for (
int i = 0;
i < numOfBins; ++
i) {
743 hitHistoTmp->Fill(detId.plane() + UFSDShift, hitHistoTmpYAxis->GetBinCenter(startBin +
i));
746 hitHistoTmp = lumiCache->hitDistribution2dMap[detId_pot].get();
747 hitHistoTmpYAxis = hitHistoTmp->GetYaxis();
750 for (
int i = 0;
i < numOfBins; ++
i) {
751 hitHistoTmp->Fill(detId.plane() + UFSDShift, hitHistoTmpYAxis->GetBinCenter(startBin +
i));
755 if (rechit.toT() != 0) {
757 potPlots_[detId_pot].leadingEdgeCumulative_both->Fill(rechit.time() + 25 * rechit.ootIndex());
758 potPlots_[detId_pot].timeOverThresholdCumulativePot->Fill(rechit.toT());
760 TH2F* hitHistoOOTTmp =
potPlots_[detId_pot].hitDistribution2dOOT->getTH2F();
761 TAxis* hitHistoOOTTmpYAxis = hitHistoOOTTmp->GetYaxis();
764 for (
int i = 0;
i < numOfBins; ++
i) {
765 hitHistoOOTTmp->Fill(detId.plane() + 0.25 * rechit.ootIndex(),
766 hitHistoOOTTmpYAxis->GetBinCenter(startBin +
i));
771 TH2F* hitHistoOOTTmp =
potPlots_[detId_pot].hitDistribution2dOOT_le->getTH2F();
772 TAxis* hitHistoOOTTmpYAxis = hitHistoOOTTmp->GetYaxis();
775 for (
int i = 0;
i < numOfBins; ++
i) {
776 hitHistoOOTTmp->Fill(detId.plane() + 0.25 * rechit.ootIndex(),
777 hitHistoOOTTmpYAxis->GetBinCenter(startBin +
i));
782 potPlots_[detId_pot].activity_per_bx.count(rechit.ootIndex()) > 0)
788 plt.second.activePlanes->Fill(planes[plt.first].size());
789 plt.second.activePlanesInclusive->Fill(planes_inclusive[plt.first].size());
793 for (
const auto&
tracks : *diamondLocalTracks) {
796 detId_pot.setChannel(0);
800 if (!
track.isValid())
806 if (potPlots_.find(detId_pot) == potPlots_.end())
809 TH2F* trackHistoOOTTmp = potPlots_[detId_pot].trackDistributionOOT->getTH2F();
810 TAxis* trackHistoOOTTmpYAxis = trackHistoOOTTmp->GetYaxis();
813 for (
int i = 0;
i < numOfBins; ++
i) {
814 trackHistoOOTTmp->Fill(
track.ootIndex(), trackHistoOOTTmpYAxis->GetBinCenter(startBin +
i));
818 TH1F* trackHistoInTimeTmp = potPlots_[detId_pot].trackDistribution->getTH1F();
821 for (
int i = 0;
i < numOfBins; ++
i) {
822 trackHistoInTimeTmp->Fill(trackHistoInTimeTmp->GetBinCenter(startBin +
i));
829 for (
const auto&
tracks : *diamondLocalTracks) {
832 detId_pot.setChannel(0);
836 std::set<int> planesInTrackSet;
837 for (
const auto& vec : *diamondRecHits) {
839 if (detid.arm() != detId_pot.arm())
842 for (
const auto&
hit : vec) {
846 planesInTrackSet.insert(detid.plane());
851 if (numOfHits > 0 && numOfHits <= 10 && planesInTrackSet.size() > 2) {
852 for (
int plane = 0; plane < 4; ++plane) {
853 for (
int channel = 0; channel < 12; ++channel) {
854 int map_index = plane * 100 + channel;
855 if (potPlots_[detId_pot].effDoublecountingChMap.find(map_index) ==
856 potPlots_[detId_pot].effDoublecountingChMap.end()) {
857 potPlots_[detId_pot].effTriplecountingChMap[map_index] = 0;
858 potPlots_[detId_pot].effDoublecountingChMap[map_index] = 0;
863 ++(potPlots_[detId_pot].effDoublecountingChMap[map_index]);
864 for (
const auto&
rechits : *diamondRecHits) {
866 if (detId_hit == detId) {
867 for (
const auto& rechit :
rechits) {
868 if (track.containsHit(rechit, 1)) {
870 ++(potPlots_[detId_pot].effTriplecountingChMap[map_index]);
883 for (
const auto&
rechits : *diamondRecHits) {
886 detId_pot.setChannel(0);
888 for (
const auto& rechit :
rechits) {
891 if (rechit.toT() == 0)
895 if (potPlots_.find(detId_pot) == potPlots_.end())
898 for (
const auto& ds : *pixelTracks) {
904 for (
const auto& lt : ds) {
905 if (lt.isValid() && pixId.arm() == detId_pot.arm()) {
907 potPlots_[detId_pot].pixelTomographyAll.count(rechit.ootIndex()) > 0 &&
910 .pixelTomographyAll.at(rechit.ootIndex())
948 std::unordered_map<unsigned int, unsigned int> channelsPerPlane;
949 for (
const auto& digis : *diamondDigis) {
952 for (
const auto& digi : digis) {
959 if (digi.leadingEdge() != 0) {
960 planePlots_[detId_plane].digiProfileCumulativePerPlane->Fill(detId.channel());
961 if (channelsPerPlane.find(detId_plane) != channelsPerPlane.end())
962 channelsPerPlane[detId_plane]++;
964 channelsPerPlane[detId_plane] = 0;
969 for (
const auto& plt : channelsPerPlane) {
970 planePlots_[plt.first].hit_multiplicity->Fill(plt.second);
974 for (
const auto&
rechits : *diamondRecHits) {
977 for (
const auto& rechit :
rechits) {
980 if (rechit.toT() == 0)
984 TH1F* hitHistoTmp =
planePlots_[detId_plane].hitProfile->getTH1F();
987 for (
int i = 0;
i < numOfBins; ++
i) {
988 hitHistoTmp->Fill(hitHistoTmp->GetBinCenter(startBin +
i));
996 for (
const auto& ds : *pixelTracks) {
1002 for (
const auto& lt : ds) {
1008 std::set<CTPPSDiamondDetId> planesWitHits_set;
1009 for (
const auto&
rechits : *diamondRecHits) {
1012 for (
const auto& rechit :
rechits) {
1020 planePlots_[detId_plane].pixelTomography_far->Fill(
1023 planesWitHits_set.insert(detId_plane);
1028 for (
auto& planeId : planesWitHits_set)
1039 for (
const auto& digis : *diamondDigis) {
1041 for (
const auto& digi : digis) {
1047 for (
unsigned short hptdcErrorIndex = 1; hptdcErrorIndex < 16; ++hptdcErrorIndex)
1048 if (hptdcErrors.
errorId(hptdcErrorIndex - 1))
1050 if (digi.multipleHit())
1054 if (digi.leadingEdge() != 0 || digi.trailingEdge() != 0) {
1056 if (digi.leadingEdge() != 0 && digi.trailingEdge() == 0) {
1060 if (digi.leadingEdge() == 0 && digi.trailingEdge() != 0) {
1064 if (digi.leadingEdge() != 0 && digi.trailingEdge() != 0) {
1076 for (
const auto&
rechits : *diamondRecHits) {
1078 for (
const auto& rechit :
rechits) {
1083 channelPlots_[detId].leadingEdgeCumulative_both->Fill(rechit.time() + 25 * rechit.ootIndex());
1084 channelPlots_[detId].TimeOverThresholdCumulativePerChannel->Fill(rechit.toT());
1086 ++(lumiCache->hitsCounterMap[detId]);
1090 channelPlots_[detId].activity_per_bx.count(rechit.ootIndex()) > 0)
1096 for (
const auto&
rechits : *diamondRecHits) {
1098 for (
const auto& rechit :
rechits) {
1103 if (!pixelTracks.isValid())
1108 for (
const auto& ds : *pixelTracks) {
1114 for (
const auto& lt : ds) {
1127 auto lumiCache = luminosityBlockCache(iLumi.
index());
1129 *(
plot.second.hitDistribution2d_lumisection->getTH2F()) = *(lumiCache->hitDistribution2dMap[
plot.first]);
1132 auto hitsCounterPerLumisection = lumiCache->hitsCounterMap[
plot.first];
1133 if (hitsCounterPerLumisection != 0) {
1137 double HundredOverHitCounter = .0;
1138 if (
plot.second.HitCounter != 0)
1139 HundredOverHitCounter = 100. /
plot.second.HitCounter;
1140 plot.second.HPTDCErrorFlags->setBinContent(16, HundredOverHitCounter *
plot.second.MHCounter);
1141 plot.second.leadingWithoutTrailing->setBinContent(1, HundredOverHitCounter *
plot.second.LeadingOnlyCounter);
1142 plot.second.leadingWithoutTrailing->setBinContent(2, HundredOverHitCounter *
plot.second.TrailingOnlyCounter);
1143 plot.second.leadingWithoutTrailing->setBinContent(3, HundredOverHitCounter *
plot.second.CompleteCounter);
1146 for (
auto&
plot : potPlots_) {
1147 double HundredOverHitCounterPot = 0.;
1148 if (
plot.second.HitCounter != 0)
1149 HundredOverHitCounterPot = 100. /
plot.second.HitCounter;
1150 plot.second.leadingWithoutTrailingCumulativePot->setBinContent(
1151 1, HundredOverHitCounterPot *
plot.second.LeadingOnlyCounter);
1152 plot.second.leadingWithoutTrailingCumulativePot->setBinContent(
1153 2, HundredOverHitCounterPot *
plot.second.TrailingOnlyCounter);
1154 plot.second.leadingWithoutTrailingCumulativePot->setBinContent(
1155 3, HundredOverHitCounterPot *
plot.second.CompleteCounter);
1157 plot.second.MHComprensive->Reset();
1159 for (
auto& chPlot : channelPlots_) {
1161 if (chId.
arm() == rpId.
arm() && chId.
rp() == rpId.
rp()) {
1162 plot.second.MHComprensive->Fill(chId.
plane(), chId.
channel(), chPlot.second.HPTDCErrorFlags->getBinContent(16));
1168 for (
auto&
plot : potPlots_) {
1169 plot.second.EfficiencyOfChannelsInPot->Reset();
1170 for (
auto& element :
plot.second.effTriplecountingChMap) {
1171 if (
plot.second.effDoublecountingChMap[element.first] > 0) {
1172 int plane = element.first / 100;
1173 int channel = element.first % 100;
1174 double counted = element.second;
1175 double total =
plot.second.effDoublecountingChMap[element.first];
1179 plot.second.EfficiencyOfChannelsInPot->Fill(plane, channel, 100 * efficiency);
1186 TH2F* hitHistoTmp =
plot.second.EfficiencyWRTPixelsInPlane->getTH2F();
1191 hitHistoTmp->Divide(&(
plot.second.pixelTracksMapWithDiamonds), &(potPlots_[detId_pot].pixelTracksMap));
static const int CTPPS_FED_ID_56
void analyze(const edm::Event &, const edm::EventSetup &) override
OptoRx headers and footers.
plots related to one Diamond plane
MonitorElement * TimeOverThresholdCumulativePerChannel
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX)
T getParameter(std::string const &) const
MonitorElement * timeOverThresholdCumulativePot
plots related to one Diamond detector package
edm::EDGetTokenT< edm::DetSetVector< CTPPSDiamondRecHit > > tokenDiamondHit_
Translation translation() const
MonitorElement * activePlanes
~CTPPSDiamondDQMSource() override
edm::EDGetTokenT< std::vector< TotemFEDInfo > > tokenFEDInfo_
static const int CHANNEL_OF_VFAT_CLOCK
TH2F pixelTracksMapWithDiamonds
std::map< int, int > effDoublecountingChMap
bool contains(EventRange const &lh, EventID const &rh)
static const double DISPLAY_RESOLUTION_FOR_HITS_MM
LuminosityBlockIndex index() const
static const int CTPPS_DIAMOND_NUM_OF_PLANES
void setPlane(uint32_t channel)
MonitorElement * leadingEdgeCumulative_le
Reconstructed hit in diamond detectors.
void setCurrentFolder(std::string const &fullpath)
void setChannel(uint32_t channel)
void channelName(std::string &name, NameFlag flag=nFull) const
MonitorElement * leadingEdgeCumulative_le
void dqmBeginRun(const edm::Run &, const edm::EventSetup &) override
MonitorElement * MHComprensive
CTPPSDiamondDQMSource(const edm::ParameterSet &)
static const int CTPPS_NUM_OF_ARMS
MonitorElement * trailingEdgeCumulative_te
plots related to the whole system
MonitorElement * digiProfileCumulativePerPlane
int bunchCrossing() const
MonitorElement * leadingEdgeCumulative_all
MonitorElement * EfficiencyWRTPixelsInPlane
MonitorElement * trailingEdgeCumulative_te
static const int CTPPS_DIAMOND_NUM_OF_CHANNELS
MonitorElement * leadingTrailingCorrelationPot
double horizontalShiftOfDiamond_
example_stream void analyze(const edm::Event &, const edm::EventSetup &) override
edm::EDGetTokenT< edm::DetSetVector< CTPPSDiamondLocalTrack > > tokenDiamondTrack_
Event setup record containing the real (actual) geometry information.
MonitorElement * leadingWithoutTrailingCumulativePot
edm::EDGetTokenT< edm::DetSetVector< CTPPSPixelLocalTrack > > tokenPixelTrack_
static const int CTPPS_PIXEL_STATION_ID
void globalEndLuminosityBlock(const edm::LuminosityBlock &, const edm::EventSetup &) override
std::unordered_map< unsigned int, MonitorElement * > pixelTomographyAll
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
static const int CTPPS_DIAMOND_STATION_ID
static std::string hptdcErrorName(const unsigned short id)
void dqmEndRun(const edm::Run &, const edm::EventSetup &) override
std::vector< std::pair< edm::EventRange, int > > runParameters_
MonitorElement * hitDistribution2d
MonitorElement * EfficiencyOfChannelsInPot
MonitorElement * hitProfile
#define DEFINE_FWK_MODULE(type)
edm::EDGetTokenT< edm::DetSetVector< CTPPSDiamondDigi > > tokenDigi_
void bookHistograms(DQMStore::IBooker &, const edm::Run &, const edm::EventSetup &) override
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
static const int CTPPS_NEAR_RP_ID
std::unordered_map< unsigned int, ChannelPlots > channelPlots_
edm::EDGetTokenT< edm::DetSetVector< TotemVFATStatus > > tokenStatus_
MonitorElement * pixelTomography_far
Geometrical description of a sensor.
Abs< T >::type abs(const T &t)
void rpName(std::string &name, NameFlag flag=nFull) const
std::unordered_map< unsigned int, std::unique_ptr< TH2F > > hitDistribution2dMap
plots related to one Diamond channel
double horizontalShiftBwDiamondPixels_
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)
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
static const double HPTDC_BIN_WIDTH_NS
static const double INV_DISPLAY_RESOLUTION_FOR_HITS_MM
MonitorElement * hit_multiplicity
unsigned int TrailingOnlyCounter
MonitorElement * HPTDCErrorFlags_2D
example_stream void bookHistograms(DQMStore::IBooker &,@example_stream edm::Run const &,@example_stream edm::EventSetup const &) override
void planeName(std::string &name, NameFlag flag=nFull) const
std::unordered_map< unsigned int, MonitorElement * > activity_per_bx
MonitorElement * LeadingTrailingCorrelationPerChannel
MonitorElement * leadingEdgeCumulative_both
std::shared_ptr< dds::Cache > globalBeginLuminosityBlock(const edm::LuminosityBlock &, const edm::EventSetup &) const override
bool channelAlignedWithTrack(const CTPPSGeometry *geom, const CTPPSDiamondDetId &detid, const CTPPSDiamondLocalTrack &localTrack, const float tolerance=1)
MonitorElement * leadingWithoutTrailing
std::unordered_map< unsigned int, PotPlots > potPlots_
static constexpr int TIMESLICE_WITHOUT_LEADING
unsigned int TrailingOnlyCounter
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
bool errorId(unsigned short id) const
static const int CTPPS_FAR_RP_ID
static const double SEC_PER_LUMI_SECTION
std::vector< double > params() const
std::map< int, int > effTriplecountingChMap
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
MonitorElement * hitDistribution2dOOT_le
std::unordered_map< unsigned int, MonitorElement * > activity_per_bx
bool excludeMultipleHits_
MonitorElement * hitDistribution2dOOT
static const int CTPPS_DIAMOND_RP_ID
MonitorElement * leadingEdgeCumulative_both
static const int CTPPS_FED_ID_45
T const * product() const
std::unordered_map< unsigned int, unsigned long > hitsCounterMap
MonitorElement * hit_rate
MonitorElement * activePlanesInclusive