12#ifndef O2_TOFDIGIT_SPLITTER_WRITER_H
13#define O2_TOFDIGIT_SPLITTER_WRITER_H
37 using OutputType = std::vector<o2::tof::Digit>;
38 using ReadoutWinType = std::vector<o2::tof::ReadoutWindowData>;
39 using PatternType = std::vector<uint8_t>;
40 using ErrorType = std::vector<uint64_t>;
43 std::string mBaseName;
50 TString
filename = TString::Format(
"%s_%02d_%06d.root", mBaseName.c_str(), ithread, mCount);
52 mfileOut.reset(TFile::Open(TString::Format(
"%s",
filename.Data()),
"RECREATE"));
53 mOutputTree = std::make_unique<TTree>(
"o2sim",
"Tree with TOF digits");
54 mOutputTree->Branch(
"TOFHeader", &mPHeader);
55 mOutputTree->Branch(
"TOFDigit", &mPDigits);
56 mOutputTree->Branch(
"TOFReadoutWindow", &mPROW);
57 mOutputTree->Branch(
"TOFPatterns", &mPDia);
59 mOutputTree->Branch(
"TOFErrors", &mPErr);
67 mBaseName = ic.options().get<std::string>(
"output-base-name");
83 auto header = pc.inputs().get<
HeaderType>(
"header");
85 auto row = pc.inputs().get<ReadoutWinType>(
"rows");
87 auto dia = pc.inputs().get<PatternType>(
"patterns");
90 auto error = pc.inputs().get<ErrorType>(
"errors");
100 sendOutput(instance);
106 mIsEndOfStream =
true;
109 sendOutput(instance);
116 bool mStoreErrors =
false;
117 bool mIsEndOfStream =
false;
128 std::unique_ptr<TTree> mOutputTree;
129 std::unique_ptr<TFile> mfileOut =
nullptr;
132 void sendOutput(
int instance)
140 mOutputTree->Write();
144 if (!mIsEndOfStream) {
156 std::vector<InputSpec> inputs;
166 std::vector<OutputSpec> outputs;
169 "tof-digit-splitter-writer",
172 AlgorithmSpec{adaptFromTask<o2::tof::TOFDigitWriterSplitter>(nTF, storeErr)},
TOFDigitWriterSplitter(int nTF, bool storeErr=false)
void run(o2::framework::ProcessingContext &pc) final
void createAndOpenFileAndTree(int ithread=0)
void endOfStream(o2::framework::EndOfStreamContext &ec) final
This is invoked whenever we have an EndOfStream event.
void init(o2::framework::InitContext &ic) final
constexpr o2::header::DataOrigin gDataOriginTOF
Defining PrimaryVertex explicitly as messageable.
std::vector< o2::tof::CalibInfoCluster > OutputType
std::vector< o2::tof::ReadoutWindowData > ReadoutWinType
std::vector< uint64_t > ErrorType
std::vector< uint8_t > PatternType
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
std::vector< InputRoute > inputs
LOG(info)<< "Compressed in "<< sw.CpuTime()<< " s"
std::vector< Digit > digits