[Rivet-svn] r3999 - in trunk: bin doc

blackhole at projects.hepforge.org blackhole at projects.hepforge.org
Wed Nov 14 16:48:59 GMT 2012


Author: buckley
Date: Wed Nov 14 16:48:58 2012
New Revision: 3999

Log:
Merge changeset [3964] from AIDA branch

Modified:
   trunk/bin/make-plots
   trunk/doc/make-plots.txt

Modified: trunk/bin/make-plots
==============================================================================
--- trunk/bin/make-plots	Wed Nov 14 16:48:13 2012	(r3998)
+++ trunk/bin/make-plots	Wed Nov 14 16:48:58 2012	(r3999)
@@ -653,8 +653,12 @@
             inputdata.description['YLabel']='$(\\text{MC}-\\text{data})$'
             inputdata.description['YMin']=-3.5
             inputdata.description['YMax']=3.5
+        elif inputdata.description.has_key('RatioPlotMode') and inputdata.description['RatioPlotMode']=='datamc':
+            inputdata.description['YLabel']='Data/MC'
+            inputdata.description['YMin']=0.5
+            inputdata.description['YMax']=1.5
         else:
-            inputdata.description['YLabel']='MC/data'
+            inputdata.description['YLabel']='MC/Data'
             inputdata.description['YMin']=0.5
             inputdata.description['YMax']=1.5
         if inputdata.description.has_key('RatioPlotYLabel'):
@@ -699,17 +703,26 @@
             if i!=self.refdata:
                 if inputdata.description.has_key('RatioPlotMode') and inputdata.description['RatioPlotMode']=='deviation':
                     inputdata.histos[i].deviation(inputdata.histos[self.refdata])
+                elif inputdata.description.has_key('RatioPlotMode') and inputdata.description['RatioPlotMode']=='datamc':
+                    inputdata.histos[i].dividereverse(inputdata.histos[self.refdata])
+                    inputdata.histos[i].description['ErrorBars']='1'
                 else:
                     inputdata.histos[i].divide(inputdata.histos[self.refdata])
         if inputdata.description.has_key('RatioPlotMode') and inputdata.description['RatioPlotMode']=='deviation':
             inputdata.histos[self.refdata].deviation(inputdata.histos[self.refdata])
+        elif inputdata.description.has_key('RatioPlotMode') and inputdata.description['RatioPlotMode']=='datamc':
+            inputdata.histos[self.refdata].dividereverse(inputdata.histos[self.refdata])
         else:
             inputdata.histos[self.refdata].divide(inputdata.histos[self.refdata])
 
     def _draw(self, inputdata):
         out = ""
         for i in inputdata.description['DrawOnly']:
-            out += inputdata.histos[i].draw(self.coors)
+            if inputdata.description.has_key('RatioPlotMode') and inputdata.description['RatioPlotMode']=='datamc':
+                if i!=self.refdata:
+                    out += inputdata.histos[i].draw(self.coors)
+            else:
+                out += inputdata.histos[i].draw(self.coors)
 
         frame = Frame()
         out += frame.draw(inputdata)
@@ -1355,6 +1368,27 @@
             else:
                 print '+++ Error in Histogram.divide(): Binning of histograms differs'
 
+    def dividereverse(self,name):
+        if len(self.data)!=len(name.data):
+            print '+++ Error in Histogram.divide(): Binning of histograms differs'
+        for i in range(len(self.data)):
+            if fuzzyeq(self.data[i]['LowEdge'], name.data[i]['LowEdge']) and \
+               fuzzyeq(self.data[i]['UpEdge'], name.data[i]['UpEdge']):
+                try:
+                    self.data[i]['Error'][0] = name.data[i]['Error'][0]/self.data[i]['Content']
+                except ZeroDivisionError:
+                    self.data[i]['Error'][0]=0.
+                try:
+                    self.data[i]['Error'][1] = name.data[i]['Error'][1]/self.data[i]['Content']
+                except ZeroDivisionError:
+                    self.data[i]['Error'][1]=0.
+                try:
+                    self.data[i]['Content'] = name.data[i]['Content']/self.data[i]['Content']
+                except ZeroDivisionError:
+                    self.data[i]['Content']=1.
+            else:
+                print '+++ Error in Histogram.divide(): Binning of histograms differs'
+
     def deviation(self,name):
         if len(self.data)!=len(name.data):
             print '+++ Error in Histogram.deviation(): Binning of histograms differs'

Modified: trunk/doc/make-plots.txt
==============================================================================
--- trunk/doc/make-plots.txt	Wed Nov 14 16:48:13 2012	(r3998)
+++ trunk/doc/make-plots.txt	Wed Nov 14 16:48:58 2012	(r3999)
@@ -304,10 +304,12 @@
 must specify your reference data ID. This option is used by the
 link:compare-histos.html[`compare-histos`] script.
 
-If you prefer showing `(MC-data)/uncertainty` rather than `MC/data`, you can set
 --------------------
-RatioPlotMode=deviation
+RatioPlotMode=<default|deviation|datamc>
 --------------------
+By default, the ratio plot displays MC/Data. You can switch to
+(MC-data)/uncertainty (`deviation`) or Data/MC (`datamc`) with this
+option.
 
 In ratio plots the following additional options are available and work in
 a similar way as their regular counterparts:


More information about the Rivet-svn mailing list