189 h_trackCorr_hor = ibooker.
book2D(
"track correlation all hor",
"rp, all, hor", 6, -0.5, 5.5, 6, -0.5, 5.5 );
191 TAxis* xa = hist->GetXaxis(), *ya = hist->GetYaxis();
192 xa->SetBinLabel( 6,
"45, 210, near" ); ya->SetBinLabel( 1,
"45, 210, near" );
193 xa->SetBinLabel( 5,
"45, 210, far" ); ya->SetBinLabel( 2,
"45, 210, far" );
194 xa->SetBinLabel( 4,
"45, 220, cyl" ); ya->SetBinLabel( 3,
"45, 220, cyl" );
195 xa->SetBinLabel( 3,
"56, 210, near" ); ya->SetBinLabel( 4,
"56, 210, near" );
196 xa->SetBinLabel( 2,
"56, 210, far" ); ya->SetBinLabel( 5,
"56, 210, far" );
197 xa->SetBinLabel( 1,
"56, 220, cyl" ); ya->SetBinLabel( 6,
"56, 220, cyl" );
211 activity_per_bx = ibooker.
book1D(
"activity per BX", title+
" activity per BX;Event.BX", 4002, -1.5, 4000. + 0.5 );
212 activity_per_bx_short = ibooker.
book1D(
"activity per BX (short)", title+
" activity per BX (short);Event.BX", 102, -1.5, 100. + 0.5 );
214 activity_per_bx_plus1 = ibooker.
book1D(
"activity per BX OOT +1", title+
" activity per BX OOT +1;Event.BX", 4002, -1.5, 4000. + 0.5 );
215 activity_per_bx_short_plus1 = ibooker.
book1D(
"activity per BX OOT +1 (short)", title+
" activity per BX OOT +1 (short);Event.BX", 102, -1.5, 100. + 0.5 );
217 activity_per_bx_minus1 = ibooker.
book1D(
"activity per BX OOT -1", title+
" activity per BX OOT -1;Event.BX", 4002, -1.5, 4000. + 0.5 );
218 activity_per_bx_short_minus1 = ibooker.
book1D(
"activity per BX OOT -1 (short)", title+
" activity per BX OOT -1 (short);Event.BX", 102, -1.5, 100. + 0.5 );
220 activity_per_fedbx = ibooker.
book1D(
"activity per FED BX", title+
" activity per FED BX;Event.BX", 4002, -1.5, 4000. + 0.5 );
221 activity_per_fedbx_short = ibooker.
book1D(
"activity per FED BX (short)", title+
" activity per FED BX (short);Event.BX", 102, -1.5, 100. + 0.5 );
224 hitDistribution2dOOT= ibooker.
book2D(
"hits with OOT in planes", title+
" hits with OOT in planes;plane number + 0.25 OOT;x (mm)", 17, -0.25, 4, 19./
DISPLAY_RESOLUTION_FOR_HITS_MM, -1, 18 );
225 activePlanes = ibooker.
book1D(
"active planes", title+
" active planes;number of active planes", 6, -0.5, 5.5 );
230 stripTomographyAllFar = ibooker.
book2D(
"tomography all far", title+
" tomography with strips far (all planes);x + 50*plane(mm);y (mm)", 200, 0, 200, 100, -50, 50 );
231 stripTomographyAllNear = ibooker.
book2D(
"tomography all near", title+
" tomography with strips near (all planes);x + 50*plane(mm);y (mm)", 200, 0, 200, 100, -50, 50 );
233 stripTomographyAllFar_plus1 = ibooker.
book2D(
"tomography all far OOT +1", title+
" tomography with strips far (all planes);x + 50*plane(mm);y (mm)", 200, 0, 200, 100, -50, 50 );
234 stripTomographyAllNear_plus1 = ibooker.
book2D(
"tomography all near OOT +1", title+
" tomography with strips near (all planes);x + 50*plane(mm);y (mm)", 200, 0, 200, 100, -50, 50 );
236 stripTomographyAllFar_minus1 = ibooker.
book2D(
"tomography all far OOT -1", title+
" tomography with strips far (all planes);x + 50*plane(mm);y (mm)", 200, 0, 200, 100, -50, 50 );
237 stripTomographyAllNear_minus1 = ibooker.
book2D(
"tomography all near OOT -1", title+
" tomography with strips near (all planes);x + 50*plane(mm);y (mm)", 200, 0, 200, 100, -50, 50 );
239 leadingEdgeCumulativePot = ibooker.
book1D(
"leading edge", title+
" leading edge;leading edge (ns)", 125, -25, 100 );
240 timeOverThresholdCumulativePot = ibooker.
book1D(
"time over threshold", title+
" time over threshold;time over threshold (ns)", 100, -50, 50 );
241 leadingTrailingCorrelationPot = ibooker.
book2D(
"leading trailing correlation", title+
" leading trailing correlation;leading edge (ns);trailing edge (ns)", 201, -100, 100, 201, -100, 100 );
243 leadingWithoutTrailingCumulativePot = ibooker.
book1D(
"leading edges without trailing", title+
" leading edges without trailing;leading edges without trailing", 4, 0.5, 4.5 );
244 leadingWithoutTrailingCumulativePot->
getTH1F()->GetXaxis()->SetBinLabel( 1,
"Nothing" );
245 leadingWithoutTrailingCumulativePot->getTH1F()->GetXaxis()->SetBinLabel( 2,
"Leading only" );
246 leadingWithoutTrailingCumulativePot->getTH1F()->GetXaxis()->SetBinLabel( 3,
"Trailing only" );
247 leadingWithoutTrailingCumulativePot->getTH1F()->GetXaxis()->SetBinLabel( 4,
"Both" );
249 ECCheck = ibooker.
book1D(
"optorxEC(8bit) - vfatEC", title+
" EC Error;optorxEC-vfatEC", 512, -256, 256 );
251 HPTDCErrorFlags_cumulative = ibooker.
book1D(
"HPTDC Errors", title+
" HPTDC Errors", 16, -0.5, 16.5 );
252 for (
unsigned short error_index=1; error_index<16; ++error_index )
254 HPTDCErrorFlags_cumulative->getTH1F()->GetXaxis()->SetBinLabel( 16,
"MH" );
258 clock_Digi1_le = ibooker.
book1D(
"clock1 leading edge", title+
" clock1;leading edge (ns)", 1000, 0, 100 );
259 clock_Digi1_te = ibooker.
book1D(
"clock1 trailing edge", title+
" clock1;trailing edge (ns)", 1000, 0, 100 );
260 clock_Digi3_le = ibooker.
book1D(
"clock3 leading edge", title+
" clock3;leading edge (ns)", 1000, 0, 100 );
261 clock_Digi3_te = ibooker.
book1D(
"clock3 trailing edge", title+
" clock3;trailing edge (ns)", 1000, 0, 100 );
274 digiProfileCumulativePerPlane = ibooker.
book1D(
"digi profile", title+
" digi profile; ch number", 12, -0.5, 11.5 );
276 hit_multiplicity = ibooker.
book1D(
"channels per plane", title+
" channels per plane; ch per plane", 13, -0.5, 12.5 );
278 threshold_voltage = ibooker.
book2D(
"threshold I2C", title+
" threshold I2C; channel; value", 12, -0.5, 11.5, 512, 0, 512 );
280 stripTomography_far = ibooker.
book2D(
"tomography far", title+
" tomography with strips far;x + 50 OOT (mm);y (mm)", 50, 0, 50, 150, -50, 100 );
281 stripTomography_near = ibooker.
book2D(
"tomography near", title+
" tomography with strips near;x + 50 OOT (mm);y (mm)", 50, 0, 50, 150, -50, 100 );
301 for (
unsigned short error_index=1; error_index<16; ++error_index )
309 ECCheckPerChannel = ibooker.
book1D(
"optorxEC(8bit) - vfatEC vs optorxEC", title+
" EC Error;optorxEC-vfatEC", 512, -256, 256 );
311 stripTomography_far = ibooker.
book2D(
"tomography far",
"tomography with strips far;x + 50 OOT (mm);y (mm)", 200, -50, 150, 150, -50, 100 );
312 stripTomography_near = ibooker.
book2D(
"tomography near",
"tomography with strips near;x + 50 OOT (mm);y (mm)", 200, -50, 150, 150, -50, 100 );
314 hit_rate = ibooker.
book1D(
"hit rate", title+
"hit rate;rate (Hz)", 1000, 0, 100 );
328 verbosity_ ( ps.getUntrackedParameter<unsigned
int>(
"verbosity", 0 ) ),
374 if (
plot.second.hitsCounterPerLumisection != 0 ) {
377 plot.second.hitsCounterPerLumisection = 0;
407 valid &= diamondVFATStatus.
isValid();
408 valid &= diamondDigis.
isValid();
414 <<
"ERROR in TotemDQMModuleRP::analyze > some of the required inputs are not valid. Skipping this event.\n" 415 <<
" diamondVFATStatus.isValid = " << diamondVFATStatus.
isValid() <<
"\n" 416 <<
" diamondDigis.isValid = " << diamondDigis.
isValid() <<
"\n" 417 <<
" fedInfo.isValid = " << fedInfo.
isValid();
431 for (
const auto& ds1 : *stripTracks ) {
432 for (
const auto& tr1 : ds1 ) {
433 if ( ! tr1.isValid() )
continue;
436 unsigned int arm1 = rpId1.
arm();
437 unsigned int stNum1 = rpId1.station();
438 unsigned int rpNum1 = rpId1.rp();
439 if (stNum1 != 0 || ( rpNum1 != 2 && rpNum1 != 3 ) )
continue;
440 unsigned int idx1 = arm1*3 + rpNum1-2;
442 for (
const auto& ds2 : *stripTracks ) {
443 for (
const auto& tr2 : ds2 ) {
444 if ( ! tr2.isValid() )
continue;
447 unsigned int arm2 = rpId2.
arm();
448 unsigned int stNum2 = rpId2.station();
449 unsigned int rpNum2 = rpId2.rp();
450 if (stNum2 != 0 || ( rpNum2 != 2 && rpNum2 != 3 ) )
continue;
451 unsigned int idx2 = arm2*3 + rpNum2-2;
456 for (
const auto& ds2 : *diamondLocalTracks ) {
457 for (
const auto& tr2 : ds2 ) {
458 if ( ! tr2.isValid() )
continue;
459 if ( tr2.getOOTIndex() != 1 )
continue;
463 unsigned int arm2 = diamId2.
arm();
464 if ( idx1 >= arm2*3+2 )
473 for (
const auto& ds1 : *diamondLocalTracks ) {
474 for (
const auto& tr1 : ds1 ) {
475 if ( ! tr1.isValid() )
continue;
477 if ( tr1.getOOTIndex() != 1 )
continue;
480 unsigned int arm1 = diamId1.
arm();
484 for (
const auto& ds2 : *diamondLocalTracks ) {
485 for (
const auto& tr2 : ds2 ) {
486 if ( ! tr2.isValid() )
continue;
488 if ( tr2.getOOTIndex() != 1 )
continue;
491 unsigned int arm2 = diamId2.
arm();
500 for (
const auto& digis : *diamondDigis ) {
504 for (
const auto& digi : digis ) {
506 detId_pot.setChannel( 0 );
509 if ( digi.getLeadingEdge() == 0 && digi.getTrailingEdge() == 0 )
potPlots_[detId_pot].leadingWithoutTrailingCumulativePot->Fill( 1 );
510 else if ( digi.getLeadingEdge() != 0 && digi.getTrailingEdge() == 0 )
potPlots_[detId_pot].leadingWithoutTrailingCumulativePot->Fill( 2 );
511 else if ( digi.getLeadingEdge() == 0 && digi.getTrailingEdge() != 0 )
potPlots_[detId_pot].leadingWithoutTrailingCumulativePot->Fill( 3 );
512 else if ( digi.getLeadingEdge() != 0 && digi.getTrailingEdge() != 0 )
potPlots_[detId_pot].leadingWithoutTrailingCumulativePot->Fill( 4 );
514 if ( digi.getLeadingEdge() != 0 ) {
516 for (
const auto&
fit : *fedInfo ) {
518 potPlots_[detId_pot].activity_per_fedbx->Fill(
fit.getBX() );
519 potPlots_[detId_pot].activity_per_fedbx_short->Fill(
fit.getBX() );
526 for (
unsigned short hptdcErrorIndex = 1; hptdcErrorIndex < 16; ++hptdcErrorIndex )
527 if ( hptdcErrors.
getErrorId( hptdcErrorIndex-1 ) )
potPlots_[detId_pot].HPTDCErrorFlags_cumulative->Fill( hptdcErrorIndex );
528 if ( digi.getMultipleHit() )
potPlots_[detId_pot].HPTDCErrorFlags_cumulative->Fill( 16 );
533 for (
const auto& vfat_status : *diamondVFATStatus ) {
537 detId_pot.setChannel( 0 );
538 for (
const auto&
status : vfat_status ) {
539 if ( !
status.isOK() )
continue;
543 for (
const auto& optorx : *fedInfo ) {
545 potPlots_[detId_pot].ECCheck->Fill((
int)((optorx.getLV1()& 0xFF)-((
unsigned int)
status.getEC() & 0xFF)) & 0xFF);
546 if ( ( static_cast<int>( ( optorx.getLV1() & 0xFF )-
status.getEC() ) !=
EC_difference_56_ ) && (
static_cast<uint8_t
>( ( optorx.getLV1() & 0xFF )-
status.getEC() ) < 128 ) )
547 EC_difference_56_ = static_cast<int>( optorx.getLV1() & 0xFF )-( static_cast<unsigned int>(
status.getEC() ) & 0xFF );
550 <<
"\t\tVFAT EC: 0x"<<
static_cast<unsigned int>(
status.getEC() )
551 <<
"\twith ID: " <<
std::dec << detId
555 potPlots_[detId_pot].ECCheck->Fill((
int)((optorx.getLV1()& 0xFF)-
status.getEC()) & 0xFF);
556 if ( ( static_cast<int>( ( optorx.getLV1() & 0xFF )-
status.getEC() ) !=
EC_difference_45_ ) && (
static_cast<uint8_t
>( ( optorx.getLV1() & 0xFF )-
status.getEC() ) < 128 ) )
557 EC_difference_45_ = static_cast<int>( optorx.getLV1() & 0xFF )-( static_cast<unsigned int>(
status.getEC() ) & 0xFF );
560 <<
"\t\tVFAT EC: 0x"<<
static_cast<unsigned int>(
status.getEC() )
561 <<
"\twith ID: " <<
std::dec << detId
569 std::unordered_map<unsigned int, std::set<unsigned int> > planes;
571 for (
const auto&
rechits : *diamondRecHits ) {
574 detId_pot.setChannel( 0 );
577 for (
const auto& rechit :
rechits ) {
579 planes[detId_pot].insert( detId.plane() );
583 float UFSDShift = 0.0;
584 if ( rechit.getYWidth() < 3 ) UFSDShift = 0.5;
586 TH2F *hitHistoTmp =
potPlots_[detId_pot].hitDistribution2d->getTH2F();
587 TAxis *hitHistoTmpYAxis = hitHistoTmp->GetYaxis();
588 int startBin = hitHistoTmpYAxis->FindBin( rechit.getX() - 0.5*rechit.getXWidth() );
590 for (
int i=0;
i<numOfBins; ++
i) {
591 hitHistoTmp->Fill( detId.plane(), hitHistoTmpYAxis->GetBinCenter(startBin+
i) + UFSDShift );
594 TH2F *hitHistoOOTTmp =
potPlots_[detId_pot].hitDistribution2dOOT->getTH2F();
595 TAxis *hitHistoOOTTmpYAxis = hitHistoOOTTmp->GetYaxis();
596 startBin = hitHistoOOTTmpYAxis->FindBin( rechit.getX() - 0.5*rechit.getXWidth() );
598 for (
int i=0;
i<numOfBins; ++
i) {
599 hitHistoOOTTmp->Fill( detId.plane() + 0.25 * rechit.getOOTIndex(), hitHistoOOTTmpYAxis->GetBinCenter(startBin+
i) );
602 potPlots_[detId_pot].leadingEdgeCumulativePot->Fill( rechit.getT() + 25*rechit.getOOTIndex() );
603 potPlots_[detId_pot].timeOverThresholdCumulativePot->Fill( rechit.getToT() );
604 potPlots_[detId_pot].leadingTrailingCorrelationPot->Fill( rechit.getT()+ 25*rechit.getOOTIndex() , rechit.getT() + rechit.getToT() + 25*rechit.getOOTIndex() );
606 switch ( rechit.getOOTIndex() ) {
624 plt.second.activePlanes->Fill( planes[plt.first].size() );
628 for (
const auto&
tracks : *diamondLocalTracks ) {
631 detId_pot.setChannel( 0 );
635 if ( !
track.isValid() )
continue;
637 if ( potPlots_.find( detId_pot ) == potPlots_.end() )
continue;
639 TH2F *trackHistoOOTTmp = potPlots_[detId_pot].trackDistributionOOT->getTH2F();
640 TAxis *trackHistoOOTTmpYAxis = trackHistoOOTTmp->GetYaxis();
641 int startBin = trackHistoOOTTmpYAxis->FindBin(
track.getX0() -
track.getX0Sigma() );
643 for (
int i=0;
i<numOfBins; ++
i) {
644 trackHistoOOTTmp->Fill(
track.getOOTIndex(), trackHistoOOTTmpYAxis->GetBinCenter(startBin+
i) );
647 if (
track.getOOTIndex() == 1 ) {
648 TH1F *trackHistoInTimeTmp = potPlots_[detId_pot].trackDistribution->getTH1F();
649 int startBin = trackHistoInTimeTmp->FindBin(
track.getX0() -
track.getX0Sigma() );
651 for (
int i=0;
i<numOfBins; ++
i) {
652 trackHistoInTimeTmp->Fill( trackHistoInTimeTmp->GetBinCenter(startBin+
i) );
659 for (
const auto&
rechits : *diamondRecHits ) {
662 detId_pot.setChannel( 0 );
665 for (
const auto& rechit :
rechits ) {
667 if ( !stripTracks.isValid() )
continue;
668 if ( potPlots_.find( detId_pot ) == potPlots_.end() )
continue;
670 for (
const auto& ds : *stripTracks ) {
672 for (
const auto& striplt : ds ) {
673 if ( !striplt.isValid() )
continue;
674 if ( stripId.arm() != detId_pot.arm() )
continue;
677 switch ( rechit.getOOTIndex() ) {
679 potPlots_[detId_pot].stripTomographyAllFar_minus1->Fill( striplt.getX0() + 50*detId.plane(), striplt.getY0() );
682 potPlots_[detId_pot].stripTomographyAllFar->Fill( striplt.getX0() + 50*detId.plane(), striplt.getY0() );
685 potPlots_[detId_pot].stripTomographyAllFar_plus1->Fill( striplt.getX0() + 50*detId.plane(), striplt.getY0() );
690 switch ( rechit.getOOTIndex() ) {
692 potPlots_[detId_pot].stripTomographyAllNear_minus1->Fill( striplt.getX0() + 50*detId.plane(), striplt.getY0() );
695 potPlots_[detId_pot].stripTomographyAllNear->Fill( striplt.getX0() + 50*detId.plane(), striplt.getY0() );
698 potPlots_[detId_pot].stripTomographyAllNear_plus1->Fill( striplt.getX0() + 50*detId.plane(), striplt.getY0() );
711 for (
const auto& digis : *diamondDigis ) {
716 detId_pot.setChannel( 0 );
717 for (
const auto& digi : digis ) {
718 if ( digi.getLeadingEdge() != 0 ) {
719 if ( detId.plane() == 1 ) {
720 potPlots_[detId_pot].clock_Digi1_le->Fill(
HPTDC_BIN_WIDTH_NS * digi.getLeadingEdge() );
721 potPlots_[detId_pot].clock_Digi1_te->Fill(
HPTDC_BIN_WIDTH_NS * digi.getTrailingEdge() );
723 if ( detId.plane() == 3 ) {
724 potPlots_[detId_pot].clock_Digi3_le->Fill(
HPTDC_BIN_WIDTH_NS * digi.getLeadingEdge() );
725 potPlots_[detId_pot].clock_Digi3_te->Fill(
HPTDC_BIN_WIDTH_NS * digi.getTrailingEdge() );
737 std::unordered_map<unsigned int, unsigned int> channelsPerPlane;
738 for (
const auto& digis : *diamondDigis ) {
741 for (
const auto& digi : digis ) {
745 planePlots_[detId_plane].threshold_voltage->Fill( detId.channel(), digi.getThresholdVoltage() );
747 if ( digi.getLeadingEdge() != 0 ) {
748 planePlots_[detId_plane].digiProfileCumulativePerPlane->Fill( detId.channel() );
749 if ( channelsPerPlane.find(detId_plane) != channelsPerPlane.end() ) channelsPerPlane[detId_plane]++;
750 else channelsPerPlane[detId_plane] = 0;
755 for (
const auto& plt : channelsPerPlane ) {
756 planePlots_[plt.first].hit_multiplicity->Fill( plt.second );
760 for (
const auto&
rechits : *diamondRecHits ) {
763 for (
const auto& rechit :
rechits ) {
766 TH1F *hitHistoTmp =
planePlots_[detId_plane].hitProfile->getTH1F();
767 int startBin = hitHistoTmp->FindBin( rechit.getX() - 0.5*rechit.getXWidth() );
769 for (
int i=0;
i<numOfBins; ++
i) {
770 if ( rechit.getOOTIndex() == 1 ) hitHistoTmp->Fill( hitHistoTmp->GetBinCenter(startBin+
i) );
777 for (
const auto&
rechits : *diamondRecHits ) {
780 for (
const auto& rechit :
rechits ) {
782 if ( !stripTracks.isValid() )
continue;
785 for (
const auto& ds : *stripTracks ) {
787 for (
const auto& striplt : ds ) {
788 if (! striplt.isValid())
continue;
789 if ( stripId.arm() != detId_plane.arm() )
continue;
792 planePlots_[detId_plane].stripTomography_far->Fill( striplt.getX0(), striplt.getY0() + 50*rechit.getOOTIndex() );
795 planePlots_[detId_plane].stripTomography_near->Fill( striplt.getX0(), striplt.getY0() + 50*rechit.getOOTIndex() );
806 for (
const auto& vfat_status : *diamondVFATStatus ) {
808 for (
const auto&
status : vfat_status ) {
809 if ( !
status.isOK() )
continue;
811 for (
const auto& optorx : *fedInfo ) {
813 channelPlots_[detId].ECCheckPerChannel->Fill((
int)((optorx.getLV1()& 0xFF)-((
unsigned int)
status.getEC() & 0xFF)) & 0xFF);
821 for (
const auto& digis : *diamondDigis ) {
823 for (
const auto& digi : digis ) {
827 for (
unsigned short hptdcErrorIndex = 1; hptdcErrorIndex < 16; ++hptdcErrorIndex )
832 if ( digi.getLeadingEdge() == 0 && digi.getTrailingEdge() == 0 )
channelPlots_[detId].leadingWithoutTrailing->Fill( 1 );
833 else if ( digi.getLeadingEdge() != 0 && digi.getTrailingEdge() == 0 )
channelPlots_[detId].leadingWithoutTrailing->Fill( 2 );
834 else if ( digi.getLeadingEdge() == 0 && digi.getTrailingEdge() != 0 )
channelPlots_[detId].leadingWithoutTrailing->Fill( 3 );
835 else if ( digi.getLeadingEdge() != 0 && digi.getTrailingEdge() != 0 )
channelPlots_[detId].leadingWithoutTrailing->Fill( 4 );
841 for (
const auto&
rechits : *diamondRecHits ) {
843 for (
const auto& rechit :
rechits ) {
846 channelPlots_[detId].LeadingEdgeCumulativePerChannel->Fill( rechit.getT() + 25*rechit.getOOTIndex() );
847 channelPlots_[detId].TimeOverThresholdCumulativePerChannel->Fill( rechit.getToT() );
848 channelPlots_[detId].LeadingTrailingCorrelationPerChannel->Fill( rechit.getT() + 25*rechit.getOOTIndex(), rechit.getT() + 25*rechit.getOOTIndex() + rechit.getToT() );
855 for (
const auto&
rechits : *diamondRecHits ) {
857 for (
const auto& rechit :
rechits ) {
859 if ( stripTracks.isValid() ) {
861 for (
const auto& ds : *stripTracks ) {
862 for (
const auto& striplt : ds ) {
864 if ( !striplt.isValid() )
continue;
865 if ( stripId.arm() != detId.arm() )
continue;
868 channelPlots_[detId].stripTomography_far->Fill( striplt.getX0(), striplt.getY0() + 50*( rechit.getOOTIndex()-1 ) );
871 channelPlots_[detId].stripTomography_near->Fill( striplt.getX0(), striplt.getY0() + 50*( rechit.getOOTIndex()-1 ) );
static const int CTPPS_FED_ID_56
OptoRx headers and footers.
plots related to one Diamond plane
MonitorElement * TimeOverThresholdCumulativePerChannel
plots related to one Diamond detector package
MonitorElement * h_trackCorr_hor
MonitorElement * stripTomography_near
static const int CHANNEL_OF_VFAT_CLOCK
static const double DISPLAY_RESOLUTION_FOR_HITS_MM
static const int CTPPS_DIAMOND_NUM_OF_PLANES
void setPlane(uint32_t channel)
Reconstructed hit in diamond detectors.
#define DEFINE_FWK_MODULE(type)
void setChannel(uint32_t channel)
void channelName(std::string &name, NameFlag flag=nFull) const
void dqmBeginRun(const edm::Run &, const edm::EventSetup &) override
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
plots related to the whole system
int bunchCrossing() const
static const int CTPPS_DIAMOND_NUM_OF_CHANNELS
edm::EDGetTokenT< edm::DetSetVector< TotemRPLocalTrack > > tokenLocalTrack_
void endRun(const edm::Run &, const edm::EventSetup &)
void endLuminosityBlock(const edm::LuminosityBlock &, const edm::EventSetup &)
A track fit through a single RP.
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
static const int CTPPS_DIAMOND_STATION_ID
void analyze(const edm::Event &, const edm::EventSetup &)
void beginLuminosityBlock(const edm::LuminosityBlock &, const edm::EventSetup &)
void bookHistograms(DQMStore::IBooker &, const edm::Run &, const edm::EventSetup &) override
static const int CTPPS_NEAR_RP_ID
std::unordered_map< unsigned int, ChannelPlots > channelPlots_
MonitorElement * book1D(Args &&...args)
void rpName(std::string &name, NameFlag flag=nFull) const
plots related to one Diamond channel
MonitorElement * ECCheckPerChannel
unsigned long hitsCounterPerLumisection
edm::EDGetTokenT< edm::DetSetVector< CTPPSDiamondLocalTrack > > tokenDiamondTrack_
static const double HPTDC_BIN_WIDTH_NS
void setCurrentFolder(const std::string &fullpath)
MonitorElement * book2D(Args &&...args)
TH1F * getTH1F(void) const
void planeName(std::string &name, NameFlag flag=nFull) const
MonitorElement * LeadingTrailingCorrelationPerChannel
MonitorElement * leadingWithoutTrailing
Base class for CTPPS detector IDs.
std::unordered_map< unsigned int, PotPlots > potPlots_
edm::EDGetTokenT< edm::DetSetVector< CTPPSDiamondRecHit > > tokenDiamondHit_
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_
bool excludeMultipleHits_
TH2F * getTH2F(void) const
static const int CTPPS_DIAMOND_RP_ID
MonitorElement * LeadingEdgeCumulativePerChannel
static std::string getHPTDCErrorName(const unsigned short id)
virtual ~CTPPSDiamondDQMSource()
edm::EDGetTokenT< std::vector< TotemFEDInfo > > tokenFEDInfo_
static const int CTPPS_FED_ID_45
edm::EDGetTokenT< edm::DetSetVector< TotemVFATStatus > > tokenStatus_
double minimumStripAngleForTomography_
MonitorElement * hit_rate