Skip to content

Commit f0c0f1b

Browse files
authored
[PWGCF] jFlucEfficiencyTask - Add process for Run2 QA (#10450)
1 parent 40a05c8 commit f0c0f1b

File tree

1 file changed

+101
-0
lines changed

1 file changed

+101
-0
lines changed

PWGCF/JCorran/Tasks/jFlucEfficiencyTask.cxx

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,10 @@ struct JFlucEfficiencyTask {
102102

103103
Configurable<int> cfgCentBinsForMC{"cfgCentBinsForMC", 1, "Centrality bins for MC, 0: off, 1: on"};
104104
using CollisionCandidates = soa::Join<aod::Collisions, aod::EvSels, aod::CentFT0Ms, aod::CentFT0Cs, aod::CentFT0As>;
105+
using CollisionRun2Candidates = soa::Join<aod::Collisions, aod::EvSels, aod::CentRun2V0Ms>;
105106
using TrackCandidates = soa::Join<aod::FullTracks, aod::TracksExtra, aod::TrackSelection>;
106107
using MCCollisionCandidates = soa::Join<CollisionCandidates, aod::McCollisionLabel>;
108+
using MCRun2CollisionCandidates = soa::Join<CollisionRun2Candidates, aod::McCollisionLabel>;
107109
using MCTrackCandidates = soa::Join<TrackCandidates, aod::McTrackLabel>;
108110

109111
// Histogram Registry
@@ -325,6 +327,78 @@ struct JFlucEfficiencyTask {
325327
}
326328
}
327329

330+
void processMCRun2(aod::McCollisions::iterator const& mcCollision,
331+
soa::SmallGroups<MCRun2CollisionCandidates> const& collisions,
332+
soa::Filtered<MCTrackCandidates> const& mcTracks,
333+
aod::McParticles const& mcParticles)
334+
{
335+
registry.fill(HIST("hEventCounterMC"), 0);
336+
if (!(std::abs(mcCollision.posZ()) < cfgCutVertex)) {
337+
return;
338+
}
339+
if (collisions.size() < 1) {
340+
return;
341+
}
342+
if (cfgAcceptSplitCollisions == 0 && collisions.size() > 1) {
343+
return;
344+
}
345+
float centrality = -999;
346+
for (const auto& collision : collisions) { // Anayway only 1 collision per mcCollision will be selected
347+
if (!colCuts.isSelected(collision)) // Default event selection
348+
return;
349+
colCuts.fillQARun2(collision);
350+
centrality = collision.centRun2V0M();
351+
}
352+
registry.fill(HIST("hEventCounterMC"), 1);
353+
registry.fill(HIST("hZVertexMC"), mcCollision.posZ(), centrality);
354+
if (centrality < cfgCentMin || centrality > cfgCentMax) {
355+
return;
356+
}
357+
for (const auto& particle : mcParticles) {
358+
auto charge = getCharge(particle);
359+
if ((!particle.isPhysicalPrimary()) || !isChargedParticle(particle.pdgCode())) {
360+
continue;
361+
}
362+
// pT and eta selections
363+
if (particle.pt() < cfgPtMin || particle.pt() > cfgPtMax || particle.eta() < cfgEtaMin || particle.eta() > cfgEtaMax) {
364+
continue;
365+
}
366+
registry.fill(HIST("hPtGen"), particle.pt(), centrality);
367+
registry.fill(HIST("hEtaGen"), particle.eta(), centrality);
368+
if (charge > 0) { // Positive particles
369+
registry.fill(HIST("hPtGenPos"), particle.pt(), centrality);
370+
} else if (charge < 0) { // Negative particles
371+
registry.fill(HIST("hPtGenNeg"), particle.pt(), centrality);
372+
}
373+
}
374+
// Reconstruct tracks from MC particles
375+
for (const auto& collision : collisions) {
376+
registry.fill(HIST("hZVertexReco"), collision.posZ(), centrality);
377+
registry.fill(HIST("hZVertexCorrelation"), mcCollision.posZ(), collision.posZ());
378+
auto tracks = mcTracks.sliceBy(perCollision, collision.globalIndex());
379+
for (const auto& track : tracks) {
380+
if (!track.has_mcParticle()) {
381+
continue;
382+
}
383+
auto mcPart = track.mcParticle();
384+
if (!mcPart.isPhysicalPrimary() || !isChargedParticle(mcPart.pdgCode())) {
385+
continue;
386+
}
387+
// pT and eta selections
388+
if (track.pt() < cfgPtMin || track.pt() > cfgPtMax || track.eta() < cfgEtaMin || track.eta() > cfgEtaMax) {
389+
continue;
390+
}
391+
registry.fill(HIST("hPtRec"), track.pt(), centrality);
392+
registry.fill(HIST("hEtaRec"), track.eta(), centrality);
393+
if (track.sign() > 0) { // Positive tracks
394+
registry.fill(HIST("hPtRecPos"), track.pt(), centrality);
395+
} else if (track.sign() < 0) { // Negative tracks
396+
registry.fill(HIST("hPtRecNeg"), track.pt(), centrality);
397+
}
398+
}
399+
}
400+
}
401+
328402
void processData(CollisionCandidates::iterator const& collision, soa::Filtered<TrackCandidates> const& tracks)
329403
{
330404
if (!colCuts.isSelected(collision)) // Default event selection
@@ -350,6 +424,31 @@ struct JFlucEfficiencyTask {
350424
}
351425
}
352426

427+
void processDataRun2(CollisionRun2Candidates::iterator const& collision, soa::Filtered<TrackCandidates> const& tracks)
428+
{
429+
if (!colCuts.isSelected(collision)) // Default event selection
430+
return;
431+
colCuts.fillQARun2(collision);
432+
auto centrality = collision.centRun2V0M();
433+
if (centrality < cfgCentMin || centrality > cfgCentMax) {
434+
return;
435+
}
436+
registry.fill(HIST("hZVertexReco"), collision.posZ(), centrality);
437+
for (const auto& track : tracks) {
438+
// pT and eta selections
439+
if (track.pt() < cfgPtMin || track.pt() > cfgPtMax || track.eta() < cfgEtaMin || track.eta() > cfgEtaMax) {
440+
continue;
441+
}
442+
registry.fill(HIST("hPtRec"), track.pt(), centrality);
443+
registry.fill(HIST("hEtaRec"), track.eta(), centrality);
444+
if (track.sign() > 0) { // Positive tracks
445+
registry.fill(HIST("hPtRecPos"), track.pt(), centrality);
446+
} else if (track.sign() < 0) { // Negative tracks
447+
registry.fill(HIST("hPtRecNeg"), track.pt(), centrality);
448+
}
449+
}
450+
}
451+
353452
// NOTE SmallGroups includes soa::Filtered always
354453
Preslice<aod::CFTracksWithLabel> perCFCollision = aod::cftrack::cfCollisionId;
355454
void processEfficiency(soa::Filtered<aod::CFMcCollisions>::iterator const& mcCollision,
@@ -455,7 +554,9 @@ struct JFlucEfficiencyTask {
455554
}
456555

457556
PROCESS_SWITCH(JFlucEfficiencyTask, processMC, "Process MC only", false);
557+
PROCESS_SWITCH(JFlucEfficiencyTask, processMCRun2, "Process Run2 MC only", false);
458558
PROCESS_SWITCH(JFlucEfficiencyTask, processData, "Process data only", false);
559+
PROCESS_SWITCH(JFlucEfficiencyTask, processDataRun2, "Process Run2 data only", false);
459560
PROCESS_SWITCH(JFlucEfficiencyTask, processDerivedMC, "Process derived MC only", false);
460561
PROCESS_SWITCH(JFlucEfficiencyTask, processDerivedData, "Process derived data only", false);
461562
PROCESS_SWITCH(JFlucEfficiencyTask, processEfficiency, "Process efficiency task", true);

0 commit comments

Comments
 (0)