Explorar el Código

Adds simple debugging which can just print out the values as they are
bgin calculated to find what is causing crashes. Fixes bug in Hist2d
code.

Caleb Fangmeier hace 7 años
padre
commit
6d3fc567de
Se han modificado 5 ficheros con 25 adiciones y 8 borrados
  1. 10 0
      config.hpp
  2. 5 4
      python/filval/histogram_utils.py
  3. 1 1
      python/filval/plotter.py
  4. 0 2
      python/setup.py
  5. 9 1
      value.hpp

+ 10 - 0
config.hpp

@@ -105,6 +105,14 @@ class Config{
             return max_events.as<size_t>();
             return max_events.as<size_t>();
         }
         }
 
 
+        bool get_debug() {
+            YAML::Node debug_node = root["debug"];
+            if(!debug_node) {
+                return false;
+            }
+            return debug_node.as<bool>();
+        }
+
         std::string get_output_filename() {
         std::string get_output_filename() {
             YAML::Node output_file = root["output-file"];
             YAML::Node output_file = root["output-file"];
             if(output_file) {
             if(output_file) {
@@ -130,9 +138,11 @@ class Config{
 };
 };
 
 
 Config* the_config = nullptr;
 Config* the_config = nullptr;
+bool debug_on = false;
 void init_config(const std::string& input_filename){
 void init_config(const std::string& input_filename){
     if(the_config) delete the_config;
     if(the_config) delete the_config;
     the_config = new Config(input_filename);
     the_config = new Config(input_filename);
+    debug_on = the_config->get_debug();
 }
 }
 
 
 }
 }

+ 5 - 4
python/filval/histogram_utils.py

@@ -42,6 +42,7 @@ def hist2d(th2, rescale_x=1.0, rescale_y=1.0, rescale_z=1.0):
     """
     """
     nbins_x = th2.GetNbinsX()
     nbins_x = th2.GetNbinsX()
     nbins_y = th2.GetNbinsY()
     nbins_y = th2.GetNbinsY()
+    print(nbins_x, nbins_y)
     xs = np.zeros((nbins_y+1, nbins_x+1), np.float32)
     xs = np.zeros((nbins_y+1, nbins_x+1), np.float32)
     ys = np.zeros((nbins_y+1, nbins_x+1), np.float32)
     ys = np.zeros((nbins_y+1, nbins_x+1), np.float32)
     values = np.zeros((nbins_y, nbins_x), np.float32)
     values = np.zeros((nbins_y, nbins_x), np.float32)
@@ -52,11 +53,11 @@ def hist2d(th2, rescale_x=1.0, rescale_y=1.0, rescale_z=1.0):
             ys[j][i] = th2.GetYaxis().GetBinLowEdge(j+1)
             ys[j][i] = th2.GetYaxis().GetBinLowEdge(j+1)
             values[j][i] = th2.GetBinContent(i+1, j+1)
             values[j][i] = th2.GetBinContent(i+1, j+1)
             errors[j][i] = th2.GetBinError(i+1, j+1)
             errors[j][i] = th2.GetBinError(i+1, j+1)
-        xs[nbins_y][i] = th2.GetXaxis().GetBinUpEdge(i+1)
-        ys[nbins_y][i] = th2.GetYaxis().GetBinUpEdge(nbins_y+1)
+        xs[nbins_y][i] = th2.GetXaxis().GetBinUpEdge(i)
+        ys[nbins_y][i] = th2.GetYaxis().GetBinUpEdge(nbins_y)
     for j in range(nbins_y+1):
     for j in range(nbins_y+1):
-        xs[j][nbins_x] = th2.GetXaxis().GetBinUpEdge(nbins_x+1)
-        ys[j][nbins_x] = th2.GetYaxis().GetBinUpEdge(j+1)
+        xs[j][nbins_x] = th2.GetXaxis().GetBinUpEdge(nbins_x)
+        ys[j][nbins_x] = th2.GetYaxis().GetBinUpEdge(j)
 
 
     xs *= rescale_x
     xs *= rescale_x
     ys *= rescale_y
     ys *= rescale_y

+ 1 - 1
python/filval/plotter.py

@@ -200,7 +200,7 @@ def render_plots(plots, exts=('png',), scale=1.0, to_disk=True):
         print(f'Building plot {plot.name}')
         print(f'Building plot {plot.name}')
         plot.data = None
         plot.data = None
         if to_disk:
         if to_disk:
-            with lp.figure(plot.name, directory='output/figures',
+            with lp.figure(plot.name.replace(' ', '_'), directory='output/figures',
                            exts=exts,
                            exts=exts,
                            size=(scale * 10, scale * 10)):
                            size=(scale * 10, scale * 10)):
                 argdicts, docs = grid_plot(plot.subplots)
                 argdicts, docs = grid_plot(plot.subplots)

+ 0 - 2
python/setup.py

@@ -3,8 +3,6 @@ from setuptools import setup
 with open('requirements.txt') as req:
 with open('requirements.txt') as req:
     install_requires = [l.strip() for l in req.readlines()]
     install_requires = [l.strip() for l in req.readlines()]
 
 
-print(install_requires)
-
 setup(
 setup(
     name='filval',
     name='filval',
     version='0.1',
     version='0.1',

+ 9 - 1
value.hpp

@@ -55,6 +55,7 @@
 #include <vector>
 #include <vector>
 
 
 #include "log.hpp"
 #include "log.hpp"
+#include "config.hpp"
 
 
 /**
 /**
  * The namespace containing all filval classes and functions.
  * The namespace containing all filval classes and functions.
@@ -334,7 +335,7 @@ class GenValue{
         /**
         /**
          * If logging is enabled for this value, this function should be
          * If logging is enabled for this value, this function should be
          * implemented to format the value to a string and place it as an INFO
          * implemented to format the value to a string and place it as an INFO
-         * entry in the log file. Useful for debugging, but may produce alot of
+         * entry in the log file. Useful for debugging, but may produce a lot of
          * output.
          * output.
          */
          */
         virtual void log() = 0;
         virtual void log() = 0;
@@ -423,6 +424,7 @@ class Value : public GenValue{
         Value(const std::string& name, const std::string& alias="")
         Value(const std::string& name, const std::string& alias="")
           :value_to_string([](T){return "";}),
           :value_to_string([](T){return "";}),
            GenValue(typeid(T), name, alias){ }
            GenValue(typeid(T), name, alias){ }
+
         /** Calculate, if necessary, and return the value held by this object.
         /** Calculate, if necessary, and return the value held by this object.
          */
          */
         virtual T& get_value() = 0;
         virtual T& get_value() = 0;
@@ -458,6 +460,9 @@ class ObservedValue : public Value<T>{
            val_ref(val_ref){ }
            val_ref(val_ref){ }
 
 
         void log(){
         void log(){
+            if (util::debug_on) {
+                std::cout << "Calculating Value: " << this->get_name() << std::endl;
+            }
             if(this->logging_enabled){
             if(this->logging_enabled){
                 INFO(this->get_name() << ": " << this->value_to_string(*val_ref));
                 INFO(this->get_name() << ": " << this->value_to_string(*val_ref));
             }
             }
@@ -511,6 +516,9 @@ class DerivedValue : public Value<T>{
           :Value<T>(name, alias){ }
           :Value<T>(name, alias){ }
 
 
         void log(){
         void log(){
+            if (util::debug_on) {
+                std::cout << "Calculating Value: " << this->get_name() << std::endl;
+            }
             if(this->logging_enabled){
             if(this->logging_enabled){
                 INFO(this->get_name() << ": " << this->value_to_string(value));
                 INFO(this->get_name() << ": " << this->value_to_string(value));
             }
             }