50 x_width = 2.0 * det->
params().at(0);
136 MonitorElement *leadingEdgeCumulative_both =
nullptr, *leadingEdgeCumulative_all =
nullptr,
137 *leadingEdgeCumulative_le =
nullptr, *trailingEdgeCumulative_te =
nullptr;
138 MonitorElement *timeOverThresholdCumulativePot =
nullptr, *leadingTrailingCorrelationPot =
nullptr;
187 MonitorElement *leadingEdgeCumulative_both =
nullptr, *leadingEdgeCumulative_le =
nullptr,
188 *trailingEdgeCumulative_te =
nullptr;
232 LeadingOnlyCounter(0),
233 TrailingOnlyCounter(0),
235 pixelTracksMap(
"Pixel track maps for efficiency",
"Pixel track maps for efficiency", 25, 0, 25, 12, -2, 10) {
243 ibooker.
book1D(
"activity per BX 0 25", title +
" Activity per BX 0 - 25 ns;Event.BX", 3600, -1.5, 3598. + 0.5);
245 ibooker.
book1D(
"activity per BX 25 50", title +
" Activity per BX 25 - 50 ns;Event.BX", 3600, -1.5, 3598. + 0.5);
247 ibooker.
book1D(
"activity per BX 50 75", title +
" Activity per BX 50 - 75 ns;Event.BX", 3600, -1.5, 3598. + 0.5);
250 title +
" hits in planes;plane number;x (mm)",
258 title +
" hits in planes in the last lumisection;plane number;x (mm)",
266 title +
" hits with OOT in planes;plane number + 0.25 OOT;x (mm)",
274 title +
" hits with OOT in planes (le only);plane number + 0.25 OOT;x (mm)",
282 ibooker.
book1D(
"active planes", title +
" active planes (per event);number of active planes", 6, -0.5, 5.5);
284 ibooker.
book1D(
"active planes inclusive",
285 title +
" active planes, MH and le only included (per event);number of active planes",
293 title +
" tracks with OOT;plane number;x (mm)",
302 ibooker.
book2D(
"tomography pixel 0 25",
303 title +
" tomography with pixel 0 - 25 ns (all planes);x + 25*plane(mm);y (mm)",
311 ibooker.
book2D(
"tomography pixel 25 50",
312 title +
" tomography with pixel 25 - 50 ns (all planes);x + 25*plane(mm);y (mm)",
320 ibooker.
book2D(
"tomography pixel 50 75",
321 title +
" tomography with pixel 50 - 75 ns (all planes);x + 25*plane(mm);y (mm)",
330 "leading edge (le and te)", title +
" leading edge (le and te) (recHits); leading edge (ns)", 75, 0, 75);
332 "leading edge (all)", title +
" leading edge (with or without te) (DIGIs); leading edge (ns)", 75, 0, 75);
334 ibooker.
book1D(
"leading edge (le only)", title +
" leading edge (le only) (DIGIs); leading edge (ns)", 75, 0, 75);
336 "trailing edge (te only)", title +
" trailing edge (te only) (DIGIs); trailing edge (ns)", 75, 0, 75);
338 ibooker.
book1D(
"time over threshold", title +
" time over threshold;time over threshold (ns)", 250, -25, 100);
340 ibooker.
book2D(
"leading trailing correlation",
341 title +
" leading trailing correlation;leading edge (ns);trailing edge (ns)",
350 ibooker.
book1D(
"event category", title +
" leading edges without trailing;;%", 3, 0.5, 3.5);
355 ECCheck = ibooker.
book1D(
"optorxEC(8bit) - vfatEC", title +
" EC Error;optorxEC-vfatEC", 50, -25, 25);
358 for (
unsigned short error_index = 1; error_index < 16; ++error_index)
374 ibooker.
book2D(
"MH in channels", title +
" MH (%) in channels;plane number;ch number", 10, -0.5, 4.5, 14, -1, 13);
377 ibooker.
book2D(
"Efficiency in channels",
378 title +
" Efficiency (%) in channels (diamonds only);plane number;ch number",
396 : pixelTracksMapWithDiamonds(
"Pixel track maps for efficiency with coincidence",
397 "Pixel track maps for efficiency with coincidence",
413 hit_multiplicity = ibooker.
book1D(
"channels per plane", title +
" channels per plane; ch per plane", 13, -0.5, 12.5);
416 ibooker.
book2D(
"tomography pixel", title +
" tomography with pixel;x + 25 OOT (mm);y (mm)", 75, 0, 75, 8, 0, 8);
418 ibooker.
book2D(
"Efficiency wrt pixels", title +
" Efficiency wrt pixels;x (mm);y (mm)", 25, 0, 25, 12, -2, 10);
424 : HitCounter(0), MHCounter(0), LeadingOnlyCounter(0), TrailingOnlyCounter(0), CompleteCounter(0) {
437 ibooker.
book1D(
"activity per BX 0 25", title +
" Activity per BX 0 - 25 ns;Event.BX", 500, -1.5, 498. + 0.5);
439 ibooker.
book1D(
"activity per BX 25 50", title +
" Activity per BX 25 - 50 ns;Event.BX", 500, -1.5, 498. + 0.5);
441 ibooker.
book1D(
"activity per BX 50 75", title +
" Activity per BX 50 - 75 ns;Event.BX", 500, -1.5, 498. + 0.5);
444 for (
unsigned short error_index = 1; error_index < 16; ++error_index)
450 ibooker.
book1D(
"leading edge (le and te)", title +
" leading edge (recHits); leading edge (ns)", 75, 0, 75);
452 ibooker.
book1D(
"leading edge (le only)", title +
" leading edge (DIGIs); leading edge (ns)", 75, 0, 75);
454 "trailing edge (te only)", title +
" trailing edge (te only) (DIGIs); trailing edge (ns)", 75, 0, 75);
456 ibooker.
book1D(
"time over threshold", title +
" time over threshold;time over threshold (ns)", 75, -25, 50);
458 ibooker.
book2D(
"leading trailing correlation",
459 title +
" leading trailing correlation;leading edge (ns);trailing edge (ns)",
468 ibooker.
book2D(
"tomography pixel",
"tomography with pixel;x + 25 OOT (mm);y (mm)", 75, 0, 75, 8, 0, 8);
470 hit_rate = ibooker.
book1D(
"hit rate", title +
"hit rate;rate (Hz)", 40, 0, 20);
487 verbosity_(ps.getUntrackedParameter<unsigned
int>(
"verbosity", 0)),
490 for (
const auto&
pset : ps.
getParameter<std::vector<edm::ParameterSet>>(
"offsetsOOT")) {
521 if (iRun.
run() > 300000) {
553 auto d = std::make_shared<dds::Cache>();
554 d->hitDistribution2dMap.reserve(
potPlots_.size());
556 d->hitDistribution2dMap[
plot.first] =
557 std::unique_ptr<TH2F>(
static_cast<TH2F*
>(
plot.second.hitDistribution2d_lumisection->getTH2F()->Clone()));
588 valid &= diamondVFATStatus.
isValid();
589 valid &= pixelTracks.
isValid();
590 valid &= diamondDigis.
isValid();
592 valid &= diamondRecHits.
isValid();
593 valid &= diamondLocalTracks.
isValid();
598 <<
"ERROR in CTPPSDiamondDQMSource::analyze > some of the required inputs are not valid. Skipping this " 600 <<
" diamondVFATStatus.isValid = " << diamondVFATStatus.
isValid() <<
"\n" 601 <<
" pixelTracks.isValid = " << pixelTracks.
isValid() <<
"\n" 602 <<
" diamondDigis.isValid = " << diamondDigis.
isValid() <<
"\n" 603 <<
" fedInfo.isValid = " << fedInfo.
isValid() <<
"\n" 604 <<
" diamondRecHits.isValid = " << diamondRecHits.
isValid() <<
"\n" 605 <<
" diamondLocalTracks.isValid = " << diamondLocalTracks.
isValid();
620 for (
const auto& digis : *diamondDigis) {
624 for (
const auto& digi : digis) {
626 detId_pot.setChannel(0);
632 if (digi.getLeadingEdge() != 0 || digi.getTrailingEdge() != 0) {
634 if (digi.getLeadingEdge() != 0) {
637 if (digi.getLeadingEdge() != 0 && digi.getTrailingEdge() == 0) {
638 ++(
potPlots_[detId_pot].LeadingOnlyCounter);
641 if (digi.getLeadingEdge() == 0 && digi.getTrailingEdge() != 0) {
642 ++(
potPlots_[detId_pot].TrailingOnlyCounter);
645 if (digi.getLeadingEdge() != 0 && digi.getTrailingEdge() != 0) {
646 ++(
potPlots_[detId_pot].CompleteCounter);
654 if (detId.channel() == 6 || detId.channel() == 7)
656 int verticalIndex = 2 * detId.plane() + (detId.channel() - 6);
657 for (
unsigned short hptdcErrorIndex = 1; hptdcErrorIndex < 16; ++hptdcErrorIndex)
658 if (hptdcErrors.
getErrorId(hptdcErrorIndex - 1))
659 potPlots_[detId_pot].HPTDCErrorFlags_2D->Fill(hptdcErrorIndex, verticalIndex);
661 if (digi.getMultipleHit())
667 for (
const auto& vfat_status : *diamondVFATStatus) {
671 detId_pot.setChannel(0);
672 for (
const auto&
status : vfat_status) {
681 for (
const auto& optorx : *fedInfo) {
683 potPlots_[detId_pot].ECCheck->Fill((
int)((optorx.getLV1() & 0xFF) - ((
unsigned int)
status.getEC() & 0xFF)) &
686 (
static_cast<uint8_t
>((optorx.getLV1() & 0xFF) -
status.getEC()) < 128))
688 static_cast<int>(optorx.getLV1() & 0xFF) - (static_cast<unsigned int>(
status.getEC()) & 0xFF);
690 if (detId.channel() == 6 || detId.channel() == 7)
691 potPlots_[detId_pot].HPTDCErrorFlags_2D->Fill(16, 2 * detId.plane() + (detId.channel() - 6));
694 <<
"FED " <<
CTPPS_FED_ID_56 <<
": ECError at EV: 0x" << std::hex << optorx.getLV1()
695 <<
"\t\tVFAT EC: 0x" <<
static_cast<unsigned int>(
status.getEC()) <<
"\twith ID: " <<
std::dec 699 potPlots_[detId_pot].ECCheck->Fill((
int)((optorx.getLV1() & 0xFF) -
status.getEC()) & 0xFF);
701 (
static_cast<uint8_t
>((optorx.getLV1() & 0xFF) -
status.getEC()) < 128))
703 static_cast<int>(optorx.getLV1() & 0xFF) - (static_cast<unsigned int>(
status.getEC()) & 0xFF);
705 if (detId.channel() == 6 || detId.channel() == 7)
706 potPlots_[detId_pot].HPTDCErrorFlags_2D->Fill(16, 2 * detId.plane() + (detId.channel() - 6));
709 <<
"FED " <<
CTPPS_FED_ID_45 <<
": ECError at EV: 0x" << std::hex << optorx.getLV1()
710 <<
"\t\tVFAT EC: 0x" <<
static_cast<unsigned int>(
status.getEC()) <<
"\twith ID: " <<
std::dec 719 std::unordered_map<unsigned int, std::set<unsigned int>> planes;
720 std::unordered_map<unsigned int, std::set<unsigned int>> planes_inclusive;
723 for (
const auto&
rechits : *diamondRecHits) {
726 detId_pot.setChannel(0);
729 for (
const auto& rechit :
rechits) {
730 planes_inclusive[detId_pot].insert(detId.plane());
734 planes[detId_pot].
insert(detId.plane());
739 float UFSDShift = 0.0;
740 if (rechit.getYWidth() < 3)
744 TH2F* hitHistoTmp =
potPlots_[detId_pot].hitDistribution2d->getTH2F();
745 TAxis* hitHistoTmpYAxis = hitHistoTmp->GetYaxis();
748 for (
int i = 0;
i < numOfBins; ++
i) {
749 hitHistoTmp->Fill(detId.plane() + UFSDShift, hitHistoTmpYAxis->GetBinCenter(startBin +
i));
752 hitHistoTmp = lumiCache->hitDistribution2dMap[detId_pot].get();
753 hitHistoTmpYAxis = hitHistoTmp->GetYaxis();
756 for (
int i = 0;
i < numOfBins; ++
i) {
757 hitHistoTmp->Fill(detId.plane() + UFSDShift, hitHistoTmpYAxis->GetBinCenter(startBin +
i));
761 if (rechit.getToT() != 0) {
763 potPlots_[detId_pot].leadingEdgeCumulative_both->Fill(rechit.getT() + 25 * rechit.getOOTIndex());
764 potPlots_[detId_pot].timeOverThresholdCumulativePot->Fill(rechit.getToT());
766 TH2F* hitHistoOOTTmp =
potPlots_[detId_pot].hitDistribution2dOOT->getTH2F();
767 TAxis* hitHistoOOTTmpYAxis = hitHistoOOTTmp->GetYaxis();
771 for (
int i = 0;
i < numOfBins; ++
i) {
772 hitHistoOOTTmp->Fill(detId.plane() + 0.25 * rechit.getOOTIndex(),
773 hitHistoOOTTmpYAxis->GetBinCenter(startBin +
i));
778 TH2F* hitHistoOOTTmp =
potPlots_[detId_pot].hitDistribution2dOOT_le->getTH2F();
779 TAxis* hitHistoOOTTmpYAxis = hitHistoOOTTmp->GetYaxis();
783 for (
int i = 0;
i < numOfBins; ++
i) {
784 hitHistoOOTTmp->Fill(detId.plane() + 0.25 * rechit.getOOTIndex(),
785 hitHistoOOTTmpYAxis->GetBinCenter(startBin +
i));
790 potPlots_[detId_pot].activity_per_bx.count(rechit.getOOTIndex()) > 0)
796 plt.second.activePlanes->Fill(planes[plt.first].size());
797 plt.second.activePlanesInclusive->Fill(planes_inclusive[plt.first].size());
801 for (
const auto&
tracks : *diamondLocalTracks) {
804 detId_pot.setChannel(0);
808 if (!
track.isValid())
814 if (potPlots_.find(detId_pot) == potPlots_.end())
817 TH2F* trackHistoOOTTmp = potPlots_[detId_pot].trackDistributionOOT->getTH2F();
818 TAxis* trackHistoOOTTmpYAxis = trackHistoOOTTmp->GetYaxis();
821 for (
int i = 0;
i < numOfBins; ++
i) {
822 trackHistoOOTTmp->Fill(
track.getOOTIndex(), trackHistoOOTTmpYAxis->GetBinCenter(startBin +
i));
826 TH1F* trackHistoInTimeTmp = potPlots_[detId_pot].trackDistribution->getTH1F();
829 for (
int i = 0;
i < numOfBins; ++
i) {
830 trackHistoInTimeTmp->Fill(trackHistoInTimeTmp->GetBinCenter(startBin +
i));
837 for (
const auto&
tracks : *diamondLocalTracks) {
840 detId_pot.setChannel(0);
844 std::set<int> planesInTrackSet;
845 for (
const auto& vec : *diamondRecHits) {
847 if (detid.arm() != detId_pot.arm())
850 for (
const auto&
hit : vec) {
854 planesInTrackSet.insert(detid.plane());
859 if (numOfHits > 0 && numOfHits <= 10 && planesInTrackSet.size() > 2) {
860 for (
int plane = 0; plane < 4; ++plane) {
861 for (
int channel = 0; channel < 12; ++channel) {
862 int map_index = plane * 100 + channel;
863 if (potPlots_[detId_pot].effDoublecountingChMap.find(map_index) ==
864 potPlots_[detId_pot].effDoublecountingChMap.end()) {
865 potPlots_[detId_pot].effTriplecountingChMap[map_index] = 0;
866 potPlots_[detId_pot].effDoublecountingChMap[map_index] = 0;
871 ++(potPlots_[detId_pot].effDoublecountingChMap[map_index]);
872 for (
const auto&
rechits : *diamondRecHits) {
874 if (detId_hit == detId) {
875 for (
const auto& rechit :
rechits) {
876 if (track.containsHit(rechit, 1)) {
878 ++(potPlots_[detId_pot].effTriplecountingChMap[map_index]);
891 for (
const auto&
rechits : *diamondRecHits) {
894 detId_pot.setChannel(0);
896 for (
const auto& rechit :
rechits) {
899 if (rechit.getToT() == 0)
903 if (potPlots_.find(detId_pot) == potPlots_.end())
906 for (
const auto& ds : *pixelTracks) {
912 for (
const auto& lt : ds) {
913 if (lt.isValid() && pixId.arm() == detId_pot.arm()) {
915 potPlots_[detId_pot].pixelTomographyAll.count(rechit.getOOTIndex()) > 0 &&
918 .pixelTomographyAll.at(rechit.getOOTIndex())
956 std::unordered_map<unsigned int, unsigned int> channelsPerPlane;
957 for (
const auto& digis : *diamondDigis) {
960 for (
const auto& digi : digis) {
967 if (digi.getLeadingEdge() != 0) {
968 planePlots_[detId_plane].digiProfileCumulativePerPlane->Fill(detId.channel());
969 if (channelsPerPlane.find(detId_plane) != channelsPerPlane.end())
970 channelsPerPlane[detId_plane]++;
972 channelsPerPlane[detId_plane] = 0;
977 for (
const auto& plt : channelsPerPlane) {
978 planePlots_[plt.first].hit_multiplicity->Fill(plt.second);
982 for (
const auto&
rechits : *diamondRecHits) {
985 for (
const auto& rechit :
rechits) {
988 if (rechit.getToT() == 0)
992 TH1F* hitHistoTmp =
planePlots_[detId_plane].hitProfile->getTH1F();
995 for (
int i = 0;
i < numOfBins; ++
i) {
996 hitHistoTmp->Fill(hitHistoTmp->GetBinCenter(startBin +
i));
1004 for (
const auto& ds : *pixelTracks) {
1010 for (
const auto& lt : ds) {
1016 std::set<CTPPSDiamondDetId> planesWitHits_set;
1017 for (
const auto&
rechits : *diamondRecHits) {
1020 for (
const auto& rechit :
rechits) {
1028 planePlots_[detId_plane].pixelTomography_far->Fill(
1031 planesWitHits_set.insert(detId_plane);
1036 for (
auto& planeId : planesWitHits_set)
1048 for (
const auto& digis : *diamondDigis) {
1050 for (
const auto& digi : digis) {
1056 for (
unsigned short hptdcErrorIndex = 1; hptdcErrorIndex < 16; ++hptdcErrorIndex)
1057 if (hptdcErrors.
getErrorId(hptdcErrorIndex - 1))
1059 if (digi.getMultipleHit())
1063 if (digi.getLeadingEdge() != 0 || digi.getTrailingEdge() != 0) {
1065 if (digi.getLeadingEdge() != 0 && digi.getTrailingEdge() == 0) {
1069 if (digi.getLeadingEdge() == 0 && digi.getTrailingEdge() != 0) {
1073 if (digi.getLeadingEdge() != 0 && digi.getTrailingEdge() != 0) {
1075 channelPlots_[detId].LeadingTrailingCorrelationPerChannel->Fill(
1085 for (
const auto&
rechits : *diamondRecHits) {
1087 for (
const auto& rechit :
rechits) {
1092 channelPlots_[detId].leadingEdgeCumulative_both->Fill(rechit.getT() + 25 * rechit.getOOTIndex());
1093 channelPlots_[detId].TimeOverThresholdCumulativePerChannel->Fill(rechit.getToT());
1095 ++(lumiCache->hitsCounterMap[detId]);
1099 channelPlots_[detId].activity_per_bx.count(rechit.getOOTIndex()) > 0)
1105 for (
const auto&
rechits : *diamondRecHits) {
1107 for (
const auto& rechit :
rechits) {
1112 if (!pixelTracks.isValid())
1117 for (
const auto& ds : *pixelTracks) {
1123 for (
const auto& lt : ds) {
1136 auto lumiCache = luminosityBlockCache(iLumi.
index());
1138 *(
plot.second.hitDistribution2d_lumisection->getTH2F()) = *(lumiCache->hitDistribution2dMap[
plot.first]);
1141 auto hitsCounterPerLumisection = lumiCache->hitsCounterMap[
plot.first];
1142 if (hitsCounterPerLumisection != 0) {
1146 double HundredOverHitCounter = .0;
1147 if (
plot.second.HitCounter != 0)
1148 HundredOverHitCounter = 100. /
plot.second.HitCounter;
1149 plot.second.HPTDCErrorFlags->setBinContent(16, HundredOverHitCounter *
plot.second.MHCounter);
1150 plot.second.leadingWithoutTrailing->setBinContent(1, HundredOverHitCounter *
plot.second.LeadingOnlyCounter);
1151 plot.second.leadingWithoutTrailing->setBinContent(2, HundredOverHitCounter *
plot.second.TrailingOnlyCounter);
1152 plot.second.leadingWithoutTrailing->setBinContent(3, HundredOverHitCounter *
plot.second.CompleteCounter);
1155 for (
auto&
plot : potPlots_) {
1156 double HundredOverHitCounterPot = 0.;
1157 if (
plot.second.HitCounter != 0)
1158 HundredOverHitCounterPot = 100. /
plot.second.HitCounter;
1159 plot.second.leadingWithoutTrailingCumulativePot->setBinContent(
1160 1, HundredOverHitCounterPot *
plot.second.LeadingOnlyCounter);
1161 plot.second.leadingWithoutTrailingCumulativePot->setBinContent(
1162 2, HundredOverHitCounterPot *
plot.second.TrailingOnlyCounter);
1163 plot.second.leadingWithoutTrailingCumulativePot->setBinContent(
1164 3, HundredOverHitCounterPot *
plot.second.CompleteCounter);
1166 plot.second.MHComprensive->Reset();
1168 for (
auto& chPlot : channelPlots_) {
1170 if (chId.
arm() == rpId.
arm() && chId.
rp() == rpId.
rp()) {
1171 plot.second.MHComprensive->Fill(chId.
plane(), chId.
channel(), chPlot.second.HPTDCErrorFlags->getBinContent(16));
1177 for (
auto&
plot : potPlots_) {
1178 plot.second.EfficiencyOfChannelsInPot->Reset();
1179 for (
auto& element :
plot.second.effTriplecountingChMap) {
1180 if (
plot.second.effDoublecountingChMap[element.first] > 0) {
1181 int plane = element.first / 100;
1182 int channel = element.first % 100;
1183 double counted = element.second;
1184 double total =
plot.second.effDoublecountingChMap[element.first];
1188 plot.second.EfficiencyOfChannelsInPot->Fill(plane, channel, 100 * efficiency);
1195 TH2F* hitHistoTmp =
plot.second.EfficiencyWRTPixelsInPlane->getTH2F();
1200 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
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 endRun(const edm::Run &, const edm::EventSetup &) override
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 &)
bool getErrorId(unsigned short id) const
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
static const int CTPPS_DIAMOND_STATION_ID
const DetGeomDesc * getSensor(unsigned int id) const
returns geometry of a detector performs necessary checks, returns NULL if fails
std::vector< std::pair< edm::EventRange, int > > runParameters_
MonitorElement * hitDistribution2d
MonitorElement * EfficiencyOfChannelsInPot
MonitorElement * hitProfile
#define DEFINE_FWK_MODULE(type)
void setCurrentFolder(std::string const &fullpath)
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.
MonitorElement * book1D(Args &&...args)
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)
The manager class for TOTEM RP geometry.
MonitorElement * trackDistribution
static const double HPTDC_BIN_WIDTH_NS
static const double INV_DISPLAY_RESOLUTION_FOR_HITS_MM
MonitorElement * book2D(Args &&...args)
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
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 std::string getHPTDCErrorName(const unsigned short id)
static const int CTPPS_FED_ID_45
T const * product() const
std::unordered_map< unsigned int, unsigned long > hitsCounterMap
MonitorElement * hit_rate
MonitorElement * activePlanesInclusive