From fb0db1ceb02bdd745ef95f05c114c36e975a3e36 Mon Sep 17 00:00:00 2001
From: notarann <noshint1997@gmail.com>
Date: Wed, 1 Dec 2021 13:12:55 +0100
Subject: [PATCH] configurable code for the change of CB parameters

---
 .../CaloDigiAlgs/python/CaloDigiAlgsConfig.py |  6 ++++
 .../CaloDigiAlgs/src/CaloWaveformDigiAlg.cxx  | 10 ++++++-
 .../CaloDigiAlgs/src/CaloWaveformDigiAlg.h    |  8 ++++++
 .../python/ScintDigiAlgsConfig.py             |  6 ++++
 .../src/ScintWaveformDigiAlg.cxx              | 28 ++++++++++++++++++-
 .../ScintDigiAlgs/src/ScintWaveformDigiAlg.h  | 14 +++++++++-
 .../WaveDigiTools/share/PoolFileCatalog.xml   | 19 +++++++++++++
 .../WaveformDigiAndRecoExample_jobOptions.py  |  2 +-
 .../share/eventLoopHeartBeat.txt              |  1 +
 9 files changed, 90 insertions(+), 4 deletions(-)
 create mode 100644 Waveform/WaveDigiTools/share/PoolFileCatalog.xml
 create mode 100644 Waveform/WaveDigiTools/share/eventLoopHeartBeat.txt

diff --git a/Calorimeter/CaloDigiAlgs/python/CaloDigiAlgsConfig.py b/Calorimeter/CaloDigiAlgs/python/CaloDigiAlgsConfig.py
index a1cf5780..4f5693bd 100644
--- a/Calorimeter/CaloDigiAlgs/python/CaloDigiAlgsConfig.py
+++ b/Calorimeter/CaloDigiAlgs/python/CaloDigiAlgsConfig.py
@@ -27,6 +27,12 @@ def CaloWaveformDigiCfg(flags, name="CaloWaveformDigiAlg", **kwargs):
 
     digiAlg = CompFactory.CaloWaveformDigiAlg(name, **kwargs)
     kwargs.setdefault("WaveformDigitisationTool", tool)
+    
+    digiAlg.CB_alpha_C = -0.9
+    digiAlg.CB_n_C = 4
+    digiAlg.CB_mean_C = 10
+    digiAlg.CB_sigma_C = 900    
+
 
     acc.addEventAlgo(digiAlg)
 
diff --git a/Calorimeter/CaloDigiAlgs/src/CaloWaveformDigiAlg.cxx b/Calorimeter/CaloDigiAlgs/src/CaloWaveformDigiAlg.cxx
index 5faf298f..e1f46df1 100644
--- a/Calorimeter/CaloDigiAlgs/src/CaloWaveformDigiAlg.cxx
+++ b/Calorimeter/CaloDigiAlgs/src/CaloWaveformDigiAlg.cxx
@@ -28,7 +28,15 @@ CaloWaveformDigiAlg::initialize() {
   // Will eventually depend on the type of detector
   // TODO: Vary time at which centre it?
   // TODO: Change params compared to scint
-  m_kernel = new TF1("PDF", " ROOT::Math::crystalball_pdf(x, -0.25, 10, 4, 900)", 0, 1200);
+  //  m_kernel = new TF1("PDF", " ROOT::Math::crystalball_pdf(x, -0.9, 10, 4, 900)", 0, 1200);
+  
+  m_kernel = new TF1("PDF", "ROOT::Math::crystalball_pdf(x, [0],[1],[2],[3])", 0, 1200);
+  //m_kernel->SetParameters(-0.25,10,4,900);                                                      
+  m_kernel->SetParameter(0, m_CB_alpha_C);
+  m_kernel->SetParameter(1, m_CB_n_C);
+  m_kernel->SetParameter(2, m_CB_sigma_C);
+  m_kernel->SetParameter(3, m_CB_mean_C);
+
 
   return StatusCode::SUCCESS;
 }
diff --git a/Calorimeter/CaloDigiAlgs/src/CaloWaveformDigiAlg.h b/Calorimeter/CaloDigiAlgs/src/CaloWaveformDigiAlg.h
index a1ca84f4..302d5e2c 100644
--- a/Calorimeter/CaloDigiAlgs/src/CaloWaveformDigiAlg.h
+++ b/Calorimeter/CaloDigiAlgs/src/CaloWaveformDigiAlg.h
@@ -48,6 +48,14 @@ class CaloWaveformDigiAlg : public AthReentrantAlgorithm {
   CaloWaveformDigiAlg &operator=(const CaloWaveformDigiAlg&) = delete;
   //@}
 
+  Gaudi::Property<double> m_CB_alpha_C {this, "CB_alpha_C", 0, "Alpha of the crystal ball function"};
+  Gaudi::Property<double> m_CB_n_C {this, "CB_n_C", 0, "n of the crystal ball function"};
+  Gaudi::Property<double> m_CB_mean_C {this, "CB_mean_C", 0, "Mean of the crystal ball function"};
+  Gaudi::Property<double> m_CB_sigma_C {this, "CB_sigma_C", 0, "Sigma of the crystal ball function"};
+
+
+
+
 
   /// Kernel PDF
   TF1* m_kernel;
diff --git a/Scintillator/ScintDigiAlgs/python/ScintDigiAlgsConfig.py b/Scintillator/ScintDigiAlgs/python/ScintDigiAlgsConfig.py
index 5f8e0c6e..9fccbbfe 100644
--- a/Scintillator/ScintDigiAlgs/python/ScintDigiAlgsConfig.py
+++ b/Scintillator/ScintDigiAlgs/python/ScintDigiAlgsConfig.py
@@ -29,7 +29,13 @@ def ScintWaveformDigiCfg(flags, name="ScintWaveformDigiAlg", source="", **kwargs
     kwargs.setdefault("ScintHitContainerKey", source+"Hits")
     kwargs.setdefault("WaveformContainerKey", source+"Waveforms")
 
+#    digiAlg = CompFactory.ScintWaveformDigiAlg(name,CB_alpha= -0.32275, CB_n = 65, CB_sigma=5.372, CB_mean=846.55, **kwargs)   
     digiAlg = CompFactory.ScintWaveformDigiAlg(name, **kwargs)
+    digiAlg.CB_alpha = -0.32275
+    digiAlg.CB_n = 65
+    digiAlg.CB_mean = 846.55
+    digiAlg.CB_sigma = 5.372
+    
     kwargs.setdefault("WaveformDigitisationTool", tool)
 
     acc.addEventAlgo(digiAlg)
diff --git a/Scintillator/ScintDigiAlgs/src/ScintWaveformDigiAlg.cxx b/Scintillator/ScintDigiAlgs/src/ScintWaveformDigiAlg.cxx
index e09a778a..a23e53b5 100644
--- a/Scintillator/ScintDigiAlgs/src/ScintWaveformDigiAlg.cxx
+++ b/Scintillator/ScintDigiAlgs/src/ScintWaveformDigiAlg.cxx
@@ -1,9 +1,11 @@
+
 #include "ScintWaveformDigiAlg.h"
 
 #include "Identifier/Identifier.h"
 
 #include <vector>
 #include <map>
+#include "Math/PdfFuncMathCore.h"
 
 ScintWaveformDigiAlg::ScintWaveformDigiAlg(const std::string& name, 
 					 ISvcLocator* pSvcLocator)
@@ -28,7 +30,31 @@ ScintWaveformDigiAlg::initialize() {
   // Will eventually depend on the type of detector
   // TODO: Vary time at which centre it?
   // TODO: Better parameters
-  m_kernel = new TF1("PDF", " ROOT::Math::crystalball_pdf(x, -0.25, 10, 4, 900)", 0, 1200);
+  //TString CBB= "";
+  // CBB+="x";
+  //CBB+=CB_alpha;
+  //CBB+=CB_n;
+  //CBB+=CB_mean;
+  //CBB+=CB_sigma;
+  
+  
+  //TString CBB_n= "";
+  //CBB_n+=CB_n;
+
+  //TString CBB_mean= "";
+  //CBB_mean+=CB_mean;
+
+  //TString CBB_sigma= "";
+  //  CBB_sigma+=CB_sigma;
+
+
+  
+  m_kernel = new TF1("PDF", "ROOT::Math::crystalball_pdf(x, [0],[1],[2],[3])", 0, 1200);
+  //m_kernel->SetParameters(-0.25,10,4,900);
+  m_kernel->SetParameter(0, m_CB_alpha);
+  m_kernel->SetParameter(1, m_CB_n);
+  m_kernel->SetParameter(2, m_CB_sigma);
+  m_kernel->SetParameter(3, m_CB_mean);
 
   return StatusCode::SUCCESS;
 }
diff --git a/Scintillator/ScintDigiAlgs/src/ScintWaveformDigiAlg.h b/Scintillator/ScintDigiAlgs/src/ScintWaveformDigiAlg.h
index 70e333a9..750f43b1 100644
--- a/Scintillator/ScintDigiAlgs/src/ScintWaveformDigiAlg.h
+++ b/Scintillator/ScintDigiAlgs/src/ScintWaveformDigiAlg.h
@@ -21,7 +21,8 @@
 
 // ROOT
 #include "TF1.h"
-
+#include "Math/Math.h"
+#include "Math/PdfFuncMathCore.h"
 // STL
 #include <string>
 
@@ -39,6 +40,12 @@ class ScintWaveformDigiAlg : public AthReentrantAlgorithm {
   virtual StatusCode finalize() override;
   //@}
 
+  //  Gaudi::Property<float> CB_alpha {this, "CB_alpha_", 0, "Alpha of the crystal ball function"};                     
+  //  Gaudi::Property<float> CB_n {this, "CB_n_", 0, "n of the crystal ball function"};                                 
+  //  Gaudi::Property<float> CB_mean {this, "CB_mean_", 0, "Mean of the crystal ball function"};                      
+  //  Gaudi::Property<float> CB_sigma {this, "CB_sigma_", 0, "Sigma of the crystal ball function"};  
+
+
  private:
 
   /** @name Disallow default instantiation, copy, assignment */
@@ -48,6 +55,11 @@ class ScintWaveformDigiAlg : public AthReentrantAlgorithm {
   ScintWaveformDigiAlg &operator=(const ScintWaveformDigiAlg&) = delete;
   //@}
 
+  Gaudi::Property<double> m_CB_alpha {this, "CB_alpha", 0, "Alpha of the crystal ball function"};
+  Gaudi::Property<double> m_CB_n {this, "CB_n", 0, "n of the crystal ball function"};
+  Gaudi::Property<double> m_CB_mean {this, "CB_mean", 0, "Mean of the crystal ball function"};  
+  Gaudi::Property<double> m_CB_sigma {this, "CB_sigma", 0, "Sigma of the crystal ball function"};
+
 
   /// Kernel PDF
   TF1* m_kernel;
diff --git a/Waveform/WaveDigiTools/share/PoolFileCatalog.xml b/Waveform/WaveDigiTools/share/PoolFileCatalog.xml
new file mode 100644
index 00000000..7f7036c1
--- /dev/null
+++ b/Waveform/WaveDigiTools/share/PoolFileCatalog.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<!-- Edited By POOL -->
+<!DOCTYPE POOLFILECATALOG SYSTEM "InMemory">
+<POOLFILECATALOG>
+  <File ID="422D1B59-C166-9A4F-B6A0-EC7C6D397188">
+    <physical>
+      <pfn filetype="ROOT_All" name="/eos/project-f/faser-commissioning/Simulation/Test/TB.Elec.200GeV.SIM.root"/>
+    </physical>
+    <logical/>
+  </File>
+
+  <File ID="81C968F6-07F0-9442-9F9F-2EDE7208A89F">
+    <physical>
+      <pfn filetype="ROOT_All" name="output.xAOD.root"/>
+    </physical>
+    <logical/>
+  </File>
+
+</POOLFILECATALOG>
diff --git a/Waveform/WaveDigiTools/share/WaveformDigiAndRecoExample_jobOptions.py b/Waveform/WaveDigiTools/share/WaveformDigiAndRecoExample_jobOptions.py
index 6d298a95..77903182 100644
--- a/Waveform/WaveDigiTools/share/WaveformDigiAndRecoExample_jobOptions.py
+++ b/Waveform/WaveDigiTools/share/WaveformDigiAndRecoExample_jobOptions.py
@@ -30,7 +30,7 @@ if __name__ == "__main__":
     ConfigFlags.GeoModel.Align.Dynamic = False
     
     ConfigFlags.Input.Files = [
-        "/bundle/data/FASER/LC_output/BatchOutput/TestBeam/ScanPoint8/Elec100GeV.s8.p8.r5x13.8y22.7.split1.TB.SIM.root"
+        "/eos/project-f/faser-commissioning/Simulation/Test/TB.Elec.200GeV.SIM.root"
         ]
 
     if doRDO:
diff --git a/Waveform/WaveDigiTools/share/eventLoopHeartBeat.txt b/Waveform/WaveDigiTools/share/eventLoopHeartBeat.txt
new file mode 100644
index 00000000..121c668b
--- /dev/null
+++ b/Waveform/WaveDigiTools/share/eventLoopHeartBeat.txt
@@ -0,0 +1 @@
+  done processing event #99, run #12345 100 events read so far  <<<===
-- 
GitLab