Skip to content

Commit 6aaa326

Browse files
committed
Add possibility to skip trackQA variables and reject with ML
1 parent 3b43850 commit 6aaa326

File tree

1 file changed

+65
-35
lines changed

1 file changed

+65
-35
lines changed

DPG/Tasks/AOTTrack/derivedDataCreatorD0Calibration.cxx

Lines changed: 65 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -168,12 +168,14 @@ struct DerivedDataCreatorD0Calibration {
168168
selectorKaon = selectorPion;
169169
}
170170

171-
void process(CollisionsWEvSel const& collisions,
172-
aod::TrackAssoc const& trackIndices,
173-
TracksWCovExtraPid const&,
174-
aod::BCsWithTimestamps const&,
175-
TrackMeanOccs const&,
176-
aod::TracksQAVersion const&)
171+
// main function
172+
template<bool withTrackQa, typename TTrackQa>
173+
void runDataCreation(CollisionsWEvSel const& collisions,
174+
aod::TrackAssoc const& trackIndices,
175+
TracksWCovExtraPid const&,
176+
aod::BCsWithTimestamps const&,
177+
TrackMeanOccs const&,
178+
TTrackQa const&)
177179
{
178180
std::map<int, int> selectedCollisions; // map with indices of selected collisions (key: original AOD Collision table index, value: D0 collision index)
179181
std::map<int, int> selectedTracks; // map with indices of selected tracks (key: original AOD Track table index, value: D0 daughter track index)
@@ -419,7 +421,9 @@ struct DerivedDataCreatorD0Calibration {
419421
// apply BDT models
420422
if (cfgMl.apply) {
421423
std::vector<float> featuresCandD0 = {dcaPos.getY(), dcaNeg.getY(), chi2PCA, cosPaD0, cosPaXYD0, decLenXYD0, decLenD0, dcaPos.getY() * dcaNeg.getY(), aod::pid_tpc_tof_utils::combineNSigma<false>(trackPos.tpcNSigmaPi(), trackPos.tofNSigmaPi()), aod::pid_tpc_tof_utils::combineNSigma<false>(trackNeg.tpcNSigmaKa(), trackNeg.tofNSigmaKa()), trackPos.tpcNSigmaPi(), trackPos.tpcNSigmaKa(), aod::pid_tpc_tof_utils::combineNSigma<false>(trackPos.tpcNSigmaKa(), trackPos.tofNSigmaKa()), trackNeg.tpcNSigmaPi(), trackNeg.tpcNSigmaKa(), aod::pid_tpc_tof_utils::combineNSigma<false>(trackNeg.tpcNSigmaPi(), trackNeg.tofNSigmaPi())};
422-
mlResponse.isSelectedMl(featuresCandD0, ptD0, bdtScoresD0);
424+
if(!mlResponse.isSelectedMl(featuresCandD0, ptD0, bdtScoresD0)) {
425+
massHypo -= D0MassHypo::D0;
426+
}
423427
}
424428
}
425429
}
@@ -432,7 +436,9 @@ struct DerivedDataCreatorD0Calibration {
432436
// apply BDT models
433437
if (cfgMl.apply) {
434438
std::vector<float> featuresCandD0bar = {dcaPos.getY(), dcaNeg.getY(), chi2PCA, cosPaD0, cosPaXYD0, decLenXYD0, decLenD0, dcaPos.getY() * dcaNeg.getY(), aod::pid_tpc_tof_utils::combineNSigma<false>(trackNeg.tpcNSigmaPi(), trackNeg.tofNSigmaPi()), aod::pid_tpc_tof_utils::combineNSigma<false>(trackPos.tpcNSigmaKa(), trackPos.tofNSigmaKa()), trackNeg.tpcNSigmaPi(), trackNeg.tpcNSigmaKa(), aod::pid_tpc_tof_utils::combineNSigma<false>(trackNeg.tpcNSigmaKa(), trackNeg.tofNSigmaKa()), trackPos.tpcNSigmaPi(), trackPos.tpcNSigmaKa(), aod::pid_tpc_tof_utils::combineNSigma<false>(trackPos.tpcNSigmaPi(), trackPos.tofNSigmaPi())};
435-
mlResponse.isSelectedMl(featuresCandD0bar, ptD0, bdtScoresD0bar);
439+
if(!mlResponse.isSelectedMl(featuresCandD0bar, ptD0, bdtScoresD0bar)) {
440+
massHypo -= D0MassHypo::D0Bar;
441+
}
436442
}
437443
}
438444
}
@@ -515,33 +521,35 @@ struct DerivedDataCreatorD0Calibration {
515521
int8_t deltaRefGloParamQ2Pt{0};
516522
int8_t deltaTOFdX{0};
517523
int8_t deltaTOFdZ{0};
518-
if (trackPos.has_trackQA()) {
519-
auto trackQA = trackPos.trackQA_as<aod::TracksQAVersion>(); // obtain track QA
520-
tpcTime0 = trackQA.tpcTime0();
521-
tpcdEdxNorm = trackQA.tpcdEdxNorm();
522-
tpcDcaR = trackQA.tpcdcaR();
523-
tpcDcaZ = trackQA.tpcdcaZ();
524-
tpcClusterByteMask = trackQA.tpcClusterByteMask();
525-
tpcdEdxMax0R = trackQA.tpcdEdxMax0R();
526-
tpcdEdxMax1R = trackQA.tpcdEdxMax1R();
527-
tpcdEdxMax2R = trackQA.tpcdEdxMax2R();
528-
tpcdEdxMax3R = trackQA.tpcdEdxMax3R();
529-
tpcdEdxTot0R = trackQA.tpcdEdxTot0R();
530-
tpcdEdxTot1R = trackQA.tpcdEdxTot1R();
531-
tpcdEdxTot2R = trackQA.tpcdEdxTot2R();
532-
tpcdEdxTot3R = trackQA.tpcdEdxTot3R();
533-
deltaRefContParamY = trackQA.deltaRefContParamY();
534-
deltaRefITSParamZ = trackQA.deltaRefITSParamZ();
535-
deltaRefContParamSnp = trackQA.deltaRefContParamSnp();
536-
deltaRefContParamTgl = trackQA.deltaRefContParamTgl();
537-
deltaRefContParamQ2Pt = trackQA.deltaRefContParamQ2Pt();
538-
deltaRefGloParamY = trackQA.deltaRefGloParamY();
539-
deltaRefGloParamZ = trackQA.deltaRefGloParamZ();
540-
deltaRefGloParamSnp = trackQA.deltaRefGloParamSnp();
541-
deltaRefGloParamTgl = trackQA.deltaRefGloParamTgl();
542-
deltaRefGloParamQ2Pt = trackQA.deltaRefGloParamQ2Pt();
543-
deltaTOFdX = trackQA.deltaTOFdX();
544-
deltaTOFdZ = trackQA.deltaTOFdZ();
524+
if constexpr (withTrackQa) {
525+
if (trackPos.has_trackQA()) {
526+
auto trackQA = trackPos.template trackQA_as<TTrackQa>(); // obtain track QA
527+
tpcTime0 = trackQA.tpcTime0();
528+
tpcdEdxNorm = trackQA.tpcdEdxNorm();
529+
tpcDcaR = trackQA.tpcdcaR();
530+
tpcDcaZ = trackQA.tpcdcaZ();
531+
tpcClusterByteMask = trackQA.tpcClusterByteMask();
532+
tpcdEdxMax0R = trackQA.tpcdEdxMax0R();
533+
tpcdEdxMax1R = trackQA.tpcdEdxMax1R();
534+
tpcdEdxMax2R = trackQA.tpcdEdxMax2R();
535+
tpcdEdxMax3R = trackQA.tpcdEdxMax3R();
536+
tpcdEdxTot0R = trackQA.tpcdEdxTot0R();
537+
tpcdEdxTot1R = trackQA.tpcdEdxTot1R();
538+
tpcdEdxTot2R = trackQA.tpcdEdxTot2R();
539+
tpcdEdxTot3R = trackQA.tpcdEdxTot3R();
540+
deltaRefContParamY = trackQA.deltaRefContParamY();
541+
deltaRefITSParamZ = trackQA.deltaRefITSParamZ();
542+
deltaRefContParamSnp = trackQA.deltaRefContParamSnp();
543+
deltaRefContParamTgl = trackQA.deltaRefContParamTgl();
544+
deltaRefContParamQ2Pt = trackQA.deltaRefContParamQ2Pt();
545+
deltaRefGloParamY = trackQA.deltaRefGloParamY();
546+
deltaRefGloParamZ = trackQA.deltaRefGloParamZ();
547+
deltaRefGloParamSnp = trackQA.deltaRefGloParamSnp();
548+
deltaRefGloParamTgl = trackQA.deltaRefGloParamTgl();
549+
deltaRefGloParamQ2Pt = trackQA.deltaRefGloParamQ2Pt();
550+
deltaTOFdX = trackQA.deltaTOFdX();
551+
deltaTOFdZ = trackQA.deltaTOFdZ();
552+
}
545553
}
546554

547555
trackTable(selectedCollisions[collision.globalIndex()], // stored at PV
@@ -821,6 +829,28 @@ struct DerivedDataCreatorD0Calibration {
821829
} // end loop over positive tracks
822830
} // end loop over collisions tracks
823831
}
832+
833+
// process functions
834+
void processWithTrackQa(CollisionsWEvSel const& collisions,
835+
aod::TrackAssoc const& trackIndices,
836+
TracksWCovExtraPid const& tracks,
837+
aod::BCsWithTimestamps const& bcs,
838+
TrackMeanOccs const& occ,
839+
aod::TracksQAVersion const& trackQa)
840+
{
841+
runDataCreation<true>(collisions, trackIndices, tracks, bcs, occ, trackQa);
842+
}
843+
PROCESS_SWITCH(DerivedDataCreatorD0Calibration, processWithTrackQa, "Process with trackQA enabled", false);
844+
845+
void processNoTrackQa(CollisionsWEvSel const& collisions,
846+
aod::TrackAssoc const& trackIndices,
847+
TracksWCovExtraPid const& tracks,
848+
aod::BCsWithTimestamps const& bcs,
849+
TrackMeanOccs const& occ)
850+
{
851+
runDataCreation<false>(collisions, trackIndices, tracks, bcs, occ, nullptr);
852+
}
853+
PROCESS_SWITCH(DerivedDataCreatorD0Calibration, processNoTrackQa, "Process without trackQA enabled", true);
824854
};
825855

826856
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)

0 commit comments

Comments
 (0)