29void 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)
32 mTreeDump = std::make_unique<utils::TreeStreamRedirector>(
outputFileName.data(),
"recreate");
34 const std::string
path = fspath.parent_path().c_str();
35 const std::string baseName = fspath.stem().c_str();
37 mTreeDumpClOnly = std::make_unique<utils::TreeStreamRedirector>(fmt::format(
"{}/{}.cl.root",
path, baseName).
data(),
"recreate");
41 std::vector<TrackInfo> tpcTrackInfos;
42 std::vector<TrackTPC> tpcTracks;
43 std::vector<std::vector<ClusterNativeAdd>>
clusters;
44 std::vector<std::vector<ClusterGlobal>> clustersGlobalEvent;
45 std::vector<ClusterGlobal>* clustersGlobal{};
46 std::vector<o2::MCCompLabel> tpcTracksMCTruth;
52 for (
const auto& track : tracks) {
53 const int nCl = track.getNClusterReferences();
54 std::vector<ClusterNativeAdd>* clustersPtr{
nullptr};
56 auto& trackInfo = tpcTrackInfos.emplace_back(track);
57 clustersPtr = &trackInfo.clusters;
59 tpcTracks.emplace_back(track);
60 clustersPtr = &
clusters.emplace_back();
63 clustersGlobal = &clustersGlobalEvent.emplace_back();
65 auto& clInfos = *clustersPtr;
67 for (
int j = nCl - 1;
j >= 0;
j--) {
69 uint32_t clusterIndexInRow;
70 track.getClusterReference(clRefs,
j, sector,
padrow, clusterIndexInRow);
71 const auto& cl = clusterIndex.
clusters[sector][
padrow][clusterIndexInRow];
72 auto& clInfo = clInfos.emplace_back(cl);
73 clInfo.sector = sector;
75 excludes[sector][
padrow].emplace_back(clusterIndexInRow);
78 auto& clGlobal = clustersGlobal->emplace_back(
ClusterGlobal{clInfo.
gx(), clInfo.gy(), cl.qMax, cl.qTot, sector,
padrow});
84 for (
const auto& mcLabel : mcLabels) {
85 tpcTracksMCTruth.emplace_back(mcLabel);
90 auto&
tree = (*mTreeDump) <<
"tpcrec";
94 tree <<
"TPCTracks=" << tpcTrackInfos;
96 tree <<
"TPCTracks=" << tpcTracks;
100 auto& cltree = (*mTreeDump) <<
"cls";
107 tree <<
"clsGlo=" << clustersGlobalEvent;
110 tree <<
"TPCTracksMCTruth=" << tpcTracksMCTruth;
120 treeDumpUn = mTreeDump.get();
122 treeDumpUn = mTreeDumpClOnly.get();
125 std::vector<ClusterNativeAdd> clustersUn;
127 auto& cltree = (*treeDumpUn) <<
"clsn";
128 cltree <<
"cls=" << clustersUn
146 for (
int sector = 0; sector <
MAXSECTOR; ++sector) {
149 for (
size_t icl = 0; icl < clusterIndex.
nClusters[sector][
padrow]; ++icl) {
151 const auto& exRow = (*excludes)[sector][
padrow];
152 if (std::find(exRow.begin(), exRow.end(), icl) != exRow.end()) {
157 auto& clInfo = clInfos.emplace_back(cl);
158 clInfo.sector = sector;