From 0822cd453ad72bc3ec95091363e4c51be7071b80 Mon Sep 17 00:00:00 2001
From: Bertram Kopf <bertram@ep1.rub.de>
Date: Thu, 18 Jul 2019 13:47:22 +0200
Subject: [PATCH] protection against too large ratios between MC and Data
 events; changed variables from int to short

---
 ConfigParser/ParserBase.cc  | 8 ++++----
 ConfigParser/ParserBase.hh  | 8 ++++----
 PwaApps/singleChannelApp.cc | 7 +++++++
 3 files changed, 15 insertions(+), 8 deletions(-)

diff --git a/ConfigParser/ParserBase.cc b/ConfigParser/ParserBase.cc
index c32c7357..36a2eb03 100644
--- a/ConfigParser/ParserBase.cc
+++ b/ConfigParser/ParserBase.cc
@@ -50,8 +50,8 @@ ParserBase::ParserBase(int argc,char **argv)
   , _noOfThreads(16)
   , _noOfClients(1)
   , _serverPort(22222)
-  , _ratioMcToData(100000)
-  , _ratioTruthToMc(100000)
+  , _ratioMcToData(100)
+  , _ratioTruthToMc(100)
   , _evoIterations(100)
   , _evoPopulation(20)
   , _evoRatioOfModParams(1.)
@@ -128,8 +128,8 @@ ParserBase::ParserBase(int argc,char **argv)
     ("noOfThreads",po::value<int>(&_noOfThreads),  "number of threads for multi threaded mode")
     ("noOfClients",po::value<int>(&_noOfClients),  "number of clients/worker nodes for server mode")
     ("serverPort",po::value<int>(&_serverPort),  "port for client/server mode")
-    ("ratioMcToData",po::value<int>(&_ratioMcToData),  "number of MC events defined by ratio #MCs/#Data")
-    ("ratioTruthToMc",po::value<int>(&_ratioTruthToMc),  "number of truth events defined by ratio #truths/#Mcs; needed only for qaModeEffCorrection")
+    ("ratioMcToData",po::value<short>(&_ratioMcToData),  "number of MC events defined by ratio #MCs/#Data")
+    ("ratioTruthToMc",po::value<short>(&_ratioTruthToMc),  "number of truth events defined by ratio #truths/#Mcs; needed only for qaModeEffCorrection")
     ("evoPopulation",po::value<int>(&_evoPopulation),  "iteration population for evo minimizer")
     ("evoIterations",po::value<int>(&_evoIterations),  "number of iterations for evo minimizer")
     ("evoRatioOfModParams",po::value<double>(&_evoRatioOfModParams),  "chosen (avereaged) ratio of fit parameters to be changed for each population (value between 0. and 1.")
diff --git a/ConfigParser/ParserBase.hh b/ConfigParser/ParserBase.hh
index 274fe461..d0a7226b 100644
--- a/ConfigParser/ParserBase.hh
+++ b/ConfigParser/ParserBase.hh
@@ -72,8 +72,8 @@ public:
   const int noOfThreads() const {return _noOfThreads;}
   const int noOfClients() const {return _noOfClients;}
   const int serverPort() const {return _serverPort;}
-  const int ratioMcToData() const {return _ratioMcToData;}
-  const int ratioTruthToMc() const {return _ratioTruthToMc;}
+  const short ratioMcToData() const {return _ratioMcToData;}
+  const short ratioTruthToMc() const {return _ratioTruthToMc;}
   const int evoPopulation() const {return _evoPopulation;}
   const int evoIterations() const {return _evoIterations;}
   const double evoRatioOfModParams() const {return _evoRatioOfModParams;}
@@ -154,8 +154,8 @@ protected:
   int _noOfThreads;
   int _noOfClients;
   int _serverPort;
-  int _ratioMcToData;
-  int _ratioTruthToMc;
+  short _ratioMcToData;
+  short _ratioTruthToMc;
   int _evoIterations;
   int _evoPopulation;
   double _evoRatioOfModParams;
diff --git a/PwaApps/singleChannelApp.cc b/PwaApps/singleChannelApp.cc
index bf556b2c..90b3f52f 100644
--- a/PwaApps/singleChannelApp.cc
+++ b/PwaApps/singleChannelApp.cc
@@ -269,6 +269,13 @@ int main(int __argc,char *__argv[]){
     theAppBase.readEvents(eventsData, dataFileNames, 0, GlobalEnv::instance()->Channel()->useDataEvtWeight(), 0, noOfDataEvents);
     
     int maxMcEvts=eventsData.size()*ratioMcToData;
+    // InfoMsg << "eventsData.size(): " << eventsData.size() << endmsg;
+    // InfoMsg << "ratioMcToData: " << ratioMcToData << endmsg;
+    // InfoMsg << "eventsData.size()*ratioMcToData: " << eventsData.size()*ratioMcToData << endmsg;
+    // InfoMsg << "double(eventsData.size()*ratioMcToData): " << double(eventsData.size()*ratioMcToData) << endmsg;
+    // InfoMsg << "double(eventsData.size())*double(ratioMcToData): " << double(eventsData.size())*double(ratioMcToData) << endmsg;
+    // InfoMsg << "maxMcEvts: " << maxMcEvts << endmsg;
+
     theAppBase.readEvents(mcData, mcFileNames, 0, GlobalEnv::instance()->Channel()->useMCEvtWeight(), 0, maxMcEvts-1);
   }
 
-- 
GitLab