Skip to content

Commit af04904

Browse files
committed
Update
1 parent 030f25e commit af04904

File tree

1 file changed

+32
-5
lines changed

1 file changed

+32
-5
lines changed

EventFiltering/PWGHF/H2fromLbFilter.cxx

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -78,13 +78,15 @@ struct H2fromLbFilter {
7878
o2::framework::Configurable<float> ptThresholdPid{"ptThresholdPid", 1.0f, "pT threshold to switch between ITS and TOF PID"};
7979

8080
o2::framework::Service<o2::ccdb::BasicCCDBManager> ccdb;
81+
o2::framework::Service<o2::pid::tof::TOFResponse> tofResponse;
8182

82-
void init(o2::framework::InitContext&)
83+
void init(o2::framework::InitContext& initContext)
8384
{
8485
ccdb->setURL("http://alice-ccdb.cern.ch"); // Set CCDB URL to get magnetic field
8586
ccdb->setCaching(true);
8687
ccdb->setLocalObjectValidityChecking();
8788
ccdb->setCreatedNotAfter(std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count());
89+
tofResponse->initSetup(ccdb, initContext);
8890

8991
o2::framework::AxisSpec ptAxis = {100, 0.0f, 10.0f, "#it{p}_{T} (GeV/#it{c})"};
9092

@@ -111,7 +113,10 @@ struct H2fromLbFilter {
111113

112114
// Tables
113115
using CollisionCandidates = o2::soa::Join<o2::aod::Collisions, o2::aod::EvSels>;
114-
using TrackCandidates = o2::soa::Join<o2::aod::Tracks, o2::aod::TracksCov, o2::aod::TracksExtra, o2::aod::TracksDCA, o2::aod::TrackSelection, o2::aod::pidTPCFullDe, o2::aod::pidTOFFullDe>;
116+
using TrackCandidates = o2::soa::Join<o2::aod::Tracks, o2::aod::TracksCov, o2::aod::TracksExtra,
117+
o2::aod::TracksDCA, o2::aod::TrackSelection,
118+
o2::aod::pidTPCFullDe, o2::aod::pidTOFFullDe,
119+
o2::aod::TOFSignal, o2::aod::TOFEvTime>;
115120

116121
// Single-Track Selection
117122
template <typename T1>
@@ -155,9 +160,10 @@ struct H2fromLbFilter {
155160
void process(CollisionCandidates const& collisions,
156161
o2::aod::TrackAssoc const& trackIndices,
157162
TrackCandidates const& tracks,
158-
o2::aod::BCsWithTimestamps const&)
163+
o2::aod::BCsWithTimestamps const& bcs)
159164
{
160-
for (const auto& collision : collisions) // start loop over collisions
165+
tofResponse->processSetup(bcs.iteratorAt(0)); // Update the response parameters
166+
for (const auto& collision : collisions) // start loop over collisions
161167
{
162168
if (mCurrentRun != collision.bc_as<o2::aod::BCsWithTimestamps>().runNumber()) { // If the run is new then we need to initialize the propagator field
163169
o2::parameters::GRPMagField* grpo = ccdb->getForTimeStamp<o2::parameters::GRPMagField>("GLO/Config/GRPMagField", collision.bc_as<o2::aod::BCsWithTimestamps>().timestamp());
@@ -195,6 +201,22 @@ struct H2fromLbFilter {
195201
const auto& trackIdsThisCollision = trackIndices.sliceBy(trackIndicesPerCollision, collision.globalIndex());
196202
auto tracksWithItsPid = o2::soa::Attach<TrackCandidates, o2::aod::pidits::ITSNSigmaDe>(tracks);
197203

204+
float tofEventTime = 0.f;
205+
float tofEventTimeErr = 0.f;
206+
207+
for (const auto& trackId : trackIdsThisCollision) { // start loop over tracks
208+
const auto& track = tracksWithItsPid.rawIteratorAt(trackId.trackId());
209+
if (!passedSingleTrackSelection(track)) {
210+
continue;
211+
}
212+
if (track.collisionId() != collision.globalIndex()) {
213+
continue;
214+
}
215+
tofEventTime = track.tofEvTime();
216+
tofEventTimeErr = track.tofEvTimeErr();
217+
break;
218+
}
219+
198220
for (const auto& trackId : trackIdsThisCollision) { // start loop over tracks
199221

200222
const auto& track = tracksWithItsPid.rawIteratorAt(trackId.trackId());
@@ -211,7 +233,11 @@ struct H2fromLbFilter {
211233
if (!passedSingleTrackSelection(track)) {
212234
continue;
213235
}
214-
236+
float recalculatedNSigmaTOFDe = 0.f;
237+
if (track.collisionId() != collision.globalIndex()) {
238+
recalculatedNSigmaTOFDe = tofResponse->nSigma<o2::track::PID::Deuteron>(track.tofSignalInAnotherBC(track.collision_as<CollisionCandidates>().bc_as<o2::aod::BCsWithTimestamps>().globalBC(), collision.bc_as<o2::aod::BCsWithTimestamps>().globalBC()),
239+
track.tofExpMom(), track.length(), track.p(), track.eta(), tofEventTime, tofEventTimeErr);
240+
}
215241
const bool isTOFDe = std::abs(track.tofNSigmaDe()) < cfgTOFNsigma;
216242
const bool isTPCDe = std::abs(track.tpcNSigmaDe()) < cfgTPCNsigma;
217243
const bool isITSDe = track.itsNSigmaDe() > cfgITSNsigma;
@@ -262,5 +288,6 @@ struct H2fromLbFilter {
262288

263289
o2::framework::WorkflowSpec defineDataProcessing(o2::framework::ConfigContext const& cfgc)
264290
{
291+
o2::pid::tof::TOFResponseImpl::metadataInfo.initMetadata(cfgc);
265292
return o2::framework::WorkflowSpec{o2::framework::adaptAnalysisTask<H2fromLbFilter>(cfgc)};
266293
}

0 commit comments

Comments
 (0)