|
[Rivet] mapping of DrawNormalized() method in RootAndy Buckley andy.buckley at cern.chWed Jun 8 11:38:39 BST 2016
Hi Debarati, So you *want* to normalise to (unit?) area, but the Rivet normalize() function did not give the right result? That should be the appropriate method, and works elsewhere. Using scale(histptr, 1/sumOfWeights()) will do the same thing, if every input event fills the histogram once. Perhaps the issue is that you have a substantial population in the underflow and overflow bins, in which case the in-range normalised area will be significantly smaller than one. If this is the case and you *really* only want to normalise to the integral of the in-range bins (noting that this does not really give you the physical 1/sigma dsigma/dQ), then you can use the 3rd argument to normalize(): normalize(myhist, 1, false). Does that help? If not, please send some more concrete information, e.g. the analysis code or YODA files. Andy On 08/06/16 11:27, Debarati Roy wrote: > Hi Andy, > I tried Normalise() and Scale() methods in the finalise section to match with the data. > But I could see significant mismatch. > > So I tried the NormalizetoSum in the plot which exhibits exact match if I do not divide the bin content by bin width which I am doing in my data histogram having variable bin width to plot normalised event per unit (1/N dN/dQ). > > So I am trying to look for some option so that both of these (content divided by bin width and NormalizetoSum ) can be implemented to match the data if possible. > > What do you think about this ? > > Thank you, > Debarati > > > > ________________________________________ > From: Andy Buckley > Sent: 08 June 2016 15:08 > To: Debarati Roy; David Grellscheid; rivet at projects.hepforge.org > Subject: Re: [Rivet] mapping of DrawNormalized() method in Root > > Hi Deberati, > > I'm not quite sure what you want -- you want to normalise during > plotting, or during the analysis? > > For the norm-in-analysis route, which we recommend, you can simply call > normalize(myHistoPtr) in the analysis' finalize() function. You can give > a second argument to normalise to something other than 1, or use > scale(hist, factor) if you need to retain some of the original > normalisation information. Note that these methods include the overflow > bins in the normalisation: this is usually the correct thing to do, but > is not possible if only normalising during plotting. > > For plotting, you can use those Normalize* attributes I mentioned > earlier. They should be added to the relevant PLOT section in a .plot or > .dat file, or given on the rivet-mkhtml or rivet-cmphistos command line > like PLOT:NormalizeToIntegral=1. The full set of make-plots > configuration directives is documented at > https://rivet.hepforge.org/make-plots.html > > Andy > > > > On 08/06/16 09:51, Debarati Roy wrote: >> Dear Experts, >> Thanks for the feedback. Can you please point to where NormalizeToSum and NormalizeToIntegral are defined ? >> >> Thanks a lot, >> Debarati >> >> >> ________________________________________ >> From: Andy Buckley >> Sent: 06 June 2016 17:57 >> To: David Grellscheid; Debarati Roy; rivet at projects.hepforge.org >> Subject: Re: [Rivet] mapping of DrawNormalized() method in Root >> >> I agree with David, but Rivet's make-plots system does have some >> plotting options for normalisation -- with the caveat that all it knows >> about is the values to be rendered. >> >> Adding the plot key NormalizeToIntegral=1 will normalise the output plot >> to the inferred histogram area, while NormalizeToSum=1 will scale by the >> sum of bin values. >> >> But like David, I think this is much better done at the data histogram >> level than in plotting. >> >> Andy >> >> >> On 06/06/16 13:12, David Grellscheid wrote: >>> Hi Debarati, >>> >>> I'm not sure I fully understand your question, but Rivet histograms do >>> not know anything about how they get drawn. That's the job of a plotting >>> tool that takes YODA files as input (rivet-mkhtml for example). >>> >>> A histogram can be normalized in the finalize() step of the Rivet >>> analysis using the scale() or normalize() functions. This is done in >>> many of the existing analyses, look there for examples. >>> >>> See you, >>> >>> David >>> >>> >>> On 05/06/2016 15:00, Debarati Roy wrote: >>>> Dear Experts, Can you please let me know how can I implement the >>>> DrawNormalized() method >>>> (https://root.cern.ch/doc/master/TH1_8cxx_source.html#l02918) of Root >>>> in Rivet for 1D histogram normalisation ? Thanks for your help in >>>> advance. >>>> >>>> >>>> Debarati >>> _______________________________________________ >>> Rivet mailing list >>> Rivet at projects.hepforge.org >>> https://www.hepforge.org/lists/listinfo/rivet >> >> >> -- >> Dr Andy Buckley, Lecturer / Royal Society University Research Fellow >> Particle Physics Expt Group, University of Glasgow >> > > > -- > Dr Andy Buckley, Lecturer / Royal Society University Research Fellow > Particle Physics Expt Group, University of Glasgow > -- Dr Andy Buckley, Lecturer / Royal Society University Research Fellow Particle Physics Expt Group, University of Glasgow
More information about the Rivet mailing list |