Skip to content

Commit 8e96f8a

Browse files
committed
FIT: added DeadChannelMap to FV0 Digitzier
1 parent 17da522 commit 8e96f8a

File tree

3 files changed

+32
-1
lines changed

3 files changed

+32
-1
lines changed

Detectors/FIT/FV0/simulation/include/FV0Simulation/Digitizer.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
#include "CommonDataFormat/InteractionRecord.h"
1616
#include "DataFormatsFV0/Digit.h"
17+
#include "DataFormatsFIT/DeadChannelMap.h"
1718
#include "DataFormatsFV0/ChannelData.h"
1819
#include "DataFormatsFV0/MCLabel.h"
1920
#include "FV0Simulation/Detector.h"
@@ -51,6 +52,7 @@ class Digitizer
5152
void setEventId(Int_t id) { mEventId = id; }
5253
void setSrcId(Int_t id) { mSrcId = id; }
5354
void setInteractionRecord(const InteractionTimeRecord& ir) { mIntRecord = ir; }
55+
void setDeadChannelMap(o2::fit::DeadChannelMap const* deadChannelMap) { mDeadChannelMap = deadChannelMap; };
5456

5557
void process(const std::vector<o2::fv0::Hit>& hits, std::vector<o2::fv0::Digit>& digitsBC,
5658
std::vector<o2::fv0::ChannelData>& digitsCh, std::vector<o2::fv0::DetTrigInput>& digitsTrig,
@@ -132,6 +134,8 @@ class Digitizer
132134
BCCache mLastBCCache; // buffer for the last BC
133135
std::array<int, Constants::nFv0Channels> mCfdStartIndex; // start indices for the CFD detector
134136

137+
o2::fit::DeadChannelMap const* mDeadChannelMap = nullptr;
138+
135139
/// Internal helper methods related to conversion of energy-deposition into el. signal
136140
Int_t SimulateLightYield(Int_t pmt, Int_t nPhot) const;
137141
Float_t SimulateTimeCfd(int& startIndex, const ChannelDigitF& pulseLast, const ChannelDigitF& pulse) const;

Detectors/FIT/FV0/simulation/src/Digitizer.cxx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,11 @@ void Digitizer::process(const std::vector<o2::fv0::Hit>& hits,
9898
for (auto ids : hitIdx) {
9999
const auto& hit = hits[ids];
100100
Int_t detId = hit.GetDetectorID();
101+
102+
if (mDeadChannelMap && !mDeadChannelMap->isChannelAlive(detId)) {
103+
continue;
104+
}
105+
101106
Double_t hitEdep = hit.GetHitValue() * 1e3; // convert to MeV
102107
Float_t const hitTime = hit.GetTime() * 1e9; // convert to ns
103108
// TODO: check how big is inaccuracy if more than 1 'below-threshold' particles hit the same detector cell

Steer/DigitizerWorkflow/src/FV0DigitizerSpec.cxx

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
#include "FV0DigitizerSpec.h"
1313
#include "DataFormatsFV0/ChannelData.h"
14+
#include "DataFormatsFIT/DeadChannelMap.h"
1415
#include "DataFormatsFV0/Digit.h"
1516
#include "Framework/ControlService.h"
1617
#include "Framework/ConfigParamRegistry.h"
@@ -53,6 +54,16 @@ class FV0DPLDigitizerTask : public o2::base::BaseDPLDigitizer
5354
LOG(debug) << "FV0DPLDigitizerTask:init";
5455
mDigitizer.init();
5556
mDisableQED = ic.options().get<bool>("disable-qed"); //TODO: QED implementation to be tested
57+
mUseDeadChannelMap = ic.options().get<bool>("disable-dead-channel-map");
58+
mUpdateDeadChannelMap = mUseDeadChannelMap;
59+
}
60+
61+
void finaliseCCDB(ConcreteDataMatcher& matcher, void* obj)
62+
{
63+
// Initialize the dead channel map only once
64+
if (matcher == ConcreteDataMatcher("FV0", "DeadChannelMap", 0)) {
65+
mUpdateDeadChannelMap = false;
66+
}
5667
}
5768

5869
void run(framework::ProcessingContext& pc)
@@ -67,6 +78,11 @@ class FV0DPLDigitizerTask : public o2::base::BaseDPLDigitizer
6778
context->initSimChains(o2::detectors::DetID::FV0, mSimChains);
6879
const bool withQED = context->isQEDProvided() && !mDisableQED; //TODO: QED implementation to be tested
6980

81+
if (mUseDeadChannelMap && mUpdateDeadChannelMap) {
82+
auto deadChannelMap = pc.inputs().get<o2::fit::DeadChannelMap>("fv0deadchannelmap");
83+
mDigitizer.setDeadChannelMap(deadChannelMap);
84+
}
85+
7086
mDigitizer.setTimeStamp(context->getGRP().getTimeStart());
7187

7288
auto& irecords = context->getEventRecords(withQED); //TODO: QED implementation to be tested
@@ -131,6 +147,8 @@ class FV0DPLDigitizerTask : public o2::base::BaseDPLDigitizer
131147

132148
private:
133149
bool mFinished = false;
150+
bool mUseDeadChannelMap = true;
151+
bool mUpdateDeadChannelMap = true;
134152
Digitizer mDigitizer;
135153
std::vector<TChain*> mSimChains;
136154
std::vector<o2::fv0::ChannelData> mDigitsCh;
@@ -159,6 +177,9 @@ o2::framework::DataProcessorSpec getFV0DigitizerSpec(int channel, bool mctruth)
159177
}
160178
outputs.emplace_back("FV0", "ROMode", 0, Lifetime::Timeframe);
161179

180+
std::vector<InputSpec> inputs;
181+
inputs.emplace_back("fv0deadchannelmap", "FV0", "DeadChannelMap", 0, Lifetime::Condition, ccdbParamSpec("FV0/Calib/DeadChannelMap"));
182+
162183
return DataProcessorSpec{
163184
"FV0Digitizer",
164185
Inputs{InputSpec{"collisioncontext", "SIM", "COLLISIONCONTEXT", static_cast<SubSpecificationType>(channel), Lifetime::Timeframe}},
@@ -167,7 +188,8 @@ o2::framework::DataProcessorSpec getFV0DigitizerSpec(int channel, bool mctruth)
167188

168189
AlgorithmSpec{adaptFromTask<FV0DPLDigitizerTask>()},
169190
Options{{"pileup", VariantType::Int, 1, {"whether to run in continuous time mode"}},
170-
{"disable-qed", o2::framework::VariantType::Bool, false, {"disable QED handling"}}}};
191+
{"disable-qed", o2::framework::VariantType::Bool, false, {"disable QED handling"}}},
192+
{"disable-dead-channel-map", o2::framework::VariantType::Bool, true, {"Don't mask dead channels"}}};
171193
//Options{{"pileup", VariantType::Int, 1, {"whether to run in continuous time mode"}}}};
172194
}
173195

0 commit comments

Comments
 (0)