From 233330f8c1178553254eaa807dfb8b3498faeca8 Mon Sep 17 00:00:00 2001 From: mjkim525 Date: Sat, 25 Jul 2026 08:19:26 +0900 Subject: [PATCH 1/4] Fix LF resonance gap injection and add phi channel --- .../generator/resonancelistgun_width_inj.json | 11 ++ .../pythia8/generator/resonances_width.cfg | 5 + .../generator_pythia8_LF_rapidity_width.C | 164 ++++++++++-------- 3 files changed, 104 insertions(+), 76 deletions(-) diff --git a/MC/config/PWGLF/pythia8/generator/resonancelistgun_width_inj.json b/MC/config/PWGLF/pythia8/generator/resonancelistgun_width_inj.json index f6ea92df8..80918f6a0 100644 --- a/MC/config/PWGLF/pythia8/generator/resonancelistgun_width_inj.json +++ b/MC/config/PWGLF/pythia8/generator/resonancelistgun_width_inj.json @@ -10,6 +10,17 @@ "rapidityMax": 1.2, "genDecayed": true }, + "phi(1020)" : { + "pdg": 333, + "n": 10, + "ptMin": 0.0, + "ptMax": 20, + "etaMin": -1.2, + "etaMax": 1.2, + "rapidityMin": -1.2, + "rapidityMax": 1.2, + "genDecayed": true + }, "K1(1270)+": { "pdg": 10323, "n": 10, diff --git a/MC/config/PWGLF/pythia8/generator/resonances_width.cfg b/MC/config/PWGLF/pythia8/generator/resonances_width.cfg index 4845f45b8..1c5a80f0a 100644 --- a/MC/config/PWGLF/pythia8/generator/resonances_width.cfg +++ b/MC/config/PWGLF/pythia8/generator/resonances_width.cfg @@ -10,6 +10,11 @@ # 9010221:oneChannel = 1 1.000 0 211 -211 9010221:onIfMatch = 211 -211 +### phi(1020) +# 333:all = phi phi 3 0 0 1.0195 0.0042 1.0091 1.0599 0 +333:onMode = off +333:onIfMatch = 11 -11 + # ### Delta(1232)++ # 2224:all = DeltaPlusPlus DeltaPlusPlusbar 4 6 0 1.2320 0.1170 1.0778 2.4020 0 2224:onMode = off diff --git a/MC/config/PWGLF/pythia8/generator_pythia8_LF_rapidity_width.C b/MC/config/PWGLF/pythia8/generator_pythia8_LF_rapidity_width.C index 6d71a8db5..7caf0fdd3 100644 --- a/MC/config/PWGLF/pythia8/generator_pythia8_LF_rapidity_width.C +++ b/MC/config/PWGLF/pythia8/generator_pythia8_LF_rapidity_width.C @@ -191,31 +191,38 @@ class GeneratorPythia8LFRapidity : public o2::eventgen::GeneratorPythia8 /// Destructor ~GeneratorPythia8LFRapidity() = default; + bool Init() override + { + // Follow the PWGHF gap-trigger convention and persist the event class in + // MCEventHeader::subGeneratorId. The AOD producer exposes this through + // mcCollision.getSubGeneratorId(). + addSubGenerator(kSubGeneratorMinimumBias, "Minimum bias"); + addSubGenerator(kSubGeneratorLFSignal, "LF signal"); + return o2::eventgen::GeneratorPythia8::Init(); + } + //__________________________________________________________________ Bool_t generateEvent() override { + // Follow the gap-trigger convention used by PWGHF/PWGDQ: a ratio N + // produces signal events at 0, N, 2N, ... and minimum-bias events in + // between. Ratios 0 and 1 both mean signal in every event. + mDoSignalThisEvent = isSignalEvent(); + notifySubGenerator(mDoSignalThisEvent ? kSubGeneratorLFSignal : kSubGeneratorMinimumBias); + if (!mUseTriggering) { // Injected mode: Embedding into MB // 1. Generate Background (MB) - // LOG(info) << "Generating background event " << mEventCounter; - bool lGenerationOK = false; while (!lGenerationOK) { lGenerationOK = pythiaObjectMinimumBias.next(); } copyMinimumBiasEventForInjection(); - // 2. Determine if we inject specific particles (Gap logic) - bool doInjection = true; - if (mGapBetweenInjection > 0) { - if (mGapBetweenInjection == 1 && mEventCounter % 2 == 0) { - doInjection = false; - } else if (mEventCounter % mGapBetweenInjection != 0) { - doInjection = false; - } - } - - if (!doInjection) { - LOG(info) << "Skipping injection for event " << mEventCounter; + // Keep the generated minimum-bias event on gap events. It must still be + // imported in importParticles(), otherwise o2-sim sees an empty event + // and retries until it obtains another injected event. + if (!mDoSignalThisEvent) { + LOG(info) << "Generating minimum-bias gap event " << mEventCounter; return true; } } @@ -230,7 +237,6 @@ class GeneratorPythia8LFRapidity : public o2::eventgen::GeneratorPythia8 mConfigToUse = mOneInjectionPerEvent ? static_cast(gRandom->Uniform(0.f, getNGuns())) : -1; LOG(info) << "Using configuration " << mConfigToUse << " out of " << getNGuns() << ", of which " << mGunConfigs.size() << " are transport decayed and " << mGunConfigsGenDecayed.size() << " are generator decayed"; - bool injectedForThisEvent = false; int nConfig = mGunConfigs.size(); // We start counting from the configurations of the transport decayed particles for (const ConfigContainer& cfg : mGunConfigsGenDecayed) { nConfig++; @@ -239,10 +245,8 @@ class GeneratorPythia8LFRapidity : public o2::eventgen::GeneratorPythia8 } LOG(info) << "Using config container "; cfg.print(); - if (mUseTriggering) { // Do the triggering - bool doSignal{mEventCounter % (mGapBetweenInjection + 1) == 0}; // Do signal or gap - - if (doSignal) { + if (mUseTriggering) { // Do the triggering + if (mDoSignalThisEvent) { LOG(info) << "Generating triggered signal event for particle"; cfg.print(); bool satisfiesTrigger = false; @@ -347,8 +351,6 @@ class GeneratorPythia8LFRapidity : public o2::eventgen::GeneratorPythia8 mPythia.event.append(p); } - - injectedForThisEvent = true; } // For purely trivial injection (no generator decay needed in loop or just transport decay), we still might have injection flag @@ -369,66 +371,67 @@ class GeneratorPythia8LFRapidity : public o2::eventgen::GeneratorPythia8 //__________________________________________________________________ Bool_t importParticles() override { - if (!mUseTriggering) { // If the triggering is used we handle the the gap when generating the signal - if (mGapBetweenInjection > 0) { - if (mGapBetweenInjection == 1 && mEventCounter % 2 == 0) { - LOG(info) << "Skipping importParticles event " << mEventCounter++; - return true; - } else if (mEventCounter % mGapBetweenInjection != 0) { - LOG(info) << "Skipping importParticles event " << mEventCounter++; - return true; - } - } - } - LOG(info) << "importParticles " << mEventCounter++; - GeneratorPythia8::importParticles(); - int nConfig = 0; - for (const ConfigContainer& cfg : mGunConfigs) { - nConfig++; - if (mConfigToUse >= 0 && (nConfig - 1) != mConfigToUse) { - continue; - } - LOGF(info, "Injecting %i particles with PDG %i, pT in [%f, %f], %s in [%f, %f]", cfg.mNInject, cfg.mPdg, cfg.mPtMin, cfg.mPtMax, (mUseRapidity ? "rapidity" : "eta"), cfg.mMin, cfg.mMax); + LOG(info) << "importParticles " << mEventCounter << " (" << (mDoSignalThisEvent ? "signal" : "minimum bias") << ")"; - for (int i{0}; i < cfg.mNInject; ++i) { - const double pt = gRandom->Uniform(cfg.mPtMin, cfg.mPtMax); - const double eta = gRandom->Uniform(cfg.mMin, cfg.mMax); - const double phi = gRandom->Uniform(0, TMath::TwoPi()); - const double px{pt * std::cos(phi)}; - const double py{pt * std::sin(phi)}; - const double mass = sampleMass(cfg); - double pz = 0; - double et = 0; + // Always import the Pythia event. On gap events this is the minimum-bias + // event prepared in generateEvent(). + if (!GeneratorPythia8::importParticles()) { + return false; + } - if (mUseRapidity) { - const double mT = std::sqrt(mass * mass + pt * pt); - pz = mT * std::sinh(eta); - et = mT * std::cosh(eta); - } else { - pz = pt * std::sinh(eta); - const double p = pt * std::cosh(eta); - et = std::sqrt(p * p + mass * mass); + // Generator-decayed particles were already merged into mPythia.event in + // generateEvent(). Append transport-decayed gun particles only on signal + // events in injection mode. + if (!mUseTriggering && mDoSignalThisEvent) { + int nConfig = 0; + for (const ConfigContainer& cfg : mGunConfigs) { + nConfig++; + if (mConfigToUse >= 0 && (nConfig - 1) != mConfigToUse) { + continue; } + LOGF(info, "Injecting %i particles with PDG %i, pT in [%f, %f], %s in [%f, %f]", cfg.mNInject, cfg.mPdg, cfg.mPtMin, cfg.mPtMax, (mUseRapidity ? "rapidity" : "eta"), cfg.mMin, cfg.mMax); + + for (int i{0}; i < cfg.mNInject; ++i) { + const double pt = gRandom->Uniform(cfg.mPtMin, cfg.mPtMax); + const double eta = gRandom->Uniform(cfg.mMin, cfg.mMax); + const double phi = gRandom->Uniform(0, TMath::TwoPi()); + const double px{pt * std::cos(phi)}; + const double py{pt * std::sin(phi)}; + const double mass = sampleMass(cfg); + double pz = 0; + double et = 0; + + if (mUseRapidity) { + const double mT = std::sqrt(mass * mass + pt * pt); + pz = mT * std::sinh(eta); + et = mT * std::cosh(eta); + } else { + pz = pt * std::sinh(eta); + const double p = pt * std::cosh(eta); + et = std::sqrt(p * p + mass * mass); + } - // TParticle::TParticle(Int_t pdg, - // Int_t status, - // Int_t mother1, Int_t mother2, - // Int_t daughter1, Int_t daughter2, - // Double_t px, Double_t py, Double_t pz, Double_t etot, - // Double_t vx, Double_t vy, Double_t vz, Double_t time) - - mParticles.push_back(TParticle(cfg.mPdg, - MCGenStatusEncoding(1, 1).fullEncoding, - -1, -1, - -1, -1, - px, py, pz, et, - 0., 0., 0., 0.)); - // make sure status code is encoded properly. Transport flag will be set by default and we have nothing - // to do since all pushed particles should be tracked. - o2::mcutils::MCGenHelper::encodeParticleStatusAndTracking(mParticles.back()); + // TParticle::TParticle(Int_t pdg, + // Int_t status, + // Int_t mother1, Int_t mother2, + // Int_t daughter1, Int_t daughter2, + // Double_t px, Double_t py, Double_t pz, Double_t etot, + // Double_t vx, Double_t vy, Double_t vz, Double_t time) + + mParticles.push_back(TParticle(cfg.mPdg, + MCGenStatusEncoding(1, 1).fullEncoding, + -1, -1, + -1, -1, + px, py, pz, et, + 0., 0., 0., 0.)); + // make sure status code is encoded properly. Transport flag will be set by default and we have nothing + // to do since all pushed particles should be tracked. + o2::mcutils::MCGenHelper::encodeParticleStatusAndTracking(mParticles.back()); + } } - nConfig++; } + + mEventCounter++; if (mVerbose) { LOG(info) << "Printing particles that are appended"; int n = 0; @@ -576,6 +579,14 @@ class GeneratorPythia8LFRapidity : public o2::eventgen::GeneratorPythia8 void setVerbose(bool verbose = true) { mVerbose = verbose; } private: + static constexpr int kSubGeneratorMinimumBias = 0; + static constexpr int kSubGeneratorLFSignal = 1; + + bool isSignalEvent() const + { + return mGapBetweenInjection <= 1 || mEventCounter % mGapBetweenInjection == 0; + } + void copyMinimumBiasEventForInjection() { mPythia.event = pythiaObjectMinimumBias.event; @@ -631,12 +642,13 @@ class GeneratorPythia8LFRapidity : public o2::eventgen::GeneratorPythia8 // Configuration const bool mOneInjectionPerEvent = true; // if true, only one injection per event is performed, i.e. if multiple PDG (including antiparticles) are requested to be injected only one will be done per event const bool mUseTriggering = false; // if true, use triggering instead of injection - const int mGapBetweenInjection = 0; // Gap between two signal events. 0 means injection at every event + const int mGapBetweenInjection = 0; // 0/1: signal every event; N>1: signal every Nth event const bool mUseRapidity = false; // if true, use rapidity instead of eta // Running variables int mConfigToUse = -1; // Index of the configuration to use int mEventCounter = 0; // Event counter + bool mDoSignalThisEvent = true; bool mVerbose = true; // Verbosity flag std::vector mGunConfigs; // List of gun configurations to use From d6d8aecd13e03a042b042db959a7170c5efed6eb Mon Sep 17 00:00:00 2001 From: mjkim525 Date: Tue, 4 Aug 2026 13:58:57 +0900 Subject: [PATCH 2/4] Revise injection targets due to resource limitaion and add QA codes --- .../ini/GeneratorLF_Resonances_pp_Rare.ini | 10 ++ .../GeneratorLF_Resonances_pp_Rare_test.C | 111 ++++++++++++++ .../generator/resonancelistgun_width_inj.json | 139 ++---------------- 3 files changed, 130 insertions(+), 130 deletions(-) create mode 100644 MC/config/PWGLF/ini/GeneratorLF_Resonances_pp_Rare.ini create mode 100644 MC/config/PWGLF/ini/tests/GeneratorLF_Resonances_pp_Rare_test.C diff --git a/MC/config/PWGLF/ini/GeneratorLF_Resonances_pp_Rare.ini b/MC/config/PWGLF/ini/GeneratorLF_Resonances_pp_Rare.ini new file mode 100644 index 000000000..4c9fbc777 --- /dev/null +++ b/MC/config/PWGLF/ini/GeneratorLF_Resonances_pp_Rare.ini @@ -0,0 +1,10 @@ +[GeneratorExternal] +fileName=${O2DPG_MC_CONFIG_ROOT}/MC/config/PWGLF/pythia8/generator_pythia8_LF_rapidity_width.C +funcName=generateLFRapidity("${O2DPG_MC_CONFIG_ROOT}/MC/config/PWGLF/pythia8/generator/resonancelistgun_width_inj.json", true, 5, false, true, "${O2DPG_MC_CONFIG_ROOT}/MC/config/PWGLF/pythia8/generator/pythia8_inel_136tev.cfg", "") + +[GeneratorPythia8] # if triggered then this will be used as the background event +config=${O2DPG_MC_CONFIG_ROOT}/MC/config/PWGLF/pythia8/generator/pythia8_inel_136tev.cfg + +[DecayerPythia8] # after for transport code! +config[0]=${O2DPG_MC_CONFIG_ROOT}/MC/config/common/pythia8/decayer/base.cfg +config[1]=${O2DPG_MC_CONFIG_ROOT}/MC/config/PWGLF/pythia8/generator/resonances_width.cfg diff --git a/MC/config/PWGLF/ini/tests/GeneratorLF_Resonances_pp_Rare_test.C b/MC/config/PWGLF/ini/tests/GeneratorLF_Resonances_pp_Rare_test.C new file mode 100644 index 000000000..d19d72afc --- /dev/null +++ b/MC/config/PWGLF/ini/tests/GeneratorLF_Resonances_pp_Rare_test.C @@ -0,0 +1,111 @@ + +int External() +{ + const std::string path{"o2sim_Kine.root"}; + const int numberOfGapEvents{4}; // generateLFRapidity(..., gap=5) + const std::vector injectedPDGs = { + 9010221, // f0(980) + 3324, -3324, // Xi(1530)0 and anti-Xi(1530)0 + 123324, -123324, // Xi(1820)0 and anti-Xi(1820)0 + 123314, -123314, // Xi(1820)- and Xi(1820)+ + 123334, -123334 // Omega(2012)- and Omega(2012)+ + }; + const std::vector> decayDaughters = { + {211, -211}, + {3312, 211}, {-3312, -211}, + {3122, 310}, {-3122, 310}, + {3122, -321}, {-3122, 321}, + {3312, 310}, {-3312, 310} + }; + + 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"); + if (!tree) { + std::cerr << "Cannot find tree o2sim in file " << path << "\n"; + return 1; + } + std::vector* tracks{}; + tree->SetBranchAddress("MCTrack", &tracks); + + std::vector nSignal(injectedPDGs.size(), 0); + std::vector nNotDecayed(injectedPDGs.size(), 0); + std::vector> nDecays; + for (const auto& daughters : decayDaughters) { + nDecays.emplace_back(daughters.size(), 0); + } + + int numberOfEventsProcessed{0}; + int numberOfEventsProcessedWithoutInjection{0}; + for (Long64_t i = 0; i < tree->GetEntries(); ++i) { + tree->GetEntry(i); + ++numberOfEventsProcessed; + bool hasInjection{false}; + for (const auto& track : *tracks) { + const auto pdg = track.GetPdgCode(); + const auto it = std::find(injectedPDGs.begin(), injectedPDGs.end(), pdg); + if (it == injectedPDGs.end()) { + continue; + } + const auto index = static_cast(std::distance(injectedPDGs.begin(), it)); + ++nSignal[index]; + if (track.getFirstDaughterTrackId() < 0) { + ++nNotDecayed[index]; + continue; + } + for (int j = track.getFirstDaughterTrackId(); j <= track.getLastDaughterTrackId(); ++j) { + const auto pdgDau = tracks->at(j).GetPdgCode(); + bool foundDau{false}; + for (size_t k = 0; k < decayDaughters[index].size(); ++k) { + if (pdgDau == decayDaughters[index][k]) { + ++nDecays[index][k]; + foundDau = true; + hasInjection = true; + break; + } + } + if (!foundDau) { + std::cerr << "Decay daughter not found: " << pdg << " -> " << pdgDau + << " (mother=" << track.getMotherTrackId() + << ", secondMother=" << track.getSecondMotherTrackId() << ")\n"; + } + } + } + if (!hasInjection) { + ++numberOfEventsProcessedWithoutInjection; + } + } + + std::cout << "--------------------------------\n"; + std::cout << "# Events: " << tree->GetEntries() << "\n"; + for (size_t i = 0; i < injectedPDGs.size(); ++i) { + std::cout << "# Mother\n"; + std::cout << injectedPDGs[i] << " generated: " << nSignal[i] + << ", " << nNotDecayed[i] << " did not decay\n"; + for (size_t j = 0; j < decayDaughters[i].size(); ++j) { + std::cout << "# Daughter " << decayDaughters[i][j] << ": " << nDecays[i][j] << "\n"; + } + } + std::cout << "--------------------------------\n"; + std::cout << "Number of events processed: " << numberOfEventsProcessed << "\n"; + std::cout << "Number of input for the gap events: " << numberOfGapEvents << "\n"; + std::cout << "Number of events processed without injection: " + << numberOfEventsProcessedWithoutInjection << "\n"; + const double ratioOfNormalEvents = numberOfEventsProcessed + ? static_cast(numberOfEventsProcessedWithoutInjection) / + numberOfEventsProcessed + : 0.0; + std::cout << "Fraction without injection: " << ratioOfNormalEvents << "\n"; + const double expectedRatio = static_cast(numberOfGapEvents) / (numberOfGapEvents + 1); + std::cout << "Expected fraction for 1+" << numberOfGapEvents << " pattern: " << expectedRatio << "\n"; + + // Same basic gap sanity check as the referenced O2DPG test. + if (ratioOfNormalEvents > 0.90 || ratioOfNormalEvents < 0.70) { + std::cerr << "The number of injected events is too low or too high\n"; + return 1; + } + return 0; +} diff --git a/MC/config/PWGLF/pythia8/generator/resonancelistgun_width_inj.json b/MC/config/PWGLF/pythia8/generator/resonancelistgun_width_inj.json index 80918f6a0..6aa349acb 100644 --- a/MC/config/PWGLF/pythia8/generator/resonancelistgun_width_inj.json +++ b/MC/config/PWGLF/pythia8/generator/resonancelistgun_width_inj.json @@ -1,128 +1,7 @@ { "f_0(980)" : { "pdg": 9010221, - "n": 10, - "ptMin": 0.0, - "ptMax": 20, - "etaMin": -1.2, - "etaMax": 1.2, - "rapidityMin": -1.2, - "rapidityMax": 1.2, - "genDecayed": true - }, - "phi(1020)" : { - "pdg": 333, - "n": 10, - "ptMin": 0.0, - "ptMax": 20, - "etaMin": -1.2, - "etaMax": 1.2, - "rapidityMin": -1.2, - "rapidityMax": 1.2, - "genDecayed": true - }, - "K1(1270)+": { - "pdg": 10323, - "n": 10, - "ptMin": 0.0, - "ptMax": 20, - "etaMin": -1.2, - "etaMax": 1.2, - "rapidityMin": -1.2, - "rapidityMax": 1.2, - "genDecayed": true - }, - "K1(1270)-": { - "pdg": -10323, - "n": 10, - "ptMin": 0.0, - "ptMax": 20, - "etaMin": -1.2, - "etaMax": 1.2, - "rapidityMin": -1.2, - "rapidityMax": 1.2, - "genDecayed": true - }, - "K1(1270)0": { - "pdg": 10313, - "n": 10, - "ptMin": 0.0, - "ptMax": 20, - "etaMin": -1.2, - "etaMax": 1.2, - "rapidityMin": -1.2, - "rapidityMax": 1.2, - "genDecayed": true - }, - "anti-K1(1270)0": { - "pdg": -10313, - "n": 10, - "ptMin": 0.0, - "ptMax": 20, - "etaMin": -1.2, - "etaMax": 1.2, - "rapidityMin": -1.2, - "rapidityMax": 1.2, - "genDecayed": true - }, - "Sigma(1385)-" : { - "pdg": 3114, - "n": 10, - "ptMin": 0.0, - "ptMax": 20, - "etaMin": -1.2, - "etaMax": 1.2, - "rapidityMin": -1.2, - "rapidityMax": 1.2, - "genDecayed": true - }, - "anti-Sigma(1385)+" : { - "pdg": -3114, - "n": 10, - "ptMin": 0.0, - "ptMax": 20, - "etaMin": -1.2, - "etaMax": 1.2, - "rapidityMin": -1.2, - "rapidityMax": 1.2, - "genDecayed": true - }, - "Sigma(1385)+" : { - "pdg": 3224, - "n": 10, - "ptMin": 0.0, - "ptMax": 20, - "etaMin": -1.2, - "etaMax": 1.2, - "rapidityMin": -1.2, - "rapidityMax": 1.2, - "genDecayed": true - }, - "anti-Sigma(1385)-" : { - "pdg": -3224, - "n": 10, - "ptMin": 0.0, - "ptMax": 20, - "etaMin": -1.2, - "etaMax": 1.2, - "rapidityMin": -1.2, - "rapidityMax": 1.2, - "genDecayed": true - }, - "Lambda(1520)0" : { - "pdg": 102134, - "n": 10, - "ptMin": 0.0, - "ptMax": 20, - "etaMin": -1.2, - "etaMax": 1.2, - "rapidityMin": -1.2, - "rapidityMax": 1.2, - "genDecayed": true - }, - "anti-Lambda(1520)0" : { - "pdg": -102134, - "n": 10, + "n": 1, "ptMin": 0.0, "ptMax": 20, "etaMin": -1.2, @@ -133,7 +12,7 @@ }, "Xi(1530)0" : { "pdg": 3324, - "n": 10, + "n": 1, "ptMin": 0.0, "ptMax": 20, "etaMin": -1.2, @@ -144,7 +23,7 @@ }, "anti-Xi(1530)0" : { "pdg": -3324, - "n": 10, + "n": 1, "ptMin": 0.0, "ptMax": 20, "etaMin": -1.2, @@ -155,7 +34,7 @@ }, "Xi(1820)0" : { "pdg": 123324, - "n": 10, + "n": 1, "ptMin": 0.0, "ptMax": 20, "etaMin": -1.2, @@ -166,7 +45,7 @@ }, "Anti-Xi(1820)0" : { "pdg": -123324, - "n": 10, + "n": 1, "ptMin": 0.0, "ptMax": 20, "etaMin": -1.2, @@ -177,7 +56,7 @@ }, "Xi(1820)-" : { "pdg": 123314, - "n": 10, + "n": 1, "ptMin": 0.0, "ptMax": 20, "etaMin": -1.2, @@ -188,7 +67,7 @@ }, "Xi(1820)+" : { "pdg": -123314, - "n": 10, + "n": 1, "ptMin": 0.0, "ptMax": 20, "etaMin": -1.2, @@ -199,7 +78,7 @@ }, "Omega(2012)-" : { "pdg": 123334, - "n": 10, + "n": 1, "ptMin": 0.0, "ptMax": 20, "etaMin": -1.2, @@ -210,7 +89,7 @@ }, "Omega(2012)+" : { "pdg": -123334, - "n": 10, + "n": 1, "ptMin": 0.0, "ptMax": 20, "etaMin": -1.2, From e8e3ca53e0e65310389fae216487783ce0ecfe5c Mon Sep 17 00:00:00 2001 From: mjkim525 Date: Wed, 5 Aug 2026 09:30:53 +0900 Subject: [PATCH 3/4] Trigger CI rerun From ee2cdd09903fa91973c3a096f72c66e90ac928ec Mon Sep 17 00:00:00 2001 From: mjkim525 Date: Wed, 5 Aug 2026 12:51:13 +0900 Subject: [PATCH 4/4] Fix generator test macro naming --- ...Resonances_pp_Rare_test.C => GeneratorLF_Resonances_pp_Rare.C} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename MC/config/PWGLF/ini/tests/{GeneratorLF_Resonances_pp_Rare_test.C => GeneratorLF_Resonances_pp_Rare.C} (100%) diff --git a/MC/config/PWGLF/ini/tests/GeneratorLF_Resonances_pp_Rare_test.C b/MC/config/PWGLF/ini/tests/GeneratorLF_Resonances_pp_Rare.C similarity index 100% rename from MC/config/PWGLF/ini/tests/GeneratorLF_Resonances_pp_Rare_test.C rename to MC/config/PWGLF/ini/tests/GeneratorLF_Resonances_pp_Rare.C