diff --git a/Examples/options/tut_detsim_SDT.py b/Examples/options/tut_detsim_SDT.py index 1fd7773b2c4ab648b53f3a77cb44d138be3f07e6..ca5498b772ef7afdf10146dc2a551cd4c751a277 100644 --- a/Examples/options/tut_detsim_SDT.py +++ b/Examples/options/tut_detsim_SDT.py @@ -126,10 +126,19 @@ from Configurables import DriftChamberSensDetTool calo_sensdettool = CalorimeterSensDetTool("CalorimeterSensDetTool") driftchamber_sensdettool = DriftChamberSensDetTool("DriftChamberSensDetTool") -driftchamber_sensdettool.DedxSimTool = "DummyDedxSimTool" + +# dedxoption = "DummyDedxSimTool" +dedxoption = "BetheBlochEquationDedxSimTool" + +driftchamber_sensdettool.DedxSimTool = dedxoption from Configurables import DummyDedxSimTool -dedx_simtool = DummyDedxSimTool("DummyDedxSimTool") +from Configurables import BetheBlochEquationDedxSimTool + +if dedxoption == "DummyDedxSimTool": + dedx_simtool = DummyDedxSimTool("DummyDedxSimTool") +elif dedxoption == "BetheBlochEquationDedxSimTool": + dedx_simtool = BetheBlochEquationDedxSimTool("BetheBlochEquationDedxSimTool") ############################################################################## # POD I/O diff --git a/Service/DedxSvc/CMakeLists.txt b/Service/DedxSvc/CMakeLists.txt deleted file mode 100644 index 0fce402f937a8b428db7e04bd3b82b83b963ac4b..0000000000000000000000000000000000000000 --- a/Service/DedxSvc/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -gaudi_subdir(DedxSvc v0r0) - -set(DedxSvc_srcs - src/*.cpp -) -find_package(Geant4 REQUIRED ui_all vis_all) -include(${Geant4_USE_FILE}) -gaudi_install_headers(DedxSvc) - -gaudi_add_module(DedxSvc ${DedxSvc_srcs} - INCLUDE_DIRS GaudiKernel - LINK_LIBRARIES GaudiKernel -) diff --git a/Service/DedxSvc/DedxSvc/IDedxSvc.h b/Service/DedxSvc/DedxSvc/IDedxSvc.h deleted file mode 100644 index 14b76620c9cd503bd72d724eb46acb8d9b9fc8bd..0000000000000000000000000000000000000000 --- a/Service/DedxSvc/DedxSvc/IDedxSvc.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef I_Dedx_SVC_H -#define I_Dedx_SVC_H - -#include "GaudiKernel/IService.h" - -#include "G4Step.hh" - -class IDedxSvc: virtual public IService { -public: - DeclareInterfaceID(IDedxSvc, 0, 1); // major/minor version - - virtual ~IDedxSvc() = default; - virtual float pred(const G4Step* aStep)=0 ; - -}; - - -#endif diff --git a/Simulation/DetSimDedx/CMakeLists.txt b/Simulation/DetSimDedx/CMakeLists.txt index ac4d4be77283f7365a075aea94afdba457f44c6f..824c35b37314dc7b007227c1082b032ea631336b 100644 --- a/Simulation/DetSimDedx/CMakeLists.txt +++ b/Simulation/DetSimDedx/CMakeLists.txt @@ -11,6 +11,7 @@ find_package(DD4hep COMPONENTS DDG4 REQUIRED) set(DetSimDedx_srcs src/DummyDedxSimTool.cpp + src/BetheBlochEquationDedxSimTool.cpp ) gaudi_add_module(DetSimDedx ${DetSimDedx_srcs} diff --git a/Service/DedxSvc/src/DedxSvc.cpp b/Simulation/DetSimDedx/src/BetheBlochEquationDedxSimTool.cpp similarity index 77% rename from Service/DedxSvc/src/DedxSvc.cpp rename to Simulation/DetSimDedx/src/BetheBlochEquationDedxSimTool.cpp index 9a62508dd0497e95fc7cfa5dc4cd3d4504354b8b..12ffeebbc2a7d6ad6df3a65d16af4ee274e99926 100644 --- a/Service/DedxSvc/src/DedxSvc.cpp +++ b/Simulation/DetSimDedx/src/BetheBlochEquationDedxSimTool.cpp @@ -1,18 +1,11 @@ -#include "DedxSvc.h" +#include "BetheBlochEquationDedxSimTool.h" +#include "G4Step.hh" -//https://folk.uib.no/ruv004/ -DECLARE_COMPONENT(DedxSvc) +// https://folk.uib.no/ruv004/ +DECLARE_COMPONENT(BetheBlochEquationDedxSimTool) -DedxSvc::DedxSvc(const std::string& name, ISvcLocator* svc) - : base_class(name, svc) -{ -} - -DedxSvc::~DedxSvc() -{ -} -float DedxSvc::pred(const G4Step* aStep) +double BetheBlochEquationDedxSimTool::dedx(const G4Step* aStep) { G4Track* gTrack = aStep->GetTrack() ; G4int z = gTrack->GetDefinition()->GetPDGCharge(); @@ -30,7 +23,7 @@ float DedxSvc::pred(const G4Step* aStep) return dedx*m_material_density; // MeV / cm } -StatusCode DedxSvc::initialize() +StatusCode BetheBlochEquationDedxSimTool::initialize() { m_distribution = new std::normal_distribution<double>(0, m_resolution); m_me = 0.511*pow(10,6);//0.511 MeV to eV @@ -39,7 +32,7 @@ StatusCode DedxSvc::initialize() return StatusCode::SUCCESS; } -StatusCode DedxSvc::finalize() +StatusCode BetheBlochEquationDedxSimTool::finalize() { return StatusCode::SUCCESS; } diff --git a/Service/DedxSvc/src/DedxSvc.h b/Simulation/DetSimDedx/src/BetheBlochEquationDedxSimTool.h similarity index 71% rename from Service/DedxSvc/src/DedxSvc.h rename to Simulation/DetSimDedx/src/BetheBlochEquationDedxSimTool.h index 6f1f85eb53dbabf872cbbe56aee9a44e4656a639..6e80ad7972d1fcac831f709cde20f77f8bf97f5a 100644 --- a/Service/DedxSvc/src/DedxSvc.h +++ b/Simulation/DetSimDedx/src/BetheBlochEquationDedxSimTool.h @@ -1,21 +1,17 @@ -#ifndef Dedx_SVC_H -#define Dedx_SVC_H +#ifndef BetheBlochEquationDedxSimTool_h +#define BetheBlochEquationDedxSimTool_h -#include "DedxSvc/IDedxSvc.h" -#include <GaudiKernel/Service.h> -#include "G4Step.hh" +#include "DetSimInterface/IDedxSimTool.h" +#include <GaudiKernel/AlgTool.h> #include <random> -class DedxSvc : public extends<Service, IDedxSvc> -{ +class BetheBlochEquationDedxSimTool: public extends<AlgTool, IDedxSimTool> { public: - DedxSvc(const std::string& name, ISvcLocator* svc); - ~DedxSvc(); - + using extends::extends; StatusCode initialize() override; StatusCode finalize() override; - float pred(const G4Step* aStep) override; + double dedx(const G4Step* aStep) override; private: @@ -27,6 +23,7 @@ class DedxSvc : public extends<Service, IDedxSvc> float m_me;// Here me is the electron rest mass float m_K; // K was set as a constant. float m_I; // Mean excitation energy + std::default_random_engine m_generator; std::normal_distribution<double>* m_distribution; };