@@ -138,6 +138,8 @@ struct hyperCandidate {
138138 uint8_t nTPCClustersPi = 0u ;
139139 uint8_t nTPCpidClusHe3 = 0u ;
140140 uint8_t nTPCpidClusPi = 0u ;
141+ uint8_t nTPCCrossedRowsHe3 = 0u ;
142+ uint8_t nTPCCrossedRowsPi = 0u ;
141143 uint32_t clusterSizeITSHe3 = 0u ;
142144 uint32_t clusterSizeITSPi = 0u ;
143145
@@ -182,6 +184,8 @@ struct hyperRecoTask {
182184 Configurable<float > nSigmaMaxHe{" nSigmaMaxHe" , 5 , " helium dEdx cut (n sigma)" };
183185 Configurable<float > nTPCClusMinHe{" nTPCClusMinHe" , 70 , " helium NTPC clusters cut" };
184186 Configurable<float > nTPCClusMinPi{" nTPCClusMinPi" , -1 ., " pion NTPC clusters cut" };
187+ Configurable<float > nTPCCrossedRowsMinHe{" nTPCCrossedRowsMinHe" , 70 , " helium minimum crossed rows" };
188+ Configurable<float > nTPCCrossedRowsMinPi{" nTPCCrossedRowsMinPi" , -1 ., " pion minimum crossed rows" };
185189 Configurable<bool > mcSignalOnly{" mcSignalOnly" , true , " If true, save only signal in MC" };
186190 Configurable<bool > cfgSkimmedProcessing{" cfgSkimmedProcessing" , false , " Skimmed dataset processing" };
187191 Configurable<bool > isEventUsedForEPCalibration{" isEventUsedForEPCalibration" , 1 , " Event is used for EP calibration" };
@@ -509,10 +513,12 @@ struct hyperRecoTask {
509513 hypCand.isMatter = heTrack.sign () > 0 ;
510514 hypCand.nSigmaHe3 = computeNSigmaHe3 (heTrack);
511515 hypCand.nTPCClustersHe3 = heTrack.tpcNClsFound ();
516+ hypCand.nTPCCrossedRowsHe3 = heTrack.tpcNClsCrossedRows ();
512517 hypCand.tpcSignalHe3 = heTrack.tpcSignal ();
513518 hypCand.nTPCpidClusHe3 = static_cast <int16_t >(heTrack.tpcNClsFindable ()) - heTrack.tpcNClsFindableMinusPID ();
514519 hypCand.clusterSizeITSHe3 = heTrack.itsClusterSizes ();
515520 hypCand.nTPCClustersPi = piTrack.tpcNClsFound ();
521+ hypCand.nTPCCrossedRowsPi = piTrack.tpcNClsCrossedRows ();
516522 hypCand.nTPCpidClusPi = static_cast <int16_t >(piTrack.tpcNClsFindable ()) - piTrack.tpcNClsFindableMinusPID ();
517523 hypCand.tpcSignalPi = piTrack.tpcSignal ();
518524 hypCand.tpcChi2He3 = heTrack.tpcChi2NCl ();
@@ -673,6 +679,9 @@ struct hyperRecoTask {
673679 if (heTrack.tpcNClsFound () < nTPCClusMinHe || piTrack.tpcNClsFound () < nTPCClusMinPi) {
674680 continue ;
675681 }
682+ if (heTrack.tpcNClsCrossedRows () < nTPCCrossedRowsMinHe || piTrack.tpcNClsCrossedRows () < nTPCCrossedRowsMinPi) {
683+ continue ;
684+ }
676685
677686 hyperCandidate hypCand;
678687 hypCand.v0ID = v0.globalIndex ();
@@ -707,6 +716,10 @@ struct hyperRecoTask {
707716 continue ;
708717 if (!isHe && track.tpcNClsFound () < nTPCClusMinPi)
709718 continue ;
719+ if (isHe && track.tpcNClsCrossedRows () < nTPCCrossedRowsMinHe)
720+ continue ;
721+ if (!isHe && track.tpcNClsCrossedRows () < nTPCCrossedRowsMinPi)
722+ continue ;
710723
711724 svCreator.appendTrackCand (track, collisions, pdgHypo, ambiguousTracks, bcs);
712725 }
@@ -793,6 +806,7 @@ struct hyperRecoTask {
793806 hypCand.dcaV0dau , hypCand.he3DCAXY , hypCand.piDCAXY ,
794807 hypCand.nSigmaHe3 , hypCand.nTPCClustersHe3 , hypCand.nTPCClustersPi ,
795808 hypCand.nTPCpidClusHe3 , hypCand.nTPCpidClusPi ,
809+ hypCand.nTPCCrossedRowsHe3 , hypCand.nTPCCrossedRowsPi ,
796810 hypCand.momHe3TPC , hypCand.momPiTPC , hypCand.tpcSignalHe3 , hypCand.tpcSignalPi , hypCand.tpcChi2He3 , hypCand.itsChi2He3 , hypCand.itsChi2Pi ,
797811 hypCand.massTOFHe3 ,
798812 hypCand.clusterSizeITSHe3 , hypCand.clusterSizeITSPi , hypCand.flags , trackedHypClSize);
@@ -828,6 +842,7 @@ struct hyperRecoTask {
828842 hypCand.dcaV0dau , hypCand.he3DCAXY , hypCand.piDCAXY ,
829843 hypCand.nSigmaHe3 , hypCand.nTPCClustersHe3 , hypCand.nTPCClustersPi ,
830844 hypCand.nTPCpidClusHe3 , hypCand.nTPCpidClusPi ,
845+ hypCand.nTPCCrossedRowsHe3 , hypCand.nTPCCrossedRowsPi ,
831846 hypCand.momHe3TPC , hypCand.momPiTPC , hypCand.tpcSignalHe3 , hypCand.tpcSignalPi , hypCand.tpcChi2He3 , hypCand.itsChi2He3 , hypCand.itsChi2Pi ,
832847 hypCand.massTOFHe3 ,
833848 hypCand.clusterSizeITSHe3 , hypCand.clusterSizeITSPi , hypCand.flags , trackedHypClSize);
@@ -856,6 +871,7 @@ struct hyperRecoTask {
856871 hypCand.dcaV0dau , hypCand.he3DCAXY , hypCand.piDCAXY ,
857872 hypCand.nSigmaHe3 , hypCand.nTPCClustersHe3 , hypCand.nTPCClustersPi ,
858873 hypCand.nTPCpidClusHe3 , hypCand.nTPCpidClusPi ,
874+ hypCand.nTPCCrossedRowsHe3 , hypCand.nTPCCrossedRowsPi ,
859875 hypCand.momHe3TPC , hypCand.momPiTPC , hypCand.tpcSignalHe3 , hypCand.tpcSignalPi , hypCand.tpcChi2He3 , hypCand.itsChi2He3 , hypCand.itsChi2Pi ,
860876 hypCand.massTOFHe3 ,
861877 hypCand.clusterSizeITSHe3 , hypCand.clusterSizeITSPi , hypCand.flags , trackedHypClSize);
@@ -890,7 +906,7 @@ struct hyperRecoTask {
890906 hypCand.recoPtPi (), hypCand.recoPhiPi (), hypCand.recoEtaPi (),
891907 hypCand.decVtx [0 ], hypCand.decVtx [1 ], hypCand.decVtx [2 ],
892908 hypCand.dcaV0dau , hypCand.he3DCAXY , hypCand.piDCAXY ,
893- hypCand.nSigmaHe3 , hypCand.nTPCClustersHe3 , hypCand.nTPCClustersPi , hypCand.nTPCpidClusHe3 , hypCand.nTPCpidClusPi ,
909+ hypCand.nSigmaHe3 , hypCand.nTPCClustersHe3 , hypCand.nTPCClustersPi , hypCand.nTPCpidClusHe3 , hypCand.nTPCpidClusPi , hypCand. nTPCCrossedRowsHe3 , hypCand. nTPCCrossedRowsPi ,
894910 hypCand.momHe3TPC , hypCand.momPiTPC , hypCand.tpcSignalHe3 , hypCand.tpcSignalPi , hypCand.tpcChi2He3 , hypCand.itsChi2He3 , hypCand.itsChi2Pi ,
895911 hypCand.massTOFHe3 ,
896912 hypCand.clusterSizeITSHe3 , hypCand.clusterSizeITSPi , hypCand.flags , trackedHypClSize,
@@ -960,14 +976,14 @@ struct hyperRecoTask {
960976 }
961977
962978 outputMCTable (centFT0A, centFT0C, centFT0M,
963- mRunNumber , -1 , -1 , -1 ,
964- 0 ,
965979 -1 , -1 , -1 ,
980+ mRunNumber , 0 ,
966981 -1 , -1 , -1 ,
967982 -1 , -1 , -1 ,
968983 -1 , -1 , -1 ,
969984 -1 , -1 , -1 ,
970- -1 , -1 , -1 , -1 , -1 , -1 , 0 , 0 , 0 , 0 ,
985+ -1 , -1 , -1 , -1 , -1 , -1 , -1 ,
986+ -1 , -1 , -1 , -1 , 0 , 0 , 0 , 0 ,
971987 -1 , -1 , -1 , false ,
972988 chargeFactor * hypCand.genPt (), hypCand.genPhi (), hypCand.genEta (), hypCand.genPtHe3 (),
973989 hypCand.gDecVtx [0 ], hypCand.gDecVtx [1 ], hypCand.gDecVtx [2 ],
0 commit comments