@@ -40,10 +40,19 @@ struct SystematicsMapping {
4040 ConfigurableAxis invariantMassBins{" invariantMassBins" , {100 , -0 .1f , 0 .1f }, " Binning for the invariant mass (GeV/c^2)" };
4141 ConfigurableAxis nsigmaBins{" nsigmaBins" , {100 , -10 .f , 10 .f }, " Binning for nSigma" };
4242 // Selection bins
43- ConfigurableAxis tpcClusterBins{ " tpcClusterBins " , {5 , 70 , 100 , 120 , 135 , 150 }, " Min TPC clusters for tracks" };
43+ ConfigurableAxis tpcCrossedRowsBins{ " tpcCrossedRowsBins " , {5 , 70 , 100 , 120 , 135 , 150 }, " Min TPC clusters for tracks" };
4444 ConfigurableAxis itsClustersBins{" itsClustersBins" , {5 , 0 , 6 }, " Min ITS clusters for tracks" };
45+ ConfigurableAxis dcaBins{" dcaBins" , {100 , 0 .f , 5 .f }, " Binning for DCA (cm)" };
46+ ConfigurableAxis chi2Bins{" chi2Bins" , {100 , 0 .f , 100 .f }, " Binning for chi2" };
4547 // Selection configurables
4648 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" };
4756
4857 HistogramRegistry registry{" registry" };
4958
@@ -58,28 +67,41 @@ struct SystematicsMapping {
5867 const AxisSpec ptAxis{ptBins, " #it{p}_{T} (GeV/c)" };
5968 const AxisSpec etaAxis{etaBins, " #eta" };
6069 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" };
6179
6280 if (doprocessData) {
6381
6482 // First we define the histograms on which we are cutting (tpc clusters, its clusters, ..)
65- registry.add (" K/hTPCClusters " , " " , HistType::kTH1F , {{100 , 0 , 200 }});
83+ registry.add (" K/hTPCCrossedRows " , " " , HistType::kTH1F , {{100 , 0 , 200 }});
6684 registry.add (" K/hITSClusters" , " " , HistType::kTH1F , {{10 , 0 , 10 }});
85+ registry.add (" K/hDCAxy" , " " , HistType::kTH1F , {dcaBins});
86+ registry.add (" K/hDCAz" , " " , HistType::kTH1F , {dcaBins});
87+ registry.add (" K/hChi2OverNCLsTPC" , " " , HistType::kTH1F , {chi2Bins});
88+ registry.add (" K/hChi2OverNCLsITS" , " " , HistType::kTH1F , {chi2Bins});
6789 registry.addClone (" K/" , " K0s/" );
6890
6991 // Add the signal histograms
70- registry.add (" K/SignalPositive" , " " , HistType::kTHnSparseF , {ptBins, etaBins, phiBins, nsigmaBins, tpcClusterBins, itsClustersBins });
71- registry.add (" K/SignalNegative" , " " , HistType::kTHnSparseF , {ptBins, etaBins, phiBins, nsigmaBins, tpcClusterBins, itsClustersBins });
72- registry.add (" K0s/Signal" , " " , HistType::kTHnSparseF , {ptBins, etaBins, phiBins , invariantMassBins, tpcClusterBins, itsClustersBins });
92+ registry.add (" K/SignalPositive" , " " , HistType::kTHnSparseF , {ptAxis, etaAxis, phiAxis, nsigmaAxisTPC, nsigmaAxisTOF, tpcCrossedRowsAxis, itsClustersAxis, dcaXYAxis, dcaZAxis, chi2TPCAxis, chi2ITSAxis });
93+ registry.add (" K/SignalNegative" , " " , HistType::kTHnSparseF , {ptAxis, etaAxis, phiAxis, nsigmaAxisTPC, nsigmaAxisTOF, tpcCrossedRowsAxis, itsClustersAxis, dcaXYAxis, dcaZAxis, chi2TPCAxis, chi2ITSAxis });
94+ registry.add (" K0s/Signal" , " " , HistType::kTHnSparseF , {ptAxis, etaAxis, phiAxis , invariantMassBins, nsigmaAxisTPC, nsigmaAxisTOF, tpcCrossedRowsAxis, itsClustersAxis, dcaXYAxis, dcaZAxis, chi2TPCAxis, chi2ITSAxis });
7395 }
7496
7597 if (doprocessMc) {
76- registry.add (" K/GeneratedPositive" , " " , HistType::kTHnSparseF , {ptBins, etaBins, phiBins });
77- registry.add (" K/GeneratedNegative" , " " , HistType::kTHnSparseF , {ptBins, etaBins, phiBins });
78- 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 });
79101 }
80102 }
81103
82- using TrackType = soa::Join<aod::Tracks, aod::TracksExtra, aod::pidTPCFullKa , aod::pidTOFFullPi>;
104+ using TrackType = soa::Join<aod::Tracks, aod::TracksExtra, aod::pidTPCFullPi , aod::pidTOFFullPi, aod::pidTPCFullKa, aod::pidTOFFullKa, aod::TracksDCA >;
83105 using CollisionType = soa::Join<aod::Collisions, aod::EvSels>;
84106
85107 void processData (CollisionType const & collisions,
@@ -94,21 +116,45 @@ struct SystematicsMapping {
94116 for (const auto & track : tracks) {
95117 if (track.collisionId () != collision.globalIndex ())
96118 continue ;
97- registry.fill (HIST (" hTPCClusters" ), track.tpcNClsFound ());
98- registry.fill (HIST (" hITSClusters" ), track.itsNCls ());
119+ registry.fill (HIST (" K/hTPCCrossedRows" ), track.tpcNClsCrossedRows ());
120+ registry.fill (HIST (" K/hITSClusters" ), track.itsNCls ());
121+ registry.fill (HIST (" K/hDCAxy" ), track.dcaXY ());
122+ registry.fill (HIST (" K/hDCAz" ), track.dcaZ ());
123+ registry.fill (HIST (" K/hChi2OverNCLsTPC" ), track.tpcChi2NCl ());
124+ registry.fill (HIST (" K/hChi2OverNCLsITS" ), track.itsChi2NCl ());
99125 if (track.sign () > 0 )
100- registry.fill (HIST (" K/SignalPositive" ), track.pt (), track.eta (), track.phi (), track.tpcNSigmaKa (), track.tpcNClsFound (), track.itsNCls ());
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 ());
101127 else
102- registry.fill (HIST (" K/SignalNegative" ), track.pt (), track.eta (), track.phi (), track.tpcNSigmaKa (), track.tpcNClsFound (), track.itsNCls ());
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 ());
103129 }
104130
105131 // K0s loop
106132 for (const auto & v0 : v0s) {
107133 if (v0.collisionId () != collision.globalIndex ())
108134 continue ;
135+
109136 const auto & posTrack = v0.posTrack_as <TrackType>();
110137 const auto & negTrack = v0.negTrack_as <TrackType>();
111- registry.fill (HIST (" K0s/Signal" ), v0.pt (), v0.eta (), v0.phi (), v0.mK0Short () - constants::physics::MassK0Short, std::min (posTrack.tpcNClsFound (), negTrack.tpcNClsFound ()), std::min (posTrack.itsNCls (), negTrack.itsNCls ()));
138+ if (v0.v0radius () < v0radius ||
139+ v0.v0cosPA () < v0cospa ||
140+ std::abs (posTrack.eta ()) > etadau ||
141+ std::abs (negTrack.eta ()) > etadau)
142+ continue ;
143+ registry.fill (HIST (" K0s/hTPCCrossedRows" ), std::min (posTrack.tpcNClsCrossedRows (), negTrack.tpcNClsCrossedRows ()));
144+ registry.fill (HIST (" K0s/hITSClusters" ), std::min (posTrack.itsNCls (), negTrack.itsNCls ()));
145+ registry.fill (HIST (" K0s/hDCAxy" ), std::min (posTrack.dcaXY (), negTrack.dcaXY ()));
146+ registry.fill (HIST (" K0s/hDCAz" ), std::min (posTrack.dcaZ (), negTrack.dcaZ ()));
147+ registry.fill (HIST (" K0s/hChi2OverNCLsTPC" ), std::min (posTrack.tpcChi2NCl (), negTrack.tpcChi2NCl ()));
148+ registry.fill (HIST (" K0s/hChi2OverNCLsITS" ), std::min (posTrack.itsChi2NCl (), negTrack.itsChi2NCl ()));
149+ 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 ()),
152+ std::min (posTrack.tpcNClsCrossedRows (), negTrack.tpcNClsCrossedRows ()),
153+ std::min (posTrack.itsNCls (), negTrack.itsNCls ()),
154+ std::min (posTrack.dcaXY (), negTrack.dcaXY ()),
155+ std::min (posTrack.dcaZ (), negTrack.dcaZ ()),
156+ std::min (posTrack.tpcChi2NCl (), negTrack.tpcChi2NCl ()),
157+ std::min (posTrack.itsChi2NCl (), negTrack.itsChi2NCl ()));
112158 }
113159 }
114160 }
0 commit comments