19#ifndef BDSBENDBUILDER_H
20#define BDSBENDBUILDER_H
24#include "BDSFieldType.hh"
25#include "BDSIntegratorSetType.hh"
26#include "BDSIntegratorType.hh"
55 G4double incomingFaceAngle,
56 G4double outgoingFaceAngle,
57 G4bool buildFringeFields,
72 G4double incomingFaceAngle,
73 G4double outgoingFaceAngle,
74 G4bool buildFringeFields,
81 G4double incomingFaceAngle = 0,
82 G4double outgoingFaceAngle = 0,
83 G4double aperturePrecision = 1.0);
111 void UpdateSegmentAngles(G4int index,
114 G4double incomingFaceAngle,
115 G4double outgoingFaceAngle,
116 G4double& segmentAngleIn,
117 G4double& segmentAngleOut);
121 G4double fringeAngle,
125 G4bool entranceOrExit);
Abstract class that represents a component of an accelerator.
All info required to build complete field of any type.
Which integrator to use for each type of magnet / field object.
A class that hold multiple accelerator components.
Efficient storage of magnet strengths.
Abstract base class that implements features common to all magnets.
Holder class for all information required to describe a modulator.
Return either G4Tubs or G4CutTubs depending on flat face.
G4bool ZeroStrengthDipole(const BDSMagnetStrength *st)
Return whether finite angle or field for a dipole.
G4int CalculateNSBendSegments(G4double length, G4double angle, G4double incomingFaceAngle=0, G4double outgoingFaceAngle=0, G4double aperturePrecision=1.0)
BDSMagnet * BuildSingleSBend(const GMAD::Element *element, const G4String &name, G4double arcLength, G4double angle, G4double angleIn, G4double angleOut, const BDSMagnetStrength *strength, G4double brho, const BDSIntegratorSet *integratorSet, G4bool yokeOnLeft, const BDSFieldInfo *outerFieldIn, BDSModulatorInfo *fieldModulator=nullptr)
Function to return a single sector bend section.
BDSMagnet * BuildDipoleFringe(const GMAD::Element *element, G4double angleIn, G4double angleOut, const G4String &name, BDSMagnetStrength *st, G4double brho, const BDSIntegratorSet *integratorSet, BDSFieldType dipoleFieldType, BDSModulatorInfo *fieldModulator=nullptr)
BDSLine * BuildRBendLine(const G4String &elementName, const GMAD::Element *element, const GMAD::Element *prevElement, const GMAD::Element *nextElement, G4double brho, BDSMagnetStrength *st, const BDSIntegratorSet *integratorSet, G4double incomingFaceAngle, G4double outgoingFaceAngle, G4bool buildFringeFields, BDSModulatorInfo *fieldModulator=nullptr)
BDSIntegratorType GetDipoleIntegratorType(const BDSIntegratorSet *integratorSet, const GMAD::Element *element)
BDSAcceleratorComponent * BuildSBendLine(const G4String &elementName, const GMAD::Element *element, BDSMagnetStrength *st, G4double brho, const BDSIntegratorSet *integratorSet, G4double incomingFaceAngle, G4double outgoingFaceAngle, G4bool buildFringeFields, const GMAD::Element *prevElement, const GMAD::Element *nextElement, BDSModulatorInfo *fieldModulator=nullptr)
Parser namespace for GMAD language. Combination of Geant4 and MAD.