117 MonitorElement* leadingEdgeCumulative_both =
nullptr, *leadingEdgeCumulative_le =
nullptr, *trailingEdgeCumulative_te =
nullptr;
118 MonitorElement* timeOverThresholdCumulativePot =
nullptr, *leadingTrailingCorrelationPot =
nullptr;
164 MonitorElement* leadingEdgeCumulative_both =
nullptr, *leadingEdgeCumulative_le =
nullptr, *trailingEdgeCumulative_te =
nullptr;
206 h_trackCorr_hor = ibooker.
book2D(
"track correlation all hor",
"rp, all, hor", 6, -0.5, 5.5, 6, -0.5, 5.5 );
208 TAxis* xa = hist->GetXaxis(), *ya = hist->GetYaxis();
209 xa->SetBinLabel( 6,
"45, 210, near" ); ya->SetBinLabel( 1,
"45, 210, near" );
210 xa->SetBinLabel( 5,
"45, 210, far" ); ya->SetBinLabel( 2,
"45, 210, far" );
211 xa->SetBinLabel( 4,
"45, 220, cyl" ); ya->SetBinLabel( 3,
"45, 220, cyl" );
212 xa->SetBinLabel( 3,
"56, 210, near" ); ya->SetBinLabel( 4,
"56, 210, near" );
213 xa->SetBinLabel( 2,
"56, 210, far" ); ya->SetBinLabel( 5,
"56, 210, far" );
214 xa->SetBinLabel( 1,
"56, 220, cyl" ); ya->SetBinLabel( 6,
"56, 220, cyl" );
228 activity_per_bx_0_25 = ibooker.
book1D(
"activity per BX 0 25", title+
" Activity per BX 0 - 25 ns;Event.BX", 3600, -1.5, 3598. + 0.5 );
230 activity_per_bx_25_50 = ibooker.
book1D(
"activity per BX 25 50", title+
" Activity per BX 25 - 50 ns;Event.BX", 3600, -1.5, 3598. + 0.5 );
232 activity_per_bx_50_75 = ibooker.
book1D(
"activity per BX 50 75", title+
" Activity per BX 50 - 75 ns;Event.BX", 3600, -1.5, 3598. + 0.5 );
239 activePlanes = ibooker.
book1D(
"active planes", title+
" active planes (per event);number of active planes", 6, -0.5, 5.5 );
240 activePlanesInclusive = ibooker.
book1D(
"active planes inclusive", title+
" active planes, MH and le only included (per event);number of active planes", 6, -0.5, 5.5 );
245 stripTomographyAllFar_0_25 = ibooker.
book2D(
"tomography all far 0 25", title+
" tomography with strips far 0 - 25 ns (all planes);x + 25*plane(mm);y (mm)", 100, 0, 100, 12, -2, 10 );
247 stripTomographyAllFar_25_50 = ibooker.
book2D(
"tomography all far 25 50", title+
" tomography with strips far 25 - 50 ns (all planes);x + 25*plane(mm);y (mm)", 100, 0, 100, 12, -2, 10 );
249 stripTomographyAllFar_50_75 = ibooker.
book2D(
"tomography all far 50 75", title+
" tomography with strips far 50 - 75 ns (all planes);x + 25*plane(mm);y (mm)", 100, 0, 100, 12, -2, 10 );
256 leadingTrailingCorrelationPot = ibooker.
book2D(
"leading trailing correlation", title+
" leading trailing correlation;leading edge (ns);trailing edge (ns)", 75, 0, 75, 75, 0, 75 );
263 ECCheck = ibooker.
book1D(
"optorxEC(8bit) - vfatEC", title+
" EC Error;optorxEC-vfatEC", 128, -64, 64 );
266 for (
unsigned short error_index=1; error_index<16; ++error_index )
270 MHComprensive = ibooker.
book2D(
"MH in channels", title+
" MH (%) in channels;plane number;ch number", 10, -0.5, 4.5, 14, -1, 13 );
273 clock_Digi1_le = ibooker.
book1D(
"clock1 leading edge", title+
" clock1;leading edge (ns)", 1250, 0, 125 );
274 clock_Digi1_te = ibooker.
book1D(
"clock1 trailing edge", title+
" clock1;trailing edge (ns)", 75, 0, 75 );
275 clock_Digi3_le = ibooker.
book1D(
"clock3 leading edge", title+
" clock3;leading edge (ns)", 1250, 0, 125 );
276 clock_Digi3_te = ibooker.
book1D(
"clock3 trailing edge", title+
" clock3;trailing edge (ns)", 75, 0, 75 );
289 digiProfileCumulativePerPlane = ibooker.
book1D(
"digi profile", title+
" digi profile; ch number", 12, -0.5, 11.5 );
291 hit_multiplicity = ibooker.
book1D(
"channels per plane", title+
" channels per plane; ch per plane", 13, -0.5, 12.5 );
293 stripTomography_far = ibooker.
book2D(
"tomography far", title+
" tomography with strips far;x + 25 OOT (mm);y (mm)", 50, 0, 50, 12, -2, 10 );
311 activity_per_bx_0_25 = ibooker.
book1D(
"activity per BX 0 25", title+
" Activity per BX 0 - 25 ns;Event.BX", 1000, -1.5, 998. + 0.5 );
313 activity_per_bx_25_50 = ibooker.
book1D(
"activity per BX 25 50", title+
" Activity per BX 25 - 50 ns;Event.BX", 1000, -1.5, 998. + 0.5 );
315 activity_per_bx_50_75 = ibooker.
book1D(
"activity per BX 50 75", title+
" Activity per BX 50 - 75 ns;Event.BX", 1000, -1.5, 998. + 0.5 );
319 for (
unsigned short error_index=1; error_index<16; ++error_index )
329 ECCheckPerChannel = ibooker.
book1D(
"optorxEC(8bit) - vfatEC vs optorxEC", title+
" EC Error;optorxEC-vfatEC", 128, -64, 64 );
331 stripTomography_far = ibooker.
book2D(
"tomography far",
"tomography with strips far;x + 25 OOT (mm);y (mm)", 50, 0, 50, 12, -2, 10 );
333 hit_rate = ibooker.
book1D(
"hit rate", title+
"hit rate;rate (Hz)", 40, 0, 20);
349 verbosity_ ( ps.getUntrackedParameter<unsigned
int>(
"verbosity", 0 ) ),
352 for (
const auto&
pset : ps.
getParameter< std::vector<edm::ParameterSet> >(
"offsetsOOT" ) ) {
407 plot.second.hitDistribution2d_lumisection->Reset();
436 valid &= diamondVFATStatus.
isValid();
437 valid &= diamondDigis.
isValid();
443 <<
"ERROR in TotemDQMModuleRP::analyze > some of the required inputs are not valid. Skipping this event.\n" 444 <<
" diamondVFATStatus.isValid = " << diamondVFATStatus.
isValid() <<
"\n" 445 <<
" diamondDigis.isValid = " << diamondDigis.
isValid() <<
"\n" 446 <<
" fedInfo.isValid = " << fedInfo.
isValid();
460 for (
const auto& ds1 : *stripTracks ) {
461 for (
const auto& tr1 : ds1 ) {
462 if ( ! tr1.isValid() )
continue;
465 unsigned int arm1 = rpId1.
arm();
466 unsigned int stNum1 = rpId1.station();
467 unsigned int rpNum1 = rpId1.rp();
468 if (stNum1 != 0 || ( rpNum1 != 2 && rpNum1 != 3 ) )
continue;
469 unsigned int idx1 = arm1*3 + rpNum1-2;
471 for (
const auto& ds2 : *stripTracks ) {
472 for (
const auto& tr2 : ds2 ) {
473 if ( ! tr2.isValid() )
continue;
476 unsigned int arm2 = rpId2.
arm();
477 unsigned int stNum2 = rpId2.station();
478 unsigned int rpNum2 = rpId2.rp();
479 if (stNum2 != 0 || ( rpNum2 != 2 && rpNum2 != 3 ) )
continue;
480 unsigned int idx2 = arm2*3 + rpNum2-2;
485 for (
const auto& ds2 : *diamondLocalTracks ) {
486 for (
const auto& tr2 : ds2 ) {
487 if ( ! tr2.isValid() )
continue;
492 unsigned int arm2 = diamId2.
arm();
493 if ( idx1 >= arm2*3+2 )
502 for (
const auto& ds1 : *diamondLocalTracks ) {
503 for (
const auto& tr1 : ds1 ) {
504 if ( ! tr1.isValid() )
continue;
509 unsigned int arm1 = diamId1.
arm();
513 for (
const auto& ds2 : *diamondLocalTracks ) {
514 for (
const auto& tr2 : ds2 ) {
515 if ( ! tr2.isValid() )
continue;
520 unsigned int arm2 = diamId2.
arm();
529 for (
const auto& digis : *diamondDigis ) {
533 for (
const auto& digi : digis ) {
535 detId_pot.setChannel( 0 );
539 if ( digi.getLeadingEdge() != 0 || digi.getTrailingEdge() != 0 ) {
541 if ( digi.getLeadingEdge() != 0 && digi.getTrailingEdge() == 0 ) {
542 ++(
potPlots_[detId_pot].LeadingOnlyCounter);
545 if ( digi.getLeadingEdge() == 0 && digi.getTrailingEdge() != 0 ) {
546 ++(
potPlots_[detId_pot].TrailingOnlyCounter);
549 if ( digi.getLeadingEdge() != 0 && digi.getTrailingEdge() != 0 ) {
550 ++(
potPlots_[detId_pot].CompleteCounter);
557 for (
unsigned short hptdcErrorIndex = 1; hptdcErrorIndex < 16; ++hptdcErrorIndex )
558 if ( hptdcErrors.
getErrorId( hptdcErrorIndex-1 ) )
potPlots_[detId_pot].HPTDCErrorFlags_cumulative->Fill( hptdcErrorIndex );
559 if ( digi.getMultipleHit() ) ++(
potPlots_[detId_pot].MHCounter);
564 for (
const auto& vfat_status : *diamondVFATStatus ) {
568 detId_pot.setChannel( 0 );
569 for (
const auto&
status : vfat_status ) {
570 if ( !
status.isOK() )
continue;
574 for (
const auto& optorx : *fedInfo ) {
576 potPlots_[detId_pot].ECCheck->Fill((
int)((optorx.getLV1()& 0xFF)-((
unsigned int)
status.getEC() & 0xFF)) & 0xFF);
577 if ( ( static_cast<int>( ( optorx.getLV1() & 0xFF )-
status.getEC() ) !=
EC_difference_56_ ) && (
static_cast<uint8_t
>( ( optorx.getLV1() & 0xFF )-
status.getEC() ) < 128 ) )
578 EC_difference_56_ = static_cast<int>( optorx.getLV1() & 0xFF )-( static_cast<unsigned int>(
status.getEC() ) & 0xFF );
582 <<
"\t\tVFAT EC: 0x"<<
static_cast<unsigned int>(
status.getEC() )
583 <<
"\twith ID: " <<
std::dec << detId
587 potPlots_[detId_pot].ECCheck->Fill((
int)((optorx.getLV1()& 0xFF)-
status.getEC()) & 0xFF);
588 if ( ( static_cast<int>( ( optorx.getLV1() & 0xFF )-
status.getEC() ) !=
EC_difference_45_ ) && (
static_cast<uint8_t
>( ( optorx.getLV1() & 0xFF )-
status.getEC() ) < 128 ) )
589 EC_difference_45_ = static_cast<int>( optorx.getLV1() & 0xFF )-( static_cast<unsigned int>(
status.getEC() ) & 0xFF );
593 <<
"\t\tVFAT EC: 0x"<<
static_cast<unsigned int>(
status.getEC() )
594 <<
"\twith ID: " <<
std::dec << detId
602 std::unordered_map<unsigned int, std::set<unsigned int> > planes;
603 std::unordered_map<unsigned int, std::set<unsigned int> > planes_inclusive;
606 for (
const auto&
rechits : *diamondRecHits ) {
609 detId_pot.setChannel( 0 );
612 for (
const auto& rechit :
rechits ) {
613 planes_inclusive[detId_pot].insert( detId.plane() );
616 planes[detId_pot].
insert( detId.plane() );
620 float UFSDShift = 0.0;
621 if ( rechit.getYWidth() < 3 ) UFSDShift = 0.5;
624 TH2F *hitHistoTmp =
potPlots_[detId_pot].hitDistribution2d->getTH2F();
625 TAxis *hitHistoTmpYAxis = hitHistoTmp->GetYaxis();
626 int startBin = hitHistoTmpYAxis->FindBin( rechit.getX() - 0.5*rechit.getXWidth() );
628 for (
int i=0;
i<numOfBins; ++
i) {
629 hitHistoTmp->Fill( detId.plane() + UFSDShift, hitHistoTmpYAxis->GetBinCenter(startBin+
i) );
632 hitHistoTmp =
potPlots_[detId_pot].hitDistribution2d_lumisection->getTH2F();
633 hitHistoTmpYAxis = hitHistoTmp->GetYaxis();
634 startBin = hitHistoTmpYAxis->FindBin( rechit.getX() - 0.5*rechit.getXWidth() );
636 for (
int i=0;
i<numOfBins; ++
i) {
637 hitHistoTmp->Fill( detId.plane() + UFSDShift, hitHistoTmpYAxis->GetBinCenter(startBin+
i) );
642 if ( rechit.getToT() != 0 ) {
644 potPlots_[detId_pot].leadingEdgeCumulative_both->Fill( rechit.getT() + 25*rechit.getOOTIndex() );
645 potPlots_[detId_pot].timeOverThresholdCumulativePot->Fill( rechit.getToT() );
647 TH2F *hitHistoOOTTmp =
potPlots_[detId_pot].hitDistribution2dOOT->getTH2F();
648 TAxis *hitHistoOOTTmpYAxis = hitHistoOOTTmp->GetYaxis();
649 int startBin = hitHistoOOTTmpYAxis->FindBin( rechit.getX() - 0.5*rechit.getXWidth() );
651 for (
int i=0;
i<numOfBins; ++
i) {
652 hitHistoOOTTmp->Fill( detId.plane() + 0.2 * rechit.getOOTIndex(), hitHistoOOTTmpYAxis->GetBinCenter(startBin+
i) );
656 if ( rechit.getT() != 0 ) {
658 TH2F *hitHistoOOTTmp =
potPlots_[detId_pot].hitDistribution2dOOT_le->getTH2F();
659 TAxis *hitHistoOOTTmpYAxis = hitHistoOOTTmp->GetYaxis();
660 int startBin = hitHistoOOTTmpYAxis->FindBin( rechit.getX() - 0.5*rechit.getXWidth() );
662 for (
int i=0;
i<numOfBins; ++
i) {
663 hitHistoOOTTmp->Fill( detId.plane() + 0.2 * rechit.getOOTIndex(), hitHistoOOTTmpYAxis->GetBinCenter(startBin+
i) );
667 if ( (
unsigned int) rechit.getOOTIndex() <
potPlots_[detId_pot].activity_per_bx.size() )
673 plt.second.activePlanes->Fill( planes[plt.first].size() );
674 plt.second.activePlanesInclusive->Fill( planes_inclusive[plt.first].size() );
678 for (
const auto&
tracks : *diamondLocalTracks ) {
681 detId_pot.setChannel( 0 );
685 if ( !
track.isValid() )
continue;
687 if ( potPlots_.find( detId_pot ) == potPlots_.end() )
continue;
689 TH2F *trackHistoOOTTmp = potPlots_[detId_pot].trackDistributionOOT->getTH2F();
690 TAxis *trackHistoOOTTmpYAxis = trackHistoOOTTmp->GetYaxis();
691 int startBin = trackHistoOOTTmpYAxis->FindBin(
track.getX0() -
track.getX0Sigma() );
693 for (
int i=0;
i<numOfBins; ++
i) {
694 trackHistoOOTTmp->Fill(
track.getOOTIndex(), trackHistoOOTTmpYAxis->GetBinCenter(startBin+
i) );
698 TH1F *trackHistoInTimeTmp = potPlots_[detId_pot].trackDistribution->getTH1F();
699 int startBin = trackHistoInTimeTmp->FindBin(
track.getX0() -
track.getX0Sigma() );
701 for (
int i=0;
i<numOfBins; ++
i) {
702 trackHistoInTimeTmp->Fill( trackHistoInTimeTmp->GetBinCenter(startBin+
i) );
709 for (
const auto&
rechits : *diamondRecHits ) {
712 detId_pot.setChannel( 0 );
715 for (
const auto& rechit :
rechits ) {
717 if ( rechit.getToT() == 0 )
continue;
718 if ( !stripTracks.isValid() )
continue;
719 if ( potPlots_.find( detId_pot ) == potPlots_.end() )
continue;
721 for (
const auto& ds : *stripTracks ) {
723 for (
const auto& striplt : ds ) {
724 if ( !striplt.isValid() )
continue;
725 if ( stripId.arm() != detId_pot.arm() )
continue;
729 if ( (
unsigned int) rechit.getOOTIndex() < potPlots_[detId_pot].stripTomographyAllFar.size() )
730 potPlots_[detId_pot].stripTomographyAllFar.at( rechit.getOOTIndex() )->
Fill( striplt.getX0() + 25*detId.plane(), striplt.getY0() );
741 for (
const auto& digis : *diamondDigis ) {
746 detId_pot.setChannel( 0 );
747 for (
const auto& digi : digis ) {
748 if ( digi.getLeadingEdge() != 0 ) {
749 if ( detId.plane() == 1 ) {
750 potPlots_[detId_pot].clock_Digi1_le->Fill(
HPTDC_BIN_WIDTH_NS * digi.getLeadingEdge() );
751 potPlots_[detId_pot].clock_Digi1_te->Fill(
HPTDC_BIN_WIDTH_NS * digi.getTrailingEdge() );
753 if ( detId.plane() == 3 ) {
754 potPlots_[detId_pot].clock_Digi3_le->Fill(
HPTDC_BIN_WIDTH_NS * digi.getLeadingEdge() );
755 potPlots_[detId_pot].clock_Digi3_te->Fill(
HPTDC_BIN_WIDTH_NS * digi.getTrailingEdge() );
767 std::unordered_map<unsigned int, unsigned int> channelsPerPlane;
768 for (
const auto& digis : *diamondDigis ) {
771 for (
const auto& digi : digis ) {
776 if ( digi.getLeadingEdge() != 0 ) {
777 planePlots_[detId_plane].digiProfileCumulativePerPlane->Fill( detId.channel() );
778 if ( channelsPerPlane.find(detId_plane) != channelsPerPlane.end() ) channelsPerPlane[detId_plane]++;
779 else channelsPerPlane[detId_plane] = 0;
784 for (
const auto& plt : channelsPerPlane ) {
785 planePlots_[plt.first].hit_multiplicity->Fill( plt.second );
789 for (
const auto&
rechits : *diamondRecHits ) {
792 for (
const auto& rechit :
rechits ) {
794 if ( rechit.getToT() == 0 )
continue;
797 TH1F *hitHistoTmp =
planePlots_[detId_plane].hitProfile->getTH1F();
798 int startBin = hitHistoTmp->FindBin( rechit.getX() - 0.5*rechit.getXWidth() );
800 for (
int i=0;
i<numOfBins; ++
i) {
801 hitHistoTmp->Fill( hitHistoTmp->GetBinCenter(startBin+
i) );
809 for (
const auto&
rechits : *diamondRecHits ) {
812 for (
const auto& rechit :
rechits ) {
814 if ( rechit.getToT() == 0 )
continue;
815 if ( !stripTracks.isValid() )
continue;
818 for (
const auto& ds : *stripTracks ) {
820 for (
const auto& striplt : ds ) {
821 if (! striplt.isValid())
continue;
822 if ( stripId.arm() != detId_plane.arm() )
continue;
826 planePlots_[detId_plane].stripTomography_far->Fill( striplt.getX0() + 25*rechit.getOOTIndex() , striplt.getY0() );
837 for (
const auto& vfat_status : *diamondVFATStatus ) {
839 for (
const auto&
status : vfat_status ) {
840 if ( !
status.isOK() )
continue;
842 for (
const auto& optorx : *fedInfo ) {
844 channelPlots_[detId].ECCheckPerChannel->Fill((
int)((optorx.getLV1()& 0xFF)-((
unsigned int)
status.getEC() & 0xFF)) & 0xFF);
852 for (
const auto& digis : *diamondDigis ) {
854 for (
const auto& digi : digis ) {
859 for (
unsigned short hptdcErrorIndex = 1; hptdcErrorIndex < 16; ++hptdcErrorIndex )
861 if ( digi.getMultipleHit() ) ++(
channelPlots_[detId].MHCounter);
864 if ( digi.getLeadingEdge() != 0 || digi.getTrailingEdge() != 0 ) {
866 if ( digi.getLeadingEdge() != 0 && digi.getTrailingEdge() == 0 ) {
870 if ( digi.getLeadingEdge() == 0 && digi.getTrailingEdge() != 0 ) {
874 if ( digi.getLeadingEdge() != 0 && digi.getTrailingEdge() != 0 ) {
884 for (
const auto&
rechits : *diamondRecHits ) {
886 for (
const auto& rechit :
rechits ) {
889 if ( rechit.getToT() != 0 ) {
890 channelPlots_[detId].leadingEdgeCumulative_both->Fill( rechit.getT() + 25*rechit.getOOTIndex() );
891 channelPlots_[detId].TimeOverThresholdCumulativePerChannel->Fill( rechit.getToT() );
896 if ( (
unsigned int) rechit.getOOTIndex() <
channelPlots_[detId].activity_per_bx.size() )
903 for (
const auto&
rechits : *diamondRecHits ) {
905 for (
const auto& rechit :
rechits ) {
907 if ( stripTracks.isValid() ) {
909 for (
const auto& ds : *stripTracks ) {
910 for (
const auto& striplt : ds ) {
912 if ( !striplt.isValid() )
continue;
913 if ( stripId.arm() != detId.arm() )
continue;
917 channelPlots_[detId].stripTomography_far->Fill( striplt.getX0() + 25*rechit.getOOTIndex(), striplt.getY0() );
932 if (
plot.second.hitsCounterPerLumisection != 0 ) {
935 plot.second.hitsCounterPerLumisection = 0;
937 double HundredOverHitCounter = .0;
938 if (
plot.second.HitCounter != 0 )
939 HundredOverHitCounter = 100. /
plot.second.HitCounter;
940 plot.second.HPTDCErrorFlags->setBinContent( 16, HundredOverHitCounter *
plot.second.MHCounter );
941 plot.second.leadingWithoutTrailing->setBinContent(1, HundredOverHitCounter *
plot.second.LeadingOnlyCounter );
942 plot.second.leadingWithoutTrailing->setBinContent(2, HundredOverHitCounter *
plot.second.TrailingOnlyCounter );
943 plot.second.leadingWithoutTrailing->setBinContent(3, HundredOverHitCounter *
plot.second.CompleteCounter );
947 double HundredOverHitCounterPot = 0.;
948 if (
plot.second.HitCounter !=0 )
949 HundredOverHitCounterPot = 100. /
plot.second.HitCounter;
950 plot.second.HPTDCErrorFlags_cumulative->setBinContent( 16, HundredOverHitCounterPot *
plot.second.MHCounter );
951 plot.second.leadingWithoutTrailingCumulativePot->setBinContent(1, HundredOverHitCounterPot *
plot.second.LeadingOnlyCounter );
952 plot.second.leadingWithoutTrailingCumulativePot->setBinContent(2, HundredOverHitCounterPot *
plot.second.TrailingOnlyCounter );
953 plot.second.leadingWithoutTrailingCumulativePot->setBinContent(3, HundredOverHitCounterPot *
plot.second.CompleteCounter );
955 plot.second.MHComprensive->Reset();
957 for (
auto& chPlot : channelPlots_ ) {
959 if ( chId.
arm() == rpId.
arm() && chId.
rp() == rpId.
rp() ) {
960 plot.second.MHComprensive->Fill(chId.
plane(), chId.
channel(), chPlot.second.HPTDCErrorFlags->getBinContent( 16 ) );
static const int CTPPS_FED_ID_56
void analyze(const edm::Event &, const edm::EventSetup &) override
OptoRx headers and footers.
MonitorElement * clock_Digi3_te
plots related to one Diamond plane
MonitorElement * TimeOverThresholdCumulativePerChannel
T getParameter(std::string const &) const
MonitorElement * timeOverThresholdCumulativePot
plots related to one Diamond detector package
MonitorElement * h_trackCorr_hor
unsigned int CompleteCounter
void endLuminosityBlock(const edm::LuminosityBlock &, const edm::EventSetup &) override
MonitorElement * stripTomographyAllFar_50_75
MonitorElement * activePlanes
~CTPPSDiamondDQMSource() override
static const int CHANNEL_OF_VFAT_CLOCK
bool contains(EventRange const &lh, EventID const &rh)
static const double DISPLAY_RESOLUTION_FOR_HITS_MM
static const int CTPPS_DIAMOND_NUM_OF_PLANES
void beginLuminosityBlock(const edm::LuminosityBlock &, const edm::EventSetup &) override
std::vector< MonitorElement * > activity_per_bx
void setPlane(uint32_t channel)
MonitorElement * leadingEdgeCumulative_le
Reconstructed hit in diamond detectors.
#define DEFINE_FWK_MODULE(type)
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
MonitorElement * stripTomography_far
edm::EDGetTokenT< edm::DetSetVector< CTPPSDiamondDigi > > tokenDigi_
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
int bunchCrossing() const
double maximumStripAngleForTomography_
MonitorElement * trailingEdgeCumulative_te
static const int CTPPS_DIAMOND_NUM_OF_CHANNELS
edm::EDGetTokenT< edm::DetSetVector< TotemRPLocalTrack > > tokenLocalTrack_
MonitorElement * leadingTrailingCorrelationPot
A track fit through a single RP.
MonitorElement * clock_Digi1_te
MonitorElement * leadingWithoutTrailingCumulativePot
MonitorElement * activity_per_bx_25_50
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
MonitorElement * activity_per_bx_50_75
static const int CTPPS_DIAMOND_STATION_ID
MonitorElement * hitDistribution2d
void bookHistograms(DQMStore::IBooker &, const edm::Run &, const edm::EventSetup &) override
std::vector< std::pair< edm::EventRange, int > > runParameters_
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
static const int CTPPS_NEAR_RP_ID
std::unordered_map< unsigned int, ChannelPlots > channelPlots_
MonitorElement * activity_per_bx_0_25
MonitorElement * book1D(Args &&...args)
void rpName(std::string &name, NameFlag flag=nFull) const
plots related to one Diamond channel
MonitorElement * ECCheckPerChannel
MonitorElement * activity_per_bx_0_25
MonitorElement * hitDistribution2d_lumisection
bool insert(Storage &iStorage, ItemType *iItem, const IdTag &iIdTag)
unsigned long hitsCounterPerLumisection
edm::EDGetTokenT< edm::DetSetVector< CTPPSDiamondLocalTrack > > tokenDiamondTrack_
std::vector< MonitorElement * > stripTomographyAllFar
MonitorElement * trackDistribution
static const double HPTDC_BIN_WIDTH_NS
MonitorElement * clock_Digi3_le
void setCurrentFolder(const std::string &fullpath)
static const double INV_DISPLAY_RESOLUTION_FOR_HITS_MM
MonitorElement * HPTDCErrorFlags_cumulative
MonitorElement * book2D(Args &&...args)
unsigned int TrailingOnlyCounter
MonitorElement * activity_per_bx_50_75
void planeName(std::string &name, NameFlag flag=nFull) const
MonitorElement * LeadingTrailingCorrelationPerChannel
MonitorElement * clock_Digi1_le
MonitorElement * leadingEdgeCumulative_both
MonitorElement * leadingWithoutTrailing
Base class for CTPPS detector IDs.
std::unordered_map< unsigned int, PotPlots > potPlots_
unsigned int TrailingOnlyCounter
edm::EDGetTokenT< edm::DetSetVector< CTPPSDiamondRecHit > > tokenDiamondHit_
unsigned int LeadingOnlyCounter
MonitorElement * stripTomographyAllFar_0_25
static const int CTPPS_FAR_RP_ID
static const double SEC_PER_LUMI_SECTION
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
std::vector< MonitorElement * > activity_per_bx
MonitorElement * hitDistribution2dOOT_le
bool excludeMultipleHits_
MonitorElement * hitDistribution2dOOT
static const int CTPPS_DIAMOND_RP_ID
MonitorElement * leadingEdgeCumulative_both
static std::string getHPTDCErrorName(const unsigned short id)
edm::EDGetTokenT< std::vector< TotemFEDInfo > > tokenFEDInfo_
static const int CTPPS_FED_ID_45
MonitorElement * stripTomographyAllFar_25_50
edm::EDGetTokenT< edm::DetSetVector< TotemVFATStatus > > tokenStatus_
double minimumStripAngleForTomography_
MonitorElement * activity_per_bx_25_50
MonitorElement * hit_rate
MonitorElement * activePlanesInclusive