diff --git a/Calorimeter/CaloDigiAlgs/python/CaloDigiAlgsConfig.py b/Calorimeter/CaloDigiAlgs/python/CaloDigiAlgsConfig.py index a1cf57803a4549e31dd4c341e77829194c97db9f..4f5693bd7888853e3bee6668e9f0323296f2dfc7 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 5faf298ff2de05fdeb3269b0088778ed144d845e..e1f46df1bf632e1d988c2faa3a22ad8ff40d7243 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 a1ca84f42d7ac3606f043bf5ddd98676b37bbfa7..302d5e2c9244a704c81a25ec5db8e635fa763d6c 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 5f8e0c6ed9f2870652f567b839bb6a59dec437a3..ff9e95e363215602fa90477e60019a2454a7aa6d 100644 --- a/Scintillator/ScintDigiAlgs/python/ScintDigiAlgsConfig.py +++ b/Scintillator/ScintDigiAlgs/python/ScintDigiAlgsConfig.py @@ -30,6 +30,11 @@ def ScintWaveformDigiCfg(flags, name="ScintWaveformDigiAlg", source="", **kwargs kwargs.setdefault("WaveformContainerKey", source+"Waveforms") 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 e09a778a33c3a9614d8fc5e584abdfcc51a67032..03c1873d11d4ecd83d2d8ad22eef07a76b7338a2 100644 --- a/Scintillator/ScintDigiAlgs/src/ScintWaveformDigiAlg.cxx +++ b/Scintillator/ScintDigiAlgs/src/ScintWaveformDigiAlg.cxx @@ -1,3 +1,4 @@ + #include "ScintWaveformDigiAlg.h" #include "Identifier/Identifier.h" @@ -5,6 +6,7 @@ #include <vector> #include <map> + ScintWaveformDigiAlg::ScintWaveformDigiAlg(const std::string& name, ISvcLocator* pSvcLocator) : AthReentrantAlgorithm(name, pSvcLocator) { @@ -28,7 +30,14 @@ 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); + + + + m_kernel = new TF1("PDF", "ROOT::Math::crystalball_pdf(x, [0],[1],[2],[3])", 0, 1200); + 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 70e333a952912af5e50240eb606b83cd01fd9e27..af60e02d8169194ccc2459f0b7a69727b2544eba 100644 --- a/Scintillator/ScintDigiAlgs/src/ScintWaveformDigiAlg.h +++ b/Scintillator/ScintDigiAlgs/src/ScintWaveformDigiAlg.h @@ -22,6 +22,7 @@ // ROOT #include "TF1.h" + // STL #include <string> @@ -39,6 +40,7 @@ class ScintWaveformDigiAlg : public AthReentrantAlgorithm { virtual StatusCode finalize() override; //@} + private: /** @name Disallow default instantiation, copy, assignment */ @@ -48,6 +50,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/WaveformDigiAndRecoExample_jobOptions.py b/Waveform/WaveDigiTools/share/WaveformDigiAndRecoExample_jobOptions.py index 6d298a95268cad5135c799c10ac2a04aafade9e4..779031828c9c5736f9403e403514e19285029499 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: