|
[Rivet] Rivet Jet AnalysisST Harnew sh7566 at bristol.ac.ukTue Feb 1 12:42:08 GMT 2011
Hi Torbjörn, Thanks for your help! I just looked at the main10.cc and src/UserHooks.cc files you mentioned, and I can see how to make the inverse weighting available in the event loop for histogramming within Pythia, but is there a way to then pass this to a Rivet analysis? Many Thanks, Sam Harnew --On 01 February 2011 09:29 +0100 Torbjorn Sjostrand <torbjorn at thep.lu.se> wrote: > Hello Andy, > > Well, it is on my "to do" list to implement it properly. > Right now it is only half implemented. What exists is the > UserHooks class, see "User Hooks" in the online manual. > It can be made to interrupt/interrogate/modify the normal > event generation sequence at a number of specified points. > Of special relevance here is "(v) Modify cross-sections". > If the method canModifySigma() is overloaded to return true > then multiplySigmaBy() can be used to multiply the cross > section by some kinematics-dependent expression. > > examples/main10.cc gives you a simple example how it could > work in practice. Here, event-by-event, the pT of a 2 -> 2 > process is read out, and histogrammed. Instead of returning > a weight 1, you could here easily return a pT-dependent > weight, that then would modify the native cross section. > The src/UserHooks.cc file contains a longer listing of the > kinematical variables you could access at that stage. > > What is still missing is the following: the modification you > do with UserHooks is viewed as a true modification of the > cross section, not only as a modified sampling. This has two > consequences. The first is that the pythia.statistics() > cross sections are wrong, and there is no simple way for you > to salvage that. You just have to do a normal run to get > cross sections. The second is that you need to implement > either a public method or a public data mamber in your own > derived UserHooks class, that contains the inverse of the > weight you multiple the cross section with, and that you then > should use as a weight on your events when you histogram > results. > > (As part of the Monte Carlo procedure, some of the trial events > will fail later. If you update the inverse weight for each new > trial event, however, then automatically that will store the > correct value for the event that survives to the end and > is histogrammed by you, with the then current weight value.) > > Hope this explains what to do. > > Best, Torbjörn ---------------------- ST Harnew sh7566 at bristol.ac.uk
More information about the Rivet mailing list |