35#include "MFTBase/GeometryTGeo.h"
37#include <TStopwatch.h>
64 mID ==
o2::detectors::DetID::ITS ? updateTimeDependentParams<o2::detectors::DetID::ITS>(pc) : updateTimeDependentParams<o2::detectors::DetID::MFT>(pc);
69 const bool withQED = context->isQEDProvided() && !
mDisableQED;
70 auto& timesview = context->getEventRecords(withQED);
71 LOG(info) <<
"GOT " << timesview.size() <<
" COLLISSION TIMES";
75 if (timesview.size() == 0) {
80 LOG(info) <<
" CALLING ITS DIGITIZATION ";
89 auto accumulate = [
this, &digitsAccum]() {
95 auto ndigAcc = digitsAccum.size();
96 std::copy(
mDigits.begin(),
mDigits.end(), std::back_inserter(digitsAccum));
103 rof.setFirstEntry(ndigAcc + rof.getFirstEntry());
110 if (rof.getROFrame() == mc2rof.minROF) {
112 mc2rof.rofRecordID = nROFRecsOld +
i;
123 LOG(info) <<
"Added " <<
mDigits.size() <<
" digits ";
130 auto& eventParts = context->getEventParts(withQED);
133 for (
int collID = 0; collID < timesview.size(); ++collID) {
134 auto irt = timesview[collID];
135 if (irt.toLong() < bcShift) {
144 for (
auto& part : eventParts[collID]) {
150 if (
mHits.size() > 0) {
151 LOG(
debug) <<
"For collision " << collID <<
" eventID " << part.entryID
152 <<
" found " <<
mHits.size() <<
" hits ";
177 LOG(info) <<
"Digitization took " << timer.CpuTime() <<
"s";
203 LOGP(fatal,
"Attempt to add time-dependent map to already modified static map");
207 LOG(info) <<
mID.
getName() <<
" time-dependent dead map updated";
209 LOG(info) <<
mID.
getName() <<
" time-dependent dead map is default/empty";
218 par.printKeyValues();
221 par.printKeyValues();
244 digipar.setROFrameBiasInBC(aopt.roFrameBiasInBC);
245 if (dopt.continuous) {
247 digipar.setROFrameLengthInBC(aopt.roFrameLengthInBC);
248 digipar.setROFrameLength(frameNS);
249 digipar.setStrobeDelay(aopt.strobeDelay);
250 digipar.setStrobeLength(aopt.strobeLengthCont > 0 ? aopt.strobeLengthCont : frameNS - aopt.strobeDelay);
252 digipar.setROFrameLength(aopt.roFrameLengthTrig);
253 digipar.setStrobeDelay(aopt.strobeDelay);
254 digipar.setStrobeLength(aopt.strobeLengthTrig);
257 digipar.getSignalShape().setParameters(dopt.strobeFlatTop, dopt.strobeMaxRiseTime, dopt.strobeQRiseTime0);
258 digipar.setChargeThreshold(dopt.chargeThreshold);
259 digipar.setNoisePerPixel(dopt.noisePerPixel);
260 digipar.setTimeOffset(dopt.timeOffset);
261 digipar.setNSimSteps(dopt.nSimSteps);
262 digipar.setIBVbb(dopt.IBVbb);
263 digipar.setOBVbb(dopt.OBVbb);
264 digipar.setVbb(dopt.Vbb);
342 std::vector<OutputSpec> outputs;
343 outputs.emplace_back(detOrig,
"DIGITS", 0, Lifetime::Timeframe);
344 outputs.emplace_back(detOrig,
"DIGITSROF", 0, Lifetime::Timeframe);
346 outputs.emplace_back(detOrig,
"DIGITSMC2ROF", 0, Lifetime::Timeframe);
347 outputs.emplace_back(detOrig,
"DIGITSMCTR", 0, Lifetime::Timeframe);
349 outputs.emplace_back(detOrig,
"ROMode", 0, Lifetime::Timeframe);
357 std::stringstream parHelper;
362 std::vector<InputSpec> inputs;
363 inputs.emplace_back(
"collisioncontext",
"SIM",
"COLLISIONCONTEXT",
static_cast<SubSpecificationType>(channel), Lifetime::Timeframe);
364 inputs.emplace_back(
"ITS_noise",
"ITS",
"NOISEMAP", 0, Lifetime::Condition,
ccdbParamSpec(
"ITS/Calib/NoiseMap"));
365 inputs.emplace_back(
"ITS_dead",
"ITS",
"DEADMAP", 0, Lifetime::Condition,
ccdbParamSpec(
"ITS/Calib/DeadMap"));
366 inputs.emplace_back(
"ITS_time_dead",
"ITS",
"TimeDeadMap", 0, Lifetime::Condition,
ccdbParamSpec(
"ITS/Calib/TimeDeadMap"));
367 inputs.emplace_back(
"ITS_alppar",
"ITS",
"ALPIDEPARAM", 0, Lifetime::Condition,
ccdbParamSpec(
"ITS/Config/AlpideParam"));
380 std::stringstream parHelper;
381 std::vector<InputSpec> inputs;
382 inputs.emplace_back(
"collisioncontext",
"SIM",
"COLLISIONCONTEXT",
static_cast<SubSpecificationType>(channel), Lifetime::Timeframe);
383 inputs.emplace_back(
"MFT_noise",
"MFT",
"NOISEMAP", 0, Lifetime::Condition,
ccdbParamSpec(
"MFT/Calib/NoiseMap"));
384 inputs.emplace_back(
"MFT_dead",
"MFT",
"DEADMAP", 0, Lifetime::Condition,
ccdbParamSpec(
"MFT/Calib/DeadMap"));
385 inputs.emplace_back(
"MFT_time_dead",
"MFT",
"TimeDeadMap", 0, Lifetime::Condition,
ccdbParamSpec(
"MFT/Calib/TimeDeadMap"));
386 inputs.emplace_back(
"MFT_alppar",
"MFT",
"ALPIDEPARAM", 0, Lifetime::Condition,
ccdbParamSpec(
"MFT/Config/AlpideParam"));
Definition of the base digitizer task class.
A const (ready only) version of MCTruthContainer.
Definition of the Names Generator class.
o2::framework::DataAllocator::SubSpecificationType SubSpecificationType
Header of the General Run Parameters object.
Definition of the GeometryTGeo class.
Definition of the ITS digitizer.
Definition of the ITSMFT NoiseMap.
Definition of the ITSMFT time-dependend dead map.
virtual void init(o2::framework::InitContext &) final
static const DPLAlpideParam< N > & Instance()
Static class with identifiers, bitmasks and names for ALICE detectors.
static constexpr const char * getName(ID id)
names of defined detectors
virtual void fillMatrixCache(int mask)=0
static const std::array< std::vector< std::string >, DetID::nDetectors > DETECTORBRANCHNAMES
T get(const char *key) const
void snapshot(const Output &spec, T const &object)
o2::header::DataHeader::SubSpecificationType SubSpecificationType
decltype(auto) make(const Output &spec, Args... args)
ConfigParamRegistry const & options()
DataAllocator & outputs()
The data allocator is used to allocate memory for the output data.
InputRecord & inputs()
The inputs associated with this processing context.
ServiceRegistryRef services()
The services registry associated with this processing context.
static GeometryTGeo * Instance()
int getROFrameBiasInBC() const
void setContinuous(bool v)
void setDeadChannelsMap(const o2::itsmft::NoiseMap *mp)
void setEventTime(const o2::InteractionTimeRecord &irt)
void setGeometry(const o2::itsmft::GeometryTGeo *gm)
void setMCLabels(o2::dataformats::MCTruthContainer< o2::MCCompLabel > *mclb)
void setNoiseMap(const o2::itsmft::NoiseMap *mp)
void setROFRecords(std::vector< o2::itsmft::ROFRecord > *rec)
void resetEventROFrames()
void setDigits(std::vector< o2::itsmft::Digit > *dig)
uint32_t getEventROFrameMax() const
o2::itsmft::DigiParams & getParams()
void process(const std::vector< Hit > *hits, int evID, int srcID)
Steer conversion of hits to digits.
void fillOutputContainer(uint32_t maxFrame=0xffffffff)
uint32_t getEventROFrameMin() const
ITSDPLDigitizerTask(bool mctruth=true)
static constexpr o2::header::DataOrigin DETOR
static constexpr o2::detectors::DetID::ID DETID
std::vector< o2::itsmft::ROFRecord > mROFRecords
unsigned long mFirstOrbitTF
std::vector< o2::itsmft::MC2ROFRecord > mMC2ROFRecordsAccum
o2::dataformats::MCTruthContainer< o2::MCCompLabel > mLabels
void finaliseCCDB(ConcreteDataMatcher &matcher, void *obj)
o2::dataformats::MCTruthContainer< o2::MCCompLabel > mLabelsAccum
ITSMFTDPLDigitizerTask(bool mctruth=true)
o2::itsmft::Digitizer mDigitizer
o2::header::DataOrigin mOrigin
std::vector< TChain * > mSimChains
std::vector< o2::itsmft::ROFRecord > mROFRecordsAccum
o2::itsmft::NoiseMap * mDeadMap
void initDigitizerTask(framework::InitContext &ic) override
std::vector< o2::itsmft::Hit > mHits
void run(framework::ProcessingContext &pc)
std::vector< o2::itsmft::Digit > mDigits
void updateTimeDependentParams(ProcessingContext &pc)
o2::parameters::GRPObject::ROMode mROMode
std::vector< o2::itsmft::Hit > * mHitsP
static constexpr o2::detectors::DetID::ID DETID
MFTDPLDigitizerTask(bool mctruth)
static constexpr o2::header::DataOrigin DETOR
NoiseMap class for the ITS and MFT.
void decodeMap(o2::itsmft::NoiseMap &noisemap)
static GeometryTGeo * Instance()
bool initSimChains(o2::detectors::DetID detid, std::vector< TChain * > &simchains) const
constexpr o2::header::DataOrigin gDataOriginMFT
constexpr o2::header::DataOrigin gDataOriginInvalid
constexpr o2::header::DataOrigin gDataOriginITS
constexpr double LHCBunchSpacingNS
Defining PrimaryVertex explicitly as messageable.
std::vector< ConfigParamSpec > ccdbParamSpec(std::string const &path, int runDependent, std::vector< CCDBMetadata > metadata={}, int qrate=0)
std::vector< ConfigParamSpec > Options
header::DataHeader::SubSpecificationType SubSpecificationType
std::vector< OutputSpec > makeOutChannels(o2::header::DataOrigin detOrig, bool mctruth)
DataProcessorSpec getMFTDigitizerSpec(int channel, bool mctruth)
DataProcessorSpec getITSDigitizerSpec(int channel, bool mctruth)
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
class listing possible services
static constexpr std::string_view getParamName()
static constexpr std::string_view getParamName()
LOG(info)<< "Compressed in "<< sw.CpuTime()<< " s"