1#ifndef SIMG4COMPONENTS_G4MAGNETICFIELDFROMMAPTOOL_H
2#define SIMG4COMPONENTS_G4MAGNETICFIELDFROMMAPTOOL_H
5#include "GaudiKernel/AlgTool.h"
11#include "G4SystemOfUnits.hh"
12#include "G4MagneticField.hh"
16class G4MagIntegratorStepper;
50 virtual const G4MagneticField*
field()
const final;
54 G4MagIntegratorStepper*
stepper(
const std::string&, G4MagneticField*)
const;
60 Gaudi::Property<bool>
m_fieldOn{
this,
"FieldOn",
false,
"Switch to turn field off"};
63 Gaudi::Property<double>
m_minEps{
this,
"MinimumEpsilon", 0,
"Minimum epsilon (see G4 documentation)"};
66 Gaudi::Property<double>
m_maxEps{
this,
"MaximumEpsilon", 0,
"Maximum epsilon (see G4 documentation)"};
68 Gaudi::Property<double>
m_deltaChord{
this,
"DeltaChord", 0,
"Missing distance for the chord finder"};
71 Gaudi::Property<double>
m_deltaOneStep{
this,
"DeltaOneStep", 0,
"Delta(one-step)"};
73 Gaudi::Property<double>
m_maxStep{
this,
"MaximumStep", 1. * m,
"Maximum step length in field (see G4 documentation)"};
75 Gaudi::Property<double>
m_minStep{
this,
"MinimumStep", 0.01 * mm,
"Minimum step length in field (see G4 documentation)"};
77 Gaudi::Property<std::string>
m_integratorStepper{
this,
"IntegratorStepper",
"NystromRK4",
"Integrator stepper name"};
79 Gaudi::Property<std::string>
m_mapFilePath{
this,
"MapFile",
"",
"Path to file containing fieldmap"};
81 Gaudi::Property<double>
m_addFieldBz{
this,
"AddFieldBz", 0.,
"Additional constant field, z component (default: 0.)"};
83 Gaudi::Property<double>
m_addFieldMaxR{
this,
"AddFieldMaxR", -1.,
"Maximum radius of additional constant field (default: no limit)"};
85 Gaudi::Property<double>
m_addFieldMaxZ{
this,
"AddFieldMaxZ", -1.,
"Maximum z coordinate of additional constant field (default: no limit)"};
87 Gaudi::Property<double>
m_fieldMaxR{
this,
"FieldMaxR", -1.,
"Field maximum radius (default: no limit)"};
89 Gaudi::Property<double>
m_fieldMaxZ{
this,
"FieldMaxZ", -1.,
"Field maximum z coordinate (default: no limit)"};