Coder Social home page Coder Social logo

goord / camgen Goto Github PK

View Code? Open in Web Editor NEW
2.0 2.0 1.0 56.76 MB

A generic tree-level particle scattering Monte Carlo generator using recursive amplitude evaluation

License: GNU General Public License v2.0

C++ 99.28% C 0.04% Objective-C 0.09% Makefile 0.45% M4 0.15%

camgen's People

Contributors

goord avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

dvdongen

camgen's Issues

Create interface for the LHAPDF-6

The new LHAPDF-6 distribution is fully C++ and therefore much less memory-consuming and more portable than the old ones. Add a macro to detect this version and create a separate interface for it.

parni_test.cpp does not compile

parni_test.cpp does not compile because it includes parni_sub.h, which, in the most recent change has been renamed to parni.h

Camgen fails to compile examples

Camgen currently fails to compile the examples; complaining about unimplemented LHAPDF functions. This can be fixed by adding the -lLHAPDF flag in /examples/Makefile.am, but this requires rebuilding the Makefiles (which for some reason fails on my computer, so I'll just hack the Makefile in the mean time).

Adaptive grid segmentation error

After many events, the parni grids tend to cause segmentation faults, most likely due to rounding errors after many iterations; create a program reproducing this issue (in a tractable amount of time) and fix the bug.

Create MC generator save/load test

Adopt a test that validates our serialization functionality: generating a new event from the same RNG key should result in exactly the same phase space point with save/load.

Weird behavior in mu-, nu_mubar > e-, nu_ebar

When calculating this process (partonic) at 14 TeV (using the SM model) without any cuts on gets the result of ~0.54e-4 pb. However calculating this cross section by hand (assuming massless particles, as does Camgen) we get ~0.60e-4 pb, which agrees with the result obtained using MadGraph 5 (also ~0.60e-4 pb) without any cuts.

MadGraph 5 however does not neglect the masses, so my first instinct to explain the difference between Camgen and MadGraph (after ensuring that alpha and other scales were equal) was that Camgen does neglect the masses, whilst MadGraph 5 does not.

Assigning a mass to the electron (and calling refresh_fermion_masses()) does not affect the cross section very much (as expected). However, assigning the muon a mass we immediately get ~0.36 pb as a result. And this result persists even if the muon mass is taken to be extremely tiny (like 1e-8 GeV, even less than the electron mass). It seems strange that the cross section with a massive muon stays at ~0.36 pb even as the muon mass is taken towards zero.

However, settings the correct masses in SM_base.h (in the default settings (now part of Chyugh) fixes everything and makes Camgen match up with MG5 and theory (~0.60 pb). But printing model_type::M_mu does still say it is zero for some reason :S Why is this?

Setting it to SM_params::M_mu (which it should be already) and calling refresh_fermion_masses(), again messes up the whole calculation (leading to ~0.40 pb). What is going on here?

Question: Processes with e+,e- as initial state have xec=0

When I set my incoming state to e+,e- (or some other incoming states, like 'gamma,gamma' or 'W+,W-') my pre-initialised estimated xsec is 0. It does work when i set my initial state to f.i. 'u,ubar'.
I'm working with the SM model with all masses turned on.
I've tried:
-Several different outgoing states (f.i. 'u,u,ubar,ubar', 't,tbar' and '4xgamma')
-With and without electron mass
-The initial_state set to partonic and eplus_eminus
-With and without minimal invariant masses
-With and without ps-cuts
-Different colour/helicity/phase_space-generators

Migrate to C++-11

Rewrite code using C++-11 new syntactic sugar (auto, templated typedefs,...), replace MC-generators with new STL generators, replace our vector<T,N> with STL array<T,N>.

Implementation of dphi in d_R function of ps_gen_base.h

In the implementation of the d_R function of ps_gen_base.h the difference in dphi is calculated using:

phi(1) - phi(2)

However this is not entirely correct. Consider for example phi(1) ~= pi and phi(2) ~= -pi. In that case the dphi according the the current implementation would be ~2pi, instead of the more correct ~0. It might be a good idea to add a dedicated d_phi function because there is already a d_eta one.

Total cross section depends on number of events

The cross section for non-trivial processes changes with the number of events. One gets different results for the cross section for 1e5, 1e6 and 1e7 events. Even without any cuts or adaptive grids.

For example for C C > A A A A where C and A are two new scalars with trivial couplings AAh0 and CCh0h0 and where h0 is the normal Higgs boson with a mass of 125 GeV. A and C are stable with a small mass.

(The reason for the new particles was to isolate any strange couplings causing the effect.)

I have sent an example code for this some times ago, I only list the bug so we don't forget about it ;)

ps channel adapt floating point exception

ps channel adapt crashes with a floating point exception if throw_pos_weight_event() consistently returns false and adapt_channels() is entered.

Camgen should end operations (after printing an error or something), after all, there is nothing to adapt.

SM_test fails gauge invariance

The SM_test test fails gauge invariance at W+W- > W+W- if continuous colors are switched off. If they are on; the test also seems to fail,l but only later, for W+W- > Z,Z,Z.

The dependence on colors is a bit strange since neither process involves particles with a color charge.

I checked this with Daan; and it exists both for the current version and the previous one.

Asymmetric beam energy with PDFs

Using set_first_beam_energy and set_second_beam_energy in a configuration file seems to work very strangely. If having a partonic initial state the beams get set correctly, even if asymmetric.

However asymmetric beams in combination with the proton_proton initial state leads to odd behaviour. For example, setting beam 1 to 700 GeV and the second one to 70000 GeV, leads to Camgen reporting the following during a run:

initial state: pp_y
beam energy -1: 1400
hadron -1: 2212
beam energy -2: 1400
hadron -2: 2212
Ecm: 28000
PDF set: cteq6l.LHpdf
PDF nr: 1
mu_F: 91.1876
alpha_s: 0.117981

The beam energies are not correct; and they are symmetric (which they shouldn't). Also the Ecm is not correct. (This is for g,g > b,bbar,b,bbar by the way).

Remove N_in and N_out from template parameters

Causes long compile times whereas the gain in performance is likely to be marginal: this is a very big refactoring and will require a new dynamic bitset and replacement of all bitset algorithms.

adapt examples

Adapt the examples to compile under the new Camgen version and create new useful examples.

infinite colour weight in uni_cols.h for mixed coloured/colourless processes

when looking at a mixed coloured/colourless process, like for instance the process "u,ubar -> e-,e+,g",
uni_cols.h line 214 will divide by the colourtensor rank of e-, which is 0, which in turn leaves the colour weight to be infinite.

This error can be reproduced by changing the following in the "example1.cpp" file:
-- Change all 'QCD' to 'SM'
-- Change "colour(int)" to "colour_entry(int)"
-- Change "colour_generators::flow_sampling" to "colour_generators::uniform"
-- Change process from "g,g > g,g,g,g,g,g,g,g,g,g" to "u,ubar > g,g,g,g,g,g,g,g,e+,e-"
-- Add a line at the end of main that prints the total wight of the generated event: "std::cerr << "ERROR -- the weight now is: " << gen.w() << std::endl;"

This issue seems to appear for more functions in uni_cols.h

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.