88// In applying this license CERN does not waive the privileges and immunities
99// granted to it by virtue of its status as an Intergovernmental Organization
1010// or submit itself to any jurisdiction.
11- // / \file NucleitpcPbPb.cxx
12- // / \brief Analysis task for light nuclei spectra in Pb–Pb collisions using TPC
13- // / \author Jaideep Tanwar, <Jaideep.tanwar@cern.ch>
14- // / \since Jan 2025
1511// /
12+ // / \file NucleiTPCPbPb.cxx
13+ // /
14+ // / \brief This task use global tracks and used for primary selection analysis using TPC detector.
15+ // / It currently contemplates 6 particle types:
16+ // / pion, Proton, Deuteron, Triton, Helium3, Alpha
17+ // /
18+ // / \author Jaideep Tanwar
19+ // / \since Jan. 20, 2025
20+ // /
21+ #include < Math/Vector4D.h>
1622#include < limits>
1723#include < string>
1824#include < vector>
19- #include < Math/Vector4D.h>
2025#include < TRandom3.h>
2126#include " Framework/runDataProcessing.h"
2227#include " Framework/AnalysisTask.h"
@@ -42,7 +47,7 @@ using namespace o2;
4247using namespace o2 ::framework;
4348using namespace o2 ::framework::expressions;
4449using CollisionsFull = soa::Join<aod::Collisions, aod::EvSels, aod::CentFT0As, aod::CentFT0Cs, aod::CentFT0Ms, aod::CentFV0As>;
45- using TracksFull = soa::Join<aod::TracksIU, aod::TracksExtra, aod::TracksCovIU, o2::aod::TracksDCA, aod::pidTPCPi, aod::pidTPCPr, aod::pidTPCDe, aod::pidTPCTr, aod::pidTPCHe, aod::pidTPCAl, aod::pidTOFmass>;
50+ using TracksFull = soa::Join<aod::TracksIU, aod::TracksExtra, aod::TracksCovIU, o2::aod::TracksDCA, aod::TrackSelectionExtension, aod:: pidTPCPi, aod::pidTPCPr, aod::pidTPCDe, aod::pidTPCTr, aod::pidTPCHe, aod::pidTPCAl, aod::pidTOFmass>;
4651// ---------------------------------------------------------------------------------------------------------------------------------
4752namespace
4853{
@@ -97,12 +102,16 @@ struct NucleitpcPbPb {
97102 Configurable<bool > cfgRigidityCorrection{" cfgRigidityCorrection" , false , " apply rigidity correction" };
98103 Configurable<float > cfgCutEta{" cfgCutEta" , 0 .9f , " Eta range for tracks" };
99104 Configurable<bool > cfgUsePVcontributors{" cfgUsePVcontributors" , true , " use tracks that are PV contibutors" };
105+ Configurable<bool > cfgITSrequire{" cfgITSrequire" , true , " Additional cut on ITS require" };
106+ Configurable<bool > cfgTPCrequire{" cfgTPCrequire" , true , " Additional cut on TPC require" };
107+ Configurable<bool > cfgPassedITSRefit{" cfgPassedITSRefit" , true , " Require ITS refit" };
108+ Configurable<bool > cfgPassedTPCRefit{" cfgPassedTPCRefit" , true , " Require TPC refit" };
100109 Configurable<LabeledArray<double >> cfgBetheBlochParams{" cfgBetheBlochParams" , {betheBlochDefault[0 ], nParticles, nBetheParams, particleNames, betheBlochParNames}, " TPC Bethe-Bloch parameterisation for light nuclei" };
101110 Configurable<LabeledArray<double >> cfgTrackPIDsettings{" cfgTrackPIDsettings" , {trackPIDsettings[0 ], nParticles, nTrkSettings, particleNames, trackPIDsettingsNames}, " track selection and PID criteria" };
102111 Configurable<bool > cfgFillDeDxWithoutCut{" cfgFillDeDxWithoutCut" , false , " Fill without cut beth bloch" };
103112 Configurable<bool > cfgFillDeDxWithCut{" cfgFillDeDxWithCut" , false , " Fill with cut beth bloch" };
104- Configurable<bool > cfgFillnsigma{" cfgFillnsigma" , false , " Fill n-sigma histograms" };
105- Configurable<bool > cfgFillmass{" cfgFillmass" , true , " Fill mass histograms" };
113+ Configurable<bool > cfgFillnsigma{" cfgFillnsigma" , true , " Fill n-sigma histograms" };
114+ Configurable<bool > cfgFillmass{" cfgFillmass" , false , " Fill mass histograms" };
106115 Configurable<float > centcut{" centcut" , 80 .0f , " centrality cut" };
107116 Configurable<float > cfgCutRapidity{" cfgCutRapidity" , 0 .5f , " Rapidity range" };
108117 Configurable<float > cfgZvertex{" cfgZvertex" , 10 , " Min Z Vertex" };
@@ -193,23 +202,21 @@ struct NucleitpcPbPb {
193202 for (const auto & trackId : tracksByColl) {
194203 const auto & track = tracks.rawIteratorAt (trackId.trackId ());
195204 filldedx (track, nParticles);
205+ if (!track.isPVContributor () && cfgUsePVcontributors)
206+ continue ;
207+ if (!track.hasITS () && cfgITSrequire)
208+ continue ;
209+ if (!track.hasTPC () && cfgTPCrequire)
210+ continue ;
211+ if (!track.passedITSRefit () && cfgPassedITSRefit)
212+ continue ;
213+ if (!track.passedTPCRefit () && cfgPassedTPCRefit)
214+ continue ;
196215 if (std::abs (track.eta ()) > cfgCutEta)
197216 continue ;
198- histos.fill (HIST (" histeta" ), track.eta ());
199217 for (size_t i = 0 ; i < primaryParticles.size (); i++) {
200218 if (std::abs (getRapidity (track, i)) > cfgCutRapidity)
201219 continue ;
202- bool insideDCAxy = (std::abs (track.dcaXY ()) <= (cfgTrackPIDsettings->get (i, " maxDcaXY" ) * (0 .0105f + 0 .0350f / std::pow (track.pt (), 1 .1f ))));
203- if (!(insideDCAxy) || std::abs (track.dcaZ ()) > cfgTrackPIDsettings->get (i, " maxDcaZ" ))
204- continue ;
205- if (track.sign () > 0 ) {
206- histos.fill (HIST (" histDcaZVsPtData_particle" ), track.pt (), track.dcaZ ());
207- histos.fill (HIST (" histDcaXYVsPtData_particle" ), track.pt (), track.dcaXY ());
208- }
209- if (track.sign () < 0 ) {
210- histos.fill (HIST (" histDcaZVsPtData_antiparticle" ), track.pt (), track.dcaZ ());
211- histos.fill (HIST (" histDcaXYVsPtData_antiparticle" ), track.pt (), track.dcaXY ());
212- }
213220 if (track.tpcNClsFound () < cfgTrackPIDsettings->get (i, " minTPCnCls" ))
214221 continue ;
215222 if (track.tpcChi2NCl () > cfgTrackPIDsettings->get (i, " maxTPCchi2" ))
@@ -231,7 +238,19 @@ struct NucleitpcPbPb {
231238 continue ;
232239 if (cfgTrackPIDsettings->get (i, " TOFrequiredabove" ) >= 0 && getRigidity (track) > cfgTrackPIDsettings->get (i, " TOFrequiredabove" ) && (track.mass () < cfgTrackPIDsettings->get (i, " minTOFmass" ) || track.mass () > cfgTrackPIDsettings->get (i, " maxTOFmass" )))
233240 continue ;
241+ bool insideDCAxy = (std::abs (track.dcaXY ()) <= (cfgTrackPIDsettings->get (i, " maxDcaXY" ) * (0 .0105f + 0 .0350f / std::pow (track.pt (), 1 .1f ))));
242+ if (!(insideDCAxy) || std::abs (track.dcaZ ()) > cfgTrackPIDsettings->get (i, " maxDcaZ" ))
243+ continue ;
244+ if (track.sign () > 0 ) {
245+ histos.fill (HIST (" histDcaZVsPtData_particle" ), track.pt (), track.dcaZ ());
246+ histos.fill (HIST (" histDcaXYVsPtData_particle" ), track.pt (), track.dcaXY ());
247+ }
248+ if (track.sign () < 0 ) {
249+ histos.fill (HIST (" histDcaZVsPtData_antiparticle" ), track.pt (), track.dcaZ ());
250+ histos.fill (HIST (" histDcaXYVsPtData_antiparticle" ), track.pt (), track.dcaXY ());
251+ }
234252 }
253+ histos.fill (HIST (" histeta" ), track.eta ());
235254 } // track loop
236255 }
237256 // ----------------------------------------------------------------------------------------------------------------
0 commit comments