Skip to content

Commit 831132d

Browse files
committed
extend dev to other process functions
1 parent 5a241aa commit 831132d

File tree

1 file changed

+109
-4
lines changed

1 file changed

+109
-4
lines changed

DPG/Tasks/TPC/tpcSkimsTableCreator.cxx

Lines changed: 109 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -533,7 +533,8 @@ struct TreeWriterTpcV0 {
533533

534534
Preslice<Trks> perCollisionTracks = aod::track::collisionId;
535535
Preslice<V0sWithID> perCollisionV0s = aod::v0data::collisionId;
536-
void processWithdEdxTrQA(Colls const& collisions, Trks const& myTracks, V0sWithID const& myV0s, aod::BCsWithTimestamps const&, aod::TracksQAVersion const& tracksQA)
536+
Preslice<CascsWithID> perCollisionCascs = aod::cascdata::collisionId;
537+
void processWithdEdxTrQA(Colls const& collisions, Trks const& myTracks, V0sWithID const& myV0s, CascsWithID const& myCascs, aod::BCsWithTimestamps const&, aod::TracksQAVersion const& tracksQA)
537538
{
538539
std::vector<int64_t> labelTrack2TrackQA;
539540
labelTrack2TrackQA.clear();
@@ -546,6 +547,7 @@ struct TreeWriterTpcV0 {
546547
for (const auto& collision : collisions) {
547548
auto tracks = myTracks.sliceBy(perCollisionTracks, collision.globalIndex());
548549
auto v0s = myV0s.sliceBy(perCollisionV0s, collision.globalIndex());
550+
auto cascs = myCascs.sliceBy(perCollisionCascs, collision.globalIndex());
549551
/// Check event slection
550552
if (!isEventSelected(collision, tracks)) {
551553
continue;
@@ -621,12 +623,37 @@ struct TreeWriterTpcV0 {
621623
}
622624
}
623625
}
626+
627+
/// Loop over cascade candidates
628+
for (const auto& casc : cascs) {
629+
auto bachTrack = casc.bachelor_as<Trks>();
630+
if (casc.cascaddid() == kUndef) {
631+
continue;
632+
}
633+
634+
aod::TracksQA bachTrackQA;
635+
bool existBachTrkQA;
636+
if (labelTrack2TrackQA[bachTrack.globalIndex()] != -1) {
637+
bachTrackQA = tracksQA.iteratorAt(labelTrack2TrackQA[bachTrack.globalIndex()]);
638+
existBachTrkQA = true;
639+
} else {
640+
bachTrackQA = tracksQA.iteratorAt(0);
641+
existBachTrkQA = false;
642+
}
643+
644+
// Omega and antiomega
645+
if (static_cast<bool>(bachTrack.pidbit() & (1 << kOmega)) || static_cast<bool>(bachTrack.pidbit() & (1 << kAntiOmega))) {
646+
if (downsampleTsalisCharged(bachTrack.pt(), downsamplingTsalisKaons, sqrtSNN, o2::track::pid_constants::sMasses[o2::track::PID::Kaon], maxPt4dwnsmplTsalisKaons)) {
647+
fillSkimmedV0TableWithdEdxTrQA(casc, bachTrack, bachTrackQA, existBachTrkQA, collision, bachTrack.tpcNSigmaKa(), bachTrack.tofNSigmaKa(), bachTrack.tpcExpSignalKa(bachTrack.tpcSignal()), o2::track::PID::Kaon, runnumber, dwnSmplFactor_Ka, hadronicRate);
648+
}
649+
}
650+
}
624651
}
625652
} /// process with dEdx from TrackQA
626653
PROCESS_SWITCH(TreeWriterTpcV0, processWithdEdxTrQA, "Standard V0 Samples with dEdx from Track QA for PID", false);
627654

628655
Preslice<TrksWithDEdxCorrection> perCollisionTracksWithNewDEdx = aod::track::collisionId;
629-
void processWithdEdxTrQAWithCorrecteddEdx(Colls const& collisions, TrksWithDEdxCorrection const& myTracks, V0sWithID const& myV0s, aod::BCsWithTimestamps const&, aod::TracksQAVersion const& tracksQA)
656+
void processWithdEdxTrQAWithCorrecteddEdx(Colls const& collisions, TrksWithDEdxCorrection const& myTracks, V0sWithID const& myV0s, CascsWithID const& myCascs, aod::BCsWithTimestamps const&, aod::TracksQAVersion const& tracksQA)
630657
{
631658
std::vector<int64_t> labelTrack2TrackQA;
632659
labelTrack2TrackQA.clear();
@@ -639,6 +666,7 @@ struct TreeWriterTpcV0 {
639666
for (const auto& collision : collisions) {
640667
auto tracks = myTracks.sliceBy(perCollisionTracksWithNewDEdx, collision.globalIndex());
641668
auto v0s = myV0s.sliceBy(perCollisionV0s, collision.globalIndex());
669+
auto cascs = myCascs.sliceBy(perCollisionCascs, collision.globalIndex());
642670
/// Check event slection
643671
if (!isEventSelected(collision, tracks)) {
644672
continue;
@@ -714,11 +742,36 @@ struct TreeWriterTpcV0 {
714742
}
715743
}
716744
}
745+
746+
/// Loop over cascade candidates
747+
for (const auto& casc : cascs) {
748+
auto bachTrack = casc.bachelor_as<TrksWithDEdxCorrection>();
749+
if (casc.cascaddid() == kUndef) {
750+
continue;
751+
}
752+
753+
aod::TracksQA bachTrackQA;
754+
bool existBachTrkQA;
755+
if (labelTrack2TrackQA[bachTrack.globalIndex()] != -1) {
756+
bachTrackQA = tracksQA.iteratorAt(labelTrack2TrackQA[bachTrack.globalIndex()]);
757+
existBachTrkQA = true;
758+
} else {
759+
bachTrackQA = tracksQA.iteratorAt(0);
760+
existBachTrkQA = false;
761+
}
762+
763+
// Omega and antiomega
764+
if (static_cast<bool>(bachTrack.pidbit() & (1 << kOmega)) || static_cast<bool>(bachTrack.pidbit() & (1 << kAntiOmega))) {
765+
if (downsampleTsalisCharged(bachTrack.pt(), downsamplingTsalisKaons, sqrtSNN, o2::track::pid_constants::sMasses[o2::track::PID::Kaon], maxPt4dwnsmplTsalisKaons)) {
766+
fillSkimmedV0TableWithdEdxTrQA<true>(casc, bachTrack, bachTrackQA, existBachTrkQA, collision, bachTrack.tpcNSigmaKa(), bachTrack.tofNSigmaKa(), bachTrack.tpcExpSignalKa(bachTrack.tpcSignal()), o2::track::PID::Kaon, runnumber, dwnSmplFactor_Ka, hadronicRate);
767+
}
768+
}
769+
}
717770
}
718771
} /// process with dEdx from TrackQA
719772
PROCESS_SWITCH(TreeWriterTpcV0, processWithdEdxTrQAWithCorrecteddEdx, "Standard V0 Samples with dEdx from Track QA for PID with corrected dEdx", false);
720773

721-
void processWithTrQA(Colls const& collisions, Trks const& myTracks, V0sWithID const& myV0s, MyBCTable const&, aod::TracksQAVersion const& tracksQA)
774+
void processWithTrQA(Colls const& collisions, Trks const& myTracks, V0sWithID const& myV0s, CascsWithID const& myCascs, MyBCTable const&, aod::TracksQAVersion const& tracksQA)
722775
{
723776
std::vector<int64_t> labelTrack2TrackQA;
724777
labelTrack2TrackQA.clear();
@@ -731,6 +784,7 @@ struct TreeWriterTpcV0 {
731784
for (const auto& collision : collisions) {
732785
auto tracks = myTracks.sliceBy(perCollisionTracks, collision.globalIndex());
733786
auto v0s = myV0s.sliceBy(perCollisionV0s, collision.globalIndex());
787+
auto cascs = myCascs.sliceBy(perCollisionCascs, collision.globalIndex());
734788
/// Check event slection
735789
if (!isEventSelected(collision, tracks)) {
736790
continue;
@@ -809,11 +863,36 @@ struct TreeWriterTpcV0 {
809863
}
810864
}
811865
}
866+
867+
/// Loop over cascade candidates
868+
for (const auto& casc : cascs) {
869+
auto bachTrack = casc.bachelor_as<Trks>();
870+
if (casc.cascaddid() == kUndef) {
871+
continue;
872+
}
873+
874+
aod::TracksQA bachTrackQA;
875+
bool existBachTrkQA;
876+
if (labelTrack2TrackQA[bachTrack.globalIndex()] != -1) {
877+
bachTrackQA = tracksQA.iteratorAt(labelTrack2TrackQA[bachTrack.globalIndex()]);
878+
existBachTrkQA = true;
879+
} else {
880+
bachTrackQA = tracksQA.iteratorAt(0);
881+
existBachTrkQA = false;
882+
}
883+
884+
// Omega and antiomega
885+
if (static_cast<bool>(bachTrack.pidbit() & (1 << kOmega)) || static_cast<bool>(bachTrack.pidbit() & (1 << kAntiOmega))) {
886+
if (downsampleTsalisCharged(bachTrack.pt(), downsamplingTsalisKaons, sqrtSNN, o2::track::pid_constants::sMasses[o2::track::PID::Kaon], maxPt4dwnsmplTsalisKaons)) {
887+
fillSkimmedV0TableWithTrQA(casc, bachTrack, bachTrackQA, existBachTrkQA, collision, bachTrack.tpcNSigmaKa(), bachTrack.tofNSigmaKa(), bachTrack.tpcExpSignalKa(bachTrack.tpcSignal()), o2::track::PID::Kaon, runnumber, dwnSmplFactor_Ka, hadronicRate, bcGlobalIndex, bcTimeFrameId, bcBcInTimeFrame);
888+
}
889+
}
890+
}
812891
}
813892
} /// process with TrackQA
814893
PROCESS_SWITCH(TreeWriterTpcV0, processWithTrQA, "Standard V0 Samples with Track QA for PID", false);
815894

816-
void processWithTrQAWithCorrecteddEdx(Colls const& collisions, TrksWithDEdxCorrection const& myTracks, V0sWithID const& myV0s, MyBCTable const&, aod::TracksQAVersion const& tracksQA)
895+
void processWithTrQAWithCorrecteddEdx(Colls const& collisions, TrksWithDEdxCorrection const& myTracks, V0sWithID const& myV0s, CascsWithID const& myCascs, MyBCTable const&, aod::TracksQAVersion const& tracksQA)
817896
{
818897
std::vector<int64_t> labelTrack2TrackQA;
819898
labelTrack2TrackQA.clear();
@@ -826,6 +905,7 @@ struct TreeWriterTpcV0 {
826905
for (const auto& collision : collisions) {
827906
auto tracks = myTracks.sliceBy(perCollisionTracksWithNewDEdx, collision.globalIndex());
828907
auto v0s = myV0s.sliceBy(perCollisionV0s, collision.globalIndex());
908+
auto cascs = myCascs.sliceBy(perCollisionCascs, collision.globalIndex());
829909
/// Check event slection
830910
if (!isEventSelected(collision, tracks)) {
831911
continue;
@@ -904,6 +984,31 @@ struct TreeWriterTpcV0 {
904984
}
905985
}
906986
}
987+
988+
/// Loop over cascade candidates
989+
for (const auto& casc : cascs) {
990+
auto bachTrack = casc.bachelor_as<TrksWithDEdxCorrection>();
991+
if (casc.cascaddid() == kUndef) {
992+
continue;
993+
}
994+
995+
aod::TracksQA bachTrackQA;
996+
bool existBachTrkQA;
997+
if (labelTrack2TrackQA[bachTrack.globalIndex()] != -1) {
998+
bachTrackQA = tracksQA.iteratorAt(labelTrack2TrackQA[bachTrack.globalIndex()]);
999+
existBachTrkQA = true;
1000+
} else {
1001+
bachTrackQA = tracksQA.iteratorAt(0);
1002+
existBachTrkQA = false;
1003+
}
1004+
1005+
// Omega and antiomega
1006+
if (static_cast<bool>(bachTrack.pidbit() & (1 << kOmega)) || static_cast<bool>(bachTrack.pidbit() & (1 << kAntiOmega))) {
1007+
if (downsampleTsalisCharged(bachTrack.pt(), downsamplingTsalisKaons, sqrtSNN, o2::track::pid_constants::sMasses[o2::track::PID::Kaon], maxPt4dwnsmplTsalisKaons)) {
1008+
fillSkimmedV0TableWithTrQA<true>(casc, bachTrack, bachTrackQA, existBachTrkQA, collision, bachTrack.tpcNSigmaKa(), bachTrack.tofNSigmaKa(), bachTrack.tpcExpSignalKa(bachTrack.tpcSignal()), o2::track::PID::Kaon, runnumber, dwnSmplFactor_Ka, hadronicRate, bcGlobalIndex, bcTimeFrameId, bcBcInTimeFrame);
1009+
}
1010+
}
1011+
}
9071012
}
9081013
} /// process with TrackQA
9091014
PROCESS_SWITCH(TreeWriterTpcV0, processWithTrQAWithCorrecteddEdx, "Standard V0 Samples with Track QA for PID with corrected dEdx", false);

0 commit comments

Comments
 (0)