From 468fb99ce883a2d636dcbe20962197ac83945fb7 Mon Sep 17 00:00:00 2001 From: Maurice Coquet Date: Wed, 4 Feb 2026 22:09:16 +0100 Subject: [PATCH 1/5] [PWGDQ] Extending rapidity range for charmonia in pO --- MC/config/PWGDQ/external/generator/GeneratorPromptCharmonia.C | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MC/config/PWGDQ/external/generator/GeneratorPromptCharmonia.C b/MC/config/PWGDQ/external/generator/GeneratorPromptCharmonia.C index bfca9acca..c5df42cef 100644 --- a/MC/config/PWGDQ/external/generator/GeneratorPromptCharmonia.C +++ b/MC/config/PWGDQ/external/generator/GeneratorPromptCharmonia.C @@ -941,7 +941,7 @@ class O2_GeneratorParamJpsipp96TeV : public GeneratorTGenerator paramJpsi = new GeneratorParam(1, -1, PtJPsipp96TeV, YJPsipp96TeV, V2JPsipp96TeV, IpJPsipp96TeV); paramJpsi->SetMomentumRange(0., 1.e6); paramJpsi->SetPtRange(0, 999.); - paramJpsi->SetYRange(-4.2, -2.3); + paramJpsi->SetYRange(-4.2, -1.8); paramJpsi->SetPhiRange(0., 360.); paramJpsi->SetDecayer(new TPythia6Decayer()); paramJpsi->SetForceDecay(kNoDecay); // particle left undecayed From 32e02440e45bd088c041604cb8fdee3f58346100 Mon Sep 17 00:00:00 2001 From: Maurice Coquet Date: Thu, 5 Feb 2026 10:56:10 +0100 Subject: [PATCH 2/5] Shifting generated rapidity --- .../PWGDQ/external/generator/GeneratorPromptCharmonia.C | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/MC/config/PWGDQ/external/generator/GeneratorPromptCharmonia.C b/MC/config/PWGDQ/external/generator/GeneratorPromptCharmonia.C index c5df42cef..20f940bb0 100644 --- a/MC/config/PWGDQ/external/generator/GeneratorPromptCharmonia.C +++ b/MC/config/PWGDQ/external/generator/GeneratorPromptCharmonia.C @@ -941,7 +941,7 @@ class O2_GeneratorParamJpsipp96TeV : public GeneratorTGenerator paramJpsi = new GeneratorParam(1, -1, PtJPsipp96TeV, YJPsipp96TeV, V2JPsipp96TeV, IpJPsipp96TeV); paramJpsi->SetMomentumRange(0., 1.e6); paramJpsi->SetPtRange(0, 999.); - paramJpsi->SetYRange(-4.2, -1.8); + paramJpsi->SetYRange(-4.2, -2.0); paramJpsi->SetPhiRange(0., 360.); paramJpsi->SetDecayer(new TPythia6Decayer()); paramJpsi->SetForceDecay(kNoDecay); // particle left undecayed @@ -981,11 +981,13 @@ class O2_GeneratorParamJpsipp96TeV : public GeneratorTGenerator { // Parameters extrapolated linearly between 5 TeV and 13 TeV as a function of log(sqrt(s)) Double_t y = *py; + Double_t deltaY = 0.35; + Double_t yCM = y - deltaY; Float_t p0, p1, p2; p0 = 1; p1 = 0.0107769; p2 = 2.98205; - return p0 * TMath::Exp(-(1. / 2.) * TMath::Power(((y - p1) / p2), 2)); + return p0 * TMath::Exp(-(1. / 2.) * TMath::Power(((yCM - p1) / p2), 2)); } //-------------------------------------------------------------------------// From 80de126034741035ce812abe2c56a8bb65b9c6e1 Mon Sep 17 00:00:00 2001 From: Maurice Coquet Date: Thu, 5 Feb 2026 10:58:50 +0100 Subject: [PATCH 3/5] Same for Psi2S --- .../PWGDQ/external/generator/GeneratorPromptCharmonia.C | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/MC/config/PWGDQ/external/generator/GeneratorPromptCharmonia.C b/MC/config/PWGDQ/external/generator/GeneratorPromptCharmonia.C index 20f940bb0..8ac023ae0 100644 --- a/MC/config/PWGDQ/external/generator/GeneratorPromptCharmonia.C +++ b/MC/config/PWGDQ/external/generator/GeneratorPromptCharmonia.C @@ -1016,7 +1016,7 @@ class O2_GeneratorParamPsipp96TeV : public GeneratorTGenerator paramPsi = new GeneratorParam(1, -1, PtPsipp96TeV, YPsipp96TeV, V2Psipp96TeV, IpPsipp96TeV); paramPsi->SetMomentumRange(0., 1.e6); paramPsi->SetPtRange(0, 999.); - paramPsi->SetYRange(-4.2, -2.3); + paramPsi->SetYRange(-4.2, -2.0); paramPsi->SetPhiRange(0., 360.); paramPsi->SetDecayer(new TPythia6Decayer()); paramPsi->SetForceDecay(kNoDecay); // particle left undecayed @@ -1130,11 +1130,13 @@ class O2_GeneratorParamJpsiPbPb5TeV : public GeneratorTGenerator { // jpsi y in PbPb, tuned on data (2015) -> Castillo embedding https://alice.its.cern.ch/jira/browse/ALIROOT-8174?jql=text%20~%20%22LHC19a2%22 Double_t y = *py; + Double_t deltaY = 0.35; + Double_t yCM = y - deltaY; Float_t p0, p1, p2; p0 = 1.09886e6; p1 = 0; p2 = 2.12568; - return p0 * TMath::Exp(-(1. / 2.) * TMath::Power(((y - p1) / p2), 2)); + return p0 * TMath::Exp(-(1. / 2.) * TMath::Power(((yCM - p1) / p2), 2)); } //-------------------------------------------------------------------------// From 98eeab64c71d10c0e6564eaa01cc1478c5105af0 Mon Sep 17 00:00:00 2001 From: Maurice Coquet Date: Thu, 5 Feb 2026 14:40:23 +0100 Subject: [PATCH 4/5] fixing mistake and ading missing test --- .../generator/GeneratorPromptCharmonia.C | 8 +- ...edPromptCharmoniaMidy_TriggerGap_pO96TeV.C | 84 +++++++++++++++++++ 2 files changed, 88 insertions(+), 4 deletions(-) create mode 100644 MC/config/PWGDQ/ini/tests/Generator_InjectedPromptCharmoniaMidy_TriggerGap_pO96TeV.C diff --git a/MC/config/PWGDQ/external/generator/GeneratorPromptCharmonia.C b/MC/config/PWGDQ/external/generator/GeneratorPromptCharmonia.C index 8ac023ae0..6503c1c5e 100644 --- a/MC/config/PWGDQ/external/generator/GeneratorPromptCharmonia.C +++ b/MC/config/PWGDQ/external/generator/GeneratorPromptCharmonia.C @@ -1056,11 +1056,13 @@ class O2_GeneratorParamPsipp96TeV : public GeneratorTGenerator { // Taking same parameters as Psi(2S) at 13 TeV Double_t y = *py; + Double_t deltaY = 0.35; + Double_t yCM = y - deltaY; Float_t p0, p1, p2; p0 = 1; p1 = 0; p2 = 2.98887; - return p0 * TMath::Exp(-(1. / 2.) * TMath::Power(((y - p1) / p2), 2)); + return p0 * TMath::Exp(-(1. / 2.) * TMath::Power(((yCM - p1) / p2), 2)); } //-------------------------------------------------------------------------// @@ -1130,13 +1132,11 @@ class O2_GeneratorParamJpsiPbPb5TeV : public GeneratorTGenerator { // jpsi y in PbPb, tuned on data (2015) -> Castillo embedding https://alice.its.cern.ch/jira/browse/ALIROOT-8174?jql=text%20~%20%22LHC19a2%22 Double_t y = *py; - Double_t deltaY = 0.35; - Double_t yCM = y - deltaY; Float_t p0, p1, p2; p0 = 1.09886e6; p1 = 0; p2 = 2.12568; - return p0 * TMath::Exp(-(1. / 2.) * TMath::Power(((yCM - p1) / p2), 2)); + return p0 * TMath::Exp(-(1. / 2.) * TMath::Power(((y - p1) / p2), 2)); } //-------------------------------------------------------------------------// diff --git a/MC/config/PWGDQ/ini/tests/Generator_InjectedPromptCharmoniaMidy_TriggerGap_pO96TeV.C b/MC/config/PWGDQ/ini/tests/Generator_InjectedPromptCharmoniaMidy_TriggerGap_pO96TeV.C new file mode 100644 index 000000000..b155ec9ac --- /dev/null +++ b/MC/config/PWGDQ/ini/tests/Generator_InjectedPromptCharmoniaMidy_TriggerGap_pO96TeV.C @@ -0,0 +1,84 @@ +int External() +{ + int checkPdgSignal[] = {443,100443}; + int checkPdgDecay = 11; + std::string path{"o2sim_Kine.root"}; + std::cout << "Check for\nsignal PDG " << checkPdgSignal << "\ndecay PDG " << checkPdgDecay << "\n"; + TFile file(path.c_str(), "READ"); + if (file.IsZombie()) { + std::cerr << "Cannot open ROOT file " << path << "\n"; + return 1; + } + + auto tree = (TTree*)file.Get("o2sim"); + std::vector* tracks{}; + tree->SetBranchAddress("MCTrack", &tracks); + + int nLeptons{}; + int nAntileptons{}; + int nLeptonPairs{}; + int nLeptonPairsToBeDone{}; + int nSignalJpsi{}; + int nSignalPsi2S{}; + int nSignalJpsiWithinAcc{}; + int nSignalPsi2SWithinAcc{}; + auto nEvents = tree->GetEntries(); + o2::steer::MCKinematicsReader mcreader("o2sim", o2::steer::MCKinematicsReader::Mode::kMCKine); + Bool_t isInjected = kFALSE; + + for (int i = 0; i < nEvents; i++) { + tree->GetEntry(i); + for (auto& track : *tracks) { + auto pdg = track.GetPdgCode(); + auto rapidity = track.GetRapidity(); + auto idMoth = track.getMotherTrackId(); + if (pdg == checkPdgDecay) { + // count leptons + nLeptons++; + } else if(pdg == -checkPdgDecay) { + // count anti-leptons + nAntileptons++; + } else if (pdg == checkPdgSignal[0] || pdg == checkPdgSignal[1]) { + if(idMoth < 0){ + // count signal PDG + pdg == checkPdgSignal[0] ? nSignalJpsi++ : nSignalPsi2S++; + // count signal PDG within acceptance + if(std::abs(rapidity) < 1.0) { pdg == checkPdgSignal[0] ? nSignalJpsiWithinAcc++ : nSignalPsi2SWithinAcc++;} + } + auto child0 = o2::mcutils::MCTrackNavigator::getDaughter0(track, *tracks); + auto child1 = o2::mcutils::MCTrackNavigator::getDaughter1(track, *tracks); + if (child0 != nullptr && child1 != nullptr) { + // check for parent-child relations + auto pdg0 = child0->GetPdgCode(); + auto pdg1 = child1->GetPdgCode(); + std::cout << "First and last children of parent " << checkPdgSignal << " are PDG0: " << pdg0 << " PDG1: " << pdg1 << "\n"; + if (std::abs(pdg0) == checkPdgDecay && std::abs(pdg1) == checkPdgDecay && pdg0 == -pdg1) { + nLeptonPairs++; + if (child0->getToBeDone() && child1->getToBeDone()) { + nLeptonPairsToBeDone++; + } + } + } + } + } + } + std::cout << "#events: " << nEvents << "\n" + << "#leptons: " << nLeptons << "\n" + << "#antileptons: " << nAntileptons << "\n" + << "#signal (prompt Jpsi): " << nSignalJpsi << "; within acceptance (|y| < 1): " << nSignalJpsiWithinAcc << "\n" + << "#signal (prompt Psi(2S)): " << nSignalPsi2S << "; within acceptance (|y| < 1): " << nSignalPsi2SWithinAcc << "\n" + << "#lepton pairs: " << nLeptonPairs << "\n" + << "#lepton pairs to be done: " << nLeptonPairs << "\n"; + + + if (nLeptonPairs == 0 || nLeptons == 0 || nAntileptons == 0) { + std::cerr << "Number of leptons, number of anti-leptons as well as number of lepton pairs should all be greater than 1.\n"; + return 1; + } + if (nLeptonPairs != nLeptonPairsToBeDone) { + std::cerr << "The number of lepton pairs should be the same as the number of lepton pairs which should be transported.\n"; + return 1; + } + + return 0; +} From 172f2c10eb2b5f7c5b5d546bbe6b29e318b3f729 Mon Sep 17 00:00:00 2001 From: Maurice Coquet Date: Thu, 5 Feb 2026 18:55:19 +0100 Subject: [PATCH 5/5] dummy commit --- MC/config/PWGDQ/external/generator/GeneratorPromptCharmonia.C | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MC/config/PWGDQ/external/generator/GeneratorPromptCharmonia.C b/MC/config/PWGDQ/external/generator/GeneratorPromptCharmonia.C index 6503c1c5e..86a9fd47b 100644 --- a/MC/config/PWGDQ/external/generator/GeneratorPromptCharmonia.C +++ b/MC/config/PWGDQ/external/generator/GeneratorPromptCharmonia.C @@ -979,7 +979,7 @@ class O2_GeneratorParamJpsipp96TeV : public GeneratorTGenerator //-------------------------------------------------------------------------// static Double_t YJPsipp96TeV(const Double_t* py, const Double_t* /*dummy*/) { - // Parameters extrapolated linearly between 5 TeV and 13 TeV as a function of log(sqrt(s)) + // Parameters extrapolated linearly between 5 TeV and 13 TeV as a function of log(sqrt(s)), shifted by a rapidity boost dy=0.35 Double_t y = *py; Double_t deltaY = 0.35; Double_t yCM = y - deltaY;