97 std::unordered_map<unsigned int, PotPlots>
potPlots_;
125 1. / DISPLAY_RESOLUTION_FOR_HITS_MM;
142 hitDistribution2d = ibooker.
book2D(
"hits in planes",
143 title +
" hits in planes;plane number;x (mm)",
151 recHitTime = ibooker.
book1D(
"recHit time",
title +
" time in the recHits; t (ns)", 500, -25, 25);
170 recHitTime = ibooker.
book1D(
"recHit Time",
title +
" recHit Time; t (ns)", 500, -25, 25);
182 verbosity_(ps.getUntrackedParameter<unsigned
int>(
"verbosity", 0)),
194 for (
auto it =
geom.beginSensor();
it !=
geom.endSensor();
it++) {
203 edm::LogProblem(
"DiamondSampicCalibrationDQMSource") <<
"ERROR: no descriptor for detId";
217 for (
auto it =
geom.beginSensor();
it !=
geom.endSensor(); ++
it) {
245 std::unordered_map<uint32_t, uint32_t> detIdToHw;
247 for (
const auto &digis : *timingDigi) {
249 for (
const auto &digi : digis)
250 detIdToHw[
detId] = digi.hardwareId();
254 std::set<uint8_t> boardSet;
255 std::unordered_map<unsigned int, unsigned int> channelsPerPlane;
256 std::unordered_map<unsigned int, unsigned int> channelsPerPlaneWithTime;
260 for (
const auto &
rechits : *timingRecHits) {
264 detId_pot.setChannel(0);
268 for (
const auto &rechit :
rechits) {
270 float UFSDShift = 0.0;
271 if (rechit.yWidth() < 3)
274 TH2F *hitHistoTmp =
potPlots_[detId_pot].hitDistribution2d->getTH2F();
275 TAxis *hitHistoTmpYAxis = hitHistoTmp->GetYaxis();
279 for (
int i = 0;
i < numOfBins; ++
i)
280 potPlots_[detId_pot].hitDistribution2d->Fill(
detId.plane() + UFSDShift,
281 hitHistoTmpYAxis->GetBinCenter(startBin +
i));
285 int db = (detIdToHw[
detId] & 0xE0) >> 5;
286 int sampic = (detIdToHw[
detId] & 0x10) >> 4;
287 int channel = (detIdToHw[
detId] & 0x0F);
const Translation & translation() const
T const & getData(const ESGetToken< T, R > &iToken) const noexcept(false)
virtual void setCurrentFolder(std::string const &fullpath)
MonitorElement * hitDistribution2d
void setPlane(uint32_t channel)
plots related to one Diamond channel
plots related to one Diamond plane
void setChannel(uint32_t channel)
static const double DISPLAY_RESOLUTION_FOR_HITS_MM
edm::EDGetTokenT< edm::DetSetVector< TotemTimingDigi > > totemTimingDigiToken_
edm::EDGetTokenT< edm::DetSetVector< TotemTimingRecHit > > tokenRecHit_
void planeName(std::string &name, NameFlag flag=nFull) const
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
void dqmBeginRun(const edm::Run &, const edm::EventSetup &) override
std::unordered_map< unsigned int, double > horizontalShiftOfDiamond_
DiamondSampicCalibrationDQMSource(const edm::ParameterSet &)
void rpName(std::string &name, NameFlag flag=nFull) const
edm::TimeValue_t timeOfPreviousEvent_
static const double INV_DISPLAY_RESOLUTION_FOR_HITS_MM
#define DEFINE_FWK_MODULE(type)
MonitorElement * recHitTime
const DiamondDimensions & getDiamondDimensions() const
unsigned long long TimeValue_t
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
void channelName(std::string &name, NameFlag flag=nFull) const
std::unordered_map< unsigned int, PlanePlots > planePlots_
static bool check(unsigned int raw)
returns true if the raw ID is a PPS-timing one
std::unordered_map< unsigned int, PotPlots > potPlots_
void bookHistograms(DQMStore::IBooker &, const edm::Run &, const edm::EventSetup &) override
edm::ESGetToken< CTPPSGeometry, VeryForwardRealGeometryRecord > geomEsToken_
~DiamondSampicCalibrationDQMSource() override
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
edm::ESHandle< PPSTimingCalibration > hTimingCalib_
MonitorElement * recHitTime
plots related to one Diamond detector package
std::unordered_map< unsigned int, ChannelPlots > channelPlots_
edm::ESGetToken< PPSTimingCalibration, PPSTimingCalibrationRcd > timingCalibrationToken_
Detector ID class for CTPPS Timing Diamond detectors. Bits [19:31] : Assigend in CTPPSDetId Calss Bit...
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
plots related to the whole system
void analyze(const edm::Event &, const edm::EventSetup &) override
Log< level::Error, true > LogProblem