Skip to content
Snippets Groups Projects
Commit 71ac764e authored by lintao@ihep.ac.cn's avatar lintao@ihep.ac.cn
Browse files

WIP: migrate Wenxing's DedxSvc.

parent c2004a12
No related branches found
No related tags found
No related merge requests found
...@@ -126,10 +126,19 @@ from Configurables import DriftChamberSensDetTool ...@@ -126,10 +126,19 @@ from Configurables import DriftChamberSensDetTool
calo_sensdettool = CalorimeterSensDetTool("CalorimeterSensDetTool") calo_sensdettool = CalorimeterSensDetTool("CalorimeterSensDetTool")
driftchamber_sensdettool = DriftChamberSensDetTool("DriftChamberSensDetTool") driftchamber_sensdettool = DriftChamberSensDetTool("DriftChamberSensDetTool")
driftchamber_sensdettool.DedxSimTool = "DummyDedxSimTool"
# dedxoption = "DummyDedxSimTool"
dedxoption = "BetheBlochEquationDedxSimTool"
driftchamber_sensdettool.DedxSimTool = dedxoption
from Configurables import DummyDedxSimTool 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 # POD I/O
......
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
)
#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
...@@ -11,6 +11,7 @@ find_package(DD4hep COMPONENTS DDG4 REQUIRED) ...@@ -11,6 +11,7 @@ find_package(DD4hep COMPONENTS DDG4 REQUIRED)
set(DetSimDedx_srcs set(DetSimDedx_srcs
src/DummyDedxSimTool.cpp src/DummyDedxSimTool.cpp
src/BetheBlochEquationDedxSimTool.cpp
) )
gaudi_add_module(DetSimDedx ${DetSimDedx_srcs} gaudi_add_module(DetSimDedx ${DetSimDedx_srcs}
......
#include "DedxSvc.h" #include "BetheBlochEquationDedxSimTool.h"
#include "G4Step.hh"
//https://folk.uib.no/ruv004/ // https://folk.uib.no/ruv004/
DECLARE_COMPONENT(DedxSvc) 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() ; G4Track* gTrack = aStep->GetTrack() ;
G4int z = gTrack->GetDefinition()->GetPDGCharge(); G4int z = gTrack->GetDefinition()->GetPDGCharge();
...@@ -30,7 +23,7 @@ float DedxSvc::pred(const G4Step* aStep) ...@@ -30,7 +23,7 @@ float DedxSvc::pred(const G4Step* aStep)
return dedx*m_material_density; // MeV / cm return dedx*m_material_density; // MeV / cm
} }
StatusCode DedxSvc::initialize() StatusCode BetheBlochEquationDedxSimTool::initialize()
{ {
m_distribution = new std::normal_distribution<double>(0, m_resolution); m_distribution = new std::normal_distribution<double>(0, m_resolution);
m_me = 0.511*pow(10,6);//0.511 MeV to eV m_me = 0.511*pow(10,6);//0.511 MeV to eV
...@@ -39,7 +32,7 @@ StatusCode DedxSvc::initialize() ...@@ -39,7 +32,7 @@ StatusCode DedxSvc::initialize()
return StatusCode::SUCCESS; return StatusCode::SUCCESS;
} }
StatusCode DedxSvc::finalize() StatusCode BetheBlochEquationDedxSimTool::finalize()
{ {
return StatusCode::SUCCESS; return StatusCode::SUCCESS;
} }
#ifndef Dedx_SVC_H #ifndef BetheBlochEquationDedxSimTool_h
#define Dedx_SVC_H #define BetheBlochEquationDedxSimTool_h
#include "DedxSvc/IDedxSvc.h" #include "DetSimInterface/IDedxSimTool.h"
#include <GaudiKernel/Service.h> #include <GaudiKernel/AlgTool.h>
#include "G4Step.hh"
#include <random> #include <random>
class DedxSvc : public extends<Service, IDedxSvc> class BetheBlochEquationDedxSimTool: public extends<AlgTool, IDedxSimTool> {
{
public: public:
DedxSvc(const std::string& name, ISvcLocator* svc); using extends::extends;
~DedxSvc();
StatusCode initialize() override; StatusCode initialize() override;
StatusCode finalize() override; StatusCode finalize() override;
float pred(const G4Step* aStep) override; double dedx(const G4Step* aStep) override;
private: private:
...@@ -27,6 +23,7 @@ class DedxSvc : public extends<Service, IDedxSvc> ...@@ -27,6 +23,7 @@ class DedxSvc : public extends<Service, IDedxSvc>
float m_me;// Here me is the electron rest mass float m_me;// Here me is the electron rest mass
float m_K; // K was set as a constant. float m_K; // K was set as a constant.
float m_I; // Mean excitation energy float m_I; // Mean excitation energy
std::default_random_engine m_generator; std::default_random_engine m_generator;
std::normal_distribution<double>* m_distribution; std::normal_distribution<double>* m_distribution;
}; };
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment