Skip to content

Commit ee7cb93

Browse files
authored
[PWGCF] FemtoUniverse: Adding and editing process functions for MC PbPb analysis (#9381)
1 parent 9c02f21 commit ee7cb93

File tree

3 files changed

+74
-15
lines changed

3 files changed

+74
-15
lines changed

PWGCF/FemtoUniverse/TableProducer/femtoUniverseProducerTask.cxx

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,8 @@ using FemtoFullCollisionCentRun2 =
7373
using FemtoFullCollisionCentRun3 =
7474
soa::Join<aod::Collisions, aod::EvSels, aod::CentFT0Cs, aod::Mults>::iterator;
7575
using FemtoFullCollisionMC = soa::Join<aod::Collisions, aod::EvSels, aod::Mults, aod::McCollisionLabels>::iterator;
76-
76+
using FemtoFullCollisionCentRun3MC =
77+
soa::Join<aod::Collisions, aod::EvSels, aod::CentFT0Cs, aod::Mults, aod::McCollisionLabels>::iterator;
7778
using FemtoFullTracks =
7879
soa::Join<aod::FullTracks, aod::TracksDCA, aod::TOFSignal, aod::pidTPCEl, aod::TrackSelection,
7980
aod::pidTPCMu, aod::pidTPCPi, aod::pidTPCKa, aod::pidTPCPr,
@@ -458,10 +459,10 @@ struct FemtoUniverseProducerTask {
458459

459460
void init(InitContext&)
460461
{
461-
if ((doprocessFullData || doprocessTrackPhiData || doprocessTrackData || doprocessTrackV0 || doprocessTrackCascadeData || doprocessTrackD0mesonData || doprocessTrackCentRun2Data || doprocessTrackV0CentRun2Data || doprocessTrackCentRun3Data || doprocessV0CentRun3Data || doprocessCascadeCentRun3Data || doprocessTrackDataCentPP) == false && (doprocessFullMC || doprocessTrackMC || doprocessTrackMCTruth || doprocessTrackMCGen || doprocessTruthAndFullMC || doprocessFullMCCent) == false) {
462+
if ((doprocessFullData || doprocessTrackPhiData || doprocessTrackData || doprocessTrackV0 || doprocessTrackCascadeData || doprocessTrackD0mesonData || doprocessTrackCentRun2Data || doprocessTrackV0CentRun2Data || doprocessTrackCentRun3Data || doprocessV0CentRun3Data || doprocessCascadeCentRun3Data || doprocessTrackDataCentPP) == false && (doprocessFullMC || doprocessTrackMC || doprocessTrackMCTruth || doprocessTrackMCGen || doprocessTruthAndFullMC || doprocessFullMCCent || doprocessTrackCentRun3DataMC) == false) {
462463
LOGF(fatal, "Neither processFullData nor processFullMC enabled. Please choose one.");
463464
}
464-
if ((doprocessFullData || doprocessTrackPhiData || doprocessTrackData || doprocessTrackV0 || doprocessTrackCascadeData || doprocessTrackD0mesonData || doprocessTrackCentRun2Data || doprocessTrackV0CentRun2Data || doprocessTrackCentRun3Data || doprocessV0CentRun3Data || doprocessCascadeCentRun3Data || doprocessTrackDataCentPP) == true && (doprocessFullMC || doprocessTrackMC || doprocessTrackMCTruth || doprocessTrackMCGen || doprocessTruthAndFullMC || doprocessFullMCCent) == true) {
465+
if ((doprocessFullData || doprocessTrackPhiData || doprocessTrackData || doprocessTrackV0 || doprocessTrackCascadeData || doprocessTrackD0mesonData || doprocessTrackCentRun2Data || doprocessTrackV0CentRun2Data || doprocessTrackCentRun3Data || doprocessV0CentRun3Data || doprocessCascadeCentRun3Data || doprocessTrackDataCentPP) == true && (doprocessFullMC || doprocessTrackMC || doprocessTrackMCTruth || doprocessTrackMCGen || doprocessTruthAndFullMC || doprocessFullMCCent || doprocessTrackCentRun3DataMC) == true) {
465466
LOGF(fatal,
466467
"Cannot enable process Data and process MC at the same time. "
467468
"Please choose one.");
@@ -1922,6 +1923,26 @@ struct FemtoUniverseProducerTask {
19221923
}
19231924
PROCESS_SWITCH(FemtoUniverseProducerTask, processTrackCentRun3Data, "Provide experimental data for Run 3 with centrality for track track", false);
19241925

1926+
void processTrackCentRun3DataMC(aod::FemtoFullCollisionCentRun3MC const& col,
1927+
aod::BCsWithTimestamps const&,
1928+
soa::Join<aod::FemtoFullTracks, aod::McTrackLabels> const& tracks,
1929+
aod::McCollisions const&,
1930+
aod::McParticles const&)
1931+
{
1932+
// get magnetic field for run
1933+
auto bc = col.bc_as<aod::BCsWithTimestamps>();
1934+
getMagneticFieldTesla(bc);
1935+
const auto ir = mRateFetcher.fetch(ccdb.service, bc.timestamp(), mRunNumber, "ZNC hadronic") * 1.e-3; // fetch IR
1936+
1937+
// fill the tables
1938+
const auto colcheck = fillCollisionsCentRun3<true>(col);
1939+
if (colcheck) {
1940+
fillCollisionsCentRun3ColExtra<true>(col, ir);
1941+
fillTracks<true>(tracks);
1942+
}
1943+
}
1944+
PROCESS_SWITCH(FemtoUniverseProducerTask, processTrackCentRun3DataMC, "Provide MC data for track analysis", false);
1945+
19251946
void processV0CentRun3Data(aod::FemtoFullCollisionCentRun3 const& col,
19261947
aod::BCsWithTimestamps const&,
19271948
soa::Filtered<aod::FemtoFullTracks> const& tracks,

PWGCF/FemtoUniverse/Tasks/femtoUniversePairTaskTrackTrack3DMultKtExtended.cxx

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
#include "Framework/RunningWorkflowInfo.h"
2525
#include "Framework/StepTHn.h"
2626
#include "Framework/O2DatabasePDGPlugin.h"
27-
#include "TDatabasePDG.h"
2827
#include "ReconstructionDataFormats/PID.h"
2928
#include "Common/DataModel/PIDResponse.h"
3029

@@ -232,13 +231,13 @@ struct femtoUniversePairTaskTrackTrack3DMultKtExtended {
232231
// ConfNsigmaCombined -> TPC and TOF Sigma (combined) for momentum > 0.5
233232

234233
if (mom < twotracksconfigs.ConfTOFPtMin) {
235-
if (TMath::Abs(nsigmaTPCPr) < twotracksconfigs.ConfNsigmaTPC) {
234+
if (std::abs(nsigmaTPCPr) < twotracksconfigs.ConfNsigmaTPC) {
236235
return true;
237236
} else {
238237
return false;
239238
}
240239
} else {
241-
if (TMath::Hypot(nsigmaTOFPr, nsigmaTPCPr) < twotracksconfigs.ConfNsigmaCombined) {
240+
if (std::hypot(nsigmaTOFPr, nsigmaTPCPr) < twotracksconfigs.ConfNsigmaCombined) {
242241
return true;
243242
} else {
244243
return false;
@@ -250,33 +249,33 @@ struct femtoUniversePairTaskTrackTrack3DMultKtExtended {
250249
bool IsKaonNSigma(float mom, float nsigmaTPCK, float nsigmaTOFK)
251250
{
252251
if (mom < 0.3) { // 0.0-0.3
253-
if (TMath::Abs(nsigmaTPCK) < 3.0) {
252+
if (std::abs(nsigmaTPCK) < 3.0) {
254253
return true;
255254
} else {
256255
return false;
257256
}
258257
} else if (mom < 0.45) { // 0.30 - 0.45
259-
if (TMath::Abs(nsigmaTPCK) < 2.0) {
258+
if (std::abs(nsigmaTPCK) < 2.0) {
260259
return true;
261260
} else {
262261
return false;
263262
}
264263
} else if (mom < 0.55) { // 0.45-0.55
265-
if (TMath::Abs(nsigmaTPCK) < 1.0) {
264+
if (std::abs(nsigmaTPCK) < 1.0) {
266265
return true;
267266
} else {
268267
return false;
269268
}
270269
} else if (mom < 1.5) { // 0.55-1.5 (now we use TPC and TOF)
271-
if ((TMath::Abs(nsigmaTOFK) < 3.0) && (TMath::Abs(nsigmaTPCK) < 3.0)) {
270+
if ((std::abs(nsigmaTOFK) < 3.0) && (std::abs(nsigmaTPCK) < 3.0)) {
272271
{
273272
return true;
274273
}
275274
} else {
276275
return false;
277276
}
278277
} else if (mom > 1.5) { // 1.5 -
279-
if ((TMath::Abs(nsigmaTOFK) < 2.0) && (TMath::Abs(nsigmaTPCK) < 3.0)) {
278+
if ((std::abs(nsigmaTOFK) < 2.0) && (std::abs(nsigmaTPCK) < 3.0)) {
280279
return true;
281280
} else {
282281
return false;
@@ -297,13 +296,13 @@ struct femtoUniversePairTaskTrackTrack3DMultKtExtended {
297296
// ConfNsigmaCombined -> TPC and TOF Pion Sigma (combined) for momentum > 0.5
298297
if (true) {
299298
if (mom < twotracksconfigs.ConfTOFPtMin) {
300-
if (TMath::Abs(nsigmaTPCPi) < twotracksconfigs.ConfNsigmaTPC) {
299+
if (std::abs(nsigmaTPCPi) < twotracksconfigs.ConfNsigmaTPC) {
301300
return true;
302301
} else {
303302
return false;
304303
}
305304
} else {
306-
if (TMath::Hypot(nsigmaTOFPi, nsigmaTPCPi) < twotracksconfigs.ConfNsigmaCombined) {
305+
if (std::hypot(nsigmaTOFPi, nsigmaTPCPi) < twotracksconfigs.ConfNsigmaCombined) {
307306
return true;
308307
} else {
309308
return false;
@@ -609,6 +608,7 @@ struct femtoUniversePairTaskTrackTrack3DMultKtExtended {
609608
auto thegroupPartsTwo = partsTwoMC->sliceByCached(aod::femtouniverseparticle::fdCollisionId, col.globalIndex(), cache);
610609

611610
bool fillQA = true;
611+
randgen = new TRandom2(0);
612612

613613
if (cfgProcessPM) {
614614
doSameEvent<false>(thegroupPartsOne, thegroupPartsTwo, parts, col.magField(), col.multV0M(), 1, fillQA);
@@ -621,6 +621,7 @@ struct femtoUniversePairTaskTrackTrack3DMultKtExtended {
621621
if (cfgProcessMM) {
622622
doSameEvent<true>(thegroupPartsTwo, thegroupPartsTwo, parts, col.magField(), col.multV0M(), 3, fillQA);
623623
}
624+
delete randgen;
624625
}
625626
PROCESS_SWITCH(femtoUniversePairTaskTrackTrack3DMultKtExtended, processSameEventMC, "Enable processing same event for Monte Carlo", false);
626627

@@ -774,6 +775,8 @@ struct femtoUniversePairTaskTrackTrack3DMultKtExtended {
774775
soa::Join<FilteredFemtoFullParticles, aod::FDMCLabels>& parts,
775776
o2::aod::FdMCParticles&)
776777
{
778+
randgen = new TRandom2(0);
779+
777780
for (auto& [collision1, collision2] : soa::selfCombinations(colBinning, ConfNEventsMix, -1, cols, cols)) {
778781

779782
const int multiplicityCol = collision1.multV0M();
@@ -804,6 +807,7 @@ struct femtoUniversePairTaskTrackTrack3DMultKtExtended {
804807
doMixedEvent<true>(groupPartsOne, groupPartsTwo, parts, magFieldTesla1, multiplicityCol, 3);
805808
}
806809
}
810+
delete randgen;
807811
}
808812
PROCESS_SWITCH(femtoUniversePairTaskTrackTrack3DMultKtExtended, processMixedEventMC, "Enable processing mixed events MC", false);
809813
};

PWGCF/FemtoUniverse/Tasks/femtoUniversePairTaskTrackTrackSpherHarMultKtExtended.cxx

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -572,13 +572,28 @@ struct femtoUniversePairTaskTrackTrackSpherHarMultKtExtended {
572572
/// \param parts subscribe to joined table FemtoUniverseParticles and FemtoUniverseMCLables to access Monte Carlo truth
573573
/// \param FemtoUniverseMCParticles subscribe to the Monte Carlo truth table
574574
void processSameEventMC(o2::aod::FdCollision& col,
575-
soa::Join<FilteredFemtoFullParticles, aod::FDMCLabels>& /*parts*/,
575+
soa::Join<FilteredFemtoFullParticles, aod::FDMCLabels>& parts,
576576
o2::aod::FdMCParticles&)
577577
{
578578
fillCollision(col);
579579

580580
auto thegroupPartsOne = partsOneMC->sliceByCached(aod::femtouniverseparticle::fdCollisionId, col.globalIndex(), cache);
581581
auto thegroupPartsTwo = partsTwoMC->sliceByCached(aod::femtouniverseparticle::fdCollisionId, col.globalIndex(), cache);
582+
bool fillQA = true;
583+
randgen = new TRandom2(0);
584+
585+
if (cfgProcessPM) {
586+
doSameEvent<false>(thegroupPartsOne, thegroupPartsTwo, parts, col.magField(), col.multV0M(), 1, fillQA);
587+
}
588+
589+
if (cfgProcessPP) {
590+
doSameEvent<false>(thegroupPartsOne, thegroupPartsOne, parts, col.magField(), col.multV0M(), 2, fillQA);
591+
}
592+
593+
if (cfgProcessMM) {
594+
doSameEvent<false>(thegroupPartsTwo, thegroupPartsTwo, parts, col.magField(), col.multV0M(), 3, fillQA);
595+
}
596+
delete randgen;
582597
}
583598
PROCESS_SWITCH(femtoUniversePairTaskTrackTrackSpherHarMultKtExtended, processSameEventMC, "Enable processing same event for Monte Carlo", false);
584599

@@ -716,9 +731,11 @@ struct femtoUniversePairTaskTrackTrackSpherHarMultKtExtended {
716731
/// @param parts subscribe to joined table FemtoUniverseParticles and FemtoUniverseMCLables to access Monte Carlo truth
717732
/// @param FemtoUniverseMCParticles subscribe to the Monte Carlo truth table
718733
void processMixedEventMC(o2::aod::FdCollisions& cols,
719-
soa::Join<FilteredFemtoFullParticles, aod::FDMCLabels>& /*parts*/,
734+
soa::Join<FilteredFemtoFullParticles, aod::FDMCLabels>& parts,
720735
o2::aod::FdMCParticles&)
721736
{
737+
randgen = new TRandom2(0);
738+
722739
for (auto& [collision1, collision2] : soa::selfCombinations(colBinning, ConfNEventsMix, -1, cols, cols)) {
723740

724741
const int multiplicityCol = collision1.multV0M();
@@ -732,7 +749,24 @@ struct femtoUniversePairTaskTrackTrackSpherHarMultKtExtended {
732749
}
733750
/// \todo before mixing we should check whether both collisions contain a pair of particles!
734751
// if (partsOne.size() == 0 || nPart2Evt1 == 0 || nPart1Evt2 == 0 || partsTwo.size() == 0 ) continue;
752+
753+
if (cfgProcessPM) {
754+
auto groupPartsOne = partsOneMC->sliceByCached(aod::femtouniverseparticle::fdCollisionId, collision1.globalIndex(), cache);
755+
auto groupPartsTwo = partsTwoMC->sliceByCached(aod::femtouniverseparticle::fdCollisionId, collision2.globalIndex(), cache);
756+
doMixedEvent<false>(groupPartsOne, groupPartsTwo, parts, magFieldTesla1, multiplicityCol, 1);
757+
}
758+
if (cfgProcessPP) {
759+
auto groupPartsOne = partsOneMC->sliceByCached(aod::femtouniverseparticle::fdCollisionId, collision1.globalIndex(), cache);
760+
auto groupPartsTwo = partsOneMC->sliceByCached(aod::femtouniverseparticle::fdCollisionId, collision2.globalIndex(), cache);
761+
doMixedEvent<false>(groupPartsOne, groupPartsTwo, parts, magFieldTesla1, multiplicityCol, 2);
762+
}
763+
if (cfgProcessMM) {
764+
auto groupPartsOne = partsTwoMC->sliceByCached(aod::femtouniverseparticle::fdCollisionId, collision1.globalIndex(), cache);
765+
auto groupPartsTwo = partsTwoMC->sliceByCached(aod::femtouniverseparticle::fdCollisionId, collision2.globalIndex(), cache);
766+
doMixedEvent<false>(groupPartsOne, groupPartsTwo, parts, magFieldTesla1, multiplicityCol, 3);
767+
}
735768
}
769+
delete randgen;
736770
}
737771
PROCESS_SWITCH(femtoUniversePairTaskTrackTrackSpherHarMultKtExtended, processMixedEventMC, "Enable processing mixed events MC", false);
738772
};

0 commit comments

Comments
 (0)