Skip to content

Commit a180456

Browse files
committed
Improve propagationServiceV2
* Make sure all the CCDB related objects get retrieved via the new table mechanism. * No need anymore for a centralised CCDBLoader object * Get rid of all BasicCCDBManager instances
1 parent 3cc2fd6 commit a180456

4 files changed

Lines changed: 189 additions & 53 deletions

File tree

Common/DataModel/GloCCDBObjects.h

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,21 @@
3333
/// `DECLARE_SOA_TIMESTAMPED_TABLE` with the relevant subset of columns from
3434
/// the `o2::aod::ccdbGlo` namespace rather than joining `aod::GloCCDBObjects`.
3535
///
36-
/// Note: MatLayerCylSet is intentionally omitted — it requires
37-
/// `MatLayerCylSet::rectifyPtrFromFile()` after deserialisation, which the
38-
/// CCDB column mechanism does not perform.
36+
/// The material LUT lives in `aod::GeomCCDBObjects` rather than here: it belongs to
37+
/// the geometry/material family, whose validity is essentially static, and keeping it
38+
/// out means joining `aod::GloCCDBObjects` does not drag in a multi-hundred-MB object
39+
/// nobody asked for. Join whichever tables you need — the duplicated `aod::Timestamps`
40+
/// is deduplicated:
41+
/// \code
42+
/// using BCsWithLUT = soa::Join<aod::BCsWithTimestamps, aod::GeomCCDBObjects>;
43+
/// // rectifyPtrFromFile() is applied by the column's finaliser, so the
44+
/// // object handed back is ready to use; the task only has to (re)install it.
45+
/// auto* lut = &bcs.begin().matLUT();
46+
/// if (lut != mLastLUT) {
47+
/// o2::base::Propagator::Instance()->setMatLUT(lut);
48+
/// mLastLUT = lut;
49+
/// }
50+
/// \endcode
3951

4052
#ifndef COMMON_DATAMODEL_GLOCCDBOBJECTS_H_
4153
#define COMMON_DATAMODEL_GLOCCDBOBJECTS_H_
@@ -44,6 +56,7 @@
4456
#include <DataFormatsParameters/GRPECSObject.h>
4557
#include <DataFormatsParameters/GRPLHCIFData.h>
4658
#include <DataFormatsParameters/GRPMagField.h>
59+
#include <DetectorsBase/MatLayerCylSet.h>
4760
#include <Framework/ASoA.h>
4861
#include <Framework/AnalysisDataModel.h>
4962

@@ -55,11 +68,31 @@ DECLARE_SOA_CCDB_COLUMN(GRPMagField, grpMagField, o2::parameters::GRPMagField, "
5568
DECLARE_SOA_CCDB_COLUMN(MeanVertex, meanVertex, o2::dataformats::MeanVertexObject, "GLO/Calib/MeanVertex"); //!
5669
DECLARE_SOA_CCDB_COLUMN(GRPECSObject, grpECS, o2::parameters::GRPECSObject, "GLO/Config/GRPECS"); //!
5770
DECLARE_SOA_CCDB_COLUMN(GRPLHCIFData, grpLHCIF, o2::parameters::GRPLHCIFData, "GLO/Config/GRPLHCIF"); //!
71+
72+
/// The material LUT is a FlatObject: straight out of the ROOT streamer its internal
73+
/// pointers are unfixed and its voxel lookup is unbuilt, so it is finalised with
74+
/// MatLayerCylSet::rectifyPtrFromFile() before ever being handed to a task.
75+
DECLARE_SOA_CCDB_COLUMN_FULL(MatLUT, "fMatLUT", matLUT, o2::base::MatLayerCylSet, "GLO/Param/MatLUT", //!
76+
[](o2::base::MatLayerCylSet* lut) { return o2::base::MatLayerCylSet::rectifyPtrFromFile(lut); });
5877
} // namespace ccdbGlo
5978

6079
/// Full table — join with aod::BCsWithTimestamps to obtain all four objects.
6180
DECLARE_SOA_TIMESTAMPED_TABLE(GloCCDBObjects, aod::Timestamps, o2::aod::timestamp::Timestamp, 1, "GLOCCDBOBJ", //!
6281
ccdbGlo::GRPMagField, ccdbGlo::MeanVertex, ccdbGlo::GRPECSObject, ccdbGlo::GRPLHCIFData);
82+
83+
/// Geometry and material description: objects which describe where the detector material
84+
/// is, and which share an essentially static interval of validity. Kept apart from the GRP
85+
/// family above, which changes per run (and, for GRPMagField, per timeframe).
86+
/// The aligned/ideal geometry and the per-detector alignment objects belong here too when
87+
/// they get columns; see GRPGeomRequest in O2 (GLO/Config/GeometryAligned, GLO/Config/Geometry,
88+
/// <DET>/Calib/Align) for the family.
89+
/// Join it alongside aod::GloCCDBObjects when a task needs both — the duplicated
90+
/// aod::Timestamps is deduplicated when the joined table's originals are merged.
91+
/// Uniform in the run number: the geometry/material description does not change within a
92+
/// run, so the fetcher queries once per distinct run rather than once per BC.
93+
DECLARE_SOA_UNIFORM_TABLE(GeomCCDBObjects, aod::Timestamps, o2::aod::timestamp::Timestamp,
94+
aod::BCs, o2::aod::bc::RunNumber, 1, "GEOMCCDBOBJ", //!
95+
ccdbGlo::MatLUT);
6396
} // namespace o2::aod
6497

6598
#endif // COMMON_DATAMODEL_GLOCCDBOBJECTS_H_

Common/DataModel/TpcCCDBObjects.h

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
// Copyright 2019-2026 CERN and copyright holders of ALICE O2.
2+
// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3+
// All rights not expressly granted are reserved.
4+
//
5+
// This software is distributed under the terms of the GNU General Public
6+
// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7+
//
8+
// In applying this license CERN does not waive the privileges and immunities
9+
// granted to it by virtue of its status as an Intergovernmental Organization
10+
// or submit itself to any jurisdiction.
11+
12+
/// \file TpcCCDBObjects.h
13+
/// \brief Declarative CCDB columns for TPC calibration objects.
14+
///
15+
/// Unlike the geometry/material family in GloCCDBObjects.h, the drift velocity
16+
/// genuinely varies within a run, so the table keeps the default uniformity — one
17+
/// object per distinct timestamp — rather than collapsing per run.
18+
///
19+
/// Usage:
20+
/// \code
21+
/// using BCsWithVDrift = soa::Join<aod::BCsWithTimestamps, aod::TpcCalibCCDBObjects>;
22+
/// vdriftManager.update(bc.vdriftTgl());
23+
/// \endcode
24+
25+
#ifndef COMMON_DATAMODEL_TPCCCDBOBJECTS_H_
26+
#define COMMON_DATAMODEL_TPCCCDBOBJECTS_H_
27+
28+
#include <DataFormatsTPC/VDriftCorrFact.h>
29+
#include <Framework/ASoA.h>
30+
#include <Framework/AnalysisDataModel.h>
31+
32+
namespace o2::aod
33+
{
34+
namespace ccdbTpc
35+
{
36+
DECLARE_SOA_CCDB_COLUMN(VDriftTgl, vdriftTgl, o2::tpc::VDriftCorrFact, "TPC/Calib/VDriftTgl"); //!
37+
} // namespace ccdbTpc
38+
39+
DECLARE_SOA_TIMESTAMPED_TABLE(TpcCalibCCDBObjects, aod::Timestamps, o2::aod::timestamp::Timestamp, 1, "TPCCALIBCCDB", //!
40+
ccdbTpc::VDriftTgl);
41+
} // namespace o2::aod
42+
43+
#endif // COMMON_DATAMODEL_TPCCCDBOBJECTS_H_
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
// Copyright 2019-2026 CERN and copyright holders of ALICE O2.
2+
// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3+
// All rights not expressly granted are reserved.
4+
//
5+
// This software is distributed under the terms of the GNU General Public
6+
// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7+
//
8+
// In applying this license CERN does not waive the privileges and immunities
9+
// granted to it by virtue of its status as an Intergovernmental Organization
10+
// or submit itself to any jurisdiction.
11+
12+
/// \file TrackTunerCCDBObjects.h
13+
/// \brief Declarative CCDB columns for the TrackTuner DCA / Q-over-pt calibrations.
14+
///
15+
/// The DCA calibration is published under a different path per data-taking period, so
16+
/// the column declares a uniformity-value-to-path mapping rather than a single path:
17+
/// the fetcher picks the entry whose run range contains the row's run number. This
18+
/// replaces TrackTuner::getPathInputFileAutomaticFromCCDB(), whose run ranges these are.
19+
/// A run matching no range is a fatal error, as it was before — there is deliberately no
20+
/// fallback entry, since silently using another period's calibration is worse than stopping.
21+
///
22+
/// The ranges are the column's *default*; the whole mapping can be replaced at runtime
23+
/// through the "ccdb:fTrackTunerDca" option, so adding a period need not be a code change.
24+
25+
#ifndef COMMON_DATAMODEL_TRACKTUNERCCDBOBJECTS_H_
26+
#define COMMON_DATAMODEL_TRACKTUNERCCDBOBJECTS_H_
27+
28+
#include <Framework/ASoA.h>
29+
#include <Framework/AnalysisDataModel.h>
30+
31+
#include <TList.h>
32+
33+
namespace o2::aod
34+
{
35+
namespace ccdbTrackTuner
36+
{
37+
DECLARE_SOA_CCDB_COLUMN(TrackTunerDca, trackTunerDca, TList, //!
38+
"520259-529691=Users/m/mfaggin/test/inputsTrackTuner/pp2023/pass4/vsPhi;"
39+
"534998-543113=Users/m/mfaggin/test/inputsTrackTuner/pp2023/pass4/vsPhi;"
40+
"529397-529418=Users/m/mfaggin/test/inputsTrackTuner/PbPb2023/apass4/vsPhi;"
41+
"543437-545367=Users/m/mfaggin/test/inputsTrackTuner/PbPb2023/apass4/vsPhi;"
42+
"549559-558807=Users/m/mfaggin/test/inputsTrackTuner/pp2024/pass1_minBias/vsPhi;"
43+
"564356-564445=Users/m/mfaggin/test/inputsTrackTuner/OO/LHC25ae;"
44+
"564468-564472=Users/m/mfaggin/test/inputsTrackTuner/OO/LHC25af;"
45+
"559348-559387=Users/m/mfaggin/test/inputsTrackTuner/pp2024/ppRef/polarity_positive;"
46+
"559408-559456=Users/m/mfaggin/test/inputsTrackTuner/pp2024/ppRef/polarity_negative");
47+
48+
DECLARE_SOA_CCDB_COLUMN(TrackTunerQOverPt, trackTunerQOverPt, TList, //!
49+
"Users/h/hsharma/qOverPtGraphs");
50+
} // namespace ccdbTrackTuner
51+
52+
/// Uniform in the run number: one calibration per data-taking period, so the fetcher
53+
/// resolves the path and queries once per distinct run rather than once per BC.
54+
DECLARE_SOA_UNIFORM_TABLE(TrackTunerCCDBObjects, aod::Timestamps, o2::aod::timestamp::Timestamp,
55+
aod::BCs, o2::aod::bc::RunNumber, 1, "TRKTUNERCCDB", //!
56+
ccdbTrackTuner::TrackTunerDca, ccdbTrackTuner::TrackTunerQOverPt);
57+
} // namespace o2::aod
58+
59+
#endif // COMMON_DATAMODEL_TRACKTUNERCCDBOBJECTS_H_

Common/TableProducer/propagationServiceV2.cxx

Lines changed: 51 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
// or submit itself to any jurisdiction.
1111

1212
/// \file propagationServiceV2.cxx
13-
/// \brief V2: GRPMagField and MeanVertexObject sourced from aod::GloCCDBObjects declarative CCDB table.
13+
/// \brief V2: GRPMagField, MeanVertexObject and the material LUT sourced from declarative CCDB tables.
1414
/// \author ALICE
1515

1616
//===============================================================
@@ -28,12 +28,11 @@
2828
#include "Common/DataModel/EventSelection.h"
2929
#include "Common/DataModel/GloCCDBObjects.h"
3030
#include "Common/DataModel/PIDResponseTPC.h"
31-
#include "Common/Tools/StandardCCDBLoader.h"
31+
#include "Common/DataModel/TpcCCDBObjects.h"
32+
#include "Common/DataModel/TrackTunerCCDBObjects.h"
3233
#include "Common/Tools/TrackPropagationModule.h"
3334
#include "Common/Tools/TrackTuner.h"
3435

35-
#include <CCDB/BasicCCDBManager.h>
36-
#include <DetectorsBase/MatLayerCylSet.h>
3736
#include <DetectorsBase/Propagator.h>
3837
#include <Framework/ASoA.h>
3938
#include <Framework/AnalysisDataModel.h>
@@ -66,15 +65,27 @@ using TracksWithExtra = soa::Join<aod::Tracks, aod::TracksExtra>;
6665
using TracksExtraWithPID = soa::Join<aod::TracksExtra, aod::pidTPCFullEl, aod::pidTPCFullPi, aod::pidTPCFullPr, aod::pidTPCFullKa, aod::pidTPCFullHe>;
6766

6867
struct propagationServiceV2 {
69-
// Service<BasicCCDBManager> kept for MatLUT (rectifyPtrFromFile) and
70-
// strangenessBuilderModule (V-drift via ccdb->instance()).
71-
// GRPMagField and MeanVertex are sourced from CCDB columns instead.
72-
o2::framework::Configurable<std::string> ccdburl{"ccdburl", "http://alice-ccdb.cern.ch", "url of the ccdb repository"};
73-
Service<o2::ccdb::BasicCCDBManager> ccdb;
74-
75-
// propagation stuff — ccdbLoader used only for lut + mMeanVtx (set from column) + runNumber
76-
o2::common::StandardCCDBLoaderConfigurables standardCCDBLoaderConfigurables;
77-
o2::common::StandardCCDBLoader ccdbLoader;
68+
// No CCDB client of any kind: GRPMagField, MeanVertex, the material LUT and the TPC
69+
// drift correction all arrive as declarative CCDB columns.
70+
// NB: TrackTuner still holds its own CcdbApi for the DCA calibration files when
71+
// useTrackTuner is enabled; its path is derived from the run number, which a CCDB
72+
// column cannot express today.
73+
74+
// Keep every CCDB path user-overridable, as ccdb.lutPath / ccdb.grpmagPath /
75+
// ccdb.mVtxPath were before the migration. The option name and default are derived
76+
// from the column itself ("ccdb:fMatLUT" and friends), so they cannot drift from the
77+
// declaration the way the old per-task Configurables did. Declaring them is enough —
78+
// the accessors stay bc.matLUT() / bc.grpMagField() / bc.meanVertex().
79+
o2::framework::ConfigurableCCDBPath<aod::ccdbGlo::MatLUT> matLUTPath;
80+
o2::framework::ConfigurableCCDBPath<aod::ccdbGlo::GRPMagField> grpMagFieldPath;
81+
o2::framework::ConfigurableCCDBPath<aod::ccdbGlo::MeanVertex> meanVertexPath;
82+
83+
// Everything this task needs is read straight off the CCDB columns at the point of
84+
// use; no StandardCCDBLoader, and no CCDB query of its own. The single piece of
85+
// retained state is the run number, needed only to avoid re-installing the magnetic
86+
// field: that one is not a lookup but global state in the Propagator /
87+
// TGeoGlobalMagField singletons, and installing it rebuilds or rescales the field map.
88+
int mRunNumber = -1;
7889

7990
// boilerplate: strangeness builder stuff
8091
o2::pwglf::strangenessbuilder::products products;
@@ -93,86 +104,76 @@ struct propagationServiceV2 {
93104
o2::common::TrackPropagationConfigurables trackPropagationConfigurables;
94105
o2::common::TrackPropagationModule trackPropagation;
95106

96-
using BCsWithCCDB = soa::Join<aod::BCsWithTimestamps, aod::GloCCDBObjects>;
107+
using BCsWithCCDB = soa::Join<aod::BCsWithTimestamps, aod::GloCCDBObjects, aod::GeomCCDBObjects, aod::TpcCalibCCDBObjects, aod::TrackTunerCCDBObjects>;
97108

98109
// registry
99110
HistogramRegistry histos{"histos"};
100111

101112
void init(o2::framework::InitContext& initContext)
102113
{
103-
// Only needed for MatLUT fetch and strangenessBuilderModule V-drift
104-
ccdb->setCaching(true);
105-
ccdb->setLocalObjectValidityChecking();
106-
ccdb->setURL(ccdburl.value);
107-
108114
// task-specific
109-
trackPropagation.init(trackPropagationConfigurables, trackTunerObj, histos, initContext);
115+
trackPropagation.init(trackPropagationConfigurables, trackTunerObj, histos, initContext, /*calibFromCCDBColumns=*/true);
110116
strangenessBuilderModule.init(baseOpts, v0BuilderOpts, cascadeBuilderOpts, preSelectOpts, eventSelectOpts, histos, initContext);
111117
}
112118

113-
// Load MatLUT once (needs rectifyPtrFromFile, kept manual), set B-field and mean vertex
114-
// once per run from GRPMagField/MeanVertex CCDB columns.
119+
/// Install into the Propagator the two things which are global state rather than
120+
/// values: the magnetic field and the material LUT.
115121
template <typename TBC>
116-
void initCCDB(TBC const& bc0)
122+
void initPropagator(TBC const& bc0)
117123
{
118-
if (ccdbLoader.runNumber != bc0.runNumber()) {
124+
if (mRunNumber != bc0.runNumber()) {
119125
LOG(info) << "Setting B-field to current " << bc0.grpMagField().getL3Current() << " A for run " << bc0.runNumber() << " from GRPMagField CCDB column";
120126
o2::base::Propagator::initFieldFromGRP(&bc0.grpMagField());
121-
ccdbLoader.mMeanVtx = &bc0.meanVertex();
122-
ccdbLoader.runNumber = bc0.runNumber();
123-
} else {
124-
// Verify the CCDB column buffer has not been replaced mid-run.
125-
// The deserialised pointer must be stable for the lifetime of a run.
126-
if (&bc0.meanVertex() != ccdbLoader.mMeanVtx) {
127-
LOG(fatal) << "MeanVertex CCDB column pointer changed within run " << bc0.runNumber() << " — unexpected buffer replacement";
128-
}
129-
}
130-
if (!ccdbLoader.lut) {
131-
LOG(info) << "Loading material look-up table for run: " << bc0.runNumber();
132-
ccdbLoader.lut = o2::base::MatLayerCylSet::rectifyPtrFromFile(
133-
ccdb->template getForRun<o2::base::MatLayerCylSet>(standardCCDBLoaderConfigurables.lutPath.value, bc0.runNumber()));
134-
o2::base::Propagator::Instance()->setMatLUT(ccdbLoader.lut);
127+
mRunNumber = bc0.runNumber();
135128
}
129+
// A pointer store, so it costs nothing to redo every timeframe — and doing so
130+
// means a relocated column buffer is picked up for free instead of dangling.
131+
// The column's finaliser has already run MatLayerCylSet::rectifyPtrFromFile.
132+
o2::base::Propagator::Instance()->setMatLUT(&bc0.matLUT());
136133
}
137134

138135
void processRealData(soa::Join<aod::Collisions, aod::EvSels> const& collisions, aod::V0s const& v0s, aod::Cascades const& cascades, aod::TrackedCascades const& trackedCascades, FullTracksExtIU const& tracks, BCsWithCCDB const& bcs)
139136
{
140137
if (bcs.size() == 0) {
141138
return;
142139
}
143-
initCCDB(bcs.begin());
144-
trackPropagation.fillTrackTables<false>(trackPropagationConfigurables, trackTunerObj, ccdbLoader, collisions, tracks, trackPropagationProducts, histos);
145-
strangenessBuilderModule.dataProcess(ccdb, histos, collisions, static_cast<TObject*>(nullptr), v0s, cascades, trackedCascades, tracks, bcs, static_cast<TObject*>(nullptr), products);
140+
auto bc0 = bcs.begin();
141+
initPropagator(bc0);
142+
trackPropagation.fillTrackTables<false>(trackPropagationConfigurables, trackTunerObj, bc0.runNumber(), &bc0.meanVertex(), &bc0.trackTunerDca(), &bc0.trackTunerQOverPt(), collisions, tracks, trackPropagationProducts, histos);
143+
strangenessBuilderModule.dataProcess(histos, collisions, static_cast<TObject*>(nullptr), v0s, cascades, trackedCascades, tracks, bcs, static_cast<TObject*>(nullptr), products);
146144
}
147145

148146
void processMonteCarlo(soa::Join<aod::Collisions, aod::EvSels, aod::McCollisionLabels> const& collisions, aod::McCollisions const& mccollisions, aod::V0s const& v0s, aod::Cascades const& cascades, aod::TrackedCascades const& trackedCascades, FullTracksExtLabeledIU const& tracks, BCsWithCCDB const& bcs, aod::McParticles const& mcParticles)
149147
{
150148
if (bcs.size() == 0) {
151149
return;
152150
}
153-
initCCDB(bcs.begin());
154-
trackPropagation.fillTrackTables<true>(trackPropagationConfigurables, trackTunerObj, ccdbLoader, collisions, tracks, trackPropagationProducts, histos);
155-
strangenessBuilderModule.dataProcess(ccdb, histos, collisions, mccollisions, v0s, cascades, trackedCascades, tracks, bcs, mcParticles, products);
151+
auto bc0 = bcs.begin();
152+
initPropagator(bc0);
153+
trackPropagation.fillTrackTables<true>(trackPropagationConfigurables, trackTunerObj, bc0.runNumber(), &bc0.meanVertex(), &bc0.trackTunerDca(), &bc0.trackTunerQOverPt(), collisions, tracks, trackPropagationProducts, histos);
154+
strangenessBuilderModule.dataProcess(histos, collisions, mccollisions, v0s, cascades, trackedCascades, tracks, bcs, mcParticles, products);
156155
}
157156

158157
void processRealDataWithPID(soa::Join<aod::Collisions, aod::EvSels> const& collisions, aod::V0s const& v0s, aod::Cascades const& cascades, aod::TrackedCascades const& trackedCascades, FullTracksExtIUWithPID const& tracks, BCsWithCCDB const& bcs)
159158
{
160159
if (bcs.size() == 0) {
161160
return;
162161
}
163-
initCCDB(bcs.begin());
164-
trackPropagation.fillTrackTables<false>(trackPropagationConfigurables, trackTunerObj, ccdbLoader, collisions, tracks, trackPropagationProducts, histos);
165-
strangenessBuilderModule.dataProcess(ccdb, histos, collisions, static_cast<TObject*>(nullptr), v0s, cascades, trackedCascades, tracks, bcs, static_cast<TObject*>(nullptr), products);
162+
auto bc0 = bcs.begin();
163+
initPropagator(bc0);
164+
trackPropagation.fillTrackTables<false>(trackPropagationConfigurables, trackTunerObj, bc0.runNumber(), &bc0.meanVertex(), &bc0.trackTunerDca(), &bc0.trackTunerQOverPt(), collisions, tracks, trackPropagationProducts, histos);
165+
strangenessBuilderModule.dataProcess(histos, collisions, static_cast<TObject*>(nullptr), v0s, cascades, trackedCascades, tracks, bcs, static_cast<TObject*>(nullptr), products);
166166
}
167167

168168
void processMonteCarloWithPID(soa::Join<aod::Collisions, aod::EvSels, aod::McCollisionLabels> const& collisions, aod::McCollisions const& mccollisions, aod::V0s const& v0s, aod::Cascades const& cascades, aod::TrackedCascades const& trackedCascades, FullTracksExtLabeledIUWithPID const& tracks, BCsWithCCDB const& bcs, aod::McParticles const& mcParticles)
169169
{
170170
if (bcs.size() == 0) {
171171
return;
172172
}
173-
initCCDB(bcs.begin());
174-
trackPropagation.fillTrackTables<true>(trackPropagationConfigurables, trackTunerObj, ccdbLoader, collisions, tracks, trackPropagationProducts, histos);
175-
strangenessBuilderModule.dataProcess(ccdb, histos, collisions, mccollisions, v0s, cascades, trackedCascades, tracks, bcs, mcParticles, products);
173+
auto bc0 = bcs.begin();
174+
initPropagator(bc0);
175+
trackPropagation.fillTrackTables<true>(trackPropagationConfigurables, trackTunerObj, bc0.runNumber(), &bc0.meanVertex(), &bc0.trackTunerDca(), &bc0.trackTunerQOverPt(), collisions, tracks, trackPropagationProducts, histos);
176+
strangenessBuilderModule.dataProcess(histos, collisions, mccollisions, v0s, cascades, trackedCascades, tracks, bcs, mcParticles, products);
176177
}
177178

178179
PROCESS_SWITCH(propagationServiceV2, processRealData, "process real data", true);

0 commit comments

Comments
 (0)