18#include "fairlogger/Logger.h"
31 LOG(info) <<
"Init TRD tracklet reader!";
34 mInTreeNameTrklt = ic.
options().
get<std::string>(
"treename");
36 if (mUseTrackletTransform) {
37 connectTreeCTracklet();
41void TRDTrackletReader::connectTreeCTracklet()
43 mTreeCTrklt.reset(
nullptr);
44 mFileCTrklt.reset(TFile::Open(mInFileNameCTrklt.c_str()));
45 assert(mFileCTrklt && !mFileCTrklt->IsZombie());
46 mTreeCTrklt.reset((TTree*)mFileCTrklt->Get(
"ctracklets"));
48 mTreeCTrklt->SetBranchAddress(
"CTracklets", &mTrackletsCalPtr);
49 mTreeCTrklt->SetBranchAddress(
"TrigRecMask", &mTrigRecMaskPtr);
50 LOG(info) <<
"Loaded tree from trdcalibratedtracklets.root with " << mTreeCTrklt->GetEntries() <<
" entries";
53void TRDTrackletReader::connectTree()
55 mTreeTrklt.reset(
nullptr);
56 mFileTrklt.reset(TFile::Open(mInFileNameTrklt.c_str()));
57 assert(mFileTrklt && !mFileTrklt->IsZombie());
58 mTreeTrklt.reset((TTree*)mFileTrklt->Get(mInTreeNameTrklt.c_str()));
60 mTreeTrklt->SetBranchAddress(
"Tracklet", &mTrackletsPtr);
61 mTreeTrklt->SetBranchAddress(
"TrackTrg", &mTriggerRecordsPtr);
63 mTreeTrklt->SetBranchAddress(
"TRKLabels", &mLabelsPtr);
65 LOG(info) <<
"Loaded tree from " << mInFileNameTrklt <<
" with " << mTreeTrklt->GetEntries() <<
" entries";
70 auto currEntry = mTreeTrklt->GetReadEntry() + 1;
71 assert(currEntry < mTreeTrklt->GetEntries());
72 mTreeTrklt->GetEntry(currEntry);
73 LOG(info) <<
"Pushing " << mTriggerRecords.size() <<
" TRD trigger records at entry " << currEntry;
74 LOG(info) <<
"Pushing " << mTracklets.size() <<
" uncalibrated TRD tracklets for these trigger records";
76 if (mUseTrackletTransform) {
77 assert(mTreeTrklt->GetEntries() == mTreeCTrklt->GetEntries());
78 mTreeCTrklt->GetEntry(currEntry);
79 LOG(info) <<
"Pushing " << mTrackletsCal.size() <<
" calibrated TRD tracklets for these trigger records";
80 LOG(info) <<
"Pushing " << mTrigRecMask.size() <<
" flags for the given TRD trigger records";
87 LOG(info) <<
"Pushing " << mLabels.
getNElements() <<
" TRD tracklet labels";
91 if (mTreeTrklt->GetReadEntry() + 1 >= mTreeTrklt->GetEntries()) {
99 std::vector<OutputSpec> outputs;
100 if (useCalibratedTracklets) {
107 outputs.emplace_back(
"TRD",
"TRKLABELS", 0, Lifetime::Timeframe);
114 AlgorithmSpec{adaptFromTask<TRDTrackletReader>(useMC, useCalibratedTracklets)},
116 {
"trd-tracklet-infile", VariantType::String,
"trdtracklets.root", {
"Name of the tracklets input file"}},
117 {
"trd-calib-tracklet-infile", VariantType::String,
"trdcalibratedtracklets.root", {
"Name of the calibrated tracklets input file"}},
118 {
"input-dir", VariantType::String,
"none", {
"Input directory"}},
119 {
"treename", VariantType::String,
"o2sim", {
"Name of top-level TTree"}},
Definition of the Names Generator class.
T get(const char *key) const
void snapshot(const Output &spec, T const &object)
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.
void run(o2::framework::ProcessingContext &pc) final
void init(o2::framework::InitContext &ic) final
constexpr o2::header::DataOrigin gDataOriginTRD
Defining PrimaryVertex explicitly as messageable.
std::vector< ConfigParamSpec > Options
std::vector< InputSpec > Inputs
framework::DataProcessorSpec getTRDTrackletReaderSpec(bool useMC, bool useCalibratedTracklets)
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
static std::string rectifyDirectory(const std::string_view p)
static std::string concat_string(Ts const &... ts)
LOG(info)<< "Compressed in "<< sw.CpuTime()<< " s"