@@ -197,7 +197,7 @@ struct AntinucleiInJets {
197
197
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}" }});
198
198
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}" }});
199
199
200
- // systematic variations
200
+ // systematic variations
201
201
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" }});
202
202
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" }});
203
203
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 {
1179
1179
}
1180
1180
PROCESS_SWITCH (AntinucleiInJets, processJetsMCrec, " process jets MC rec" , false );
1181
1181
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 };
1182
1190
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 ;
1195
1194
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 ;
1209
1202
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
+ }
1213
1208
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 ;
1220
1212
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);
1223
1219
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) {
1227
1222
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 ;
1232
1226
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 ;
1236
1231
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 ());
1232
+ // get jet constituents
1233
+ std::vector<fastjet::PseudoJet> jetConstituents = jet.constituents ();
1234
+ o2::aod::ITSResponse itsResponse;
1242
1235
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 ();
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 ());
1251
1241
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 ;
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 ();
1276
1250
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 ;
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 ;
1292
1275
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);
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 ;
1299
1279
}
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
+ }
1304
1304
}
1305
1305
}
1306
1306
}
1307
1307
}
1308
1308
}
1309
- }
1310
1309
PROCESS_SWITCH (AntinucleiInJets, processSystematicsData, " Process Systematics" , false );
1311
1310
};
1312
1311
0 commit comments