@@ -178,7 +178,7 @@ struct AntinucleiInJets {
178178 registryData.add (" antiproton_ue_tof" , " antiproton_ue_tof" , HistType::kTH2F , {{nbins, min, max, " #it{p}_{T} (GeV/#it{c})" }, {400 , -20.0 , 20.0 , " n#sigma_{TOF}" }});
179179 registryData.add (" antiproton_dca_jet" , " antiproton_dca_jet" , HistType::kTH2F , {{nbins, min, max, " #it{p}_{T} (GeV/#it{c})" }, {200 , -0.5 , 0.5 , " DCA_{xy} (cm)" }});
180180 registryData.add (" antiproton_dca_ue" , " antiproton_dca_ue" , HistType::kTH2F , {{nbins, min, max, " #it{p}_{T} (GeV/#it{c})" }, {200 , -0.5 , 0.5 , " DCA_{xy} (cm)" }});
181-
181+
182182 // antideuterons
183183 registryData.add (" antideuteron_jet_tpc" , " antideuteron_jet_tpc" , HistType::kTH2F , {{nbins, min * 2 , max * 2 , " #it{p}_{T} (GeV/#it{c})" }, {400 , -20.0 , 20.0 , " n#sigma_{TPC}" }});
184184 registryData.add (" antideuteron_jet_tof" , " antideuteron_jet_tof" , HistType::kTH2F , {{nbins, min * 2 , max * 2 , " #it{p}_{T} (GeV/#it{c})" }, {400 , -20.0 , 20.0 , " n#sigma_{TOF}" }});
@@ -197,7 +197,7 @@ struct AntinucleiInJets {
197197 registryData.add (" helium3_jet_tpc" , " helium3_jet_tpc" , HistType::kTH2F , {{nbins, min * 3 , max * 3 , " #it{p}_{T} (GeV/#it{c})" }, {400 , -20.0 , 20.0 , " n#sigma_{TPC}" }});
198198 registryData.add (" helium3_ue_tpc" , " helium3_ue_tpc" , HistType::kTH2F , {{nbins, min * 3 , max * 3 , " #it{p}_{T} (GeV/#it{c})" }, {400 , -20.0 , 20.0 , " n#sigma_{TPC}" }});
199199
200- // systematic variations
200+ // systematic variations
201201 registryData.add (" antiproton_tpc_syst" , " antiproton_tpc_syst" , HistType::kTHnSparseF , {{nbins, min, max, " #it{p}_{T} (GeV/#it{c})" }, {400 , -20.0 , 20.0 , " n#sigma_{TPC}" }, {10 , 0 , 10 , " systematic uncertainty" }});
202202 registryData.add (" antiproton_tof_syst" , " antiproton_tof_syst" , HistType::kTHnSparseF , {{nbins, min, max, " #it{p}_{T} (GeV/#it{c})" }, {400 , -20.0 , 20.0 , " n#sigma_{TOF}" }, {10 , 0 , 10 , " systematic uncertainty" }});
203203 registryData.add (" antideuteron_tpc_syst" , " antideuteron_tpc_syst" , HistType::kTHnSparseF , {{nbins, min * 2 , max * 2 , " #it{p}_{T} (GeV/#it{c})" }, {400 , -20.0 , 20.0 , " n#sigma_{TPC}" }, {10 , 0 , 10 , " systematic uncertainty" }});
@@ -1179,134 +1179,133 @@ struct AntinucleiInJets {
11791179 }
11801180 PROCESS_SWITCH (AntinucleiInJets, processJetsMCrec, " process jets MC rec" , false );
11811181
1182+ // Process Systematics
1183+ void processSystematicsData (SelectedCollisions::iterator const & collision, FullNucleiTracks const & tracks)
1184+ {
1185+ const int nSystematics = 10 ;
1186+ int itsNclustersSyst[nSystematics] = {5 , 6 , 5 , 4 , 5 , 3 , 5 , 6 , 3 , 4 };
1187+ float tpcNcrossedRowsSyst[nSystematics] = {100 , 85 , 80 , 110 , 95 , 90 , 105 , 95 , 100 , 105 };
1188+ float dcaxySyst[nSystematics] = {0.05 , 0.07 , 0.10 , 0.03 , 0.06 , 0.15 , 0.08 , 0.04 , 0.09 , 0.10 };
1189+ float dcazSyst[nSystematics] = {0.1 , 0.15 , 0.3 , 0.075 , 0.12 , 0.18 , 0.2 , 0.1 , 0.15 , 0.2 };
11821190
1183- // Process Systematics
1184- void processSystematicsData (SelectedCollisions::iterator const & collision, FullNucleiTracks const & tracks)
1185- {
1186- const int nSystematics = 10 ;
1187- int itsNclustersSyst[nSystematics] = {5 , 6 , 5 , 4 , 5 , 3 , 5 , 6 , 3 , 4 };
1188- float tpcNcrossedRowsSyst[nSystematics] = {100 , 85 , 80 , 110 , 95 , 90 , 105 , 95 , 100 , 105 };
1189- float dcaxySyst[nSystematics] = {0.05 , 0.07 , 0.10 , 0.03 , 0.06 , 0.15 , 0.08 , 0.04 , 0.09 , 0.10 };
1190- float dcazSyst[nSystematics] = {0.1 , 0.15 , 0.3 , 0.075 , 0.12 , 0.18 , 0.2 , 0.1 , 0.15 , 0.2 };
1191-
1192- // event selection
1193- if (!collision.sel8 () || std::fabs (collision.posZ ()) > zVtx)
1194- return ;
1191+ // event selection
1192+ if (!collision.sel8 () || std::fabs (collision.posZ ()) > zVtx)
1193+ return ;
11951194
1196- // loop over reconstructed tracks
1197- int id (-1 );
1198- std::vector<fastjet::PseudoJet> fjParticles;
1199- for (auto const & track : tracks) {
1200- id++;
1201- if (!passedTrackSelectionForJetReconstruction (track))
1202- continue ;
1203-
1204- // 4-momentum representation of a particle
1205- fastjet::PseudoJet fourMomentum (track.px (), track.py (), track.pz (), track.energy (MassPionCharged));
1206- fourMomentum.set_user_index (id);
1207- fjParticles.emplace_back (fourMomentum);
1208- }
1195+ // loop over reconstructed tracks
1196+ int id (-1 );
1197+ std::vector<fastjet::PseudoJet> fjParticles;
1198+ for (auto const & track : tracks) {
1199+ id++;
1200+ if (!passedTrackSelectionForJetReconstruction (track))
1201+ continue ;
12091202
1210- // reject empty events
1211- if (fjParticles.size () < 1 )
1212- return ;
1203+ // 4-momentum representation of a particle
1204+ fastjet::PseudoJet fourMomentum (track.px (), track.py (), track.pz (), track.energy (MassPionCharged));
1205+ fourMomentum.set_user_index (id);
1206+ fjParticles.emplace_back (fourMomentum);
1207+ }
12131208
1214- // cluster particles using the anti-kt algorithm
1215- fastjet::JetDefinition jetDef (fastjet::antikt_algorithm, rJet);
1216- fastjet::AreaDefinition areaDef (fastjet::active_area, fastjet::GhostedAreaSpec (1.0 )); // active_area_explicit_ghosts
1217- fastjet::ClusterSequenceArea cs (fjParticles, jetDef, areaDef);
1218- std::vector<fastjet::PseudoJet> jets = fastjet::sorted_by_pt (cs.inclusive_jets ());
1219- auto [rhoPerp, rhoMPerp] = backgroundSub.estimateRhoPerpCone (fjParticles, jets);
1209+ // reject empty events
1210+ if (fjParticles.size () < 1 )
1211+ return ;
12201212
1221- // loop over reconstructed jets
1222- for (auto & jet : jets) {
1213+ // cluster particles using the anti-kt algorithm
1214+ fastjet::JetDefinition jetDef (fastjet::antikt_algorithm, rJet);
1215+ fastjet::AreaDefinition areaDef (fastjet::active_area, fastjet::GhostedAreaSpec (1.0 )); // active_area_explicit_ghosts
1216+ fastjet::ClusterSequenceArea cs (fjParticles, jetDef, areaDef);
1217+ std::vector<fastjet::PseudoJet> jets = fastjet::sorted_by_pt (cs.inclusive_jets ());
1218+ auto [rhoPerp, rhoMPerp] = backgroundSub.estimateRhoPerpCone (fjParticles, jets);
12231219
1224- // jet must be fully contained in the acceptance
1225- if ((std::fabs (jet.eta ()) + rJet) > (maxEta - deltaEtaEdge))
1226- continue ;
1220+ // loop over reconstructed jets
1221+ for (auto & jet : jets) {
12271222
1228- // jet pt must be larger than threshold
1229- fastjet::PseudoJet jetMinusBkg = backgroundSub.doRhoAreaSub (jet, rhoPerp, rhoMPerp);
1230- if (getCorrectedPt (jetMinusBkg.pt ()) < minJetPt)
1231- continue ;
1223+ // jet must be fully contained in the acceptance
1224+ if ((std::fabs (jet.eta ()) + rJet) > (maxEta - deltaEtaEdge))
1225+ continue ;
12321226
1233- // get jet constituents
1234- std::vector<fastjet::PseudoJet> jetConstituents = jet.constituents ();
1235- o2::aod::ITSResponse itsResponse;
1227+ // jet pt must be larger than threshold
1228+ fastjet::PseudoJet jetMinusBkg = backgroundSub.doRhoAreaSub (jet, rhoPerp, rhoMPerp);
1229+ if (getCorrectedPt (jetMinusBkg.pt ()) < minJetPt)
1230+ continue ;
12361231
1237- // loop over jet constituents
1238- for (const auto & particle : jetConstituents) {
1239- for (int i = 0 ; i < nSystematics; i++) {
1240- // get corresponding track and apply track selection criteria
1241- auto const & track = tracks.iteratorAt (particle.user_index ());
1242-
1243- // variables
1244- double nsigmaTPCPr = track.tpcNSigmaPr ();
1245- double nsigmaTOFPr = track.tofNSigmaPr ();
1246- double nsigmaTPCDe = track.tpcNSigmaDe ();
1247- double nsigmaTOFDe = track.tofNSigmaDe ();
1248- double pt = track.pt ();
1249- double dcaxy = track.dcaXY ();
1250- double dcaz = track.dcaZ ();
1232+ // get jet constituents
1233+ std::vector<fastjet::PseudoJet> jetConstituents = jet.constituents ();
1234+ o2::aod::ITSResponse itsResponse;
12511235
1252- if (requirePvContributor && !(track.isPVContributor ()))
1253- continue ;
1254- if (!track.hasITS ())
1255- continue ;
1256- if (track.itsNCls () < itsNclustersSyst[i])
1257- continue ;
1258- if (!track.hasTPC ())
1259- continue ;
1260- if (track.tpcNClsCrossedRows () < tpcNcrossedRowsSyst[i])
1261- continue ;
1262- if ((static_cast <double >(track.tpcNClsCrossedRows ()) / static_cast <double >(track.tpcNClsFindable ())) < minTpcNcrossedRowsOverFindable)
1263- continue ;
1264- if (track.tpcChi2NCl () > maxChiSquareTpc)
1265- continue ;
1266- if (track.itsChi2NCl () > maxChiSquareIts)
1267- continue ;
1268- if (track.eta () < minEta || track.eta () > maxEta)
1269- continue ;
1270- if (track.pt () < minPt)
1271- continue ;
1272- if (std::fabs (dcaxy) > dcaxySyst[i])
1273- continue ;
1274- if (std::fabs (dcaz) > dcazSyst[i])
1275- continue ;
1236+ // loop over jet constituents
1237+ for (const auto & particle : jetConstituents) {
1238+ for (int i = 0 ; i < nSystematics; i++) {
1239+ // get corresponding track and apply track selection criteria
1240+ auto const & track = tracks.iteratorAt (particle.user_index ());
12761241
1277- bool passedItsPidProt (false ), passedItsPidDeut (false );
1278- if (itsResponse.nSigmaITS <o2::track::PID::Proton>(track) > nSigmaItsMin && itsResponse.nSigmaITS <o2::track::PID::Proton>(track) < nSigmaItsMax) {
1279- passedItsPidProt = true ;
1280- }
1281- if (itsResponse.nSigmaITS <o2::track::PID::Deuteron>(track) > nSigmaItsMin && itsResponse.nSigmaITS <o2::track::PID::Deuteron>(track) < nSigmaItsMax) {
1282- passedItsPidDeut = true ;
1283- }
1284- if (!applyItsPid) {
1285- passedItsPidProt = true ;
1286- passedItsPidDeut = true ;
1287- }
1288- if (pt > ptMaxItsPidProt)
1289- passedItsPidProt = true ;
1290- if (pt > ptMaxItsPidDeut)
1291- passedItsPidDeut = true ;
1292-
1293- // antimatter
1294- if (track.sign () < 0 ) {
1295- if (passedItsPidProt) {
1296- registryData.fill (HIST (" antiproton_tpc_syst" ), pt, nsigmaTPCPr, i);
1297- if (nsigmaTPCPr > minNsigmaTpc && nsigmaTPCPr < maxNsigmaTpc && track.hasTOF ())
1298- registryData.fill (HIST (" antiproton_tof_syst" ), pt, nsigmaTOFPr, i);
1242+ // variables
1243+ double nsigmaTPCPr = track.tpcNSigmaPr ();
1244+ double nsigmaTOFPr = track.tofNSigmaPr ();
1245+ double nsigmaTPCDe = track.tpcNSigmaDe ();
1246+ double nsigmaTOFDe = track.tofNSigmaDe ();
1247+ double pt = track.pt ();
1248+ double dcaxy = track.dcaXY ();
1249+ double dcaz = track.dcaZ ();
1250+
1251+ if (requirePvContributor && !(track.isPVContributor ()))
1252+ continue ;
1253+ if (!track.hasITS ())
1254+ continue ;
1255+ if (track.itsNCls () < itsNclustersSyst[i])
1256+ continue ;
1257+ if (!track.hasTPC ())
1258+ continue ;
1259+ if (track.tpcNClsCrossedRows () < tpcNcrossedRowsSyst[i])
1260+ continue ;
1261+ if ((static_cast <double >(track.tpcNClsCrossedRows ()) / static_cast <double >(track.tpcNClsFindable ())) < minTpcNcrossedRowsOverFindable)
1262+ continue ;
1263+ if (track.tpcChi2NCl () > maxChiSquareTpc)
1264+ continue ;
1265+ if (track.itsChi2NCl () > maxChiSquareIts)
1266+ continue ;
1267+ if (track.eta () < minEta || track.eta () > maxEta)
1268+ continue ;
1269+ if (track.pt () < minPt)
1270+ continue ;
1271+ if (std::fabs (dcaxy) > dcaxySyst[i])
1272+ continue ;
1273+ if (std::fabs (dcaz) > dcazSyst[i])
1274+ continue ;
1275+
1276+ bool passedItsPidProt (false ), passedItsPidDeut (false );
1277+ if (itsResponse.nSigmaITS <o2::track::PID::Proton>(track) > nSigmaItsMin && itsResponse.nSigmaITS <o2::track::PID::Proton>(track) < nSigmaItsMax) {
1278+ passedItsPidProt = true ;
12991279 }
1300- if (passedItsPidDeut) {
1301- registryData.fill (HIST (" antideuteron_tpc_syst" ), pt, nsigmaTPCDe, i);
1302- if (nsigmaTPCDe > minNsigmaTpc && nsigmaTPCDe < maxNsigmaTpc && track.hasTOF ())
1303- registryData.fill (HIST (" antideuteron_tof_syst" ), pt, nsigmaTOFDe, i);
1280+ if (itsResponse.nSigmaITS <o2::track::PID::Deuteron>(track) > nSigmaItsMin && itsResponse.nSigmaITS <o2::track::PID::Deuteron>(track) < nSigmaItsMax) {
1281+ passedItsPidDeut = true ;
1282+ }
1283+ if (!applyItsPid) {
1284+ passedItsPidProt = true ;
1285+ passedItsPidDeut = true ;
1286+ }
1287+ if (pt > ptMaxItsPidProt)
1288+ passedItsPidProt = true ;
1289+ if (pt > ptMaxItsPidDeut)
1290+ passedItsPidDeut = true ;
1291+
1292+ // antimatter
1293+ if (track.sign () < 0 ) {
1294+ if (passedItsPidProt) {
1295+ registryData.fill (HIST (" antiproton_tpc_syst" ), pt, nsigmaTPCPr, i);
1296+ if (nsigmaTPCPr > minNsigmaTpc && nsigmaTPCPr < maxNsigmaTpc && track.hasTOF ())
1297+ registryData.fill (HIST (" antiproton_tof_syst" ), pt, nsigmaTOFPr, i);
1298+ }
1299+ if (passedItsPidDeut) {
1300+ registryData.fill (HIST (" antideuteron_tpc_syst" ), pt, nsigmaTPCDe, i);
1301+ if (nsigmaTPCDe > minNsigmaTpc && nsigmaTPCDe < maxNsigmaTpc && track.hasTOF ())
1302+ registryData.fill (HIST (" antideuteron_tof_syst" ), pt, nsigmaTOFDe, i);
1303+ }
13041304 }
13051305 }
13061306 }
13071307 }
13081308 }
1309- }
13101309 PROCESS_SWITCH (AntinucleiInJets, processSystematicsData, " Process Systematics" , false );
13111310};
13121311
0 commit comments