48 x_width = 2.0 * det->
params().at( 0 );
144 MonitorElement* leadingEdgeCumulative_both =
nullptr, *leadingEdgeCumulative_all =
nullptr, *leadingEdgeCumulative_le =
nullptr, *trailingEdgeCumulative_te =
nullptr;
145 MonitorElement* timeOverThresholdCumulativePot =
nullptr, *leadingTrailingCorrelationPot =
nullptr;
199 MonitorElement* leadingEdgeCumulative_both =
nullptr, *leadingEdgeCumulative_le =
nullptr, *trailingEdgeCumulative_te =
nullptr;
244 CTPPSDiamondDQMSource::PotPlots::PotPlots(
DQMStore::IBooker& ibooker,
unsigned int id ): HitCounter(0), MHCounter(0), LeadingOnlyCounter(0), TrailingOnlyCounter(0), CompleteCounter(0), pixelTracksMap(
"Pixel track maps for efficiency",
"Pixel track maps for efficiency", 25, 0, 25, 12, -2, 10 )
252 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 );
254 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 );
256 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 );
263 activePlanes = ibooker.
book1D(
"active planes", title+
" active planes (per event);number of active planes", 6, -0.5, 5.5 );
264 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 );
269 pixelTomographyAll_0_25 = ibooker.
book2D(
"tomography pixel 0 25", title+
" tomography with pixel 0 - 25 ns (all planes);x + 25*plane(mm);y (mm)", 100, 0, 100, 8, 0, 8 );
271 pixelTomographyAll_25_50 = ibooker.
book2D(
"tomography pixel 25 50", title+
" tomography with pixel 25 - 50 ns (all planes);x + 25*plane(mm);y (mm)", 100, 0, 100, 8, 0, 8 );
273 pixelTomographyAll_50_75 = ibooker.
book2D(
"tomography pixel 50 75", title+
" tomography with pixel 50 - 75 ns (all planes);x + 25*plane(mm);y (mm)", 100, 0, 100, 8, 0, 8 );
281 leadingTrailingCorrelationPot = ibooker.
book2D(
"leading trailing correlation", title+
" leading trailing correlation;leading edge (ns);trailing edge (ns)", 75, 0, 75, 75, 0, 75 );
288 ECCheck = ibooker.
book1D(
"optorxEC(8bit) - vfatEC", title+
" EC Error;optorxEC-vfatEC", 50,-25, 25 );
291 for (
unsigned short error_index=1; error_index<16; ++error_index )
305 MHComprensive = ibooker.
book2D(
"MH in channels", title+
" MH (%) in channels;plane number;ch number", 10, -0.5, 4.5, 14, -1, 13 );
307 EfficiencyOfChannelsInPot = ibooker.
book2D(
"Efficiency in channels", title+
" Efficiency (%) in channels (diamonds only);plane number;ch number", 10, -0.5, 4.5, 14, -1, 13 );
329 hit_multiplicity = ibooker.
book1D(
"channels per plane", title+
" channels per plane; ch per plane", 13, -0.5, 12.5 );
331 pixelTomography_far = ibooker.
book2D(
"tomography pixel", title+
" tomography with pixel;x + 25 OOT (mm);y (mm)", 75, 0, 75, 8, 0, 8 );
351 activity_per_bx_0_25 = ibooker.
book1D(
"activity per BX 0 25", title+
" Activity per BX 0 - 25 ns;Event.BX", 500, -1.5, 498. + 0.5 );
353 activity_per_bx_25_50 = ibooker.
book1D(
"activity per BX 25 50", title+
" Activity per BX 25 - 50 ns;Event.BX", 500, -1.5, 498. + 0.5 );
355 activity_per_bx_50_75 = ibooker.
book1D(
"activity per BX 50 75", title+
" Activity per BX 50 - 75 ns;Event.BX", 500, -1.5, 498. + 0.5 );
359 for (
unsigned short error_index=1; error_index<16; ++error_index )
369 pixelTomography_far = ibooker.
book2D(
"tomography pixel",
"tomography with pixel;x + 25 OOT (mm);y (mm)", 75, 0, 75, 8, 0, 8 );
371 hit_rate = ibooker.
book1D(
"hit rate", title+
"hit rate;rate (Hz)", 40, 0, 20);
385 verbosity_ ( ps.getUntrackedParameter<unsigned
int>(
"verbosity", 0 ) ),
388 for (
const auto&
pset : ps.
getParameter< std::vector<edm::ParameterSet> >(
"offsetsOOT" ) ) {
420 if ( iRun.
run()>300000 ) {
454 std::shared_ptr<dds::Cache>
457 auto d = std::make_shared<dds::Cache>();
458 d->hitDistribution2dMap.reserve(
potPlots_.size());
460 d->hitDistribution2dMap[
plot.first] = std::unique_ptr<TH2F>(
static_cast<TH2F*
>(
plot.second.hitDistribution2d_lumisection->getTH2F()->Clone()));
493 valid &= diamondVFATStatus.
isValid();
494 valid &= diamondDigis.
isValid();
500 <<
"ERROR in CTPPSDiamondDQMSource::analyze > some of the required inputs are not valid. Skipping this event.\n" 501 <<
" diamondVFATStatus.isValid = " << diamondVFATStatus.
isValid() <<
"\n" 502 <<
" diamondDigis.isValid = " << diamondDigis.
isValid() <<
"\n" 503 <<
" fedInfo.isValid = " << fedInfo.
isValid();
518 for (
const auto& digis : *diamondDigis ) {
522 for (
const auto& digi : digis ) {
524 detId_pot.setChannel( 0 );
528 if ( digi.getLeadingEdge() != 0 || digi.getTrailingEdge() != 0 ) {
530 if ( digi.getLeadingEdge() != 0 ) {
533 if ( digi.getLeadingEdge() != 0 && digi.getTrailingEdge() == 0 ) {
534 ++(
potPlots_[detId_pot].LeadingOnlyCounter);
537 if ( digi.getLeadingEdge() == 0 && digi.getTrailingEdge() != 0 ) {
538 ++(
potPlots_[detId_pot].TrailingOnlyCounter);
541 if ( digi.getLeadingEdge() != 0 && digi.getTrailingEdge() != 0 ) {
542 ++(
potPlots_[detId_pot].CompleteCounter);
549 if ( detId.channel() == 6 || detId.channel() == 7 )
551 int verticalIndex = 2*detId.plane() + (detId.channel() - 6);
552 for (
unsigned short hptdcErrorIndex = 1; hptdcErrorIndex < 16; ++hptdcErrorIndex )
553 if ( hptdcErrors.
getErrorId( hptdcErrorIndex-1 ) )
potPlots_[detId_pot].HPTDCErrorFlags_2D->Fill( hptdcErrorIndex, verticalIndex );
555 if ( digi.getMultipleHit() ) ++(
potPlots_[detId_pot].MHCounter);
560 for (
const auto& vfat_status : *diamondVFATStatus ) {
564 detId_pot.setChannel( 0 );
565 for (
const auto&
status : vfat_status ) {
566 if ( !
status.isOK() )
continue;
571 for (
const auto& optorx : *fedInfo ) {
573 potPlots_[detId_pot].ECCheck->Fill((
int)((optorx.getLV1()& 0xFF)-((
unsigned int)
status.getEC() & 0xFF)) & 0xFF);
574 if ( ( static_cast<int>( ( optorx.getLV1() & 0xFF )-
status.getEC() ) !=
EC_difference_56_ ) && (
static_cast<uint8_t
>( ( optorx.getLV1() & 0xFF )-
status.getEC() ) < 128 ) )
575 EC_difference_56_ = static_cast<int>( optorx.getLV1() & 0xFF )-( static_cast<unsigned int>(
status.getEC() ) & 0xFF );
578 if ( detId.channel() == 6 || detId.channel() == 7 )
potPlots_[detId_pot].HPTDCErrorFlags_2D->Fill( 16, 2*detId.plane() + (detId.channel() - 6) );
581 <<
"\t\tVFAT EC: 0x"<<
static_cast<unsigned int>(
status.getEC() )
582 <<
"\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 );
592 if ( detId.channel() == 6 || detId.channel() == 7 )
potPlots_[detId_pot].HPTDCErrorFlags_2D->Fill( 16, 2*detId.plane() + (detId.channel() - 6) );
595 <<
"\t\tVFAT EC: 0x"<<
static_cast<unsigned int>(
status.getEC() )
596 <<
"\twith ID: " <<
std::dec << detId
605 std::unordered_map<unsigned int, std::set<unsigned int> > planes;
606 std::unordered_map<unsigned int, std::set<unsigned int> > planes_inclusive;
610 for (
const auto&
rechits : *diamondRecHits ) {
613 detId_pot.setChannel( 0 );
616 for (
const auto& rechit :
rechits ) {
617 planes_inclusive[detId_pot].insert( detId.plane() );
620 planes[detId_pot].
insert( detId.plane() );
624 float UFSDShift = 0.0;
625 if ( rechit.getYWidth() < 3 ) UFSDShift = 0.5;
628 TH2F *hitHistoTmp =
potPlots_[detId_pot].hitDistribution2d->getTH2F();
629 TAxis *hitHistoTmpYAxis = hitHistoTmp->GetYaxis();
632 for (
int i=0;
i<numOfBins; ++
i) {
633 hitHistoTmp->Fill( detId.plane() + UFSDShift, hitHistoTmpYAxis->GetBinCenter(startBin+
i) );
636 hitHistoTmp = lumiCache->hitDistribution2dMap[detId_pot].get();
637 hitHistoTmpYAxis = hitHistoTmp->GetYaxis();
640 for (
int i=0;
i<numOfBins; ++
i) {
641 hitHistoTmp->Fill( detId.plane() + UFSDShift, hitHistoTmpYAxis->GetBinCenter(startBin+
i) );
646 if ( rechit.getToT() != 0 ) {
648 potPlots_[detId_pot].leadingEdgeCumulative_both->Fill( rechit.getT() + 25*rechit.getOOTIndex() );
649 potPlots_[detId_pot].timeOverThresholdCumulativePot->Fill( rechit.getToT() );
651 TH2F *hitHistoOOTTmp =
potPlots_[detId_pot].hitDistribution2dOOT->getTH2F();
652 TAxis *hitHistoOOTTmpYAxis = hitHistoOOTTmp->GetYaxis();
655 for (
int i=0;
i<numOfBins; ++
i) {
656 hitHistoOOTTmp->Fill( detId.plane() + 0.25 * rechit.getOOTIndex(), hitHistoOOTTmpYAxis->GetBinCenter(startBin+
i) );
662 TH2F *hitHistoOOTTmp =
potPlots_[detId_pot].hitDistribution2dOOT_le->getTH2F();
663 TAxis *hitHistoOOTTmpYAxis = hitHistoOOTTmp->GetYaxis();
666 for (
int i=0;
i<numOfBins; ++
i) {
667 hitHistoOOTTmp->Fill( detId.plane() + 0.25 * rechit.getOOTIndex(), hitHistoOOTTmpYAxis->GetBinCenter(startBin+
i) );
677 plt.second.activePlanes->Fill( planes[plt.first].size() );
678 plt.second.activePlanesInclusive->Fill( planes_inclusive[plt.first].size() );
682 for (
const auto&
tracks : *diamondLocalTracks ) {
685 detId_pot.setChannel( 0 );
689 if ( !
track.isValid() )
continue;
692 if ( potPlots_.find( detId_pot ) == potPlots_.end() )
continue;
694 TH2F *trackHistoOOTTmp = potPlots_[detId_pot].trackDistributionOOT->getTH2F();
695 TAxis *trackHistoOOTTmpYAxis = trackHistoOOTTmp->GetYaxis();
698 for (
int i=0;
i<numOfBins; ++
i) {
699 trackHistoOOTTmp->Fill(
track.getOOTIndex(), trackHistoOOTTmpYAxis->GetBinCenter(startBin+
i) );
703 TH1F *trackHistoInTimeTmp = potPlots_[detId_pot].trackDistribution->getTH1F();
706 for (
int i=0;
i<numOfBins; ++
i) {
707 trackHistoInTimeTmp->Fill( trackHistoInTimeTmp->GetBinCenter(startBin+
i) );
714 for (
const auto&
tracks : *diamondLocalTracks ) {
717 detId_pot.setChannel( 0 );
721 std::set<int> planesInTrackSet;
722 for (
const auto& vec : *diamondRecHits ) {
724 if ( detid.arm() != detId_pot.arm() )
continue;
726 for (
const auto&
hit : vec ) {
730 planesInTrackSet.insert(detid.plane());
735 if ( numOfHits > 0 && numOfHits <= 10 && planesInTrackSet.size() > 2 ) {
736 for (
int plane=0; plane<4; ++plane ) {
737 for (
int channel=0; channel<12; ++channel ) {
738 int map_index = plane*100 + channel;
739 if ( potPlots_[detId_pot].effDoublecountingChMap.find( map_index ) == potPlots_[detId_pot].effDoublecountingChMap.end() ) {
740 potPlots_[detId_pot].effTriplecountingChMap[map_index] = 0;
741 potPlots_[detId_pot].effDoublecountingChMap[map_index] = 0;
746 ++(potPlots_[detId_pot].effDoublecountingChMap[map_index]);
747 for (
const auto&
rechits : *diamondRecHits ) {
749 if ( detId_hit == detId ) {
750 for (
const auto& rechit :
rechits ) {
751 if ( track.containsHit( rechit, 1 ) ) {
753 ++(potPlots_[detId_pot].effTriplecountingChMap[map_index]);
766 for (
const auto&
rechits : *diamondRecHits ) {
769 detId_pot.setChannel( 0 );
771 for (
const auto& rechit :
rechits ) {
773 if ( rechit.getToT() == 0 )
continue;
774 if ( !pixelTracks.
isValid() )
continue;
775 if ( potPlots_.find( detId_pot ) == potPlots_.end() )
continue;
777 for (
const auto& ds : *pixelTracks ) {
778 if ( ds.size() > 1 )
continue;
781 for (
const auto& lt : ds ) {
782 if ( lt.isValid() && pixId.arm() == detId_pot.arm() ) {
821 std::unordered_map<unsigned int, unsigned int> channelsPerPlane;
822 for (
const auto& digis : *diamondDigis ) {
825 for (
const auto& digi : digis ) {
830 if ( digi.getLeadingEdge() != 0 ) {
831 planePlots_[detId_plane].digiProfileCumulativePerPlane->Fill( detId.channel() );
832 if ( channelsPerPlane.find(detId_plane) != channelsPerPlane.end() ) channelsPerPlane[detId_plane]++;
833 else channelsPerPlane[detId_plane] = 0;
838 for (
const auto& plt : channelsPerPlane ) {
839 planePlots_[plt.first].hit_multiplicity->Fill( plt.second );
843 for (
const auto&
rechits : *diamondRecHits ) {
846 for (
const auto& rechit :
rechits ) {
848 if ( rechit.getToT() == 0 )
continue;
851 TH1F *hitHistoTmp =
planePlots_[detId_plane].hitProfile->getTH1F();
854 for (
int i=0;
i<numOfBins; ++
i) {
855 hitHistoTmp->Fill( hitHistoTmp->GetBinCenter(startBin+
i) );
864 for (
const auto& ds : *pixelTracks ) {
867 if ( ds.size() > 1 )
continue;
868 for (
const auto& lt : ds ) {
869 if ( lt.isValid() ) {
874 std::set< CTPPSDiamondDetId > planesWitHits_set;
875 for (
const auto&
rechits : *diamondRecHits ) {
878 for (
const auto& rechit :
rechits ) {
884 if (
centralOOT_ != -999 && rechit.getOOTIndex() ==
centralOOT_ ) planesWitHits_set.insert( detId_plane );
890 for (
auto& planeId : planesWitHits_set)
904 for (
const auto& digis : *diamondDigis ) {
906 for (
const auto& digi : digis ) {
911 for (
unsigned short hptdcErrorIndex = 1; hptdcErrorIndex < 16; ++hptdcErrorIndex )
913 if ( digi.getMultipleHit() ) ++(
channelPlots_[detId].MHCounter);
916 if ( digi.getLeadingEdge() != 0 || digi.getTrailingEdge() != 0 ) {
918 if ( digi.getLeadingEdge() != 0 && digi.getTrailingEdge() == 0 ) {
922 if ( digi.getLeadingEdge() == 0 && digi.getTrailingEdge() != 0 ) {
926 if ( digi.getLeadingEdge() != 0 && digi.getTrailingEdge() != 0 ) {
937 for (
const auto&
rechits : *diamondRecHits ) {
939 for (
const auto& rechit :
rechits ) {
943 channelPlots_[detId].leadingEdgeCumulative_both->Fill( rechit.getT() + 25*rechit.getOOTIndex() );
944 channelPlots_[detId].TimeOverThresholdCumulativePerChannel->Fill( rechit.getToT() );
946 ++(lumiCache->hitsCounterMap[detId]);
956 for (
const auto&
rechits : *diamondRecHits ) {
958 for (
const auto& rechit :
rechits ) {
961 if ( !pixelTracks.isValid() )
continue;
964 for (
const auto& ds : *pixelTracks ) {
967 if ( ds.size() > 1 )
continue;
968 for (
const auto& lt : ds ) {
984 auto lumiCache = luminosityBlockCache(iLumi.
index());
986 *(
plot.second.hitDistribution2d_lumisection->getTH2F())=*(lumiCache->hitDistribution2dMap[
plot.first]);
989 auto hitsCounterPerLumisection = lumiCache->hitsCounterMap[
plot.first];
990 if ( hitsCounterPerLumisection != 0 ) {
994 double HundredOverHitCounter = .0;
995 if (
plot.second.HitCounter != 0 )
996 HundredOverHitCounter = 100. /
plot.second.HitCounter;
997 plot.second.HPTDCErrorFlags->setBinContent( 16, HundredOverHitCounter *
plot.second.MHCounter );
998 plot.second.leadingWithoutTrailing->setBinContent(1, HundredOverHitCounter *
plot.second.LeadingOnlyCounter );
999 plot.second.leadingWithoutTrailing->setBinContent(2, HundredOverHitCounter *
plot.second.TrailingOnlyCounter );
1000 plot.second.leadingWithoutTrailing->setBinContent(3, HundredOverHitCounter *
plot.second.CompleteCounter );
1003 for (
auto&
plot : potPlots_ ) {
1004 double HundredOverHitCounterPot = 0.;
1005 if (
plot.second.HitCounter !=0 )
1006 HundredOverHitCounterPot = 100. /
plot.second.HitCounter;
1007 plot.second.leadingWithoutTrailingCumulativePot->setBinContent(1, HundredOverHitCounterPot *
plot.second.LeadingOnlyCounter );
1008 plot.second.leadingWithoutTrailingCumulativePot->setBinContent(2, HundredOverHitCounterPot *
plot.second.TrailingOnlyCounter );
1009 plot.second.leadingWithoutTrailingCumulativePot->setBinContent(3, HundredOverHitCounterPot *
plot.second.CompleteCounter );
1011 plot.second.MHComprensive->Reset();
1013 for (
auto& chPlot : channelPlots_ ) {
1015 if ( chId.
arm() == rpId.
arm() && chId.
rp() == rpId.
rp() ) {
1016 plot.second.MHComprensive->Fill(chId.
plane(), chId.
channel(), chPlot.second.HPTDCErrorFlags->getBinContent( 16 ) );
1023 for (
auto&
plot : potPlots_ ) {
1024 plot.second.EfficiencyOfChannelsInPot->Reset();
1025 for (
auto& element :
plot.second.effTriplecountingChMap ) {
1026 if (
plot.second.effDoublecountingChMap[ element.first ] > 0) {
1027 int plane = element.first / 100;
1028 int channel = element.first % 100;
1029 double counted = element.second;
1030 double total =
plot.second.effDoublecountingChMap[ element.first ];
1034 plot.second.EfficiencyOfChannelsInPot->Fill(plane, channel, 100*efficiency);
1041 TH2F *hitHistoTmp =
plot.second.EfficiencyWRTPixelsInPlane->getTH2F();
1046 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
Translation translation() const
MonitorElement * activePlanes
~CTPPSDiamondDQMSource() override
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
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
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
MonitorElement * digiProfileCumulativePerPlane
int bunchCrossing() const
virtual example_stream void bookHistograms(DQMStore::IBooker &,@example_stream edm::Run const &,@example_stream edm::EventSetup const &) override
MonitorElement * leadingEdgeCumulative_all
MonitorElement * EfficiencyWRTPixelsInPlane
MonitorElement * trailingEdgeCumulative_te
static const int CTPPS_DIAMOND_NUM_OF_CHANNELS
MonitorElement * pixelTomographyAll_25_50
MonitorElement * leadingTrailingCorrelationPot
double horizontalShiftOfDiamond_
Event setup record containing the real (actual) geometry information.
MonitorElement * leadingWithoutTrailingCumulativePot
static const int CTPPS_PIXEL_STATION_ID
MonitorElement * activity_per_bx_25_50
void globalEndLuminosityBlock(const edm::LuminosityBlock &, const edm::EventSetup &) override
MonitorElement * activity_per_bx_50_75
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
MonitorElement * hitDistribution2d
MonitorElement * EfficiencyOfChannelsInPot
MonitorElement * hitProfile
void setCurrentFolder(std::string const &fullpath)
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 * pixelTomography_far
Geometrical description of a sensor.
MonitorElement * book1D(Args &&...args)
MonitorElement * pixelTomographyAll_50_75
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
edm::EDGetTokenT< edm::DetSetVector< CTPPSPixelLocalTrack > > tokenPixelTrack_
plots related to one Diamond channel
double horizontalShiftBwDiamondPixels_
LuminosityBlock const & getLuminosityBlock() const
MonitorElement * activity_per_bx_0_25
MonitorElement * pixelTomography_far
MonitorElement * hitDistribution2d_lumisection
bool insert(Storage &iStorage, ItemType *iItem, const IdTag &iIdTag)
edm::EDGetTokenT< edm::DetSetVector< CTPPSDiamondLocalTrack > > tokenDiamondTrack_
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 * activity_per_bx_50_75
MonitorElement * HPTDCErrorFlags_2D
void planeName(std::string &name, NameFlag flag=nFull) const
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
edm::EDGetTokenT< edm::DetSetVector< CTPPSDiamondRecHit > > tokenDiamondHit_
std::vector< MonitorElement * > pixelTomographyAll
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
std::vector< MonitorElement * > activity_per_bx
MonitorElement * hitDistribution2dOOT_le
bool excludeMultipleHits_
MonitorElement * hitDistribution2dOOT
MonitorElement * pixelTomographyAll_0_25
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
T const * product() const
edm::EDGetTokenT< edm::DetSetVector< TotemVFATStatus > > tokenStatus_
MonitorElement * activity_per_bx_25_50
virtual example_stream void analyze(const edm::Event &, const edm::EventSetup &) override
std::unordered_map< unsigned int, unsigned long > hitsCounterMap
MonitorElement * hit_rate
MonitorElement * activePlanesInclusive