@@ -165,8 +165,8 @@ struct TreeWriterTpcV0 {
165165 }
166166 };
167167
168- template <bool doUseCorreceddEdx = false , typename T, typename TQA, typename C, typename V0 >
169- void fillSkimmedV0TableWithdEdxTrQA (V0 const & v0 , T const & track, TQA const & trackQA, bool existTrkQA, C const & collision, const float nSigmaTPC, const float nSigmaTOF, const float dEdxExp, const o2::track::PID::ID id, int runnumber, double dwnSmplFactor, float hadronicRate)
168+ template <bool doUseCorreceddEdx = false , typename T, typename TQA, typename C, typename V0Casc >
169+ void fillSkimmedV0TableWithdEdxTrQA (V0Casc const & v0casc , T const & track, TQA const & trackQA, bool existTrkQA, C const & collision, const float nSigmaTPC, const float nSigmaTOF, const float dEdxExp, const o2::track::PID::ID id, int runnumber, double dwnSmplFactor, float hadronicRate)
170170 {
171171
172172 const double ncl = track.tpcNClsFound ();
@@ -178,12 +178,12 @@ struct TreeWriterTpcV0 {
178178 auto trackocc = collision.trackOccupancyInTimeRange ();
179179 auto ft0occ = collision.ft0cOccupancyInTimeRange ();
180180
181- const float alpha = v0 .alpha ();
182- const float qt = v0 .qtarm ();
183- const float cosPA = v0. v0cosPA ( );
184- const float pT = v0 .pt ();
185- const float v0radius = v0. v0radius ( );
186- const float gammapsipair = v0 .psipair ();
181+ const float alpha = v0casc .alpha ();
182+ const float qt = v0casc .qtarm ();
183+ const float cosPA = GetCosPA (v0casc, collision );
184+ const float pT = v0casc .pt ();
185+ const float v0radius = GetRadius (v0casc );
186+ const float gammapsipair = v0casc .psipair ();
187187
188188 const double pseudoRndm = track.pt () * 1000 . - static_cast <int64_t >(track.pt () * 1000 );
189189 if (pseudoRndm < dwnSmplFactor) {
@@ -224,8 +224,8 @@ struct TreeWriterTpcV0 {
224224 };
225225
226226 // / Function to fill skimmed tables
227- template <bool doUseCorreceddEdx = false , typename T, typename TQA, typename C, typename V0 >
228- void fillSkimmedV0TableWithTrQA (V0 const & v0 , T const & track, TQA const & trackQA, bool existTrkQA, C const & collision, const float nSigmaTPC, const float nSigmaTOF, const float dEdxExp, const o2::track::PID::ID id, int runnumber, double dwnSmplFactor, float hadronicRate, int bcGlobalIndex, int bcTimeFrameId, int bcBcInTimeFrame)
227+ template <bool doUseCorreceddEdx = false , typename T, typename TQA, typename C, typename V0Casc >
228+ void fillSkimmedV0TableWithTrQA (V0Casc const & v0casc , T const & track, TQA const & trackQA, bool existTrkQA, C const & collision, const float nSigmaTPC, const float nSigmaTOF, const float dEdxExp, const o2::track::PID::ID id, int runnumber, double dwnSmplFactor, float hadronicRate, int bcGlobalIndex, int bcTimeFrameId, int bcBcInTimeFrame)
229229 {
230230
231231 const double ncl = track.tpcNClsFound ();
@@ -237,12 +237,12 @@ struct TreeWriterTpcV0 {
237237 auto trackocc = collision.trackOccupancyInTimeRange ();
238238 auto ft0occ = collision.ft0cOccupancyInTimeRange ();
239239
240- const float alpha = v0 .alpha ();
241- const float qt = v0 .qtarm ();
242- const float cosPA = v0. v0cosPA ( );
243- const float pT = v0 .pt ();
244- const float v0radius = v0. v0radius ( );
245- const float gammapsipair = v0 .psipair ();
240+ const float alpha = v0casc .alpha ();
241+ const float qt = v0casc .qtarm ();
242+ const float cosPA = GetCosPA (v0casc, collision );
243+ const float pT = v0casc .pt ();
244+ const float v0radius = GetRadius (v0casc );
245+ const float gammapsipair = v0casc .psipair ();
246246
247247 const double pseudoRndm = track.pt () * 1000 . - static_cast <int64_t >(track.pt () * 1000 );
248248 if (pseudoRndm < dwnSmplFactor) {
@@ -454,7 +454,7 @@ struct TreeWriterTpcV0 {
454454 } // / process Standard
455455 PROCESS_SWITCH (TreeWriterTpcV0, processStandard, " Standard V0 Samples for PID" , true );
456456
457- void processStandardWithCorrecteddEdx (Colls::iterator const & collision, soa::Filtered<TrksWithDEdxCorrection> const & tracks, V0sWithID const & v0s, aod::BCsWithTimestamps const &)
457+ void processStandardWithCorrecteddEdx (Colls::iterator const & collision, soa::Filtered<TrksWithDEdxCorrection> const & tracks, V0sWithID const & v0s, CascsWithID const & cascs, aod::BCsWithTimestamps const &)
458458 {
459459 // / Check event slection
460460 if (!isEventSelected (collision, tracks)) {
@@ -514,7 +514,21 @@ struct TreeWriterTpcV0 {
514514 }
515515 }
516516 }
517- } // / process Standard
517+
518+ // / Loop over cascade candidates
519+ for (const auto & casc : cascs) {
520+ auto bachTrack = casc.bachelor_as <soa::Filtered<TrksWithDEdxCorrection>>();
521+ if (casc.cascaddid () == kUndef ) {
522+ continue ;
523+ }
524+ // Omega and antiomega
525+ if (static_cast <bool >(bachTrack.pidbit () & (1 << kOmega )) || static_cast <bool >(bachTrack.pidbit () & (1 << kAntiOmega ))) {
526+ if (downsampleTsalisCharged (bachTrack.pt (), downsamplingTsalisKaons, sqrtSNN, o2::track::pid_constants::sMasses [o2::track::PID::Kaon], maxPt4dwnsmplTsalisKaons)) {
527+ fillSkimmedV0Table<true >(casc, bachTrack, collision, bachTrack.tpcNSigmaKa (), bachTrack.tofNSigmaKa (), bachTrack.tpcExpSignalKa (bachTrack.tpcSignal ()), o2::track::PID::Kaon, runnumber, dwnSmplFactor_Ka, hadronicRate);
528+ }
529+ }
530+ }
531+ } // / process StandardWithCorrecteddEdx
518532 PROCESS_SWITCH (TreeWriterTpcV0, processStandardWithCorrecteddEdx, " Standard V0 Samples for PID with corrected dEdx" , false );
519533
520534 Preslice<Trks> perCollisionTracks = aod::track::collisionId;
0 commit comments