9#ifndef FORWARDREGIONMGFIELD_FORWARDREGIONFIELDFIELDSVC_H
10#define FORWARDREGIONMGFIELD_FORWARDREGIONFIELDFIELDSVC_H 1
13#include "CLHEP/Geometry/Point3D.h"
16#include "G4ThreeVector.hh"
20#include "GaudiKernel/ToolHandle.h"
21#include "GaudiKernel/IIncidentListener.h"
41 void handle(
const Incident& runIncident)
override final;
47 virtual void getField(
const double *
xyz,
double *bxyz,
double *deriv =
nullptr)
const override final;
53 virtual void getFieldZR(
const double *
xyz,
double *bxyz,
double *deriv =
nullptr)
const override final;
57 G4ThreeVector
getMagInd(G4ThreeVector
Point,
int q,
int beam)
const;
59 double getMag(
int magnet,
int beam)
const;
61 G4ThreeVector
getKick(
int beam)
const;
121 std::vector<std::vector<std::string> >
loadDataFile(
const char * fileName,
int cols);
122 std::vector<std::vector<std::string> >
loadDataFileNLines(
const char * fileName,
int cols,
int N, std::string&
header);
125 double kLToB(
double kL,
double lenght,
double momentum);
127 void InitMagDataFromTwiss(
const std::vector<std::vector<std::string> >& loadedTwissFile,
int beam,
double momentum);
136 void writeOutTwiss(
const std::vector<std::vector<std::string>>& loadedTwissFile,
int beam,
const std::string&
header);
137 void getMagnetTransformParams(
int beam,
int magnet, G4ThreeVector
Point, HepGeom::Point3D<double> &pointMagStart,HepGeom::Point3D<double> &pointMagEnd,
double &rotZ)
const;
ChargedTracksWeightFilter::Spline::Point Point
struct _FWDMg_CONFIGURATION FWDMg_CONFIGURATION
double getMagYOff(int magnet) const
std::vector< std::vector< std::string > > loadDataFileNLines(const char *fileName, int cols, int N, std::string &header)
static const int s_Q3HKick
static const int s_Q4HKick
double m_magIndMQXB[s_rowsMQXB][s_colsMQXB][2]
std::string m_MQXA_DataFile
int getMagNumFromName(const std::string &name) const
std::vector< std::vector< std::string > > m_magnets
virtual void getField(const double *xyz, double *bxyz, double *deriv=nullptr) const override final
IMagFieldSvc interface methods.
double getMag(int magnet, int beam) const
double m_magIndMQXA[s_rowsMQXA][s_colsMQXA][2]
ForwardRegionFieldSvc(const std::string &name, ISvcLocator *svc)
Constructor with parameters.
void writeOutTwiss(const std::vector< std::vector< std::string > > &loadedTwissFile, int beam, const std::string &header)
static const int s_Q3VKick
std::string m_MQXB_DataFile
static const int s_Q5HKick
void handle(const Incident &runIncident) override final
IIncidentListener interface methods.
FWDMg_CONFIGURATION m_Config
ToolHandle< IForwardRegionProperties > m_properties
static const int s_Q1HKick
std::vector< std::vector< std::string > > loadDataFile(const char *fileName, int cols)
static const int s_Q2VKick
static const int s_rowsMQXA
static const int s_colsMQXB
G4ThreeVector FieldValue(G4ThreeVector Point) const
void InitMagDataFromTwiss(const std::vector< std::vector< std::string > > &loadedTwissFile, int beam, double momentum)
double kLToB(double kL, double lenght, double momentum)
StatusCode initialize() override final
AthService interface methods.
static const int s_Q6VKick
static const int s_Q4VKickA
void getMagnetTransformParams(int beam, int magnet, G4ThreeVector Point, HepGeom::Point3D< double > &pointMagStart, HepGeom::Point3D< double > &pointMagEnd, double &rotZ) const
double getMagXOff(int magnet) const
G4ThreeVector getMagInd(G4ThreeVector Point, int q, int beam) const
Non-inherited public methods FIXME - add new interface?
static const int s_rowsMQXB
static const int s_colsMQXA
static const int s_Q4VKickB
G4ThreeVector getKick(int beam) const
virtual void getFieldZR(const double *xyz, double *bxyz, double *deriv=nullptr) const override final
get B field value on the z-r plane at given position
static const int s_Q2HKick
static const int s_Q1VKick
Local cache for magnetic field (based on MagFieldServices/AtlasFieldSvcTLS.h)