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