k4SimGeant4
Loading...
Searching...
No Matches
MagFieldScanner.h
Go to the documentation of this file.
1#ifndef MAGFIELDSCANNER_H
2#define MAGFIELDSCANNER_H
3
4// Gaudi
5#include "GaudiKernel/Service.h"
6
7// k4FWCore
8#include "k4Interface/IGeoSvc.h"
9#include "k4Interface/ISimG4MagneticFieldTool.h"
10#include "k4Interface/ISimG4Svc.h"
11
26class MagFieldScanner : public Service {
27public:
28 explicit MagFieldScanner(const std::string& name, ISvcLocator* svcLoc);
29
30 virtual StatusCode initialize();
31 virtual StatusCode finalize();
32 virtual ~MagFieldScanner() {};
33
34private:
36 ServiceHandle<IGeoSvc> m_geoSvc;
37
39 ServiceHandle<ISimG4Svc> m_simG4Svc;
40
42 Gaudi::Property<std::string> m_outFilePath{this, "outFilePath", "magFieldProbes.root", "Output file path"};
43
45 Gaudi::Property<std::vector<std::vector<double>>> m_xyPlaneProbes{
46 this, "xyPlaneProbes", {}, "xy-plane probe definitions"};
47
48 Gaudi::Property<std::vector<std::vector<double>>> m_zPlaneProbes{
49 this, "zPlaneProbes", {}, "z-plane probe definitions"};
50
51 Gaudi::Property<std::vector<std::vector<double>>> m_tubeProbes{this, "tubeProbes", {}, "Tube probe definitions"};
52
53 struct XYPlaneProbe {
54 const double xMax;
55 const double yMax;
56 const double z;
57 };
58
59 struct ZPlaneProbe {
60 const double zMin;
61 const double zMax;
62 const double rMax;
63 const double phi;
64 };
65
66 struct TubeProbe {
67 const double zMin;
68 const double zMax;
69 const double r;
70 };
71
72 friend std::ostream& operator<<(std::ostream& outStream, const XYPlaneProbe& probe);
73 friend std::ostream& operator<<(std::ostream& outStream, const ZPlaneProbe& probe);
74 friend std::ostream& operator<<(std::ostream& outStream, const TubeProbe& probe);
75};
76
77#endif /* MAGFIELDSCANNER_H */
Service probes the Geant4 magnetic field on initialize.
Definition MagFieldScanner.h:26
Gaudi::Property< std::string > m_outFilePath
Path to the output file.
Definition MagFieldScanner.h:42
virtual StatusCode initialize()
Definition MagFieldScanner.cpp:16
virtual ~MagFieldScanner()
Definition MagFieldScanner.h:32
MagFieldScanner(const std::string &name, ISvcLocator *svcLoc)
Definition MagFieldScanner.cpp:13
Gaudi::Property< std::vector< std::vector< double > > > m_tubeProbes
Definition MagFieldScanner.h:51
ServiceHandle< ISimG4Svc > m_simG4Svc
Handle to the Geant4 service.
Definition MagFieldScanner.h:39
friend std::ostream & operator<<(std::ostream &outStream, const XYPlaneProbe &probe)
Definition MagFieldScanner.cpp:297
virtual StatusCode finalize()
Definition MagFieldScanner.cpp:295
ServiceHandle< IGeoSvc > m_geoSvc
Handle to the geometry service.
Definition MagFieldScanner.h:36
Gaudi::Property< std::vector< std::vector< double > > > m_zPlaneProbes
Definition MagFieldScanner.h:48
Gaudi::Property< std::vector< std::vector< double > > > m_xyPlaneProbes
Probes.
Definition MagFieldScanner.h:45
Definition MagFieldScanner.h:66
const double zMax
Definition MagFieldScanner.h:68
const double r
Definition MagFieldScanner.h:69
const double zMin
Definition MagFieldScanner.h:67
Definition MagFieldScanner.h:53
const double yMax
Definition MagFieldScanner.h:55
const double z
Definition MagFieldScanner.h:56
const double xMax
Definition MagFieldScanner.h:54
Definition MagFieldScanner.h:59
const double zMax
Definition MagFieldScanner.h:61
const double rMax
Definition MagFieldScanner.h:62
const double phi
Definition MagFieldScanner.h:63
const double zMin
Definition MagFieldScanner.h:60