Skip to content

Commit cd0eaac

Browse files
committed
Adapt matching study to the Qvector tables
1 parent 8cbf54a commit cd0eaac

1 file changed

Lines changed: 31 additions & 4 deletions

File tree

‎PWGLF/TableProducer/Nuspex/nucleiSpectra.cxx‎

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,8 @@ std::shared_ptr<THnSparse> hFlowHists[2][5];
230230
std::shared_ptr<THnSparse> hDCAHists[2][5];
231231
std::shared_ptr<THnSparse> hMatchingStudy[2];
232232
std::shared_ptr<THn> hMatchingStudyHadrons[2];
233+
std::shared_ptr<THnSparse> hMatchingCountsHadrons;
234+
std::shared_ptr<THnSparse> hMatchingCountsHe3;
233235
o2::base::MatLayerCylSet* lut = nullptr;
234236

235237
std::vector<NucleusCandidate> candidates;
@@ -366,6 +368,7 @@ struct nucleiSpectra {
366368
ConfigurableAxis cfgNITSClusBins{"cfgNITSClusBins", {3, 4.5, 7.5}, "N ITS clusters binning"};
367369
ConfigurableAxis cfgNTPCClusBins{"cfgNTPCClusBins", {3, 89.5, 159.5}, "N TPC clusters binning"};
368370

371+
Configurable<bool> cfgMatchingCounts{"cfgMatchingCounts", false, "Enable event-level ITS-TPC matching counts for binomiality studies"};
369372
Configurable<bool> cfgSkimmedProcessing{"cfgSkimmedProcessing", false, "Skimmed dataset processing"};
370373
Configurable<std::string> cfgTriggerList{"cfgTriggerList", "fHe", "Trigger List"};
371374
Configurable<bool> cfgSelectTrgEv{"cfgSelectTrgEv", false, "If true, select events with active trigger list"};
@@ -601,6 +604,10 @@ struct nucleiSpectra {
601604
if (doprocessMatching) {
602605
std::vector<double> occBins{-0.5, 499.5, 999.5, 1999.5, 2999.5, 3999.5, 4999.5, 10000., 50000.};
603606
AxisSpec occAxis{occBins, "Occupancy"};
607+
if (cfgMatchingCounts) {
608+
nuclei::hMatchingCountsHadrons = spectra.add<THnSparse>("hMatchingCountsHadrons", ";N_{ITS};N_{ITS+TPC};Centrality;Occupancy;Charge sign", HistType::kTHnSparseD, {{10001, -0.5, 10000.5}, {10001, -0.5, 10000.5}, {8, 0., 80.}, occAxis, {2, -0.5, 1.5}});
609+
nuclei::hMatchingCountsHe3 = spectra.add<THnSparse>("hMatchingCountsHe3", ";N_{ITS};N_{ITS+TPC};Centrality;Occupancy;Charge sign", HistType::kTHnSparseD, {{10001, -0.5, 10000.5}, {10001, -0.5, 10000.5}, {8, 0., 80.}, occAxis, {2, -0.5, 1.5}});
610+
}
604611
for (unsigned int iC{0}; iC < nuclei::matter.size(); ++iC) {
605612
nuclei::hMatchingStudy[iC] = spectra.add<THnSparse>(fmt::format("hMatchingStudy{}", nuclei::matter[iC]).data(), ";#it{p}_{T};#phi;#eta;n#sigma_{ITS};n#sigma{TPC};n#sigma_{TOF};Centrality", HistType::kTHnSparseF, {{20, 1., 9.}, {10, 0., o2::constants::math::TwoPI}, {10, -1., 1.}, {50, -5., 5.}, {50, -5., 5.}, {50, 0., 1.}, {8, 0., 80.}});
606613
nuclei::hMatchingStudyHadrons[iC] = spectra.add<THn>(fmt::format("hMatchingStudyHadrons{}", nuclei::matter[iC]).data(), ";#it{p}_{T};#phi;#eta;Centrality;Track type; Occupancy", HistType::kTHnF, {{23, 0.4, 5.}, {20, 0., o2::constants::math::TwoPI}, {10, -1., 1.}, {8, 0., 80.}, {2, -0.5, 1.5}, occAxis});
@@ -1156,12 +1163,17 @@ struct nucleiSpectra {
11561163
}
11571164
PROCESS_SWITCH(nucleiSpectra, processMC, "MC analysis", false);
11581165

1159-
void processMatching(soa::Join<aod::Collisions, aod::EvSels, aod::EPCalibrationTables, aod::CentFT0Cs>::iterator const& collision, TrackCandidates const& tracks, aod::BCsWithTimestamps const&)
1166+
void processMatching(soa::Join<aod::Collisions, aod::EvSels, aod::QvectorFT0Cs, aod::CentFT0Cs>::iterator const& collision, TrackCandidates const& tracks, aod::BCsWithTimestamps const&)
11601167
{
1161-
if (!eventSelection(collision) || !collision.triggereventep()) {
1168+
if (!eventSelection(collision) || !collision.isCalibrated()) {
11621169
return;
11631170
}
11641171
const float centrality = collision.centFT0C();
1172+
const float psi2FT0C = std::atan2(collision.QvecFT0CIm(), collision.QvecFT0CRe()) / 2.f;
1173+
int nITSHadrons[2]{};
1174+
int nITSTPCHadrons[2]{};
1175+
int nITSHe3[2]{};
1176+
int nITSTPCHe3[2]{};
11651177
o2::aod::ITSResponse itsResponse;
11661178
for (const auto& track : tracks) {
11671179
if (std::abs(track.eta()) > cfgTrackCut.EtaMax ||
@@ -1173,13 +1185,28 @@ struct nucleiSpectra {
11731185
double expSigma{expBethe * cfgBetheBlochParams->get(4, 5u)};
11741186
double nSigmaTPC{(track.tpcSignal() - expBethe) / expSigma};
11751187
int iC = track.signed1Pt() > 0;
1188+
if (cfgMatchingCounts) {
1189+
++nITSHadrons[iC];
1190+
nITSTPCHadrons[iC] += track.hasTPC();
1191+
}
11761192
const float pt = track.pt();
1177-
const float phi = 2.f * RecoDecay::constrainAngle(track.phi() - collision.psiFT0C(), 0.f, 2);
1193+
const float phi = 2.f * RecoDecay::constrainAngle(track.phi() - psi2FT0C, 0.f, 2);
11781194
nuclei::hMatchingStudyHadrons[iC]->Fill(pt, phi, track.eta(), centrality, track.hasTPC(), collision.trackOccupancyInTimeRange());
1179-
if (itsResponse.nSigmaITS<o2::track::PID::Helium3>(track) > -1.) {
1195+
if (itsResponse.nSigmaITS<o2::track::PID::Helium3>(track) > -2.) {
1196+
if (cfgMatchingCounts) {
1197+
++nITSHe3[iC];
1198+
nITSTPCHe3[iC] += track.hasTPC();
1199+
}
11801200
nuclei::hMatchingStudy[iC]->Fill(pt * 2, phi, track.eta(), itsResponse.nSigmaITS<o2::track::PID::Helium3>(track), nSigmaTPC, o2::pid::tof::Beta::GetBeta(track), centrality);
11811201
}
11821202
}
1203+
if (cfgMatchingCounts) {
1204+
// One entry per collision and charge sign, including zero-track events.
1205+
for (unsigned int iC{0}; iC < nuclei::matter.size(); ++iC) {
1206+
nuclei::hMatchingCountsHadrons->Fill(nITSHadrons[iC], nITSTPCHadrons[iC], centrality, collision.trackOccupancyInTimeRange(), iC);
1207+
nuclei::hMatchingCountsHe3->Fill(nITSHe3[iC], nITSTPCHe3[iC], centrality, collision.trackOccupancyInTimeRange(), iC);
1208+
}
1209+
}
11831210
}
11841211

11851212
PROCESS_SWITCH(nucleiSpectra, processMatching, "Matching analysis", false);

0 commit comments

Comments
 (0)