{"action":"created","issue":{"url":"https://api.github.com/repos/MoMEMta/MoMEMta/issues/91","repository_url":"https://api.github.com/repos/MoMEMta/MoMEMta","labels_url":"https://api.github.com/repos/MoMEMta/MoMEMta/issues/91/labels{/name}","comments_url":"https://api.github.com/repos/MoMEMta/MoMEMta/issues/91/comments","events_url":"https://api.github.com/repos/MoMEMta/MoMEMta/issues/91/events","html_url":"https://github.com/MoMEMta/MoMEMta/pull/91","id":177533728,"number":91,"title":"Change output of Looper module to a set of particles","user":{"login":"blinkseb","id":386274,"avatar_url":"https://avatars.githubusercontent.com/u/386274?v=3","gravatar_id":"","url":"https://api.github.com/users/blinkseb","html_url":"https://github.com/blinkseb","followers_url":"https://api.github.com/users/blinkseb/followers","following_url":"https://api.github.com/users/blinkseb/following{/other_user}","gists_url":"https://api.github.com/users/blinkseb/gists{/gist_id}","starred_url":"https://api.github.com/users/blinkseb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/blinkseb/subscriptions","organizations_url":"https://api.github.com/users/blinkseb/orgs","repos_url":"https://api.github.com/users/blinkseb/repos","events_url":"https://api.github.com/users/blinkseb/events{/privacy}","received_events_url":"https://api.github.com/users/blinkseb/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/MoMEMta/MoMEMta/labels/ready%20for%20review%20/%20comments","name":"ready for review / comments","color":"5319e7"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2016-09-16T22:33:42Z","updated_at":"2016-09-16T22:40:19Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/MoMEMta/MoMEMta/pulls/91","html_url":"https://github.com/MoMEMta/MoMEMta/pull/91","diff_url":"https://github.com/MoMEMta/MoMEMta/pull/91.diff","patch_url":"https://github.com/MoMEMta/MoMEMta/pull/91.patch"},"body":"Currently, the Looper module output a `Solution`, which is supposed to be used by the various modules. But we can imagine some cases where two blocks produce solutions, which all must be used  to compute the matrix element. This is not possible for the moment.\r\n\r\nThis PR introduce a new behavior. The solution is gone, and the looper output only a set of particles, and the associated jacobian. This allows to drop the concept of visible and invisibles particles in most of the modules, and to use a more generic _particles_ concept. See the various configuration files to have an idea of the change needed.\r\n\r\n 1. First commit is not directly related with this PR, but adds some context when a `boost::bad_any_cast` is thrown\r\n 2. It's no longer possible to compute the phase space density for the final state particles inside the matrix element, because there's no distinction anymore between visible an invisibles particles. A new module is introduced, StandardPhaseSpace, which is responsible to compute this quantity. The user is then expected to pass this phase-space as a jacobian to the matrix element module.\r\n 3. Second commit is a bug fix. In some cases, a module whose output is used by a module inside a looper can be scheduled *after* the looper instead of before. To avoid this, a fake connection is done between the looper and the module to force the execution *before* the looper.\r\n 4. Last commit is more tricky. During development of this features, we observed some *extremely* weird behavior, with change in the final integrand of the examples. It has been traced to numerical instability in the computation of the final jacobian: `a * b * c` gives a different value than `a * c * b`. Difference is very small, but still present and enough to cause cuba to perform the integration differently. To mitigate this effect, we enabled the smoothing option of cuba by default.\r\n\r\nWhile I was changing the modules, I optimized a bit the code for the matrix element module, like vectors that were filled for each step instead of once. I also tried to use reference to existing `LorentzVector` instead of doing copies when possible (see `BuildInitialState` for example)\r\n\r\nI also edited a bit the module's documentation to reflect latest changes in the looper. Don't hesitate if you have some style comments, or things you want to see added!"},"comment":{"url":"https://api.github.com/repos/MoMEMta/MoMEMta/issues/comments/247725053","html_url":"https://github.com/MoMEMta/MoMEMta/pull/91#issuecomment-247725053","issue_url":"https://api.github.com/repos/MoMEMta/MoMEMta/issues/91","id":247725053,"user":{"login":"blinkseb","id":386274,"avatar_url":"https://avatars.githubusercontent.com/u/386274?v=3","gravatar_id":"","url":"https://api.github.com/users/blinkseb","html_url":"https://github.com/blinkseb","followers_url":"https://api.github.com/users/blinkseb/followers","following_url":"https://api.github.com/users/blinkseb/following{/other_user}","gists_url":"https://api.github.com/users/blinkseb/gists{/gist_id}","starred_url":"https://api.github.com/users/blinkseb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/blinkseb/subscriptions","organizations_url":"https://api.github.com/users/blinkseb/orgs","repos_url":"https://api.github.com/users/blinkseb/repos","events_url":"https://api.github.com/users/blinkseb/events{/privacy}","received_events_url":"https://api.github.com/users/blinkseb/received_events","type":"User","site_admin":false},"created_at":"2016-09-16T22:40:19Z","updated_at":"2016-09-16T22:40:19Z","body":"www.hepforge.org is down for the moment (for LHAPDF) so I killed travis jobs. Hopefully it'll come back tomorrow :)"}}
{"actor":{"display_login":"blinkseb"}}