@@ -46,6 +46,13 @@ struct SystematicsMapping {
4646 ConfigurableAxis chi2Bins{" chi2Bins" , {100 , 0 .f , 100 .f }, " Binning for chi2" };
4747 // Selection configurables
4848 Configurable<float > selectionPosZ{" selectionPosZ" , 10 .f , " Max |z| of the primary vertex" };
49+ // V0 selection criteria
50+ Configurable<double > v0cospa{" v0cospa" , 0.97 , " V0 CosPA" };
51+ Configurable<float > dcav0dau{" dcav0dau" , 10 , " DCA V0 Daughters" };
52+ Configurable<float > dcanegtopv{" dcanegtopv" , 0.0 , " DCA Neg To PV" };
53+ Configurable<float > dcapostopv{" dcapostopv" , 0.0 , " DCA Pos To PV" };
54+ Configurable<float > v0radius{" v0radius" , 0.0 , " Radius" };
55+ Configurable<float > etadau{" etadau" , 0.8 , " Eta Daughters" };
4956
5057 HistogramRegistry registry{" registry" };
5158
@@ -60,6 +67,15 @@ struct SystematicsMapping {
6067 const AxisSpec ptAxis{ptBins, " #it{p}_{T} (GeV/c)" };
6168 const AxisSpec etaAxis{etaBins, " #eta" };
6269 const AxisSpec phiAxis{phiBins, " #phi (rad)" };
70+ const AxisSpec invariantMassAxis{invariantMassBins, " Invariant Mass (GeV/c^{2})" };
71+ const AxisSpec nsigmaAxisTPC{nsigmaBins, " nSigma TPC" };
72+ const AxisSpec nsigmaAxisTOF{nsigmaBins, " nSigma TOF" };
73+ const AxisSpec tpcCrossedRowsAxis{tpcCrossedRowsBins, " TPC crossed rows" };
74+ const AxisSpec itsClustersAxis{itsClustersBins, " ITS clusters" };
75+ const AxisSpec dcaXYAxis{dcaBins, " DCAxy (cm)" };
76+ const AxisSpec dcaZAxis{dcaBins, " DCAz (cm)" };
77+ const AxisSpec chi2TPCAxis{chi2Bins, " TPC Chi2" };
78+ const AxisSpec chi2ITSAxis{chi2Bins, " ITS Chi2" };
6379
6480 if (doprocessData) {
6581
@@ -73,19 +89,19 @@ struct SystematicsMapping {
7389 registry.addClone (" K/" , " K0s/" );
7490
7591 // Add the signal histograms
76- registry.add (" K/SignalPositive" , " " , HistType::kTHnSparseF , {ptBins, etaBins, phiBins, nsigmaBins, tpcCrossedRowsBins, itsClustersBins, dcaBins, chi2Bins });
77- registry.add (" K/SignalNegative" , " " , HistType::kTHnSparseF , {ptBins, etaBins, phiBins, nsigmaBins, tpcCrossedRowsBins, itsClustersBins, dcaBins, chi2Bins });
78- registry.add (" K0s/Signal" , " " , HistType::kTHnSparseF , {ptBins, etaBins, phiBins , invariantMassBins, tpcCrossedRowsBins, itsClustersBins, dcaBins, chi2Bins });
92+ registry.add (" K/SignalPositive" , " " , HistType::kTHnSparseF , {ptAxis, etaAxis, phiAxis, nsigmaAxisTPC, nsigmaAxisTOF, tpcCrossedRowsBins, itsClustersBins, dcaXYAxis, dcaZAxis, chi2TPCAxis, chi2ITSAxis });
93+ registry.add (" K/SignalNegative" , " " , HistType::kTHnSparseF , {ptAxis, etaAxis, phiAxis, nsigmaAxisTPC, nsigmaAxisTOF, tpcCrossedRowsBins, itsClustersBins, dcaXYAxis, dcaZAxis, chi2TPCAxis, chi2ITSAxis });
94+ registry.add (" K0s/Signal" , " " , HistType::kTHnSparseF , {ptAxis, etaAxis, phiAxis , invariantMassBins, nsigmaAxisTPC, nsigmaAxisTOF, tpcCrossedRowsBins, itsClustersBins, dcaXYAxis, dcaZAxis, chi2TPCAxis, chi2ITSAxis });
7995 }
8096
8197 if (doprocessMc) {
82- registry.add (" K/GeneratedPositive" , " " , HistType::kTHnSparseF , {ptBins, etaBins, phiBins });
83- registry.add (" K/GeneratedNegative" , " " , HistType::kTHnSparseF , {ptBins, etaBins, phiBins });
84- registry.add (" K0s/Generated" , " " , HistType::kTHnSparseF , {ptBins, etaBins, phiBins });
98+ registry.add (" K/GeneratedPositive" , " " , HistType::kTHnSparseF , {ptAxis, etaAxis, phiAxis });
99+ registry.add (" K/GeneratedNegative" , " " , HistType::kTHnSparseF , {ptAxis, etaAxis, phiAxis });
100+ registry.add (" K0s/Generated" , " " , HistType::kTHnSparseF , {ptAxis, etaAxis, phiAxis });
85101 }
86102 }
87103
88- using TrackType = soa::Join<aod::Tracks, aod::TracksExtra, aod::pidTPCFullKa , aod::pidTOFFullPi, aod::TracksDCA>;
104+ using TrackType = soa::Join<aod::Tracks, aod::TracksExtra, aod::pidTPCFullPi , aod::pidTOFFullPi, aod::pidTPCFullKa, aod::pidTOFFullKa , aod::TracksDCA>;
89105 using CollisionType = soa::Join<aod::Collisions, aod::EvSels>;
90106
91107 void processData (CollisionType const & collisions,
@@ -107,29 +123,38 @@ struct SystematicsMapping {
107123 registry.fill (HIST (" K/hChi2OverNCLsTPC" ), track.tpcChi2NCl ());
108124 registry.fill (HIST (" K/hChi2OverNCLsITS" ), track.itsChi2NCl ());
109125 if (track.sign () > 0 )
110- registry.fill (HIST (" K/SignalPositive" ), track.pt (), track.eta (), track.phi (), track.tpcNSigmaKa (), track.tpcNClsCrossedRows (), track.itsNCls (), track.dcaXY (), track.dcaZ (), track.tpcChi2NCl ());
126+ registry.fill (HIST (" K/SignalPositive" ), track.pt (), track.eta (), track.phi (), track.tpcNSigmaKa (), track.tofNSigmaKa (), track. tpcNClsCrossedRows (), track.itsNCls (), track.dcaXY (), track.dcaZ (), track.tpcChi2NCl (), track. itsChi2NCl ());
111127 else
112- registry.fill (HIST (" K/SignalNegative" ), track.pt (), track.eta (), track.phi (), track.tpcNSigmaKa (), track.tpcNClsCrossedRows (), track.itsNCls (), track.dcaXY (), track.dcaZ (), track.tpcChi2NCl ());
128+ registry.fill (HIST (" K/SignalNegative" ), track.pt (), track.eta (), track.phi (), track.tpcNSigmaKa (), track.tofNSigmaKa (), track. tpcNClsCrossedRows (), track.itsNCls (), track.dcaXY (), track.dcaZ (), track.tpcChi2NCl (), track. itsChi2NCl ());
113129 }
114130
115131 // K0s loop
116132 for (const auto & v0 : v0s) {
117133 if (v0.collisionId () != collision.globalIndex ())
118134 continue ;
135+
119136 const auto & posTrack = v0.posTrack_as <TrackType>();
120137 const auto & negTrack = v0.negTrack_as <TrackType>();
138+ if (v0.v0radius () < v0radius ||
139+ v0.v0cosPA () < v0cospa ||
140+ std::abs (posTrack.eta ()) > etadau ||
141+ std::abs (negTrack.eta ()) > etadau)
142+ continue ;
121143 registry.fill (HIST (" K0s/hTPCCrossedRows" ), std::min (posTrack.tpcNClsCrossedRows (), negTrack.tpcNClsCrossedRows ()));
122144 registry.fill (HIST (" K0s/hITSClusters" ), std::min (posTrack.itsNCls (), negTrack.itsNCls ()));
123145 registry.fill (HIST (" K0s/hDCAxy" ), std::min (posTrack.dcaXY (), negTrack.dcaXY ()));
124146 registry.fill (HIST (" K0s/hDCAz" ), std::min (posTrack.dcaZ (), negTrack.dcaZ ()));
125147 registry.fill (HIST (" K0s/hChi2OverNCLsTPC" ), std::min (posTrack.tpcChi2NCl (), negTrack.tpcChi2NCl ()));
126148 registry.fill (HIST (" K0s/hChi2OverNCLsITS" ), std::min (posTrack.itsChi2NCl (), negTrack.itsChi2NCl ()));
127149 registry.fill (HIST (" K0s/Signal" ), v0.pt (), v0.eta (), v0.phi (), v0.mK0Short () - constants::physics::MassK0Short,
150+ std::max (posTrack.tpcNSigmaPi (), negTrack.tpcNSigmaPi ()),
151+ std::max (posTrack.tofNSigmaPi (), negTrack.tofNSigmaPi ()),
128152 std::min (posTrack.tpcNClsCrossedRows (), negTrack.tpcNClsCrossedRows ()),
129153 std::min (posTrack.itsNCls (), negTrack.itsNCls ()),
130154 std::min (posTrack.dcaXY (), negTrack.dcaXY ()),
131155 std::min (posTrack.dcaZ (), negTrack.dcaZ ()),
132- std::min (posTrack.tpcChi2NCl (), negTrack.tpcChi2NCl ()));
156+ std::min (posTrack.tpcChi2NCl (), negTrack.tpcChi2NCl ()),
157+ std::min (posTrack.itsChi2NCl (), negTrack.itsChi2NCl ()));
133158 }
134159 }
135160 }
0 commit comments