100 if(arm<0 || station<0 || rp<0)
return(IndexNotValid);
101 if(arm>1 || station>=NStationMAX || rp>=NRPotsMAX)
return(IndexNotValid);
102 int rc = (arm*NStationMAX+
station)*NRPotsMAX + rp;
107 if(plane<0 || plane>=NplaneMAX)
return(IndexNotValid);
109 if(rc == IndexNotValid)
return(IndexNotValid);
110 return(rc*NplaneMAX + plane);
114 {
return((rp - RPn_first)*NplaneMAX + plane);}
118 {
return ((
id>>16)&0x7); }
133 verbosity(ps.getUntrackedParameter<unsigned
int>(
"verbosity", 0)),
134 rpStatusWord(ps.getUntrackedParameter<unsigned
int>(
"RPStatusWord",0x8000))
160 for(
int stn=0; stn<3; stn++) {
163 rpSts = (rpSts >> 1);
RPstatus[stn][rp] = rpSts&1;
182 hBX = ibooker.
book1D(
"events per BX",
"ctpps_pixel;Event.BX", 4002, -1.5, 4000. +0.5);
183 hBXshort = ibooker.
book1D(
"events per BX(short)",
"ctpps_pixel;Event.BX", 102, -1.5, 100. + 0.5);
185 for(
int arm=0; arm<2; arm++) {
196 string stnd, stnTitle;
203 string st =
"planes activity";
204 string st2 =
": " + stnTitle;
211 h->SetOption(
"colz");
212 TAxis *yah = h->GetYaxis();
214 st =
"hit average multiplicity in planes";
219 h2->SetOption(
"textcolz");
220 TAxis *yah2 = h2->GetYaxis();
224 st =
"hit multiplicity in planes";
225 string st3 =
";PlaneIndex(=pixelPot*PlaneMAX + plane)";
230 st =
"cluster multiplicity in planes";
235 st =
"cluster size in planes";
242 for(
int rp=RPn_first; rp<
RPn_last; rp++) {
246 yah->SetBinLabel(rp - RPn_first +1, rpTitle.c_str());
247 yah2->SetBinLabel(rp - RPn_first +1, rpTitle.c_str());
259 ibooker.
book1D(
"number of fired planes per event", rpTitle+
";nPlanes",
262 ibooker.
book1D(
"5 fired planes per BX", rpTitle+
";Event.BX", 4002, -1.5, 4000.+0.5);
264 ibooker.
book1D(
"4 fired ROCs per BX", rpTitle+
";Event.BX", 4002, -1.5, 4000.+0.5);
273 rpTitle+
";ROC ID;number of fired ROCs",
NROCsMAX,-0.5,
NROCsMAX-0.5, 7,-0.5,6.5);
277 rpTitle+
";ROC ID;number of fired ROCs",
NROCsMAX,-0.5,
NROCsMAX-0.5, 7,-0.5,6.5);
283 sprintf(s,
"plane_%d",
p);
284 string pd = rpd+
"/"+
string(s);
286 string st1 =
": "+rpTitle+
"_"+
string(s);
287 st =
"hits position";
292 st =
"adc average value";
297 st =
"hits multiplicity";
304 for(
int roc=0; roc<6; roc++) {
305 sprintf(s,
"ROC_%d",roc);
306 string st2 = st1 +
"_" +
string(s);
313 string st =
"adc average value";
338 for(
int arm = 0; arm <2; arm++)
for(
int rp=0; rp<
NRPotsMAX; rp++)
339 RPactivity[arm][rp] = 0;
343 for(
int ind=0; ind<2*3*NRPotsMAX*
NplaneMAX; ind++)
359 for(
const auto &ds_digi : *pixDigi)
361 int idet =
getDet(ds_digi.id);
363 if(
verbosity>1)
LogPrint(
"CTPPSPixelDQMSource") <<
"not CTPPS: ds_digi.id"<<ds_digi.id;
371 int arm = theId.
arm()&0x1;
373 int rpot = theId.
rp()&0x7;
374 RPactivity[arm][rpot] = 1;
389 dit != ds_digi.end(); ++dit) {
390 int row = dit->row();
391 int col = dit->column();
392 int adc = dit->adc();
400 if(trocId>=0 && trocId<NROCsMAX) {
413 for(
int arm=0; arm<2; arm++)
for(
int stn=0; stn<
NStationMAX; stn++)
417 if(RPactivity[arm][rp]==0)
continue;
420 for(
int p=0; p<NplaneMAX; p++) if(HitsMultPlane[index][p]>0) np++;
428 for(
int r=0; r<NROCsMAX; r++) if(HitsMultROC[indp][r] > 0) ++rocf[
r];
436 for(
int r=0; r<
NROCsMAX; r++)
if(rocf[r] == max)
456 <<
"end of Run "<<run.
run()<<
": "<<
nEvents<<
" events\n" int adc(sample_type sample)
get the ADC sample (12 bits)
T getParameter(std::string const &) const
MonitorElement * hHitsMult[RPotsTotalNumber][NplaneMAX]
int HitsMultPlane[RPotsTotalNumber][NplaneMAX]
MonitorElement * hp2xyADC[RPotsTotalNumber][NplaneMAX]
MonitorElement * h2CluSize[NArms][NStationMAX]
edm::EDGetTokenT< edm::DetSetVector< CTPPSPixelDigi > > tokenDigi
void endRun(edm::Run const &run, edm::EventSetup const &eSetup)
void dqmBeginRun(edm::Run const &, edm::EventSetup const &) override
TProfile2D * getTProfile2D(void) const
MonitorElement * hp2HitsOcc[NArms][NStationMAX]
#define DEFINE_FWK_MODULE(type)
MonitorElement * h2HitsMultROC[RPotsTotalNumber]
void beginLuminosityBlock(edm::LuminosityBlock const &lumi, edm::EventSetup const &eSetup)
int bunchCrossing() const
int getDefaultRowDetSize() const
MonitorElement * hRPotActivROCsMax[RPotsTotalNumber]
TH2D * getTH2D(void) const
CTPPSDetId getStationId() const
CTPPSPixelIndices thePixIndices
int prIndex(int rp, int plane)
int RPindexValid[RPotsTotalNumber]
virtual ~CTPPSPixelDQMSource()
int RPstatus[NStationMAX][NRPotsMAX]
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
void endLuminosityBlock(edm::LuminosityBlock const &lumi, edm::EventSetup const &eSetup)
MonitorElement * h2ClusMultipl[NArms][NStationMAX]
CTPPSPixelDQMSource(const edm::ParameterSet &ps)
MonitorElement * bookProfile2D(Args &&...args)
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
MonitorElement * hRPotActivBX[RPotsTotalNumber]
static int RPotsTotalNumber
int getDefaultColDetSize() const
MonitorElement * h2xyROCadc[RPotsTotalNumber *NplaneMAX][NROCsMAX]
MonitorElement * book1D(Args &&...args)
CTPPSDetId getRPId() const
void armName(std::string &name, NameFlag flag=nFull) const
int getRPindex(int arm, int station, int rp)
MonitorElement * hRPotActivBXroc[RPotsTotalNumber]
MonitorElement * h2PlaneActive[NArms][NStationMAX]
MonitorElement * h2xyROCHits[RPotsTotalNumber *NplaneMAX][NROCsMAX]
void setStation(uint32_t station)
unsigned int rpStatusWord
void setCurrentFolder(const std::string &fullpath)
MonitorElement * book2D(Args &&...args)
Base class for CTPPS detector IDs.
int transformToROC(const int col, const int row, int &rocId, int &colROC, int &rowROC) const
static const int kDetOffset
MonitorElement * hRPotActivROCs[RPotsTotalNumber]
MonitorElement * book2DD(Args &&...args)
int StationStatus[NStationMAX]
void analyze(edm::Event const &e, edm::EventSetup const &eSetup)
int HitsMultROC[RPotsTotalNumber *NplaneMAX][NROCsMAX]
TH2F * getTH2F(void) const
int getPlaneIndex(int arm, int station, int rp, int plane)
MonitorElement * h2xyHits[RPotsTotalNumber][NplaneMAX]
MonitorElement * hRPotActivPlanes[RPotsTotalNumber]
MonitorElement * book1DD(Args &&...args)
MonitorElement * hBXshort
MonitorElement * h2HitsMultipl[NArms][NStationMAX]