Code review comment for lp:~madnklo/mg5amcnlo/MadNkLO_MCPS

Revision history for this message
Dario Kermanschah (kedario) wrote :

New techniques in the integration framework: importance sampling and multi-channeling.

CHANGES within phase_space_generators.py:

new class SingleChannelPhasespace (SCPS):
     Implements phase space factorization and importance sampling of a single topology.
     Returns the phase space point together with its importance sampling weight (that flattens the single topology peak structure).
--> can be used as an alternative to FlatInvertiblePhasespace (FLATPS) with single channel integrators NAIVE or VEGAS3.

new class MultiChannelPhasespace (MCPS):
     Similar to SCPS, implements phase space factorization and importance sampling of a single channel according to the topology it corresponds to.
     However, comes with a multi-channel weight (that flattens the peak structures of all topologies involved simultaneously).
     Returns the phase space point together with this multi-channel weight.
--> cannot be used as an alternative to FlatInvertiblePhasespace (FLATPS), since it does not work with single channel integrators NAIVE or VEGAS3. Can only be used in combination with the multi-channel integrator MC_VEGAS3

---> new option in MadEvent interface: --PS_generator, can choose from {FLATPS, SCPS, MCPS}.

CHANGES within vegas3_integrator.py:

new class MultiChannelVegas3Integrator (MC_VEGAS3):
     Implements multi-channeling according to the Jacobian method with channel weights (alpha).
     Specifies the various channels according to their topologies as an instance of the class Channel and compute their channel integral in parallel.
     Only works with MCPS.
     Iteratively adapts the vegas grid of each channel and the channel weights in a survey stage and just increases the number of points in a refinement stage until the desired accuracy is reached.
     A max and a min number of iterations can be set.
     The iterations stop before max if the vegas grid and the channel weights converge.
     Prints the changes after iterations and frequent (after every 10s) current estimates of the full integral.
     Returns the estimate of the integral and the Monte Carlo error.

new class Channel:
     Used by MC_VEGAS3.
     Specifies the integrand, the channel number and the vegas grid for this channel.
     Saves integration estimates, function evaluations, Monte Carlo error, ... for the course of one iteration in the adaptive multi-channel integrator MC_VEGAS3.

---> new integrator option in MadEvent interface: --integrator=MC_VEGAS3.

MORE DETAILED DESCRIPTIONS IN MY THESIS OR IN THE CODE.

EXAMPLE MULTI-CHANNELING:

generate e+ e- > mu+ mu- a --LO
output mytest
launch mytest
launch --integrator=MC_VEGAS3 --n_points=8000 --n_iterations=3 --PS_generator=MCPS

after 8 minutes (if you computer is as slow as mine) this should produce something like:
2.69383e-02 +/- 1.79e-04 [pb]

NOTE: if --integrator=MC_VEGAS3:
     n_points: specifies total number of points in first iteration, it is doubled with every iteration
     n_iterations: number of max iterations

EXAMPLE IMPORTANCE SAMPLING WITHOUT MULTI-CHANNELING:

generate e+ e- > mu+ mu- a --LO
output mytest
launch mytest
launch --integrator=NAIVE --n_points=1000 --PS_generator=SCPS

should produce something like:
1.62014e-02 +/- 1.19e-03 [pb]

NOTE: if the process has multiple diagrams, SCPS takes the first one for its phase space parameterization.
NOTE2: to use this we have to remove the arguments "adaptive_wgts" and "channel_nr" from get_PS_point in the call of ME7Integrand in ME7_integrands.py.

« Back to merge proposal