@@ -74,6 +74,14 @@ struct ResonanceMergeDF {
7474 Configurable<float > nsigmatofPr{" nsigmatofPr" , 6 ., " nsigma value for tof prot" };
7575 Configurable<float > nsigmatofKa{" nsigmatofKa" , 6 ., " nsigma value for tof kaon" };
7676
77+ // Xi1530 candidate cuts
78+ Configurable<int > trackSelection{" trackSelection" , 0 , " Track selection: 0 -> No Cut, 1 -> kGlobalTrack, 2 -> kGlobalTrackWoDCA" };
79+ Configurable<bool > requireTOF{" requireTOF" , false , " Require TOF" };
80+ Configurable<float > applyTOFveto{" applyTOFveto" , 999 , " Apply TOF veto with value, 999 for passing all" };
81+ Configurable<float > nsigmaPi{" nsigmaPi" , 5 ., " nsigma value for pion" };
82+ Configurable<float > minCent{" minCent" , 0 ., " Minimum centrality" };
83+ Configurable<float > maxCent{" maxCent" , 100 ., " Maximum centrality" };
84+
7785 HistogramRegistry histos{" histos" , {}, OutputObjHandlingPolicy::AnalysisObject};
7886
7987 void init (InitContext const &)
@@ -263,12 +271,10 @@ struct ResonanceMergeDF {
263271 if (crejtof && ((std::abs (track.tofNSigmaPr ()) > std::abs (track.tofNSigmaEl ()) && std::abs (track.tofNSigmaKa ()) > std::abs (track.tofNSigmaEl ())) || (std::abs (track.tofNSigmaPr ()) > std::abs (track.tofNSigmaPi ()) && std::abs (track.tofNSigmaKa ()) > std::abs (track.tofNSigmaPi ()))))
264272 continue ;
265273 }
266-
267274 if (std::abs (track.dcaXY ()) > cDCAXY)
268275 continue ;
269276 if (std::abs (track.dcaZ ()) > cDCAZ)
270277 continue ;
271-
272278 reso2trksdf (resoCollisionsdf.lastIndex (),
273279 // track.trackId(),
274280 track.pt (),
@@ -310,13 +316,88 @@ struct ResonanceMergeDF {
310316 }
311317 PROCESS_SWITCH (ResonanceMergeDF, processLambdaStarCandidate, " Process for lambda star candidate" , false );
312318
313- void processCascadesCandidate (aod::ResoCollisions::iterator const & collision, aod::ResoCascades const & resocasctracks)
319+ void processXi1530Candidate (aod::ResoCollisions::iterator const & collision, aod::ResoTracks const & tracks , aod::ResoCascades const & resocasctracks)
314320 {
315- histos.fill (HIST (" Event/h1d_ft0_mult_percentile_CASC" ), collision.cent ());
321+ if (doprocessTrackDataDF)
322+ LOG (fatal) << " Disable processTrackDataDF first!" ;
323+ if (doprocessLambdaStarCandidate)
324+ LOG (fatal) << " Disable processLambdaStarCandidate first!" ;
325+
326+ if (collision.cent () < minCent || collision.cent () > maxCent)
327+ return ;
316328
317329 resoCollisionsdf (0 , collision.posX (), collision.posY (), collision.posZ (), collision.cent (), collision.spherocity (), collision.evtPl (), 0 ., 0 ., 0 ., 0 ., 0 , collision.trackOccupancyInTimeRange ());
330+ histos.fill (HIST (" Event/h1d_ft0_mult_percentile" ), collision.cent ());
331+
332+ for (const auto & track : tracks) {
333+ if (trackSelection == 1 ) {
334+ if (!track.isGlobalTrack ())
335+ continue ;
336+ } else if (trackSelection == 2 ) {
337+ if (!track.isGlobalTrackWoDCA ())
338+ continue ;
339+ }
340+ if (!track.hasTOF ()) {
341+ if (requireTOF) {
342+ continue ;
343+ }
344+ // TPC selection
345+ if (std::abs (track.tpcNSigmaPi ()) > nsigmaPi)
346+ continue ;
347+ } else {
348+ if (applyTOFveto > 998 && std::abs (track.tofNSigmaPi ()) > applyTOFveto)
349+ continue ;
350+ // TPC selection
351+ if (std::abs (track.tpcNSigmaPi ()) > nsigmaPi)
352+ continue ;
353+ }
354+
355+ if (std::abs (track.dcaXY ()) > cDCAXY)
356+ continue ;
357+ if (std::abs (track.dcaZ ()) > cDCAZ)
358+ continue ;
318359
360+ reso2trksdf (resoCollisionsdf.lastIndex (),
361+ // track.trackId(),
362+ track.pt (),
363+ track.px (),
364+ track.py (),
365+ track.pz (),
366+ track.eta (),
367+ track.phi (),
368+ track.sign (),
369+ (uint8_t )track.tpcNClsCrossedRows (),
370+ (uint8_t )track.tpcNClsFound (),
371+ (uint8_t )track.itsNCls (),
372+ track.dcaXY (),
373+ track.dcaZ (),
374+ track.x (),
375+ track.alpha (),
376+ track.hasITS (),
377+ track.hasTPC (),
378+ track.hasTOF (),
379+ track.tpcNSigmaPi (),
380+ track.tpcNSigmaKa (),
381+ track.tpcNSigmaPr (),
382+ track.tpcNSigmaEl (),
383+ track.tofNSigmaPi (),
384+ track.tofNSigmaKa (),
385+ track.tofNSigmaPr (),
386+ track.tofNSigmaEl (),
387+ track.tpcSignal (),
388+ track.passedITSRefit (),
389+ track.passedTPCRefit (),
390+ track.isGlobalTrackWoDCA (),
391+ track.isGlobalTrack (),
392+ track.isPrimaryTrack (),
393+ track.isPVContributor (),
394+ track.tpcCrossedRowsOverFindableCls (),
395+ track.itsChi2NCl (),
396+ track.tpcChi2NCl ());
397+ }
398+ // Cascade candidate
319399 for (const auto & track : resocasctracks) {
400+ // TODO: add cascade cuts
320401 reso2cascadesdf (resoCollisionsdf.lastIndex (),
321402 // casc.globalIndex(),
322403 track.pt (),
@@ -360,14 +441,7 @@ struct ResonanceMergeDF {
360441 track.transRadius (), track.cascTransRadius (), track.decayVtxX (), track.decayVtxY (), track.decayVtxZ ());
361442 }
362443 }
363-
364- PROCESS_SWITCH (ResonanceMergeDF, processCascadesCandidate, " Process for Cascade candidate" , true );
365-
366- void processXiStarCandidate (aod::ResoCollisions::iterator const & /* collision*/ , aod::ResoTracks const & /* tracks*/ )
367- {
368- // TODO: Implement Xi star candidate processing
369- }
370- PROCESS_SWITCH (ResonanceMergeDF, processXiStarCandidate, " Process for Xi star candidate" , false );
444+ PROCESS_SWITCH (ResonanceMergeDF, processXi1530Candidate, " Process for Xi(1530) candidate" , false );
371445};
372446
373447WorkflowSpec defineDataProcessing (ConfigContext const & cfgc)
0 commit comments