Skip to content

Commit dce1b7e

Browse files
[PWGLF] Add option to study V0s from TPC-only and deep secondary tracks (#15927)
Co-authored-by: ALICE Action Bot <[email protected]>
1 parent c8524df commit dce1b7e

1 file changed

Lines changed: 97 additions & 0 deletions

File tree

PWGLF/Tasks/Strangeness/derivedlambdakzeroanalysis.cxx

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,10 @@ struct derivedlambdakzeroanalysis {
218218
Configurable<bool> skipTPConly{"skipTPConly", false, "skip V0s comprised of at least one TPC only prong"};
219219
Configurable<bool> requirePosITSonly{"requirePosITSonly", false, "require that positive track is ITSonly (overrides TPC quality)"};
220220
Configurable<bool> requireNegITSonly{"requireNegITSonly", false, "require that negative track is ITSonly (overrides TPC quality)"};
221+
Configurable<bool> requirePosTPConly{"requirePosTPConly", false, "require that positive track is TPConly (overrides ITS-TOF quality)"};
222+
Configurable<bool> requireNegTPConly{"requireNegTPConly", false, "require that negative track is TPConly (overrides ITS-TOF quality)"};
223+
Configurable<bool> requirePosDeepSec{"requirePosDeepSec", false, "require that positive track is a deep secondary (overrides ITS quality)"};
224+
Configurable<bool> requireNegDeepSec{"requireNegDeepSec", false, "require that negative track is a deep secondary (overrides ITS quality)"};
221225
Configurable<bool> rejectPosITSafterburner{"rejectPosITSafterburner", false, "reject positive track formed out of afterburner ITS tracks"};
222226
Configurable<bool> rejectNegITSafterburner{"rejectNegITSafterburner", false, "reject negative track formed out of afterburner ITS tracks"};
223227
Configurable<bool> requirePosITSafterburnerOnly{"requirePosITSafterburnerOnly", false, "require positive track formed out of afterburner ITS tracks"};
@@ -418,6 +422,10 @@ struct derivedlambdakzeroanalysis {
418422
selNegGoodITSTrack, // at least min # ITS clusters
419423
selPosItsOnly,
420424
selNegItsOnly,
425+
selPosTPCOnly,
426+
selNegTPCOnly,
427+
selPosDeepSec,
428+
selNegDeepSec,
421429
selPosNotTPCOnly,
422430
selNegNotTPCOnly,
423431
selConsiderK0Short, // for mc tagging
@@ -530,6 +538,31 @@ struct derivedlambdakzeroanalysis {
530538
if (v0Selections.requirePosITSonly) {
531539
BITSET(maskTrackProperties, selPosItsOnly);
532540
BITSET(maskTrackProperties, selPosGoodITSTrack);
541+
} else if (v0Selections.requirePosTPConly) {
542+
BITSET(maskTrackProperties, selPosTPCOnly);
543+
BITSET(maskTrackProperties, selPosGoodTPCTrack);
544+
} else if (v0Selections.requirePosDeepSec) {
545+
BITSET(maskTrackProperties, selPosDeepSec);
546+
BITSET(maskTrackProperties, selPosGoodTPCTrack);
547+
// TPC signal is available: ask for positive track PID
548+
if (v0Selections.tpcPidNsigmaCut < 1e+5) { // safeguard for no cut
549+
BITSET(maskK0ShortSpecific, selTPCPIDPositivePion);
550+
BITSET(maskLambdaSpecific, selTPCPIDPositiveProton);
551+
BITSET(maskAntiLambdaSpecific, selTPCPIDPositivePion);
552+
}
553+
// TOF PID
554+
if (v0Selections.requireAtLeastOneHasTOF || v0Selections.requirePosHasTOF || v0Selections.tofPidNsigmaCutK0Pi < 1e+5 || v0Selections.maxDeltaTimePion < 1e+6) { // safeguard for no cut
555+
BITSET(maskK0ShortSpecific, selTOFNSigmaPositivePionK0Short);
556+
BITSET(maskK0ShortSpecific, selTOFDeltaTPositivePionK0Short);
557+
}
558+
if (v0Selections.requireAtLeastOneHasTOF || v0Selections.requirePosHasTOF || v0Selections.tofPidNsigmaCutLaPr < 1e+5 || v0Selections.maxDeltaTimeProton < 1e+6) { // safeguard for no cut
559+
BITSET(maskLambdaSpecific, selTOFNSigmaPositiveProtonLambda);
560+
BITSET(maskLambdaSpecific, selTOFDeltaTPositiveProtonLambda);
561+
}
562+
if (v0Selections.requireAtLeastOneHasTOF || v0Selections.requirePosHasTOF || v0Selections.tofPidNsigmaCutLaPi < 1e+5 || v0Selections.maxDeltaTimePion < 1e+6) { // safeguard for no cut
563+
BITSET(maskAntiLambdaSpecific, selTOFNSigmaPositivePionLambda);
564+
BITSET(maskAntiLambdaSpecific, selTOFDeltaTPositivePionLambda);
565+
}
533566
} else {
534567
BITSET(maskTrackProperties, selPosGoodTPCTrack);
535568
BITSET(maskTrackProperties, selPosGoodITSTrack);
@@ -556,6 +589,31 @@ struct derivedlambdakzeroanalysis {
556589
if (v0Selections.requireNegITSonly) {
557590
BITSET(maskTrackProperties, selNegItsOnly);
558591
BITSET(maskTrackProperties, selNegGoodITSTrack);
592+
} else if (v0Selections.requireNegTPConly) {
593+
BITSET(maskTrackProperties, selNegTPCOnly);
594+
BITSET(maskTrackProperties, selNegGoodTPCTrack);
595+
} else if (v0Selections.requireNegDeepSec) {
596+
BITSET(maskTrackProperties, selNegDeepSec);
597+
BITSET(maskTrackProperties, selNegGoodTPCTrack);
598+
// TPC signal is available: ask for negative track PID
599+
if (v0Selections.tpcPidNsigmaCut < 1e+5) { // safeguard for no cut
600+
BITSET(maskK0ShortSpecific, selTPCPIDNegativePion);
601+
BITSET(maskLambdaSpecific, selTPCPIDNegativePion);
602+
BITSET(maskAntiLambdaSpecific, selTPCPIDNegativeProton);
603+
}
604+
// TOF PID
605+
if (v0Selections.requireAtLeastOneHasTOF || v0Selections.requireNegHasTOF || v0Selections.tofPidNsigmaCutK0Pi < 1e+5 || v0Selections.maxDeltaTimePion < 1e+6) { // safeguard for no cut
606+
BITSET(maskK0ShortSpecific, selTOFNSigmaNegativePionK0Short);
607+
BITSET(maskK0ShortSpecific, selTOFDeltaTNegativePionK0Short);
608+
}
609+
if (v0Selections.requireAtLeastOneHasTOF || v0Selections.requireNegHasTOF || v0Selections.tofPidNsigmaCutLaPi < 1e+5 || v0Selections.maxDeltaTimePion < 1e+6) { // safeguard for no cut
610+
BITSET(maskLambdaSpecific, selTOFNSigmaNegativePionLambda);
611+
BITSET(maskLambdaSpecific, selTOFDeltaTNegativePionLambda);
612+
}
613+
if (v0Selections.requireAtLeastOneHasTOF || v0Selections.requireNegHasTOF || v0Selections.tofPidNsigmaCutLaPr < 1e+5 || v0Selections.maxDeltaTimeProton < 1e+6) { // safeguard for no cut
614+
BITSET(maskAntiLambdaSpecific, selTOFNSigmaNegativeProtonLambda);
615+
BITSET(maskAntiLambdaSpecific, selTOFDeltaTNegativeProtonLambda);
616+
}
559617
} else {
560618
BITSET(maskTrackProperties, selNegGoodTPCTrack);
561619
BITSET(maskTrackProperties, selNegGoodITSTrack);
@@ -775,6 +833,10 @@ struct derivedlambdakzeroanalysis {
775833
hSelectionV0s->GetXaxis()->SetBinLabel(selNegGoodITSTrack + 2, "Neg. good ITS track");
776834
hSelectionV0s->GetXaxis()->SetBinLabel(selPosItsOnly + 2, "Pos. ITS-only");
777835
hSelectionV0s->GetXaxis()->SetBinLabel(selNegItsOnly + 2, "Neg. ITS-only");
836+
hSelectionV0s->GetXaxis()->SetBinLabel(selPosTPCOnly + 2, "Pos. TPC-only");
837+
hSelectionV0s->GetXaxis()->SetBinLabel(selNegTPCOnly + 2, "Neg. TPC-only");
838+
hSelectionV0s->GetXaxis()->SetBinLabel(selPosDeepSec + 2, "Pos. deep sec.");
839+
hSelectionV0s->GetXaxis()->SetBinLabel(selNegDeepSec + 2, "Neg. deep sec.");
778840
hSelectionV0s->GetXaxis()->SetBinLabel(selPosNotTPCOnly + 2, "Pos. not TPC-only");
779841
hSelectionV0s->GetXaxis()->SetBinLabel(selNegNotTPCOnly + 2, "Neg. not TPC-only");
780842
hSelectionV0s->GetXaxis()->SetBinLabel(selConsiderK0Short + 2, "True K^{0}_{S}");
@@ -1488,6 +1550,41 @@ struct derivedlambdakzeroanalysis {
14881550
BITSET(bitMap, selPosNotTPCOnly);
14891551
if (negTrackExtra.detectorMap() != o2::aod::track::TPC)
14901552
BITSET(bitMap, selNegNotTPCOnly);
1553+
if (!verifyMask(posTrackExtra.detectorMap(), (o2::aod::track::ITS | o2::aod::track::TPC | o2::aod::track::TRD | o2::aod::track::TOF)) &&
1554+
!verifyMask(posTrackExtra.detectorMap(), (o2::aod::track::ITS | o2::aod::track::TPC | o2::aod::track::TOF)) &&
1555+
!verifyMask(posTrackExtra.detectorMap(), (o2::aod::track::ITS | o2::aod::track::TPC | o2::aod::track::TRD)) &&
1556+
!verifyMask(posTrackExtra.detectorMap(), (o2::aod::track::ITS | o2::aod::track::TPC)) &&
1557+
!verifyMask(posTrackExtra.detectorMap(), (o2::aod::track::ITS)) &&
1558+
!verifyMask(negTrackExtra.detectorMap(), (o2::aod::track::TPC | o2::aod::track::TRD | o2::aod::track::TOF)) &&
1559+
!verifyMask(negTrackExtra.detectorMap(), (o2::aod::track::TPC | o2::aod::track::TOF)) &&
1560+
!verifyMask(negTrackExtra.detectorMap(), (o2::aod::track::TPC | o2::aod::track::TRD)) &&
1561+
verifyMask(posTrackExtra.detectorMap(), (o2::aod::track::TPC)))
1562+
BITSET(bitMap, selPosTPCOnly);
1563+
if (!verifyMask(negTrackExtra.detectorMap(), (o2::aod::track::ITS | o2::aod::track::TPC | o2::aod::track::TRD | o2::aod::track::TOF)) &&
1564+
!verifyMask(negTrackExtra.detectorMap(), (o2::aod::track::ITS | o2::aod::track::TPC | o2::aod::track::TOF)) &&
1565+
!verifyMask(negTrackExtra.detectorMap(), (o2::aod::track::ITS | o2::aod::track::TPC | o2::aod::track::TRD)) &&
1566+
!verifyMask(negTrackExtra.detectorMap(), (o2::aod::track::ITS | o2::aod::track::TPC)) &&
1567+
!verifyMask(negTrackExtra.detectorMap(), (o2::aod::track::ITS)) &&
1568+
!verifyMask(negTrackExtra.detectorMap(), (o2::aod::track::TPC | o2::aod::track::TRD | o2::aod::track::TOF)) &&
1569+
!verifyMask(negTrackExtra.detectorMap(), (o2::aod::track::TPC | o2::aod::track::TOF)) &&
1570+
!verifyMask(negTrackExtra.detectorMap(), (o2::aod::track::TPC | o2::aod::track::TRD)) &&
1571+
verifyMask(negTrackExtra.detectorMap(), (o2::aod::track::TPC)))
1572+
BITSET(bitMap, selNegTPCOnly);
1573+
// deep secondary : TPC-TRD, TPC-TOF, TPC-TRD-TOF
1574+
if (!verifyMask(posTrackExtra.detectorMap(), (o2::aod::track::ITS | o2::aod::track::TPC | o2::aod::track::TRD | o2::aod::track::TOF)) &&
1575+
!verifyMask(posTrackExtra.detectorMap(), (o2::aod::track::ITS | o2::aod::track::TPC | o2::aod::track::TOF)) &&
1576+
!verifyMask(posTrackExtra.detectorMap(), (o2::aod::track::ITS | o2::aod::track::TPC | o2::aod::track::TRD)) &&
1577+
!verifyMask(posTrackExtra.detectorMap(), (o2::aod::track::ITS | o2::aod::track::TPC)) &&
1578+
!verifyMask(posTrackExtra.detectorMap(), (o2::aod::track::ITS)) &&
1579+
verifyMask(posTrackExtra.detectorMap(), (o2::aod::track::TPC)))
1580+
BITSET(bitMap, selPosDeepSec);
1581+
if (!verifyMask(negTrackExtra.detectorMap(), (o2::aod::track::ITS | o2::aod::track::TPC | o2::aod::track::TRD | o2::aod::track::TOF)) &&
1582+
!verifyMask(negTrackExtra.detectorMap(), (o2::aod::track::ITS | o2::aod::track::TPC | o2::aod::track::TOF)) &&
1583+
!verifyMask(negTrackExtra.detectorMap(), (o2::aod::track::ITS | o2::aod::track::TPC | o2::aod::track::TRD)) &&
1584+
!verifyMask(negTrackExtra.detectorMap(), (o2::aod::track::ITS | o2::aod::track::TPC)) &&
1585+
!verifyMask(negTrackExtra.detectorMap(), (o2::aod::track::ITS)) &&
1586+
verifyMask(negTrackExtra.detectorMap(), (o2::aod::track::TPC)))
1587+
BITSET(bitMap, selNegDeepSec);
14911588

14921589
// proper lifetime
14931590
if (v0.distovertotmom(collision.posX(), collision.posY(), collision.posZ()) * o2::constants::physics::MassLambda0 < v0Selections.lifetimecut->get("lifetimecutLambda"))

0 commit comments

Comments
 (0)