Skip to content

Commit 20f4cd1

Browse files
committed
FT0 RecPoints Reader treats each tree entry as new TF
1 parent c79a7ef commit 20f4cd1

2 files changed

Lines changed: 31 additions & 28 deletions

File tree

Detectors/FIT/workflow/include/FITWorkflow/FT0RecPointReaderSpec.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
#define O2_FT0_RECPOINTREADER
1515

1616
#include "TFile.h"
17+
#include "TTree.h"
1718

1819
#include "Framework/DataProcessorSpec.h"
1920
#include "Framework/Task.h"
@@ -35,7 +36,11 @@ class RecPointReader : public Task
3536
void run(ProcessingContext& pc) final;
3637

3738
private:
38-
bool mFinished = false;
39+
void connectTree(const std::string& filename);
40+
41+
std::unique_ptr<TFile> mFile;
42+
std::unique_ptr<TTree> mTree;
43+
3944
bool mUseMC = true; // use MC truth
4045
o2::header::DataOrigin mOrigin = o2::header::gDataOriginFT0;
4146

Detectors/FIT/workflow/src/FT0RecPointReaderSpec.cxx

Lines changed: 25 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -37,41 +37,39 @@ RecPointReader::RecPointReader(bool useMC)
3737
void RecPointReader::init(InitContext& ic)
3838
{
3939
mInputFileName = ic.options().get<std::string>("ft0-recpoints-infile");
40+
connectTree(mInputFileName);
4041
}
4142

4243
void RecPointReader::run(ProcessingContext& pc)
4344
{
44-
if (mFinished) {
45-
return;
46-
}
45+
auto ent = mTree->GetReadEntry() + 1;
46+
assert(ent < mTree->GetEntries()); // this should not happen
47+
mTree->GetEntry(ent);
48+
49+
LOG(INFO) << "FT0 RecPointReader pushes " << mRecPoints->size() << " recpoints at entry " << ent;
50+
pc.outputs().snapshot(Output{mOrigin, "RECPOINTS", 0, Lifetime::Timeframe}, *mRecPoints);
4751

48-
{ // load data from files
49-
TFile rpFile(mInputFileName.c_str(), "read");
50-
if (rpFile.IsZombie()) {
51-
LOG(FATAL) << "Failed to open FT0 recpoints file " << mInputFileName;
52-
}
53-
TTree* rpTree = (TTree*)rpFile.Get(mRecPointTreeName.c_str());
54-
if (!rpTree) {
55-
LOG(FATAL) << "Failed to load FT0 recpoints tree " << mRecPointTreeName << " from " << mInputFileName;
56-
}
57-
LOG(INFO) << "Loaded FT0 recpoints tree " << mRecPointTreeName << " from " << mInputFileName;
58-
59-
rpTree->SetBranchAddress(mRecPointBranchName.c_str(), &mRecPoints);
60-
if (mUseMC) {
61-
LOG(WARNING) << "MC-truth is not supported for FT0 recpoints currently";
62-
mUseMC = false;
63-
}
64-
65-
rpTree->GetEntry(0);
66-
delete rpTree;
67-
rpFile.Close();
52+
if (mTree->GetReadEntry() + 1 >= mTree->GetEntries()) {
53+
pc.services().get<ControlService>().endOfStream();
54+
pc.services().get<ControlService>().readyToQuit(QuitRequest::Me);
6855
}
56+
}
6957

70-
LOG(INFO) << "FT0 RecPointReader pushes " << mRecPoints->size() << " recpoints";
71-
pc.outputs().snapshot(Output{mOrigin, "RECPOINTS", 0, Lifetime::Timeframe}, *mRecPoints);
58+
void RecPointReader::connectTree(const std::string& filename)
59+
{
60+
mTree.reset(nullptr); // in case it was already loaded
61+
mFile.reset(TFile::Open(filename.c_str()));
62+
assert(mFile && !mFile->IsZombie());
63+
mTree.reset((TTree*)mFile->Get(mRecPointTreeName.c_str()));
64+
assert(mTree);
65+
66+
mTree->SetBranchAddress(mRecPointBranchName.c_str(), &mRecPoints);
67+
if (mUseMC) {
68+
LOG(WARNING) << "MC-truth is not supported for FT0 recpoints currently";
69+
mUseMC = false;
70+
}
7271

73-
mFinished = true;
74-
pc.services().get<ControlService>().readyToQuit(QuitRequest::Me);
72+
LOG(INFO) << "Loaded FT0 RecPoints tree from " << filename << " with " << mTree->GetEntries() << " entries";
7573
}
7674

7775
DataProcessorSpec getFT0RecPointReaderSpec(bool useMC)

0 commit comments

Comments
 (0)