19#include "MFTBase/GeometryTGeo.h"
22#include <fairlogger/Logger.h>
23#include "FairRootManager.h"
39 mMCTruthArray.
clear();
48 FairRootManager* mgr = FairRootManager::Instance();
50 LOG(error) <<
"Could not instantiate FairRootManager. Exiting ...";
54 mHitsArray = mgr->InitObjectAs<
const std::vector<o2::itsmft::Hit>*>(
"MFTHit");
56 LOG(error) <<
"MFT hits not registered in the FairRootManager. Exiting ...";
61 mgr->RegisterAny(
"MFTDigit", mDigitsArrayPtr, kTRUE);
62 mgr->RegisterAny(
"MFTDigitMCTruth", mMCTruthArrayPtr, kTRUE);
79 FairRootManager* mgr = FairRootManager::Instance();
82 mMCTruthArray.
clear();
84 double tEvent = mgr->GetEventTime() * mFairTimeUnitInNS;
88 processQEDBackground(tEvent);
93 LOG(
debug) <<
"Running digitization on new event " << mEventID <<
" from source " << mSourceID;
95 mDigitizer.
process(mHitsArray, mEventID, mSourceID);
114 FairRootManager* mgr = FairRootManager::Instance();
115 mgr->SetLastFill(kTRUE);
116 mDigitsArray.clear();
117 mMCTruthArray.
clear();
122void DigitizerTask::processQEDBackground(
double tMax)
126 double tQEDNext = mLastQEDTimeNS + mQEDEntryTimeBinNS;
128 while (tQEDNext < tMax) {
129 mLastQEDTimeNS = tQEDNext;
130 tQEDNext += mQEDEntryTimeBinNS;
131 if (++mLastQEDEntry >= mQEDBranch->GetEntries()) {
134 mQEDBranch->GetEntry(mLastQEDEntry);
136 mDigitizer.
process(mHitsArrayQED, mLastQEDEntry, mQEDSourceID);
147 LOG(info) <<
"Attaching QED ITS hits as sourceID=" <<
int(srcID) <<
", entry integrates "
151 mQEDEntryTimeBinNS = timebin;
153 assert(mQEDEntryTimeBinNS >= 1.0);
154 mLastQEDTimeNS = -mQEDEntryTimeBinNS / 2;
155 mQEDBranch->SetAddress(&mHitsArrayQED);
157 mQEDSourceID = srcID;
158 assert(mHitsArrayQED);
General auxilliary methods.
Definition of the ITSMFT Hit class.
ClassImp(o2::mft::DigitizerTask)
Task driving the conversion from points to digits (MFT)
static constexpr int maxSourceID()
bool isContinuous() const
double getEndTimeOfROFMax() const
void setEventTime(const o2::InteractionTimeRecord &irt)
void setGeometry(const o2::itsmft::GeometryTGeo *gm)
void setMCLabels(o2::dataformats::MCTruthContainer< o2::MCCompLabel > *mclb)
void setDigits(std::vector< o2::itsmft::Digit > *dig)
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)
void FinishTask() override
InitStatus Init() override
Init function.
void setQEDInput(TBranch *qed, float timebin, UChar_t srcID)
void Exec(Option_t *option) override
~DigitizerTask() override
void fillMatrixCache(Int_t mask) override
static GeometryTGeo * Instance()
LOG(info)<< "Compressed in "<< sw.CpuTime()<< " s"