Skip to content

Commit 3827650

Browse files
authored
Some make up for CPV Pedestal task (#789)
Co-authored-by: sevdokim <sergey.evdokimov@cern.ch>
1 parent 0031a8b commit 3827650

3 files changed

Lines changed: 33 additions & 23 deletions

File tree

Modules/CPV/include/CPV/PedestalTask.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ class PedestalTask final : public TaskInterface
5454

5555
private:
5656
void initHistograms();
57-
// void fillHistograms(const gsl::span<const o2::cpv::Digit>& digits, const gsl::span<const o2::cpv::TriggerRecord>& triggerRecords);
5857
void fillHistograms();
5958
void resetHistograms();
6059

@@ -100,6 +99,7 @@ class PedestalTask final : public TaskInterface
10099

101100
int mNEventsTotal;
102101
int mNEventsFromLastFillHistogramsCall;
102+
int mMinNEventsToUpdatePedestals = 1000; ///< min number of events needed to update pedestals
103103

104104
std::array<TH1F*, kNHist1D> mHist1D = { nullptr }; ///< Array of 1D histograms
105105
std::array<TH2F*, kNHist2D> mHist2D = { nullptr }; ///< Array of 2D histograms

Modules/CPV/src/PedestalCheck.cxx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@ Quality PedestalCheck::check(std::map<std::string, std::shared_ptr<MonitorObject
136136
h->GetListOfFunctions()->Add(msg);
137137
msg->SetName(Form("%s_msg", mo->GetName()));
138138
msg->Clear();
139+
msg->AddText(Form("Run %d", mo->getRunNumber()));
139140
//count number of too small pedestals + too big pedestals
140141
int nOfBadPedestalValues = h->Integral(1, mMinGoodPedestalValueM[iMod]) + h->GetBinContent(h->GetNbinsX() + 1); //underflow + small pedestals + overflow
141142
if (nOfBadPedestalValues > mToleratedBadPedestalValueChannelsM[iMod]) {
@@ -171,6 +172,7 @@ Quality PedestalCheck::check(std::map<std::string, std::shared_ptr<MonitorObject
171172
h->GetListOfFunctions()->Add(msg);
172173
msg->SetName(Form("%s_msg", mo->GetName()));
173174
msg->Clear();
175+
msg->AddText(Form("Run %d", mo->getRunNumber()));
174176
//count number of too small pedestals + too big pedestals
175177
float binWidth = h->GetBinWidth(1);
176178
int nOfBadPedestalSigmas = h->Integral(mMaxGoodPedestalSigmaM[iMod] / binWidth + 1,
@@ -198,6 +200,7 @@ Quality PedestalCheck::check(std::map<std::string, std::shared_ptr<MonitorObject
198200
h->GetListOfFunctions()->Add(msg);
199201
msg->SetName(Form("%s_msg", mo->GetName()));
200202
msg->Clear();
203+
msg->AddText(Form("Run %d", mo->getRunNumber()));
201204
//count number of too small pedestals + too big pedestals
202205
float binWidth = h->GetBinWidth(1);
203206
int nOfBadPedestalEfficiencies = 7680 -

Modules/CPV/src/PedestalTask.cxx

Lines changed: 29 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,10 @@ void PedestalTask::initialize(o2::framework::InitContext& /*ctx*/)
5555
ILOG(Info, Support) << "initialize PedestalTask" << ENDM; // QcInfoLogger is used. FairMQ logs will go to there as well.
5656

5757
// this is how to get access to custom parameters defined in the config file at qc.tasks.<task_name>.taskParameters
58-
if (auto param = mCustomParameters.find("myOwnKey"); param != mCustomParameters.end()) {
59-
ILOG(Info, Devel) << "Custom parameter - myOwnKey: " << param->second << ENDM;
58+
if (auto param = mCustomParameters.find("minNEventsToUpdatePedestals"); param != mCustomParameters.end()) {
59+
ILOG(Info, Devel) << "Custom parameter : minNEventsToUpdatePedestals " << param->second << ENDM;
60+
mMinNEventsToUpdatePedestals = stoi(param->second);
61+
ILOG(Info, Devel) << "I set minNEventsToUpdatePedestals = " << mMinNEventsToUpdatePedestals << ENDM;
6062
}
6163
initHistograms();
6264
mNEventsTotal = 0;
@@ -65,15 +67,15 @@ void PedestalTask::initialize(o2::framework::InitContext& /*ctx*/)
6567

6668
void PedestalTask::startOfActivity(Activity& activity)
6769
{
68-
ILOG(Info, Support) << "startOfActivity" << activity.mId << ENDM;
70+
ILOG(Info, Support) << "startOfActivity() : resetting everything" << activity.mId << ENDM;
6971
resetHistograms();
7072
mNEventsTotal = 0;
7173
mNEventsFromLastFillHistogramsCall = 0;
7274
}
7375

7476
void PedestalTask::startOfCycle()
7577
{
76-
ILOG(Info, Support) << "startOfCycle" << ENDM;
78+
ILOG(Info, Devel) << "startOfCycle" << ENDM;
7779
//at at the startOfCycle all HistAmplitudes are not updated by definition
7880
for (int i = 0; i < kNChannels; i++)
7981
mIsUpdatedAmplitude[i] = false;
@@ -114,24 +116,25 @@ void PedestalTask::monitorData(o2::framework::ProcessingContext& ctx)
114116
// 2. Using get("<binding>")
115117
auto digits = ctx.inputs().get<gsl::span<o2::cpv::Digit>>("digits");
116118
mHist1D[H1DNDigitsPerInput]->Fill(digits.size());
117-
for (const auto& digit : digits) {
118-
mHist1D[H1DDigitIds]->Fill(digit.getAbsId());
119-
short relId[3];
120-
mCPVGeometry.absToRelNumbering(digit.getAbsId(), relId);
121-
//reminder: relId[3]={Module, phi col, z row} where Module=2..4, phi col=0..127, z row=0..59
122-
mHist2D[H2DDigitMapM2 + relId[0] - 2]->Fill(relId[1], relId[2]);
123-
mHistAmplitudes[digit.getAbsId()]->Fill(digit.getAmplitude());
124-
mIsUpdatedAmplitude[digit.getAbsId()] = true;
125-
}
126119

127120
auto digitsTR = ctx.inputs().get<gsl::span<o2::cpv::TriggerRecord>>("dtrigrec");
128121
//mNEventsTotal += digitsTR.size();//number of events in the current input
129122
for (const auto& trigRecord : digitsTR) {
130-
ILOG(Info, Devel) << " monitorData() : trigger record #" << mNEventsTotal
131-
<< " contains " << trigRecord.getNumberOfObjects() << " objects." << ENDM;
123+
LOG(DEBUG) << " monitorData() : trigger record #" << mNEventsTotal
124+
<< " contains " << trigRecord.getNumberOfObjects() << " objects." << ENDM;
132125
if (trigRecord.getNumberOfObjects() > 0) { //at least 1 digit -> pedestal event
133126
mNEventsTotal++;
134127
mNEventsFromLastFillHistogramsCall++;
128+
for (int iDig = trigRecord.getFirstEntry(); iDig < trigRecord.getFirstEntry() + trigRecord.getNumberOfObjects(); iDig++) {
129+
mHist1D[H1DDigitIds]->Fill(digits[iDig].getAbsId());
130+
short relId[3];
131+
if (mCPVGeometry.absToRelNumbering(digits[iDig].getAbsId(), relId)) {
132+
//reminder: relId[3]={Module, phi col, z row} where Module=2..4, phi col=0..127, z row=0..59
133+
mHist2D[H2DDigitMapM2 + relId[0] - 2]->Fill(relId[1], relId[2]);
134+
mHistAmplitudes[digits[iDig].getAbsId()]->Fill(digits[iDig].getAmplitude());
135+
mIsUpdatedAmplitude[digits[iDig].getAbsId()] = true;
136+
}
137+
}
135138
}
136139
}
137140
// get the payload of a specific input, which is a char array. "random" is the binding specified in the config file.
@@ -163,20 +166,22 @@ void PedestalTask::monitorData(o2::framework::ProcessingContext& ctx)
163166

164167
void PedestalTask::endOfCycle()
165168
{
166-
ILOG(Info, Support) << "endOfCycle. I call fillHistograms()" << ENDM;
169+
ILOG(Info, Devel) << "endOfCycle. I call fillHistograms()" << ENDM;
167170
//fit histograms if have sufficient increment of event number
168-
if (mNEventsFromLastFillHistogramsCall > 1000)
171+
if (mNEventsFromLastFillHistogramsCall >= mMinNEventsToUpdatePedestals) {
169172
fillHistograms();
170-
mNEventsFromLastFillHistogramsCall = 0;
173+
mNEventsFromLastFillHistogramsCall = 0;
174+
}
171175
}
172176

173177
void PedestalTask::endOfActivity(Activity& /*activity*/)
174178
{
175179
ILOG(Info, Support) << "endOfActivity" << ENDM;
176180
//do a final fill of histograms (if needed)
177-
if (mNEventsFromLastFillHistogramsCall)
181+
if (mNEventsFromLastFillHistogramsCall) {
182+
ILOG(Info, Devel) << "Final call of fillHistograms() " << ENDM;
178183
fillHistograms();
179-
mNEventsFromLastFillHistogramsCall = 0;
184+
}
180185
}
181186

182187
void PedestalTask::reset()
@@ -190,15 +195,17 @@ void PedestalTask::reset()
190195

191196
void PedestalTask::initHistograms()
192197
{
198+
ILOG(Info, Devel) << "initing histograms" << ENDM;
199+
193200
//create monitoring histograms (or reset, if they already exist)
194201
for (int i = 0; i < kNChannels; i++) {
195202
if (!mHistAmplitudes[i]) {
196203
mHistAmplitudes[i] =
197204
new TH1F(Form("HistAmplitude%d", i), Form("HistAmplitude%d", i), 4096, 0., 4096.);
198205
//publish some of them
199-
if (i % 1000 == 0)
206+
if (i % 1000 == 0) {
200207
getObjectsManager()->startPublishing(mHistAmplitudes[i]);
201-
208+
}
202209
} else {
203210
mHistAmplitudes[i]->Reset();
204211
}

0 commit comments

Comments
 (0)