Skip to content

Commit e019b41

Browse files
authored
Bug fixes for ITS Fhr task (#564)
1 parent 7012fa3 commit e019b41

2 files changed

Lines changed: 30 additions & 52 deletions

File tree

Modules/ITS/include/ITS/ITSFhrTask.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,10 +85,8 @@ class ITSFhrTask final : public TaskInterface
8585
std::array<bool, NLayer> mEnableLayers = { false };
8686

8787
int mNThreads = 0;
88-
std::vector<std::pair<int, int>> mHitPixelID[7][48][14][14]; //layer, stave, hic, chip
8988
std::unordered_map<unsigned int, int> mHitPixelID_Hash[7][48][2][14][14]; //layer, stave, substave, hic, chip
9089

91-
std::vector<int> mPixelHitNumber[7][48][14][14]; //hit number correspond mHitPixelID
9290
o2::itsmft::RawPixelDecoder<o2::itsmft::ChipMappingITS>* mDecoder;
9391
ChipPixelData* mChipDataBuffer = nullptr;
9492
std::vector<ChipPixelData> mChipsBuffer;
@@ -119,7 +117,6 @@ class ITSFhrTask final : public TaskInterface
119117

120118
//Occupancy and hit-map
121119
THnSparseI* mStaveHitmap[7][48];
122-
TH2I* mHitmapTmp;
123120
TH2D* mChipStaveOccupancy[7];
124121
TH2I* mChipStaveEventHitCheck[7];
125122
TH1D* mOccupancyPlot[7];

Modules/ITS/src/ITSFhrTask.cxx

Lines changed: 30 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ ITSFhrTask::~ITSFhrTask()
4848
delete mInfoCanvasOBComm;
4949
delete mTextForShifter;
5050
delete mTextForShifter2;
51-
delete mHitmapTmp;
5251

5352
for (int ilayer = 0; ilayer < 7; ilayer++) {
5453
delete mChipStaveOccupancy[ilayer];
@@ -170,8 +169,6 @@ void ITSFhrTask::createOccupancyPlots() //create general plots like error, trigg
170169
double Max[nDim] = { 1024, 512 };
171170

172171
//create IB plots
173-
mHitmapTmp = new TH2I("Occupancy/Tmp_histo", "Tmp histo", 7 * 1024, 0, 4 * 1024 * 7, 512, 0, 4 * 512);
174-
getObjectsManager()->startPublishing(mHitmapTmp);
175172
for (int ilayer = 0; ilayer < NLayerIB; ilayer++) {
176173
if (!mEnableLayers[ilayer]) {
177174
continue;
@@ -354,11 +351,6 @@ void ITSFhrTask::monitorData(o2::framework::ProcessingContext& ctx)
354351
for (auto& pixel : pixels) {
355352
mGeom->getChipId(mChipDataBuffer->getChipID(), lay, sta, ssta, mod, chip);
356353
mHitNumberOfChip[lay][sta][ssta][mod][chip]++;
357-
if (lay < NLayerIB) {
358-
double filltmp[2] = { (double)pixel.getCol() + (double)chip * 1024, (double)pixel.getRow() };
359-
mStaveHitmap[lay][sta]->Fill(filltmp, 1);
360-
} else {
361-
}
362354
if (mHitPixelID_Hash[lay][sta][ssta][mod][chip].find(pixel.getCol() * 1000 + pixel.getRow()) == mHitPixelID_Hash[lay][sta][ssta][mod][chip].end()) {
363355
mHitPixelID_Hash[lay][sta][ssta][mod][chip][pixel.getCol() * 1000 + pixel.getRow()] = 1;
364356
} else {
@@ -387,8 +379,6 @@ void ITSFhrTask::monitorData(o2::framework::ProcessingContext& ctx)
387379
//mTriggerVsFeeid->Reset(); Trigger is statistic by ourself so we don't need reset this plot, just use TH::Fill function
388380

389381
//Fill Error plots and occpancy plots
390-
int istavemax = 0;
391-
int istavemin = 999;
392382
o2::itsmft::ChipMappingITS mp;
393383
for (int ilayer = 0; ilayer < NLayer; ilayer++) {
394384
if (mOccupancyPlot[ilayer]) {
@@ -403,13 +393,6 @@ void ITSFhrTask::monitorData(o2::framework::ProcessingContext& ctx)
403393
if (!RUdecode) {
404394
continue;
405395
}
406-
if (istave > istavemax) {
407-
istavemax = istave;
408-
}
409-
if (istave < istavemin) {
410-
istavemin = istave;
411-
}
412-
413396
for (int ilink = 0; ilink < RUDecodeData::MaxLinksPerRU; ilink++) {
414397
const auto* GBTLinkInfo = mDecoderTmp->getGBTLink(RUdecode->links[ilink]);
415398
if (!GBTLinkInfo) {
@@ -421,11 +404,11 @@ void ITSFhrTask::monitorData(o2::framework::ProcessingContext& ctx)
421404
mChipStaveOccupancy[ilayer]->SetBinContent(ichip + 1, istave + 1, (mHitNumberOfChip[ilayer][istave][0][0][ichip]) / (GBTLinkInfo->statistics.nPackets * 1024. * 512.));
422405
std::unordered_map<unsigned int, int>::iterator iter;
423406
for (iter = mHitPixelID_Hash[ilayer][istave][0][0][ichip].begin(); iter != mHitPixelID_Hash[ilayer][istave][0][0][ichip].end(); iter++) {
407+
int pixelPos[2] = { (int)(iter->first / 1000) + (int)ichip * 1024, (int)(iter->first % 1000) };
408+
mStaveHitmap[ilayer][istave]->SetBinContent(pixelPos, (double)iter->second);
424409
double pixelOccupancy = (double)iter->second;
425-
if (pixelOccupancy > 0) {
426-
pixelOccupancy /= GBTLinkInfo->statistics.nPackets;
427-
mOccupancyPlot[ilayer]->Fill(log10(pixelOccupancy));
428-
}
410+
pixelOccupancy /= GBTLinkInfo->statistics.nPackets;
411+
mOccupancyPlot[ilayer]->Fill(log10(pixelOccupancy));
429412
}
430413
}
431414
}
@@ -449,10 +432,8 @@ void ITSFhrTask::monitorData(o2::framework::ProcessingContext& ctx)
449432
int pixelPos[2] = { (ihic * ((nChipsPerHic[lay] / 2) * NCols)) + (nChipsPerHic[lay] / 2) * NCols - (ichip - 7) * NCols - ((int)iter->first / 1000) + 1, NRows + ((int)iter->first % 1000) + (1024 * isubstave) + 1 };
450433
mStaveHitmap[ilayer][istave]->SetBinContent(pixelPos, pixelOccupancy);
451434
}
452-
if (pixelOccupancy > 0) {
453-
pixelOccupancy /= GBTLinkInfo->statistics.nPackets;
454-
mOccupancyPlot[ilayer]->Fill(log10(pixelOccupancy));
455-
}
435+
pixelOccupancy /= GBTLinkInfo->statistics.nPackets;
436+
mOccupancyPlot[ilayer]->Fill(log10(pixelOccupancy));
456437
}
457438
}
458439
}
@@ -464,12 +445,14 @@ void ITSFhrTask::monitorData(o2::framework::ProcessingContext& ctx)
464445
}
465446
}
466447
for (int ierror = 0; ierror < o2::itsmft::GBTLinkDecodingStat::NErrorsDefined; ierror++) {
448+
if (GBTLinkInfo->statistics.errorCounts[ierror] <= 0) {
449+
continue;
450+
}
467451
mErrorPlots->AddBinContent(ierror + 1, GBTLinkInfo->statistics.errorCounts[ierror]);
468452
if (ilayer < NLayerIB) {
469453
mErrorVsFeeid->SetBinContent((RUid * 3) + ilink + 1, ierror + 1, GBTLinkInfo->statistics.errorCounts[ierror]);
470454
} else {
471-
RUid -= StaveBoundary[NLayerIB];
472-
mErrorVsFeeid->SetBinContent((RUid * 2) + ilink + 1, ierror + 1, GBTLinkInfo->statistics.errorCounts[ierror]);
455+
mErrorVsFeeid->SetBinContent(((RUid - StaveBoundary[NLayerIB]) * 2) + ilink + 1, ierror + 1, GBTLinkInfo->statistics.errorCounts[ierror]);
473456
}
474457
}
475458
}
@@ -504,36 +487,34 @@ void ITSFhrTask::getEnableLayers()
504487

505488
void ITSFhrTask::endOfCycle()
506489
{
507-
std::ifstream runNumberFile("/home/its/QC_Online/workdir/infiles/RunNumber.dat"); //catching ITS run number in commissioning
490+
std::ifstream runNumberFile("infiles/RunNumber.dat"); //catching ITS run number in commissioning
508491
if (runNumberFile) {
509492
std::string runNumber;
510493
runNumberFile >> runNumber;
511494
ILOG(Info) << "runNumber : " << runNumber << ENDM;
512495
mInfoCanvasComm->SetTitle(Form("run%s", runNumber.c_str()));
513-
if (runNumber == mRunNumber) {
514-
goto pass;
515-
}
516-
getObjectsManager()->addMetadata(mTFInfo->GetName(), "Run", runNumber);
517-
getObjectsManager()->addMetadata(mErrorPlots->GetName(), "Run", runNumber);
518-
getObjectsManager()->addMetadata(mErrorVsFeeid->GetName(), "Run", runNumber);
519-
getObjectsManager()->addMetadata(mTriggerVsFeeid->GetName(), "Run", runNumber);
520-
getObjectsManager()->addMetadata(mTriggerPlots->GetName(), "Run", runNumber);
521-
getObjectsManager()->addMetadata(mInfoCanvasComm->GetName(), "Run", runNumber);
522-
for (int ilayer = 0; ilayer < NLayer; ilayer++) {
523-
if (!mEnableLayers[ilayer]) {
524-
continue;
525-
}
526-
getObjectsManager()->addMetadata(mChipStaveOccupancy[ilayer]->GetName(), "Run", runNumber);
527-
getObjectsManager()->addMetadata(mOccupancyPlot[ilayer]->GetName(), "Run", runNumber);
528-
getObjectsManager()->addMetadata(mChipStaveEventHitCheck[ilayer]->GetName(), "Run", runNumber);
529-
for (int istave = 0; istave < NStaves[ilayer]; istave++) {
530-
if (mStaveHitmap[ilayer][istave]) {
531-
getObjectsManager()->addMetadata(mStaveHitmap[ilayer][istave]->GetName(), "Run", runNumber);
496+
if (runNumber != mRunNumber) {
497+
getObjectsManager()->addMetadata(mTFInfo->GetName(), "Run", runNumber);
498+
getObjectsManager()->addMetadata(mErrorPlots->GetName(), "Run", runNumber);
499+
getObjectsManager()->addMetadata(mErrorVsFeeid->GetName(), "Run", runNumber);
500+
getObjectsManager()->addMetadata(mTriggerVsFeeid->GetName(), "Run", runNumber);
501+
getObjectsManager()->addMetadata(mTriggerPlots->GetName(), "Run", runNumber);
502+
getObjectsManager()->addMetadata(mInfoCanvasComm->GetName(), "Run", runNumber);
503+
for (int ilayer = 0; ilayer < NLayer; ilayer++) {
504+
if (!mEnableLayers[ilayer]) {
505+
continue;
506+
}
507+
getObjectsManager()->addMetadata(mChipStaveOccupancy[ilayer]->GetName(), "Run", runNumber);
508+
getObjectsManager()->addMetadata(mOccupancyPlot[ilayer]->GetName(), "Run", runNumber);
509+
getObjectsManager()->addMetadata(mChipStaveEventHitCheck[ilayer]->GetName(), "Run", runNumber);
510+
for (int istave = 0; istave < NStaves[ilayer]; istave++) {
511+
if (mStaveHitmap[ilayer][istave]) {
512+
getObjectsManager()->addMetadata(mStaveHitmap[ilayer][istave]->GetName(), "Run", runNumber);
513+
}
532514
}
533515
}
516+
mRunNumber = runNumber;
534517
}
535-
mRunNumber = runNumber;
536-
pass:;
537518
}
538519
ILOG(Info) << "endOfCycle" << ENDM;
539520
}

0 commit comments

Comments
 (0)