27void TrackDump::filter(
const gsl::span<const TrackTPC> tracks,
ClusterNativeAccess const& clusterIndex,
const gsl::span<const o2::tpc::TPCClRefElem> clRefs,
const gsl::span<const o2::MCCompLabel> mcLabels)
30 mTreeDump = std::make_unique<utils::TreeStreamRedirector>(
outputFileName.data(),
"recreate");
32 const std::string
path = fspath.parent_path().c_str();
33 const std::string baseName = fspath.stem().c_str();
35 mTreeDumpClOnly = std::make_unique<utils::TreeStreamRedirector>(fmt::format(
"{}/{}.cl.root",
path, baseName).
data(),
"recreate");
39 std::vector<TrackInfo> tpcTrackInfos;
40 std::vector<TrackTPC> tpcTracks;
41 std::vector<std::vector<ClusterNativeAdd>>
clusters;
42 std::vector<std::vector<ClusterGlobal>> clustersGlobalEvent;
43 std::vector<ClusterGlobal>* clustersGlobal{};
44 std::vector<o2::MCCompLabel> tpcTracksMCTruth;
50 for (
const auto& track : tracks) {
51 const int nCl = track.getNClusterReferences();
52 std::vector<ClusterNativeAdd>* clustersPtr{
nullptr};
54 auto& trackInfo = tpcTrackInfos.emplace_back(track);
55 clustersPtr = &trackInfo.clusters;
57 tpcTracks.emplace_back(track);
58 clustersPtr = &
clusters.emplace_back();
61 clustersGlobal = &clustersGlobalEvent.emplace_back();
63 auto& clInfos = *clustersPtr;
65 for (
int j = nCl - 1;
j >= 0;
j--) {
67 uint32_t clusterIndexInRow;
68 track.getClusterReference(clRefs,
j, sector,
padrow, clusterIndexInRow);
69 const auto& cl = clusterIndex.
clusters[sector][
padrow][clusterIndexInRow];
70 auto& clInfo = clInfos.emplace_back(cl);
71 clInfo.sector = sector;
73 excludes[sector][
padrow].emplace_back(clusterIndexInRow);
76 auto& clGlobal = clustersGlobal->emplace_back(
ClusterGlobal{clInfo.
gx(), clInfo.gy(), cl.qMax, cl.qTot, sector,
padrow});
82 for (
const auto& mcLabel : mcLabels) {
83 tpcTracksMCTruth.emplace_back(mcLabel);
88 auto&
tree = (*mTreeDump) <<
"tpcrec";
92 tree <<
"TPCTracks=" << tpcTrackInfos;
94 tree <<
"TPCTracks=" << tpcTracks;
98 auto& cltree = (*mTreeDump) <<
"cls";
105 tree <<
"clsGlo=" << clustersGlobalEvent;
108 tree <<
"TPCTracksMCTruth=" << tpcTracksMCTruth;
118 treeDumpUn = mTreeDump.get();
120 treeDumpUn = mTreeDumpClOnly.get();
123 std::vector<ClusterNativeAdd> clustersUn;
125 auto& cltree = (*treeDumpUn) <<
"clsn";
126 cltree <<
"cls=" << clustersUn
144 for (
int sector = 0; sector <
MAXSECTOR; ++sector) {
147 for (
size_t icl = 0; icl < clusterIndex.
nClusters[sector][
padrow]; ++icl) {
149 const auto& exRow = (*excludes)[sector][
padrow];
150 if (std::find(exRow.begin(), exRow.end(), icl) != exRow.end()) {
155 auto& clInfo = clInfos.emplace_back(cl);
156 clInfo.sector = sector;