35 assert(
id == o2::detectors::DetID::TRK);
62 auto ent =
mTree->GetReadEntry() + 1;
63 assert(ent < mTree->GetEntries());
66 for (
int iLayer = 0; iLayer <
mLayers; ++iLayer) {
67 LOG(info) <<
mDetName <<
"DigitReader on layer " << iLayer <<
" pushes " <<
mDigROFRec[iLayer]->size() <<
" ROFRecords, "
68 <<
mDigits[iLayer]->size() <<
" digits at entry " << ent;
75 mPLabels[iLayer]->copyandflatten(sharedlabels);
85 if (
mTree->GetReadEntry() + 1 >=
mTree->GetEntries()) {
99 for (
int iLayer = 0; iLayer <
mLayers; ++iLayer) {
104 if (!
mTree->GetBranch(mctruthBranch.c_str())) {
105 throw std::runtime_error(
"MC data requested but missing branch(es) at layer " +
std::to_string(iLayer) +
106 ": " + mctruthBranch);
114 throw std::runtime_error(
"GBT calibration data requested but not found in the tree");
118 LOG(info) <<
"Loaded tree from " <<
filename <<
" with " <<
mTree->GetEntries() <<
" entries";
129template <
typename Ptr>
133 if (Int_t ret =
mTree->SetBranchAddress(
name.c_str(), &addr); ret != 0) {
134 LOGP(fatal,
"failed to set branch address for {} ret={}",
name, ret);
141 std::vector<OutputSpec> outputSpec;
142 for (
int iLayer = 0; iLayer < nLayers; ++iLayer) {
143 outputSpec.emplace_back(
"TRK",
"DIGITS", iLayer, Lifetime::Timeframe);
144 outputSpec.emplace_back(
"TRK",
"DIGITSROF", iLayer, Lifetime::Timeframe);
146 outputSpec.emplace_back(
"TRK",
"DIGITSMCTR", iLayer, Lifetime::Timeframe);
150 outputSpec.emplace_back(
"TRK",
"GBTCALIB", 0, Lifetime::Timeframe);
157 AlgorithmSpec{adaptFromTask<TRKDigitReader>(useMC, useCalib)},
159 {
"trk-digit-infile", VariantType::String, defname, {
"Name of the input digit file"}}}};
A const (ready only) version of MCTruthContainer.
A special IO container - splitting a given vector to enable ROOT IO.
Static class with identifiers, bitmasks and names for ALICE detectors.
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.
ServiceRegistryRef services()
The services registry associated with this processing context.
virtual void endOfStream(EndOfStreamContext &context)
This is invoked whenever we have an EndOfStream event.
static constexpr int mLayers
void run(ProcessingContext &pc) final
std::unique_ptr< TTree > mTree
std::vector< std::vector< o2::itsmft::ROFRecord > * > mDigROFRec
std::vector< o2::dataformats::IOMCTruthContainerView * > mPLabels
std::string mDigtMCTruthBranchName
o2::header::DataOrigin mOrigin
void setBranchAddress(const std::string &base, Ptr &addr, int layer=-1)
std::string mDigitBranchName
std::vector< o2::itsmft::GBTCalibData > * mCalibPtr
std::vector< std::vector< o2::itsmft::Digit > * > mDigits
std::string mCalibBranchName
std::unique_ptr< TFile > mFile
std::string getBranchName(const std::string &base, int index) const
void init(InitContext &ic) final
std::string mDigROFBranchName
std::vector< o2::itsmft::GBTCalibData > mCalib
void connectTree(const std::string &filename)
GLuint const GLchar * name
GLenum GLuint GLint GLint layer
Defining ITS Vertex explicitly as messageable.
std::vector< ConfigParamSpec > Options
std::vector< InputSpec > Inputs
framework::DataProcessorSpec getTRKDigitReaderSpec(bool useMC=true, bool useCalib=false, std::string defname="trkdigits.root")
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
std::string to_string(gsl::span< T, Size > span)
static constexpr size_t kNLayers
LOG(info)<< "Compressed in "<< sw.CpuTime()<< " s"