Skip to content

Commit cb1db02

Browse files
Adding track writer processor spec based on MakeRootTreeWriterSpec generator
This makes the specific RootFileWriterSpec absolete, removing TPC/workflow/RootFileWriterSpec.h in favor of generic RootTreeWriter.
1 parent 129b926 commit cb1db02

4 files changed

Lines changed: 31 additions & 143 deletions

File tree

Detectors/TPC/workflow/CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ set(SRCS
2020
src/ClusterConverterSpec.cxx
2121
src/ClusterDecoderRawSpec.cxx
2222
src/CATrackerSpec.cxx
23-
src/RootFileWriterSpec.cxx
2423
)
2524

2625
## TODO: feature of macro, it deletes the variables we pass to it, set them again

Detectors/TPC/workflow/src/RecoWorkflow.cxx

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,19 @@
1414
/// @brief Workflow definition for the TPC reconstruction
1515

1616
#include "Framework/WorkflowSpec.h"
17-
17+
#include "Utils/MakeRootTreeWriterSpec.h"
1818
#include "TPCWorkflow/RecoWorkflow.h"
1919
#include "DigitReaderSpec.h"
2020
#include "ClusterReaderSpec.h"
2121
#include "ClustererSpec.h"
2222
#include "ClusterConverterSpec.h"
2323
#include "ClusterDecoderRawSpec.h"
2424
#include "CATrackerSpec.h"
25-
#include "RootFileWriterSpec.h"
2625
#include "DataFormatsTPC/Constants.h"
2726
#include "DataFormatsTPC/ClusterGroupAttribute.h"
27+
#include "DataFormatsTPC/TrackTPC.h"
28+
#include "SimulationDataFormat/MCTruthContainer.h"
29+
#include "SimulationDataFormat/MCCompLabel.h"
2830

2931
#include "FairMQLogger.h"
3032
#include <string>
@@ -43,6 +45,8 @@ namespace RecoWorkflow
4345
{
4446

4547
using namespace framework;
48+
template <typename T>
49+
using BranchDefinition = MakeRootTreeWriterSpec::BranchDefinition<T>;
4650

4751
const std::unordered_map<std::string, InputType> InputMap{
4852
{ "digitizer", InputType::Digitizer },
@@ -144,7 +148,31 @@ framework::WorkflowSpec getWorkflow(bool propagateMC, int nLanes, std::string cf
144148

145149
if (outputType == OutputType::Tracks) {
146150
specs.emplace_back(o2::TPC::getCATrackerSpec(propagateMC, nLanes));
147-
specs.emplace_back(o2::TPC::getRootFileWriterSpec(propagateMC));
151+
152+
// defining the track writer process using the generic RootTreeWriter and generator tool
153+
//
154+
// defaults
155+
const char* processName = "tpc-track-writer";
156+
const char* defaultFileName = "tpctracks.root";
157+
const char* defaultTreeName = "tpcrec";
158+
159+
//branch definitions for RootTreeWriter spec
160+
using TrackOutputType = std::vector<o2::TPC::TrackTPC>;
161+
using MCLabelContainer = o2::dataformats::MCTruthContainer<o2::MCCompLabel>;
162+
auto tracksdef = BranchDefinition<TrackOutputType>{ InputSpec{ "input", "TPC", "TRACKS" }, //
163+
"TPCTracks", "track-branch-name" }; //
164+
auto mcdef = BranchDefinition<MCLabelContainer>{ InputSpec{ "mcinput", "TPC", "TRACKMCLBL" }, //
165+
"TPCTracksMCTruth", "trackmc-branch-name" }; //
166+
167+
// depending on the MC propagation flag, the RootTreeWriter spec is created with two
168+
// or one branch definition
169+
if (propagateMC) {
170+
specs.push_back(MakeRootTreeWriterSpec(processName, defaultFileName, defaultTreeName, //
171+
std::move(tracksdef), std::move(mcdef))()); //
172+
} else { //
173+
specs.push_back(MakeRootTreeWriterSpec(processName, defaultFileName, defaultTreeName, //
174+
std::move(tracksdef))()); //
175+
}
148176
} else if (outputType == OutputType::DecodedClusters) {
149177
specs.emplace_back(DataProcessorSpec{ "writer",
150178
{ createInputSpec() },

Detectors/TPC/workflow/src/RootFileWriterSpec.cxx

Lines changed: 0 additions & 113 deletions
This file was deleted.

Detectors/TPC/workflow/src/RootFileWriterSpec.h

Lines changed: 0 additions & 26 deletions
This file was deleted.

0 commit comments

Comments
 (0)