Skip to content

Commit ca133f8

Browse files
mcoquet642alcaliva
authored andcommitted
fix conflicts
1 parent 2e7ef20 commit ca133f8

2 files changed

Lines changed: 54 additions & 22 deletions

File tree

Detectors/AOD/include/AODProducerWorkflow/AODProducerWorkflowSpec.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,7 @@ class AODProducerWorkflowDPL : public Task
240240
bool mThinTracks{false};
241241
bool mPropTracks{false};
242242
bool mPropMuons{false};
243+
bool mStoreAllMFTCov{false};
243244
float mTrackQCFraction{0.00};
244245
int64_t mTrackQCNTrCut{4};
245246
float mSqrtS{13860.};
@@ -518,8 +519,8 @@ class AODProducerWorkflowDPL : public Task
518519
template <typename TracksQACursorType>
519520
void addToTracksQATable(TracksQACursorType& tracksQACursor, TrackQA& trackQAInfoHolder);
520521

521-
template <typename mftTracksCursorType, typename AmbigMFTTracksCursorType>
522-
void addToMFTTracksTable(mftTracksCursorType& mftTracksCursor, AmbigMFTTracksCursorType& ambigMFTTracksCursor,
522+
template <typename mftTracksCursorType, typename mftTracksCovCursorType, typename AmbigMFTTracksCursorType>
523+
void addToMFTTracksTable(mftTracksCursorType& mftTracksCursor, mftTracksCovCursorType& mftTracksCovCursor, AmbigMFTTracksCursorType& ambigMFTTracksCursor,
523524
GIndex trackID, const o2::globaltracking::RecoContainer& data, int collisionID,
524525
std::uint64_t collisionBC, const std::map<uint64_t, int>& bcsMap);
525526

Detectors/AOD/src/AODProducerWorkflowSpec.cxx

Lines changed: 51 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -386,8 +386,8 @@ void AODProducerWorkflowDPL::addToTracksQATable(TracksQACursorType& tracksQACurs
386386
trackQAInfoHolder.dTofdZ);
387387
}
388388

389-
template <typename mftTracksCursorType, typename AmbigMFTTracksCursorType>
390-
void AODProducerWorkflowDPL::addToMFTTracksTable(mftTracksCursorType& mftTracksCursor, AmbigMFTTracksCursorType& ambigMFTTracksCursor,
389+
template <typename mftTracksCursorType, typename mftTracksCovCursorType, typename AmbigMFTTracksCursorType>
390+
void AODProducerWorkflowDPL::addToMFTTracksTable(mftTracksCursorType& mftTracksCursor, mftTracksCovCursorType& mftTracksCovCursor, AmbigMFTTracksCursorType& ambigMFTTracksCursor,
391391
GIndex trackID, const o2::globaltracking::RecoContainer& data, int collisionID,
392392
std::uint64_t collisionBC, const std::map<uint64_t, int>& bcsMap)
393393
{
@@ -422,6 +422,30 @@ void AODProducerWorkflowDPL::addToMFTTracksTable(mftTracksCursorType& mftTracksC
422422
truncateFloatFraction(track.getTrackChi2(), mTrackChi2),
423423
truncateFloatFraction(trackTime, mTrackTime),
424424
truncateFloatFraction(trackTimeRes, mTrackTimeError));
425+
if (mStoreAllMFTCov) {
426+
float sX = TMath::Sqrt(track.getSigma2X());
427+
float sY = TMath::Sqrt(track.getSigma2Y());
428+
float sPhi = TMath::Sqrt(track.getSigma2Phi());
429+
float sTgl = TMath::Sqrt(track.getSigma2Tanl());
430+
float sQ2Pt = TMath::Sqrt(track.getSigma2InvQPt());
431+
432+
mftTracksCovCursor(mTableTrMFTID,
433+
truncateFloatFraction(sX, mTrackCovDiag),
434+
truncateFloatFraction(sY, mTrackCovDiag),
435+
truncateFloatFraction(sPhi, mTrackCovDiag),
436+
truncateFloatFraction(sTgl, mTrackCovDiag),
437+
truncateFloatFraction(sQ2Pt, mTrackCovDiag),
438+
(Char_t)(128. * track.getCovariances()(0, 1) / (sX * sY)),
439+
(Char_t)(128. * track.getCovariances()(0, 2) / (sPhi * sX)),
440+
(Char_t)(128. * track.getCovariances()(1, 2) / (sPhi * sY)),
441+
(Char_t)(128. * track.getCovariances()(0, 3) / (sTgl * sX)),
442+
(Char_t)(128. * track.getCovariances()(1, 3) / (sTgl * sY)),
443+
(Char_t)(128. * track.getCovariances()(2, 3) / (sTgl * sPhi)),
444+
(Char_t)(128. * track.getCovariances()(0, 4) / (sQ2Pt * sX)),
445+
(Char_t)(128. * track.getCovariances()(1, 4) / (sQ2Pt * sY)),
446+
(Char_t)(128. * track.getCovariances()(2, 4) / (sQ2Pt * sPhi)),
447+
(Char_t)(128. * track.getCovariances()(3, 4) / (sQ2Pt * sTgl)));
448+
}
425449
if (needBCSlice) {
426450
ambigMFTTracksCursor(mTableTrMFTID, bcSlice);
427451
}
@@ -458,10 +482,13 @@ void AODProducerWorkflowDPL::fillTrackTablesPerCollision(int collisionID,
458482
int nToReserve = end - start; // + last index for a given table
459483
if (src == GIndex::Source::MFT) {
460484
mftTracksCursor.reserve(nToReserve + mftTracksCursor.lastIndex());
485+
if (mStoreAllMFTCov) {
486+
mftTracksCovCursor.reserve(nToReserve + mftTracksCovCursor.lastIndex());
487+
}
461488
} else if (src == GIndex::Source::MCH || src == GIndex::Source::MFTMCH || src == GIndex::Source::MCHMID) {
462489
fwdTracksCursor.reserve(nToReserve + fwdTracksCursor.lastIndex());
463490
fwdTracksCovCursor.reserve(nToReserve + fwdTracksCovCursor.lastIndex());
464-
if (src == GIndex::Source::MFTMCH) {
491+
if (!mStoreAllMFTCov && src == GIndex::Source::MFTMCH) {
465492
mftTracksCovCursor.reserve(nToReserve + mftTracksCovCursor.lastIndex());
466493
}
467494
} else {
@@ -476,7 +503,7 @@ void AODProducerWorkflowDPL::fillTrackTablesPerCollision(int collisionID,
476503
if (trackIndex.isAmbiguous() && mGIDToTableMFTID.find(trackIndex) != mGIDToTableMFTID.end()) { // was it already stored ?
477504
continue;
478505
}
479-
addToMFTTracksTable(mftTracksCursor, ambigMFTTracksCursor, trackIndex, data, collisionID, collisionBC, bcsMap);
506+
addToMFTTracksTable(mftTracksCursor, mftTracksCovCursor, ambigMFTTracksCursor, trackIndex, data, collisionID, collisionBC, bcsMap);
480507
mGIDToTableMFTID.emplace(trackIndex, mTableTrMFTID);
481508
mTableTrMFTID++;
482509
} else if (src == GIndex::Source::MCH || src == GIndex::Source::MFTMCH || src == GIndex::Source::MCHMID) { // FwdTracks tracks are treated separately since they are stored in a different table
@@ -793,22 +820,24 @@ void AODProducerWorkflowDPL::addToFwdTracksTable(FwdTracksCursorType& fwdTracksC
793820
float sX = TMath::Sqrt(mfttrack.getSigma2X()), sY = TMath::Sqrt(mfttrack.getSigma2Y()), sPhi = TMath::Sqrt(mfttrack.getSigma2Phi()),
794821
sTgl = TMath::Sqrt(mfttrack.getSigma2Tanl()), sQ2Pt = TMath::Sqrt(mfttrack.getSigma2InvQPt());
795822

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)));
823+
if (!mStoreAllMFTCov) {
824+
mftTracksCovCursor(fwdInfo.matchmfttrackid,
825+
truncateFloatFraction(sX, mTrackCovDiag),
826+
truncateFloatFraction(sY, mTrackCovDiag),
827+
truncateFloatFraction(sPhi, mTrackCovDiag),
828+
truncateFloatFraction(sTgl, mTrackCovDiag),
829+
truncateFloatFraction(sQ2Pt, mTrackCovDiag),
830+
(Char_t)(128. * mfttrack.getCovariances()(0, 1) / (sX * sY)),
831+
(Char_t)(128. * mfttrack.getCovariances()(0, 2) / (sPhi * sX)),
832+
(Char_t)(128. * mfttrack.getCovariances()(1, 2) / (sPhi * sY)),
833+
(Char_t)(128. * mfttrack.getCovariances()(0, 3) / (sTgl * sX)),
834+
(Char_t)(128. * mfttrack.getCovariances()(1, 3) / (sTgl * sY)),
835+
(Char_t)(128. * mfttrack.getCovariances()(2, 3) / (sTgl * sPhi)),
836+
(Char_t)(128. * mfttrack.getCovariances()(0, 4) / (sQ2Pt * sX)),
837+
(Char_t)(128. * mfttrack.getCovariances()(1, 4) / (sQ2Pt * sY)),
838+
(Char_t)(128. * mfttrack.getCovariances()(2, 4) / (sQ2Pt * sPhi)),
839+
(Char_t)(128. * mfttrack.getCovariances()(3, 4) / (sQ2Pt * sTgl)));
840+
}
812841
}
813842

814843
std::uint64_t bcOfTimeRef;
@@ -1700,6 +1729,7 @@ void AODProducerWorkflowDPL::init(InitContext& ic)
17001729
mThinTracks = ic.options().get<bool>("thin-tracks");
17011730
mPropTracks = ic.options().get<bool>("propagate-tracks");
17021731
mPropMuons = ic.options().get<bool>("propagate-muons");
1732+
mStoreAllMFTCov = ic.options().get<bool>("store-all-mft-cov");
17031733
if (auto s = ic.options().get<std::string>("with-streamers"); !s.empty()) {
17041734
mStreamerMask = static_cast<AODProducerStreamerMask>(std::stoul(s, nullptr, 2));
17051735
if (O2_ENUM_ANY_BIT(mStreamerMask)) {
@@ -3228,6 +3258,7 @@ DataProcessorSpec getAODProducerWorkflowSpec(GID::mask_t src, bool enableSV, boo
32283258
ConfigParamSpec{"propagate-tracks", VariantType::Bool, false, {"Propagate tracks (not used for secondary vertices) to IP"}},
32293259
ConfigParamSpec{"hepmc-update", VariantType::String, "always", {"When to update HepMC Aux tables: always - force update, never - never update, all - if all keys are present, any - when any key is present (not valid yet)"}},
32303260
ConfigParamSpec{"propagate-muons", VariantType::Bool, false, {"Propagate muons to IP"}},
3261+
ConfigParamSpec{"store-all-mft-cov", VariantType::Bool, false, {"Store covariance matrices for all MFT tracks"}},
32313262
ConfigParamSpec{"thin-tracks", VariantType::Bool, false, {"Produce thinned track tables"}},
32323263
ConfigParamSpec{"trackqc-fraction", VariantType::Float, float(0.1), {"Fraction of tracks to QC"}},
32333264
ConfigParamSpec{"trackqc-NTrCut", VariantType::Int64, 4L, {"Minimal length of the track - in amount of tracklets"}},

0 commit comments

Comments
 (0)