Skip to content

Commit 6d86c7c

Browse files
committed
Add switch
1 parent 8ebbbd9 commit 6d86c7c

File tree

1 file changed

+43
-3
lines changed

1 file changed

+43
-3
lines changed

Common/TableProducer/PID/pidTOFMerge.cxx

Lines changed: 43 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@
2424
#include "Common/DataModel/FT0Corrected.h"
2525
#include "Common/DataModel/PIDResponseTOF.h"
2626

27-
#include <DataFormatsFIT/Triggers.h>
2827
#include <CCDB/BasicCCDBManager.h>
28+
#include <DataFormatsFIT/Triggers.h>
2929
#include <DataFormatsParameters/GRPLHCIFData.h>
3030
#include <DataFormatsTOF/ParameterContainers.h>
3131
#include <Framework/ASoA.h>
@@ -56,6 +56,7 @@
5656
#include <map>
5757
#include <memory>
5858
#include <string>
59+
#include <utility>
5960
#include <vector>
6061

6162
using namespace o2;
@@ -73,7 +74,12 @@ using Run3TrksWtof = soa::Join<Run3Trks, aod::TOFSignal>;
7374
using Run3TrksWtofWevTime = soa::Join<Run3TrksWtof, aod::TOFEvTime, aod::pidEvTimeFlags>;
7475

7576
using EvTimeCollisions = soa::Join<Run3Cols, aod::EvSels>;
77+
// #define MERGEWITHFT0
78+
#ifndef MERGEWITHFT0
7679
using EvTimeCollisionsFT0 = soa::Join<EvTimeCollisions, aod::FT0sCorrected>;
80+
#else
81+
using EvTimeCollisionsFT0 = EvTimeCollisions;
82+
#endif
7783

7884
using Run2Trks = o2::soa::Join<aod::Tracks, aod::TracksExtra>;
7985
using Run2TrksWtofWevTime = soa::Join<Run2Trks, aod::TOFSignal, aod::TOFEvTime, aod::pidEvTimeFlags>;
@@ -537,7 +543,9 @@ struct tofEventTime {
537543
Produces<o2::aod::TOFEvTime> tableEvTime;
538544
Produces<o2::aod::EvTimeTOFOnly> tableEvTimeTOFOnly;
539545
Produces<o2::aod::pidEvTimeFlags> tableFlags;
546+
#ifdef MERGEWITHFT0
540547
Produces<o2::aod::FT0sCorrected> tableFt0;
548+
#endif
541549
static constexpr bool kRemoveTOFEvTimeBias = true; // Flag to subtract the Ev. Time bias for low multiplicity events with TOF
542550
static constexpr float kDiamond = 6.0; // Collision diamond used in the estimation of the TOF event time
543551
static constexpr float kErrDiamond = kDiamond * 33.356409f;
@@ -660,13 +668,18 @@ struct tofEventTime {
660668
using ResponseImplementationEvTime = o2::pid::tof::ExpTimes<Run3TrksWtof::iterator, pid>;
661669
void processRun3(Run3TrksWtof const& tracks,
662670
aod::FT0s const&,
671+
#ifdef MERGEWITHFT0
663672
EvTimeCollisions const& collisions,
673+
#else
674+
EvTimeCollisionsFT0 const&,
675+
#endif
664676
aod::BCsWithTimestamps const& bcs)
665677
{
666678
if (!enableTableTOFEvTime) {
667679
return;
668680
}
669681
LOG(debug) << "Processing Run3 data for TOF event time";
682+
#ifdef MERGEWITHFT0
670683

671684
std::map<uint64_t, std::pair<float, float>> collisionFt0Map;
672685
tableFt0.reserve(collisions.size());
@@ -696,6 +709,7 @@ struct tofEventTime {
696709
tableFt0(t0A, t0C);
697710
collisionFt0Map[collision.globalIndex()] = std::make_pair(t0A, t0C); // Store the T0A and T0C for the collision
698711
}
712+
#endif
699713
tableEvTime.reserve(tracks.size());
700714
tableFlags.reserve(tracks.size());
701715
if (enableTableEvTimeTOFOnly) {
@@ -741,8 +755,9 @@ struct tofEventTime {
741755
lastCollisionId = t.collisionId(); /// Cache last collision ID
742756

743757
const auto& tracksInCollision = tracks.sliceBy(perCollision, lastCollisionId);
744-
// const auto& collision = t.collision_as<EvTimeCollisions>();
745-
758+
#ifndef MERGEWITHFT0
759+
const auto& collision = t.collision_as<EvTimeCollisionsFT0>();
760+
#endif
746761
// Compute the TOF event time
747762
const auto evTimeMakerTOF = evTimeMakerForTracks<Run3TrksWtof::iterator, filterForTOFEventTime, o2::pid::tof::ExpTimes>(tracksInCollision, mRespParamsV3, kDiamond);
748763

@@ -774,6 +789,7 @@ struct tofEventTime {
774789
sumOfWeights += weight;
775790
}
776791

792+
#ifdef MERGEWITHFT0
777793
float t0A = collisionFt0Map[t.collisionId()].first; // T0A for the collision
778794
float t0C = collisionFt0Map[t.collisionId()].second; // T0C for the collision
779795

@@ -783,6 +799,15 @@ struct tofEventTime {
783799
t0AC[1] = 0.5 * std::abs(t0A - t0C) * 1000.f;
784800
flags |= o2::aod::pidflags::enums::PIDFlags::EvTimeT0AC;
785801

802+
#else
803+
if (collision.has_foundFT0()) { // T0 measurement is available
804+
// const auto& ft0 = collision.foundFT0();
805+
if (collision.t0ACValid()) {
806+
t0AC[0] = collision.t0AC() * 1000.f;
807+
t0AC[1] = collision.t0resolution() * 1000.f;
808+
flags |= o2::aod::pidflags::enums::PIDFlags::EvTimeT0AC;
809+
}
810+
#endif
786811
weight = 1.f / (t0AC[1] * t0AC[1]);
787812
eventTime += t0AC[0] * weight;
788813
sumOfWeights += weight;
@@ -856,6 +881,7 @@ struct tofEventTime {
856881
tableEvTime(0.f, 999.f);
857882
continue;
858883
}
884+
#ifdef MERGEWITHFT0
859885

860886
float t0A = collisionFt0Map[t.collisionId()].first; // T0A for the collision
861887
float t0C = collisionFt0Map[t.collisionId()].second; // T0C for the collision
@@ -870,6 +896,20 @@ struct tofEventTime {
870896
}
871897
tableFlags(flags);
872898
tableEvTime(t0AC[0], t0AC[1]);
899+
#else
900+
const auto& collision = t.collision_as<EvTimeCollisionsFT0>();
901+
902+
if (collision.has_foundFT0()) { // T0 measurement is available
903+
// const auto& ft0 = collision.foundFT0();
904+
if (collision.t0ACValid()) {
905+
tableFlags(o2::aod::pidflags::enums::PIDFlags::EvTimeT0AC);
906+
tableEvTime(collision.t0AC() * 1000.f, collision.t0resolution() * 1000.f);
907+
continue;
908+
}
909+
}
910+
tableFlags(0);
911+
tableEvTime(0.f, 999.f);
912+
#endif
873913
}
874914
} else { // Error
875915
LOG(fatal) << "Invalid configuration for TOF event time computation";

0 commit comments

Comments
 (0)