Skip to content

Conversation

@ZWorr
Copy link

@ZWorr ZWorr commented Jan 14, 2026

Added Resonant scattering to the Boosted Dark Matter physics module. Modified the framework to include Boosted Dark Matter Resonant Scattering.

Copy link
Member

@nusense nusense left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This wasn't a review of the physics but of the general code, especially changes to existing code.

http://www.genie-mc.org for more information. This fork adds the capability to simulate boosted dark matter
scattering via resonant baryon production. It is intended for future merger into an official GENIE release.

The GENIE Generator product is an advanced physics simulation used by nearly all modern neutrino experiments and
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Before any merge the previous paragraph about being a fork should be removed.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually a big block of stuff here is a reversion of some more recent changes and care must be taken in what's merged in.

<param type="alg" name="Module-9"> genie::UnstableParticleDecayer/AfterHadronTransport </param>
<param type="alg" name="ILstGen"> genie::DMRESInteractionListGenerator/DM-Default </param>
</param_set>

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a reason that "RES-DM" is not clustered with "RES-DMv1" and "RES-DMv2" up near line 117. Or perhaps those should be down here. Or they're vestigial and need to be removed?

<param type="alg" name="Generator-0"> genie::EventGenerator/DMEL </param>
<param type="alg" name="Generator-1"> genie::EventGenerator/DMDIS </param>
<param type="alg" name="Generator-2"> genie::EventGenerator/DME </param>
</param_set>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should the name of this param set include "DM" rather than just be "NonRes"

<priority msgstream="DMELKinematics"> WARN </priority>
<priority msgstream="DMELXSec"> NOTICE </priority>
<priority msgstream="DMRes"> INFO </priority>
<priority msgstream="EventGenerator"> WARN </priority>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should an entry for msgstream "DMRes" be added (at different levels) to all the other `Messenger_XYZZY.xml" files?

mcj_driver->UseFluxDriver(flux_driver);
mcj_driver->UseGeomAnalyzer(geom_driver);
mcj_driver->ForceInteraction();
mcj_driver->Configure();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This addition of mcj_driver->ForceInteraction() doesn't seem DM related and would change the behavior of this application. Is it something that really should be done, or is it leftover from some testing?





Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You might want to clear up a bunch of empty lines here and right below the next block of code.

bool is_dm = proc_info.IsDarkMatter();

if (!is_dm && !is_DM) return false;

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not a fan of two variables only differentiated by case. Perhaps using is_dmres might be warranted.

Igor Kakorin <[email protected]>
Joint Institute for Nuclear Research
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this Igor Kakorin's code or Zachary Orr's? Also check the copyright ranges ... should probably be up to 2026.

fAmpl.fMinus3 = k3_Sqrt2 * (fkrdm.Tv * (fQuV - fQdV) + fkrdm.Ta * (fQdA - fQuA));
fAmpl.fMinus1 = (1/2) * k1_Sqrt3 * (2 * fkrdm.Lamda * (fkrdm.Rv * (5 * fQdV + fQuV) - fkrdm.Ra * (5 * fQdA + fQuA)) + 3 * kSqrt2 * (fkrdm.Tv * (fQuV - fQdV) + fkrdm.Ta * (fQdA - fQuA)));
fAmpl.fPlus1 = (1/2) * k1_Sqrt3 * (-2 * fkrdm.Lamda * (fkrdm.Ra * fQuA + fkrdm.Rv * (5 * fQdV + fQuV)) + fQdA * (3 * kSqrt2 * fkrdm.Ta - 10 * fkrdm.Lamda * fkrdm.Ra) + 3 * kSqrt2 * fkrdm.Tv * (fQdV - fQuV) - 3 * kSqrt2 * fQuA * fkrdm.Ta);
fAmpl.fPlus3 = k3_Sqrt2 * (fkrdm.Tv * (fQdV - fQuV) + fkrdm.Ta * (fQdA - fQuA));
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In C++ (1/2) is done as integer math and will always yield zero. You need to make at least one of the two a floating point type.

fAmpl.fMinus3 = 0;
fAmpl.fMinus1 = (1/2) * k1_Sqrt3 * L2 * (fkrdm.Ra * (fQuA - 4 * fQdA) - fkrdm.Rv * (fQuV - 4 * fQdV));
fAmpl.fPlus1 = (1/2) * k1_Sqrt3 * L2 * (fkrdm.Ra * (fQuA - 4 * fQdA) + fkrdm.Rv * (fQuV - 4 * fQdV));
fAmpl.fPlus3 = 0;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Again (1/2) is 0. Last mention... You'll need to check everywhere (not just this file and these two instances) for this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants