From 59f22443f54ac4a9d1c376f72f90b03f29b6971e Mon Sep 17 00:00:00 2001 From: Marta Razza Date: Mon, 25 May 2026 10:28:44 +0200 Subject: [PATCH 1/6] [PWGHF] Add Pythia8 B- CRmode2 config and BToDeuteron trigger ini --- .../ini/GeneratorHFTrigger_BToDeuteron.ini | 7 ++ .../generator/pythia8_bminus_CRmode2.cfg | 84 +++++++++++++++++++ 2 files changed, 91 insertions(+) create mode 100644 MC/config/PWGHF/ini/GeneratorHFTrigger_BToDeuteron.ini create mode 100644 MC/config/PWGHF/pythia8/generator/pythia8_bminus_CRmode2.cfg diff --git a/MC/config/PWGHF/ini/GeneratorHFTrigger_BToDeuteron.ini b/MC/config/PWGHF/ini/GeneratorHFTrigger_BToDeuteron.ini new file mode 100644 index 000000000..9966885a8 --- /dev/null +++ b/MC/config/PWGHF/ini/GeneratorHFTrigger_BToDeuteron.ini @@ -0,0 +1,7 @@ +#NEV_TEST> 10 +### The external generator derives from GeneratorPythia8. +[GeneratorExternal] +fileName=${O2DPG_MC_CONFIG_ROOT}/MC/config/PWGHF/external/generator/generator_pythia8_hfhadron_to_nuclei.C +funcName=generateHFHadToNuclei(3, {521}, {1000010020}, true, 0.5) +[GeneratorPythia8] +config=${O2DPG_MC_CONFIG_ROOT}/MC/config/PWGHF/pythia8/generator/pythia8_bminus_CRmode2.cfg diff --git a/MC/config/PWGHF/pythia8/generator/pythia8_bminus_CRmode2.cfg b/MC/config/PWGHF/pythia8/generator/pythia8_bminus_CRmode2.cfg new file mode 100644 index 000000000..eaa6a7a11 --- /dev/null +++ b/MC/config/PWGHF/pythia8/generator/pythia8_bminus_CRmode2.cfg @@ -0,0 +1,84 @@ +### beams +Beams:idA 2212 # proton +Beams:idB 2212 # proton +Beams:eCM 13600. # GeV + +### processes +SoftQCD:inelastic on # all inelastic processes + +### decays +ParticleDecays:limitTau0 on +ParticleDecays:tau0Max 10. + +### switching on Pythia Mode2 +ColourReconnection:mode 1 +ColourReconnection:allowDoubleJunRem off +ColourReconnection:m0 0.3 +ColourReconnection:allowJunctions on +ColourReconnection:junctionCorrection 1.20 +ColourReconnection:timeDilationMode 2 +ColourReconnection:timeDilationPar 0.18 +StringPT:sigma 0.335 +StringZ:aLund 0.36 +StringZ:bLund 0.56 +StringFlav:probQQtoQ 0.078 +StringFlav:ProbStoUD 0.2 +StringFlav:probQQ1toQQ0join 0.0275,0.0275,0.0275,0.0275 +MultiPartonInteractions:pT0Ref 2.15 +BeamRemnants:remnantMode 1 +BeamRemnants:saturation 5 +BeamRemnants:allowBeamJunction = off +BeamRemnants:beamJunction = off +ColourReconnection:allowDiquarkJunctionCR = off + +# Correct decay lengths +# B+ +521:tau0 = 0.4914 # PDG: 1.638 ps -> c*tau = 0.4914 mm + +## B+ (521) decay modes – at least 2 nucleons in the final states +521:onMode = off +521:oneChannel = 1 3e-07 0 -2112 -2112 111 2112 2212 +521:addChannel = 1 3e-07 0 -3122 -2212 213 2112 2212 +521:addChannel = 1 3e-07 0 -2212 -2112 111 323 2112 2212 +521:addChannel = 1 3e-07 0 -2212 -2112 -211 211 321 2112 2212 +521:addChannel = 1 2e-07 0 -3122 -2212 211 2112 2212 +521:addChannel = 1 2e-07 0 -3122 -2212 -211 111 111 211 211 221 2112 2212 +521:addChannel = 1 2e-07 0 -3122 -2112 111 2112 2212 +521:addChannel = 1 2e-07 0 -3122 -2112 -211 111 211 2112 2212 +521:addChannel = 1 2e-07 0 -2214 -2212 111 211 321 2112 2212 +521:addChannel = 1 2e-07 0 -2212 -2212 211 211 311 2112 2212 +521:addChannel = 1 2e-07 0 -2212 -2212 113 211 321 2112 2212 +521:addChannel = 1 2e-07 0 -2212 -2212 111 111 211 211 2112 2212 +521:addChannel = 1 2e-07 0 -2212 -2112 211 311 2112 2212 +521:addChannel = 1 2e-07 0 -2212 -2112 113 321 2112 2212 +521:addChannel = 1 2e-07 0 -2212 -2112 111 221 321 2112 2212 +521:addChannel = 1 2e-07 0 -2212 -2112 111 113 211 2112 2212 +521:addChannel = 1 2e-07 0 -2112 -2112 -211 211 311 2112 2212 +521:addChannel = 1 2e-07 0 -2212 -2112 -211 113 211 211 2112 2212 +521:addChannel = 1 2e-07 0 -2212 -2112 -211 111 211 211 2112 2212 +521:addChannel = 1 2e-07 0 -2112 -2112 221 223 2112 2212 +521:addChannel = 1 2e-07 0 -2112 -2112 111 221 2112 2212 +521:offIfMatch = -2112 -2112 111 2112 2212 +521:offIfMatch = -3122 -2212 213 2112 2212 +521:offIfMatch = -2212 -2112 111 323 2112 2212 +521:offIfMatch = -2212 -2112 -211 211 321 2112 2212 +521:offIfMatch = -3122 -2212 211 2112 2212 +521:offIfMatch = -3122 -2212 -211 111 111 211 211 221 2112 2212 +521:offIfMatch = -3122 -2112 111 2112 2212 +521:offIfMatch = -3122 -2112 -211 111 211 2112 2212 +521:offIfMatch = -2214 -2212 111 211 321 2112 2212 +521:offIfMatch = -2212 -2212 211 211 311 2112 2212 +521:offIfMatch = -2212 -2212 113 211 321 2112 2212 +521:offIfMatch = -2212 -2212 111 111 211 211 2112 2212 +521:offIfMatch = -2212 -2112 211 311 2112 2212 +521:offIfMatch = -2212 -2112 113 321 2112 2212 +521:offIfMatch = -2212 -2112 111 221 321 2112 2212 +521:offIfMatch = -2212 -2112 111 113 211 2112 2212 +521:offIfMatch = -2112 -2112 -211 211 311 2112 2212 +521:offIfMatch = -2212 -2112 -211 113 211 211 2112 2212 +521:offIfMatch = -2212 -2112 -211 111 211 211 2112 2212 +521:offIfMatch = -2112 -2112 221 223 2112 2212 +521:offIfMatch = -2112 -2112 111 221 2112 2212 + + + From dcd31b7beabc1eec4e1aaaac1c309a2bec22a0de Mon Sep 17 00:00:00 2001 From: Marta Razza Date: Wed, 27 May 2026 20:13:15 +0200 Subject: [PATCH 2/6] [PWGHF] Add test macro for BToDeuteron HF trigger --- .../tests/GeneratorHFTrigger_BToDeuteron.C | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 MC/config/PWGHF/ini/tests/GeneratorHFTrigger_BToDeuteron.C diff --git a/MC/config/PWGHF/ini/tests/GeneratorHFTrigger_BToDeuteron.C b/MC/config/PWGHF/ini/tests/GeneratorHFTrigger_BToDeuteron.C new file mode 100644 index 000000000..1fa064ed1 --- /dev/null +++ b/MC/config/PWGHF/ini/tests/GeneratorHFTrigger_BToDeuteron.C @@ -0,0 +1,57 @@ +int External() +{ + std::string path{"o2sim_Kine.root"}; + std::vector checkPdgHadron{521}; // Bmeson + std::vector nucleiDauPdg{1000010020}; // d + + 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 nSignals{}, nSignalGoodDecay{}; + auto nEvents = tree->GetEntries(); + + for (int i = 0; i < nEvents; i++) + { + tree->GetEntry(i); + for (auto &track : *tracks) + { + auto pdg = track.GetPdgCode(); + if (std::find(checkPdgHadron.begin(), checkPdgHadron.end(), std::abs(pdg)) != checkPdgHadron.end()) // found signal + { + // count signal PDG + if(std::abs(track.GetRapidity()) > 1.5) continue; // skip if outside rapidity window + nSignals++; + for (int j{track.getFirstDaughterTrackId()}; j <= track.getLastDaughterTrackId(); ++j) + { + auto pdgDau = tracks->at(j).GetPdgCode(); + if (std::find(nucleiDauPdg.begin(), nucleiDauPdg.end(), std::abs(pdgDau)) != nucleiDauPdg.end()) + { + nSignalGoodDecay++; + } + } + } + } + } + std::cout << "--------------------------------\n"; + std::cout << "# Events: " << nEvents << "\n"; + std::cout <<"# signal hadrons: " << nSignals << "\n"; + std::cout <<"# signal hadrons decaying into nuclei: " << nSignalGoodDecay << "\n"; + + float fracForcedDecays = nSignals ? float(nSignalGoodDecay) / nSignals : 0.0f; + float uncFracForcedDecays = nSignals ? std::sqrt(fracForcedDecays * (1 - fracForcedDecays) / nSignals) : 1.0f; + if (1 - fracForcedDecays > 0.2 + uncFracForcedDecays) // we put some tolerance (lambdaB in MB events do not coalesce) + { + std::cerr << "Fraction of signals decaying into nuclei: " << fracForcedDecays << ", lower than expected\n"; + return 1; + } + + return 0; +} From 09cf8a15e203e85a4caf4088b3ab10e24d675572 Mon Sep 17 00:00:00 2001 From: Marta Razza Date: Wed, 27 May 2026 22:48:35 +0200 Subject: [PATCH 3/6] Add O2DPG_TEST directive to GeneratorHFTrigger_BToDeuteron.ini --- MC/config/PWGHF/ini/GeneratorHFTrigger_BToDeuteron.ini | 1 + 1 file changed, 1 insertion(+) diff --git a/MC/config/PWGHF/ini/GeneratorHFTrigger_BToDeuteron.ini b/MC/config/PWGHF/ini/GeneratorHFTrigger_BToDeuteron.ini index 9966885a8..95bf68b19 100644 --- a/MC/config/PWGHF/ini/GeneratorHFTrigger_BToDeuteron.ini +++ b/MC/config/PWGHF/ini/GeneratorHFTrigger_BToDeuteron.ini @@ -1,4 +1,5 @@ #NEV_TEST> 10 +#O2DPG_TEST> ${O2DPG_MC_CONFIG_ROOT}/MC/config/PWGHF/ini/tests/GeneratorHFTrigger_BToDeuteron.C ### The external generator derives from GeneratorPythia8. [GeneratorExternal] fileName=${O2DPG_MC_CONFIG_ROOT}/MC/config/PWGHF/external/generator/generator_pythia8_hfhadron_to_nuclei.C From bb00e183cd5028b63bf0b10c37f1beff987906e0 Mon Sep 17 00:00:00 2001 From: Marta Razza Date: Thu, 28 May 2026 22:01:02 +0200 Subject: [PATCH 4/6] Switch B+ decay from offIfMatch to onIfMatch --- .../generator/pythia8_bminus_CRmode2.cfg | 42 +++++++++---------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/MC/config/PWGHF/pythia8/generator/pythia8_bminus_CRmode2.cfg b/MC/config/PWGHF/pythia8/generator/pythia8_bminus_CRmode2.cfg index eaa6a7a11..013c20f64 100644 --- a/MC/config/PWGHF/pythia8/generator/pythia8_bminus_CRmode2.cfg +++ b/MC/config/PWGHF/pythia8/generator/pythia8_bminus_CRmode2.cfg @@ -58,27 +58,27 @@ ColourReconnection:allowDiquarkJunctionCR = off 521:addChannel = 1 2e-07 0 -2212 -2112 -211 111 211 211 2112 2212 521:addChannel = 1 2e-07 0 -2112 -2112 221 223 2112 2212 521:addChannel = 1 2e-07 0 -2112 -2112 111 221 2112 2212 -521:offIfMatch = -2112 -2112 111 2112 2212 -521:offIfMatch = -3122 -2212 213 2112 2212 -521:offIfMatch = -2212 -2112 111 323 2112 2212 -521:offIfMatch = -2212 -2112 -211 211 321 2112 2212 -521:offIfMatch = -3122 -2212 211 2112 2212 -521:offIfMatch = -3122 -2212 -211 111 111 211 211 221 2112 2212 -521:offIfMatch = -3122 -2112 111 2112 2212 -521:offIfMatch = -3122 -2112 -211 111 211 2112 2212 -521:offIfMatch = -2214 -2212 111 211 321 2112 2212 -521:offIfMatch = -2212 -2212 211 211 311 2112 2212 -521:offIfMatch = -2212 -2212 113 211 321 2112 2212 -521:offIfMatch = -2212 -2212 111 111 211 211 2112 2212 -521:offIfMatch = -2212 -2112 211 311 2112 2212 -521:offIfMatch = -2212 -2112 113 321 2112 2212 -521:offIfMatch = -2212 -2112 111 221 321 2112 2212 -521:offIfMatch = -2212 -2112 111 113 211 2112 2212 -521:offIfMatch = -2112 -2112 -211 211 311 2112 2212 -521:offIfMatch = -2212 -2112 -211 113 211 211 2112 2212 -521:offIfMatch = -2212 -2112 -211 111 211 211 2112 2212 -521:offIfMatch = -2112 -2112 221 223 2112 2212 -521:offIfMatch = -2112 -2112 111 221 2112 2212 +521:onIfMatch = -2112 -2112 111 2112 2212 +521:onIfMatch = -3122 -2212 213 2112 2212 +521:onIfMatch = -2212 -2112 111 323 2112 2212 +521:onIfMatch = -2212 -2112 -211 211 321 2112 2212 +521:onIfMatch = -3122 -2212 211 2112 2212 +521:onIfMatch = -3122 -2212 -211 111 111 211 211 221 2112 2212 +521:onIfMatch = -3122 -2112 111 2112 2212 +521:onIfMatch = -3122 -2112 -211 111 211 2112 2212 +521:onIfMatch = -2214 -2212 111 211 321 2112 2212 +521:onIfMatch = -2212 -2212 211 211 311 2112 2212 +521:onIfMatch = -2212 -2212 113 211 321 2112 2212 +521:onIfMatch = -2212 -2212 111 111 211 211 2112 2212 +521:onIfMatch = -2212 -2112 211 311 2112 2212 +521:onIfMatch = -2212 -2112 113 321 2112 2212 +521:onIfMatch = -2212 -2112 111 221 321 2112 2212 +521:onIfMatch = -2212 -2112 111 113 211 2112 2212 +521:onIfMatch = -2112 -2112 -211 211 311 2112 2212 +521:onIfMatch = -2212 -2112 -211 113 211 211 2112 2212 +521:onIfMatch = -2212 -2112 -211 111 211 211 2112 2212 +521:onIfMatch = -2112 -2112 221 223 2112 2212 +521:onIfMatch = -2112 -2112 111 221 2112 2212 From 3dfbbb5a3024f0f597538c963f60550f632df378 Mon Sep 17 00:00:00 2001 From: Marta Razza Date: Fri, 29 May 2026 19:38:31 +0200 Subject: [PATCH 5/6] Remove fraction check in BToDeuteron test --- .../tests/GeneratorHFTrigger_BToDeuteron.C | 23 ++++++------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/MC/config/PWGHF/ini/tests/GeneratorHFTrigger_BToDeuteron.C b/MC/config/PWGHF/ini/tests/GeneratorHFTrigger_BToDeuteron.C index 1fa064ed1..bd56f98e6 100644 --- a/MC/config/PWGHF/ini/tests/GeneratorHFTrigger_BToDeuteron.C +++ b/MC/config/PWGHF/ini/tests/GeneratorHFTrigger_BToDeuteron.C @@ -1,8 +1,8 @@ int External() { std::string path{"o2sim_Kine.root"}; - std::vector checkPdgHadron{521}; // Bmeson - std::vector nucleiDauPdg{1000010020}; // d + std::vector checkPdgHadron{521}; + std::vector nucleiDauPdg{1000010020}; TFile file(path.c_str(), "READ"); if (file.IsZombie()) @@ -24,10 +24,9 @@ int External() for (auto &track : *tracks) { auto pdg = track.GetPdgCode(); - if (std::find(checkPdgHadron.begin(), checkPdgHadron.end(), std::abs(pdg)) != checkPdgHadron.end()) // found signal + if (std::find(checkPdgHadron.begin(), checkPdgHadron.end(), std::abs(pdg)) != checkPdgHadron.end()) { - // count signal PDG - if(std::abs(track.GetRapidity()) > 1.5) continue; // skip if outside rapidity window + if(std::abs(track.GetRapidity()) > 1.5) continue; nSignals++; for (int j{track.getFirstDaughterTrackId()}; j <= track.getLastDaughterTrackId(); ++j) { @@ -42,16 +41,8 @@ int External() } std::cout << "--------------------------------\n"; std::cout << "# Events: " << nEvents << "\n"; - std::cout <<"# signal hadrons: " << nSignals << "\n"; - std::cout <<"# signal hadrons decaying into nuclei: " << nSignalGoodDecay << "\n"; - - float fracForcedDecays = nSignals ? float(nSignalGoodDecay) / nSignals : 0.0f; - float uncFracForcedDecays = nSignals ? std::sqrt(fracForcedDecays * (1 - fracForcedDecays) / nSignals) : 1.0f; - if (1 - fracForcedDecays > 0.2 + uncFracForcedDecays) // we put some tolerance (lambdaB in MB events do not coalesce) - { - std::cerr << "Fraction of signals decaying into nuclei: " << fracForcedDecays << ", lower than expected\n"; - return 1; - } + std::cout << "# signal hadrons: " << nSignals << "\n"; + std::cout << "# signal hadrons decaying into nuclei: " << nSignalGoodDecay << "\n"; return 0; -} +} \ No newline at end of file From b6139425f87e2a1cb16c2ae1fd3bf78cee1efb62 Mon Sep 17 00:00:00 2001 From: Marta Razza Date: Sat, 30 May 2026 00:20:53 +0200 Subject: [PATCH 6/6] Fix BToDeuteron Pythia8 config --- .../generator/pythia8_bminus_CRmode2.cfg | 68 +++++++++---------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/MC/config/PWGHF/pythia8/generator/pythia8_bminus_CRmode2.cfg b/MC/config/PWGHF/pythia8/generator/pythia8_bminus_CRmode2.cfg index 013c20f64..11466941c 100644 --- a/MC/config/PWGHF/pythia8/generator/pythia8_bminus_CRmode2.cfg +++ b/MC/config/PWGHF/pythia8/generator/pythia8_bminus_CRmode2.cfg @@ -41,44 +41,44 @@ ColourReconnection:allowDiquarkJunctionCR = off 521:addChannel = 1 3e-07 0 -3122 -2212 213 2112 2212 521:addChannel = 1 3e-07 0 -2212 -2112 111 323 2112 2212 521:addChannel = 1 3e-07 0 -2212 -2112 -211 211 321 2112 2212 -521:addChannel = 1 2e-07 0 -3122 -2212 211 2112 2212 -521:addChannel = 1 2e-07 0 -3122 -2212 -211 111 111 211 211 221 2112 2212 -521:addChannel = 1 2e-07 0 -3122 -2112 111 2112 2212 -521:addChannel = 1 2e-07 0 -3122 -2112 -211 111 211 2112 2212 -521:addChannel = 1 2e-07 0 -2214 -2212 111 211 321 2112 2212 -521:addChannel = 1 2e-07 0 -2212 -2212 211 211 311 2112 2212 -521:addChannel = 1 2e-07 0 -2212 -2212 113 211 321 2112 2212 -521:addChannel = 1 2e-07 0 -2212 -2212 111 111 211 211 2112 2212 -521:addChannel = 1 2e-07 0 -2212 -2112 211 311 2112 2212 -521:addChannel = 1 2e-07 0 -2212 -2112 113 321 2112 2212 -521:addChannel = 1 2e-07 0 -2212 -2112 111 221 321 2112 2212 -521:addChannel = 1 2e-07 0 -2212 -2112 111 113 211 2112 2212 -521:addChannel = 1 2e-07 0 -2112 -2112 -211 211 311 2112 2212 -521:addChannel = 1 2e-07 0 -2212 -2112 -211 113 211 211 2112 2212 -521:addChannel = 1 2e-07 0 -2212 -2112 -211 111 211 211 2112 2212 -521:addChannel = 1 2e-07 0 -2112 -2112 221 223 2112 2212 -521:addChannel = 1 2e-07 0 -2112 -2112 111 221 2112 2212 +##521:addChannel = 1 2e-07 0 -3122 -2212 211 2112 2212 +##521:addChannel = 1 2e-07 0 -3122 -2212 -211 111 111 211 211 221 2112 2212 +##521:addChannel = 1 2e-07 0 -3122 -2112 111 2112 2212 +##521:addChannel = 1 2e-07 0 -3122 -2112 -211 111 211 2112 2212 +##521:addChannel = 1 2e-07 0 -2214 -2212 111 211 321 2112 2212 +##521:addChannel = 1 2e-07 0 -2212 -2212 211 211 311 2112 2212 +##521:addChannel = 1 2e-07 0 -2212 -2212 113 211 321 2112 2212 +##521:addChannel = 1 2e-07 0 -2212 -2212 111 111 211 211 2112 2212 +##521:addChannel = 1 2e-07 0 -2212 -2112 211 311 2112 2212 +##521:addChannel = 1 2e-07 0 -2212 -2112 113 321 2112 2212 +##521:addChannel = 1 2e-07 0 -2212 -2112 111 221 321 2112 2212 +##521:addChannel = 1 2e-07 0 -2212 -2112 111 113 211 2112 2212 +##521:addChannel = 1 2e-07 0 -2112 -2112 -211 211 311 2112 2212 +##521:addChannel = 1 2e-07 0 -2212 -2112 -211 113 211 211 2112 2212 +##521:addChannel = 1 2e-07 0 -2212 -2112 -211 111 211 211 2112 2212 +##521:addChannel = 1 2e-07 0 -2112 -2112 221 223 2112 2212 +##521:addChannel = 1 2e-07 0 -2112 -2112 111 221 2112 2212 521:onIfMatch = -2112 -2112 111 2112 2212 521:onIfMatch = -3122 -2212 213 2112 2212 521:onIfMatch = -2212 -2112 111 323 2112 2212 521:onIfMatch = -2212 -2112 -211 211 321 2112 2212 -521:onIfMatch = -3122 -2212 211 2112 2212 -521:onIfMatch = -3122 -2212 -211 111 111 211 211 221 2112 2212 -521:onIfMatch = -3122 -2112 111 2112 2212 -521:onIfMatch = -3122 -2112 -211 111 211 2112 2212 -521:onIfMatch = -2214 -2212 111 211 321 2112 2212 -521:onIfMatch = -2212 -2212 211 211 311 2112 2212 -521:onIfMatch = -2212 -2212 113 211 321 2112 2212 -521:onIfMatch = -2212 -2212 111 111 211 211 2112 2212 -521:onIfMatch = -2212 -2112 211 311 2112 2212 -521:onIfMatch = -2212 -2112 113 321 2112 2212 -521:onIfMatch = -2212 -2112 111 221 321 2112 2212 -521:onIfMatch = -2212 -2112 111 113 211 2112 2212 -521:onIfMatch = -2112 -2112 -211 211 311 2112 2212 -521:onIfMatch = -2212 -2112 -211 113 211 211 2112 2212 -521:onIfMatch = -2212 -2112 -211 111 211 211 2112 2212 -521:onIfMatch = -2112 -2112 221 223 2112 2212 -521:onIfMatch = -2112 -2112 111 221 2112 2212 +##521:onIfMatch = -3122 -2212 211 2112 2212 +##521:onIfMatch = -3122 -2212 -211 111 111 211 211 221 2112 2212 +##521:onIfMatch = -3122 -2112 111 2112 2212 +##521:onIfMatch = -3122 -2112 -211 111 211 2112 2212 +##521:onIfMatch = -2214 -2212 111 211 321 2112 2212 +##521:onIfMatch = -2212 -2212 211 211 311 2112 2212 +##521:onIfMatch = -2212 -2212 113 211 321 2112 2212 +##521:onIfMatch = -2212 -2212 111 111 211 211 2112 2212 +##521:onIfMatch = -2212 -2112 211 311 2112 2212 +##521:onIfMatch = -2212 -2112 113 321 2112 2212 +##521:onIfMatch = -2212 -2112 111 221 321 2112 2212 +##521:onIfMatch = -2212 -2112 111 113 211 2112 2212 +##521:onIfMatch = -2112 -2112 -211 211 311 2112 2212 +##521:onIfMatch = -2212 -2112 -211 113 211 211 2112 2212 +##521:onIfMatch = -2212 -2112 -211 111 211 211 2112 2212 +##521:onIfMatch = -2112 -2112 221 223 2112 2212 +##521:onIfMatch = -2112 -2112 111 221 2112 2212