Skip to content

Commit 9a8b094

Browse files
authored
Merge 79a2e5e into sapling-pr-archive-ktf
2 parents 3b9b53e + 79a2e5e commit 9a8b094

File tree

16 files changed

+327
-100
lines changed

16 files changed

+327
-100
lines changed

Detectors/AOD/include/AODProducerWorkflow/AODProducerWorkflowSpec.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -520,8 +520,8 @@ class AODProducerWorkflowDPL : public Task
520520
GIndex trackID, const o2::globaltracking::RecoContainer& data, int collisionID,
521521
std::uint64_t collisionBC, const std::map<uint64_t, int>& bcsMap);
522522

523-
template <typename fwdTracksCursorType, typename fwdTracksCovCursorType, typename AmbigFwdTracksCursorType>
524-
void addToFwdTracksTable(fwdTracksCursorType& fwdTracksCursor, fwdTracksCovCursorType& fwdTracksCovCursor, AmbigFwdTracksCursorType& ambigFwdTracksCursor,
523+
template <typename fwdTracksCursorType, typename fwdTracksCovCursorType, typename AmbigFwdTracksCursorType, typename mftTracksCovCursorType>
524+
void addToFwdTracksTable(fwdTracksCursorType& fwdTracksCursor, fwdTracksCovCursorType& fwdTracksCovCursor, AmbigFwdTracksCursorType& ambigFwdTracksCursor, mftTracksCovCursorType& mftTracksCovCursor,
525525
GIndex trackID, const o2::globaltracking::RecoContainer& data, int collisionID, std::uint64_t collisionBC, const std::map<uint64_t, int>& bcsMap);
526526

527527
TrackExtraInfo processBarrelTrack(int collisionID, std::uint64_t collisionBC, GIndex trackIndex, const o2::globaltracking::RecoContainer& data, const std::map<uint64_t, int>& bcsMap);
@@ -535,7 +535,7 @@ class AODProducerWorkflowDPL : public Task
535535
// * fills tables collision by collision
536536
// * interaction time is for TOF information
537537
template <typename TracksCursorType, typename TracksCovCursorType, typename TracksExtraCursorType, typename TracksQACursorType, typename AmbigTracksCursorType,
538-
typename MFTTracksCursorType, typename AmbigMFTTracksCursorType,
538+
typename MFTTracksCursorType, typename MFTTracksCovCursorType, typename AmbigMFTTracksCursorType,
539539
typename FwdTracksCursorType, typename FwdTracksCovCursorType, typename AmbigFwdTracksCursorType, typename FwdTrkClsCursorType>
540540
void fillTrackTablesPerCollision(int collisionID,
541541
std::uint64_t collisionBC,
@@ -548,6 +548,7 @@ class AODProducerWorkflowDPL : public Task
548548
TracksQACursorType& tracksQACursor,
549549
AmbigTracksCursorType& ambigTracksCursor,
550550
MFTTracksCursorType& mftTracksCursor,
551+
MFTTracksCovCursorType& mftTracksCovCursor,
551552
AmbigMFTTracksCursorType& ambigMFTTracksCursor,
552553
FwdTracksCursorType& fwdTracksCursor,
553554
FwdTracksCovCursorType& fwdTracksCovCursor,

Detectors/AOD/src/AODProducerWorkflowSpec.cxx

Lines changed: 34 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -428,7 +428,7 @@ void AODProducerWorkflowDPL::addToMFTTracksTable(mftTracksCursorType& mftTracksC
428428
}
429429

430430
template <typename TracksCursorType, typename TracksCovCursorType, typename TracksExtraCursorType, typename TracksQACursorType, typename AmbigTracksCursorType,
431-
typename MFTTracksCursorType, typename AmbigMFTTracksCursorType,
431+
typename MFTTracksCursorType, typename MFTTracksCovCursorType, typename AmbigMFTTracksCursorType,
432432
typename FwdTracksCursorType, typename FwdTracksCovCursorType, typename AmbigFwdTracksCursorType, typename FwdTrkClsCursorType>
433433
void AODProducerWorkflowDPL::fillTrackTablesPerCollision(int collisionID,
434434
std::uint64_t collisionBC,
@@ -441,6 +441,7 @@ void AODProducerWorkflowDPL::fillTrackTablesPerCollision(int collisionID,
441441
TracksQACursorType& tracksQACursor,
442442
AmbigTracksCursorType& ambigTracksCursor,
443443
MFTTracksCursorType& mftTracksCursor,
444+
MFTTracksCovCursorType& mftTracksCovCursor,
444445
AmbigMFTTracksCursorType& ambigMFTTracksCursor,
445446
FwdTracksCursorType& fwdTracksCursor,
446447
FwdTracksCovCursorType& fwdTracksCovCursor,
@@ -460,6 +461,9 @@ void AODProducerWorkflowDPL::fillTrackTablesPerCollision(int collisionID,
460461
} else if (src == GIndex::Source::MCH || src == GIndex::Source::MFTMCH || src == GIndex::Source::MCHMID) {
461462
fwdTracksCursor.reserve(nToReserve + fwdTracksCursor.lastIndex());
462463
fwdTracksCovCursor.reserve(nToReserve + fwdTracksCovCursor.lastIndex());
464+
if (src == GIndex::Source::MFTMCH) {
465+
mftTracksCovCursor.reserve(nToReserve + mftTracksCovCursor.lastIndex());
466+
}
463467
} else {
464468
tracksCursor.reserve(nToReserve + tracksCursor.lastIndex());
465469
tracksCovCursor.reserve(nToReserve + tracksCovCursor.lastIndex());
@@ -479,7 +483,7 @@ void AODProducerWorkflowDPL::fillTrackTablesPerCollision(int collisionID,
479483
if (trackIndex.isAmbiguous() && mGIDToTableFwdID.find(trackIndex) != mGIDToTableFwdID.end()) { // was it already stored ?
480484
continue;
481485
}
482-
addToFwdTracksTable(fwdTracksCursor, fwdTracksCovCursor, ambigFwdTracksCursor, trackIndex, data, collisionID, collisionBC, bcsMap);
486+
addToFwdTracksTable(fwdTracksCursor, fwdTracksCovCursor, ambigFwdTracksCursor, mftTracksCovCursor, trackIndex, data, collisionID, collisionBC, bcsMap);
483487
mGIDToTableFwdID.emplace(trackIndex, mTableTrFwdID);
484488
addClustersToFwdTrkClsTable(data, fwdTrkClsCursor, trackIndex, mTableTrFwdID);
485489
mTableTrFwdID++;
@@ -600,9 +604,9 @@ void AODProducerWorkflowDPL::fillIndexTablesPerCollision(const o2::dataformats::
600604
}
601605
}
602606

603-
template <typename FwdTracksCursorType, typename FwdTracksCovCursorType, typename AmbigFwdTracksCursorType>
607+
template <typename FwdTracksCursorType, typename FwdTracksCovCursorType, typename AmbigFwdTracksCursorType, typename mftTracksCovCursorType>
604608
void AODProducerWorkflowDPL::addToFwdTracksTable(FwdTracksCursorType& fwdTracksCursor, FwdTracksCovCursorType& fwdTracksCovCursor,
605-
AmbigFwdTracksCursorType& ambigFwdTracksCursor, GIndex trackID,
609+
AmbigFwdTracksCursorType& ambigFwdTracksCursor, mftTracksCovCursorType& mftTracksCovCursor, GIndex trackID,
606610
const o2::globaltracking::RecoContainer& data, int collisionID, std::uint64_t collisionBC,
607611
const std::map<uint64_t, int>& bcsMap)
608612
{
@@ -744,6 +748,8 @@ void AODProducerWorkflowDPL::addToFwdTracksTable(FwdTracksCursorType& fwdTracksC
744748
fwdInfo.trackTimeRes = time.getTimeStampError() * 1.e3;
745749
} else { // This is a GlobalMuonTrack or a GlobalForwardTrack
746750
const auto& track = data.getGlobalFwdTrack(trackID);
751+
const auto& mftTracks = data.getMFTTracks();
752+
const auto& mfttrack = mftTracks[track.getMFTTrackID()];
747753
if (!extrapMCHTrack(track.getMCHTrackID())) {
748754
LOGF(warn, "Unable to extrapolate MCH track with ID %d! Dummy parameters will be used", track.getMCHTrackID());
749755
}
@@ -783,6 +789,26 @@ void AODProducerWorkflowDPL::addToFwdTracksTable(FwdTracksCursorType& fwdTracksC
783789
fwdCovInfo.rho1PtTgl = (Char_t)(128. * track.getCovariances()(3, 4) / (fwdCovInfo.sig1Pt * fwdCovInfo.sigTgl));
784790

785791
fwdInfo.trackTypeId = (fwdInfo.chi2matchmchmid >= 0) ? o2::aod::fwdtrack::GlobalMuonTrack : o2::aod::fwdtrack::GlobalForwardTrack;
792+
793+
float sX = TMath::Sqrt(mfttrack.getSigma2X()), sY = TMath::Sqrt(mfttrack.getSigma2Y()), sPhi = TMath::Sqrt(mfttrack.getSigma2Phi()),
794+
sTgl = TMath::Sqrt(mfttrack.getSigma2Tanl()), sQ2Pt = TMath::Sqrt(mfttrack.getSigma2InvQPt());
795+
796+
mftTracksCovCursor(fwdInfo.matchmfttrackid,
797+
truncateFloatFraction(sX, mTrackCovDiag),
798+
truncateFloatFraction(sY, mTrackCovDiag),
799+
truncateFloatFraction(sPhi, mTrackCovDiag),
800+
truncateFloatFraction(sTgl, mTrackCovDiag),
801+
truncateFloatFraction(sQ2Pt, mTrackCovDiag),
802+
(Char_t)(128. * mfttrack.getCovariances()(0, 1) / (sX * sY)),
803+
(Char_t)(128. * mfttrack.getCovariances()(0, 2) / (sPhi * sX)),
804+
(Char_t)(128. * mfttrack.getCovariances()(1, 2) / (sPhi * sY)),
805+
(Char_t)(128. * mfttrack.getCovariances()(0, 3) / (sTgl * sX)),
806+
(Char_t)(128. * mfttrack.getCovariances()(1, 3) / (sTgl * sY)),
807+
(Char_t)(128. * mfttrack.getCovariances()(2, 3) / (sTgl * sPhi)),
808+
(Char_t)(128. * mfttrack.getCovariances()(0, 4) / (sQ2Pt * sX)),
809+
(Char_t)(128. * mfttrack.getCovariances()(1, 4) / (sQ2Pt * sY)),
810+
(Char_t)(128. * mfttrack.getCovariances()(2, 4) / (sQ2Pt * sPhi)),
811+
(Char_t)(128. * mfttrack.getCovariances()(3, 4) / (sQ2Pt * sTgl)));
786812
}
787813

788814
std::uint64_t bcOfTimeRef;
@@ -1837,6 +1863,7 @@ void AODProducerWorkflowDPL::run(ProcessingContext& pc)
18371863
auto fwdTracksCovCursor = createTableCursor<o2::aod::StoredFwdTracksCov>(pc);
18381864
auto fwdTrkClsCursor = createTableCursor<o2::aod::FwdTrkCls>(pc);
18391865
auto mftTracksCursor = createTableCursor<o2::aod::StoredMFTTracks>(pc);
1866+
auto mftTracksCovCursor = createTableCursor<o2::aod::StoredMFTTracksCov>(pc);
18401867
auto tracksCursor = createTableCursor<o2::aod::StoredTracksIU>(pc);
18411868
auto tracksCovCursor = createTableCursor<o2::aod::StoredTracksCovIU>(pc);
18421869
auto tracksExtraCursor = createTableCursor<o2::aod::StoredTracksExtra>(pc);
@@ -2171,7 +2198,7 @@ void AODProducerWorkflowDPL::run(ProcessingContext& pc)
21712198
auto& trackRef = primVer2TRefs.back(); // references to unassigned tracks are at the end
21722199
// fixme: interaction time is undefined for unassigned tracks (?)
21732200
fillTrackTablesPerCollision(-1, std::uint64_t(-1), trackRef, primVerGIs, recoData, tracksCursor, tracksCovCursor, tracksExtraCursor, tracksQACursor,
2174-
ambigTracksCursor, mftTracksCursor, ambigMFTTracksCursor,
2201+
ambigTracksCursor, mftTracksCursor, mftTracksCovCursor, ambigMFTTracksCursor,
21752202
fwdTracksCursor, fwdTracksCovCursor, ambigFwdTracksCursor, fwdTrkClsCursor, bcsMap);
21762203

21772204
// filling collisions and tracks into tables
@@ -2213,7 +2240,7 @@ void AODProducerWorkflowDPL::run(ProcessingContext& pc)
22132240
auto& trackRef = primVer2TRefs[collisionID];
22142241
// passing interaction time in [ps]
22152242
fillTrackTablesPerCollision(collisionID, globalBC, trackRef, primVerGIs, recoData, tracksCursor, tracksCovCursor, tracksExtraCursor, tracksQACursor, ambigTracksCursor,
2216-
mftTracksCursor, ambigMFTTracksCursor,
2243+
mftTracksCursor, mftTracksCovCursor, ambigMFTTracksCursor,
22172244
fwdTracksCursor, fwdTracksCovCursor, ambigFwdTracksCursor, fwdTrkClsCursor, bcsMap);
22182245
collisionID++;
22192246
}
@@ -3139,6 +3166,7 @@ DataProcessorSpec getAODProducerWorkflowSpec(GID::mask_t src, bool enableSV, boo
31393166
OutputForTable<StoredFwdTracks>::spec(),
31403167
OutputForTable<StoredFwdTracksCov>::spec(),
31413168
OutputForTable<StoredMFTTracks>::spec(),
3169+
OutputForTable<StoredMFTTracksCov>::spec(),
31423170
OutputForTable<StoredTracksIU>::spec(),
31433171
OutputForTable<StoredTracksCovIU>::spec(),
31443172
OutputForTable<StoredTracksExtra>::spec(),

Framework/Core/include/Framework/AnalysisDataModel.h

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -951,6 +951,32 @@ DECLARE_SOA_EXTENDED_TABLE(FwdTracksCov, StoredFwdTracksCov, "EXFWDTRACKCOV", 0,
951951
using FwdTrack = FwdTracks::iterator;
952952
using FwdTrackCovFwd = FwdTracksCov::iterator;
953953

954+
DECLARE_SOA_TABLE_FULL(StoredMFTTracksCov, "MFTTracksCov", "AOD", "MFTTRACKCOV", //!
955+
o2::soa::Index<>, fwdtrack::MFTTrackId,
956+
fwdtrack::SigmaX, fwdtrack::SigmaY, fwdtrack::SigmaPhi, fwdtrack::SigmaTgl, fwdtrack::Sigma1Pt,
957+
fwdtrack::RhoXY, fwdtrack::RhoPhiX, fwdtrack::RhoPhiY, fwdtrack::RhoTglX, fwdtrack::RhoTglY,
958+
fwdtrack::RhoTglPhi, fwdtrack::Rho1PtX, fwdtrack::Rho1PtY, fwdtrack::Rho1PtPhi, fwdtrack::Rho1PtTgl);
959+
960+
DECLARE_SOA_EXTENDED_TABLE(MFTTracksCov, StoredMFTTracksCov, "EXMFTTRACKCOV", 0, //!
961+
aod::fwdtrack::CXX,
962+
aod::fwdtrack::CXY,
963+
aod::fwdtrack::CYY,
964+
aod::fwdtrack::CPhiX,
965+
aod::fwdtrack::CPhiY,
966+
aod::fwdtrack::CPhiPhi,
967+
aod::fwdtrack::CTglX,
968+
aod::fwdtrack::CTglY,
969+
aod::fwdtrack::CTglPhi,
970+
aod::fwdtrack::CTglTgl,
971+
aod::fwdtrack::C1PtX,
972+
aod::fwdtrack::C1PtY,
973+
aod::fwdtrack::C1PtPhi,
974+
aod::fwdtrack::C1PtTgl,
975+
aod::fwdtrack::C1Pt21Pt2);
976+
977+
using MFTTrack = MFTTracks::iterator;
978+
using MFTTrackCovFwd = MFTTracksCov::iterator;
979+
954980
} // namespace aod
955981
namespace soa
956982
{

Framework/Core/src/CallbacksPolicy.cxx

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,6 @@
2020
#include <cstdlib>
2121
#include <uv.h>
2222

23-
// This is to allow C++20 aggregate initialisation
24-
#pragma GCC diagnostic push
25-
#pragma GCC diagnostic ignored "-Wpedantic"
26-
2723
namespace o2::framework
2824
{
2925

Framework/Core/src/CommonMessageBackends.cxx

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,6 @@
3333
#include <boost/program_options/variables_map.hpp>
3434
#include <csignal>
3535

36-
// This is to allow C++20 aggregate initialisation
37-
#pragma GCC diagnostic push
38-
#pragma GCC diagnostic ignored "-Wpedantic"
39-
4036
namespace o2::framework
4137
{
4238

Framework/Core/src/CommonServices.cxx

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,10 +77,6 @@ using Metric = o2::monitoring::Metric;
7777
using Key = o2::monitoring::tags::Key;
7878
using Value = o2::monitoring::tags::Value;
7979

80-
// This is to allow C++20 aggregate initialisation
81-
#pragma GCC diagnostic push
82-
#pragma GCC diagnostic ignored "-Wpedantic"
83-
8480
O2_DECLARE_DYNAMIC_LOG(data_processor_context);
8581
O2_DECLARE_DYNAMIC_LOG(stream_context);
8682
O2_DECLARE_DYNAMIC_LOG(async_queue);

Framework/Core/src/runDataProcessing.cxx

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -134,9 +134,6 @@
134134
#include <unistd.h>
135135
#include <execinfo.h>
136136
#include <cfenv>
137-
// This is to allow C++20 aggregate initialisation
138-
#pragma GCC diagnostic push
139-
#pragma GCC diagnostic ignored "-Wpedantic"
140137
#if defined(__linux__) && __has_include(<sched.h>)
141138
#include <sched.h>
142139
#elif __has_include(<linux/getcpu.h>)

Framework/Foundation/include/Framework/Signpost.h

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -90,11 +90,10 @@ o2_log_handle_t* o2_walk_logs(bool (*callback)(char const* name, void* log, void
9090
#include <os/log.h>
9191
#include <os/signpost.h>
9292
#include <cstring>
93-
#define O2_LOG_DEBUG_MAC(log, ...) os_log_debug(private_o2_log_##log, __VA_ARGS__)
94-
// FIXME: use __VA_OPT__ when available in C++20
95-
#define O2_SIGNPOST_EVENT_EMIT_MAC(log, id, name, format, ...) os_signpost_event_emit(private_o2_log_##log->os_log, (uint64_t)id.value, name, format, ##__VA_ARGS__)
96-
#define O2_SIGNPOST_START_MAC(log, id, name, format, ...) os_signpost_interval_begin(private_o2_log_##log->os_log, (uint64_t)id.value, name, format, ##__VA_ARGS__)
97-
#define O2_SIGNPOST_END_MAC(log, id, name, format, ...) os_signpost_interval_end(private_o2_log_##log->os_log, (uint64_t)id.value, name, format, ##__VA_ARGS__)
93+
#define O2_LOG_DEBUG_MAC(log, format, ...) os_log_debug(private_o2_log_##log, format __VA_OPT__(, ) __VA_ARGS__)
94+
#define O2_SIGNPOST_EVENT_EMIT_MAC(log, id, name, format, ...) os_signpost_event_emit(private_o2_log_##log->os_log, (uint64_t)id.value, name, format __VA_OPT__(, ) __VA_ARGS__)
95+
#define O2_SIGNPOST_START_MAC(log, id, name, format, ...) os_signpost_interval_begin(private_o2_log_##log->os_log, (uint64_t)id.value, name, format __VA_OPT__(, ) __VA_ARGS__)
96+
#define O2_SIGNPOST_END_MAC(log, id, name, format, ...) os_signpost_interval_end(private_o2_log_##log->os_log, (uint64_t)id.value, name, format __VA_OPT__(, ) __VA_ARGS__)
9897
#define O2_SIGNPOST_ENABLED_MAC(log) os_signpost_enabled(private_o2_log_##log->os_log)
9998
#else
10099
// These are no-ops on linux.

Generators/include/Generators/GeneratorHybrid.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ class GeneratorHybrid : public Generator
6666
void setNEvents(int n) { mNEvents = n; }
6767

6868
Bool_t parseJSON(const std::string& path);
69+
Bool_t confSetter(const auto& gen);
6970
template <typename T>
7071
std::string jsonValueToString(const T& value);
7172

@@ -98,6 +99,10 @@ class GeneratorHybrid : public Generator
9899
int mEventCounter = 0;
99100
int mTasksStarted = 0;
100101

102+
// Cocktail mode
103+
bool mCocktailMode = false;
104+
std::vector<std::vector<int>> mGroups;
105+
101106
// Create a task arena with a specified number of threads
102107
std::thread mTBBTaskPoolRunner;
103108
tbb::concurrent_bounded_queue<int> mInputTaskQueue;

0 commit comments

Comments
 (0)