@@ -190,7 +190,13 @@ struct preProcessMCcollisions {
190190 histos.add (" h2dNContribSpecialCorr2b" , " h2dNContribSpecialCorr2b" , kTH2D , {axisContributorsTRD, axisContributorsTOF});
191191 }
192192
193- void process (aod::McCollision const & mcCollision, soa::SmallGroups<soa::Join<aod::McCollisionLabels, aod::Collisions>> const & collisions, TracksCompleteIUMC const & tracks, aod::McParticles const & mcParticles, aod::BCs const &)
193+ void processData (TracksCompleteIU const & tracks)
194+ {
195+ // Dummy process
196+ }
197+ PROCESS_SWITCH (preProcessMCcollisions, processData, " Real data dummy" , false );
198+
199+ void processMC (aod::McCollision const & mcCollision, soa::SmallGroups<soa::Join<aod::McCollisionLabels, aod::Collisions>> const & collisions, TracksCompleteIUMC const & tracks, aod::McParticles const & mcParticles, aod::BCs const &)
194200 {
195201 int lNumberOfXi = 0 ;
196202 for (auto & mcp : mcParticles) {
@@ -294,6 +300,7 @@ struct preProcessMCcollisions {
294300 }
295301 mcCollsExtra (collisions.size ());
296302 }
303+ PROCESS_SWITCH (preProcessMCcollisions, processMC, " MC prepare" , true );
297304};
298305
299306struct straRecoStudy {
@@ -381,6 +388,10 @@ struct straRecoStudy {
381388 const AxisSpec axisITSClu{10 , -0 .5f , +9 .5f , " ITS clusters" };
382389 const AxisSpec axisTPCCroRo{160 , -0 .5f , +159 .5f , " TPC crossed rows" };
383390
391+ // bit packed ITS cluster map
392+ const AxisSpec axisITSCluMap{(int )128 , -0 .5f , +127 .5f , " Packed ITS map" };
393+ const AxisSpec axisRadius{(int )160 , 0 .0f , +80 .0f , " Radius (cm)" };
394+
384395 TString lSpecies[] = {" K0Short" , " Lambda" , " AntiLambda" , " XiMinus" , " XiPlus" , " OmegaMinus" , " OmegaPlus" };
385396 const AxisSpec lMassAxis[] = {axisK0ShortMass, axisLambdaMass, axisLambdaMass, axisXiMass, axisXiMass, axisOmegaMass, axisOmegaMass};
386397
@@ -429,6 +440,12 @@ struct straRecoStudy {
429440 histos.add (" h2dOmegaMinusQADCACascToPV" , " h2dOmegaMinusQADCACascToPV" , kTH2F , {axisVsPtCoarse, axisDCAWD});
430441 histos.add (" h2dOmegaMinusQAPointingAngle" , " h2dOmegaMinusQAPointingAngle" , kTH2F , {axisVsPtCoarse, axisPA});
431442
443+ histos.add (" h2dITSCluMap_V0Positive" , " h2dITSCluMap_V0Positive" , kTH2D , {axisITSCluMap, axisRadius});
444+ histos.add (" h2dITSCluMap_V0Negative" , " h2dITSCluMap_V0Negative" , kTH2D , {axisITSCluMap, axisRadius});
445+ histos.add (" h2dITSCluMap_CascPositive" , " h2dITSCluMap_CascPositive" , kTH2D , {axisITSCluMap, axisRadius});
446+ histos.add (" h2dITSCluMap_CascNegative" , " h2dITSCluMap_CascNegative" , kTH2D , {axisITSCluMap, axisRadius});
447+ histos.add (" h2dITSCluMap_CascBachelor" , " h2dITSCluMap_CascBachelor" , kTH2D , {axisITSCluMap, axisRadius});
448+
432449 // Track quality tests
433450 histos.add (" h3dTrackPtsK0ShortP" , " h3dTrackPtsK0ShortP" , kTH3F , {axisVsPtCoarse, axisITSClu, axisTPCCroRo});
434451 histos.add (" h3dTrackPtsK0ShortN" , " h3dTrackPtsK0ShortN" , kTH3F , {axisVsPtCoarse, axisITSClu, axisTPCCroRo});
@@ -534,6 +551,47 @@ struct straRecoStudy {
534551 }
535552 PROCESS_SWITCH (straRecoStudy, processV0, " Regular V0 analysis" , true );
536553
554+ void processV0RealData (soa::Join<aod::Collisions, aod::EvSels>::iterator const & collision, aod::V0Datas const & v0tables, aod::CascDataExt const & Cascades, TracksCompleteIU const & tracks, aod::V0sLinked const &)
555+ {
556+ evselstats[kEvSelAll ]++;
557+ if (event_sel8_selection && !collision.sel8 ()) {
558+ return ;
559+ }
560+ evselstats[kEvSelBool ]++;
561+ if (event_posZ_selection && abs (collision.posZ ()) > 10 .f ) { // 10cm
562+ return ;
563+ }
564+ evselstats[kEvSelVtxZ ]++;
565+ for (auto & v0 : v0tables) {
566+ // MC association
567+ auto posPartTrack = v0.posTrack_as <TracksCompleteIU>();
568+ auto negPartTrack = v0.negTrack_as <TracksCompleteIU>();
569+ histos.fill (HIST (" h2dITSCluMap_V0Positive" ), (float )posPartTrack.itsClusterMap (), v0.v0radius ());
570+ histos.fill (HIST (" h2dITSCluMap_V0Negative" ), (float )negPartTrack.itsClusterMap (), v0.v0radius ());
571+
572+ if (posPartTrack.itsNCls () < itsminclusters || negPartTrack.itsNCls () < itsminclusters)
573+ continue ;
574+ if (posPartTrack.tpcNClsCrossedRows () < tpcmincrossedrows || negPartTrack.tpcNClsCrossedRows () < tpcmincrossedrows)
575+ continue ;
576+
577+ if (v0.v0radius () > v0setting_radius && v0.v0radius () < maxV0Radius) {
578+ if (v0.v0cosPA (collision.posX (), collision.posY (), collision.posZ ()) > v0setting_cospa) {
579+ if (v0.dcaV0daughters () < v0setting_dcav0dau) {
580+ // *+-+*+-+*+-+*+-+*+-+*+-+*+-+*+-+*+-+*+-+*+-+*+-+*+-+*+-+*
581+ // Fill invariant masses
582+ histos.fill (HIST (" h2dMassK0Short" ), v0.pt (), v0.mK0Short ());
583+ histos.fill (HIST (" h2dMassLambda" ), v0.pt (), v0.mLambda ());
584+ histos.fill (HIST (" h2dMassAntiLambda" ), v0.pt (), v0.mAntiLambda ());
585+ // *+-+*+-+*+-+*+-+*+-+*+-+*+-+*+-+*+-+*+-+*+-+*+-+*+-+*+-+*
586+ }
587+ }
588+ }
589+ } // end v0 loop
590+ fillHistos ();
591+ resetCounters ();
592+ }
593+ PROCESS_SWITCH (straRecoStudy, processV0RealData, " Regular V0 analysis in real data" , false );
594+
537595 void processCascade (soa::Join<aod::Collisions, aod::EvSels>::iterator const & collision, aod::V0Datas const &, soa::Filtered<CascMC> const & Cascades, TracksCompleteIUMC const & tracks, aod::McParticles const &, aod::V0sLinked const &)
538596 {
539597 if (event_sel8_selection && !collision.sel8 ()) {
@@ -652,6 +710,10 @@ struct straRecoStudy {
652710 auto posPartTrack = v0.posTrack_as <TracksCompleteIU>();
653711 auto negPartTrack = v0.negTrack_as <TracksCompleteIU>();
654712
713+ histos.fill (HIST (" h2dITSCluMap_CascPositive" ), (float )posPartTrack.itsClusterMap (), casc.v0radius ());
714+ histos.fill (HIST (" h2dITSCluMap_CascNegative" ), (float )negPartTrack.itsClusterMap (), casc.v0radius ());
715+ histos.fill (HIST (" h2dITSCluMap_CascBachelor" ), (float )bachPartTrack.itsClusterMap (), casc.cascradius ());
716+
655717 if (casc.sign () < 0 ) {
656718 histos.fill (HIST (" h3dTrackPtsXiMinusP" ), casc.pt (), posPartTrack.itsNCls (), posPartTrack.tpcNClsCrossedRows ());
657719 histos.fill (HIST (" h3dTrackPtsXiMinusN" ), casc.pt (), negPartTrack.itsNCls (), negPartTrack.tpcNClsCrossedRows ());
0 commit comments