19#ifndef BDSCOMPONENTFACTORYUSER_H
20#define BDSCOMPONENTFACTORYUSER_H
22#include "BDSFieldType.hh"
23#include "BDSMagnetStrength.hh"
24#include "BDSMagnetType.hh"
25#include "BDSIntegratorSetType.hh"
28#include "G4ThreeVector.hh"
29#include "G4Transform3D.hh"
31#include "CLHEP/Units/PhysicalConstants.h"
79 G4double currentArcLength = 0);
Abstract class that represents a component of an accelerator.
Holder class for all information required to describe a beam pipe model.
Holder for all Geometrical information required to create an RF cavity.
Interface class the developer should derive to construct their element.
Factory for user specified accelerator components.
const BDSParticleDefinition * designParticle
Particle w.r.t. which elements are built.
G4bool CanConstructComponentByName(const G4String &componentTypeName) const
Check whether a component can be constructed - ie if the name exists.
void RegisterComponent(const G4String &componentTypeName, BDSComponentConstructor *componentConstructor)
Register a constructor instance by a given name.
G4double brho
Cache of nominal beam rigidity.
std::map< G4String, BDSComponentConstructor * > userFunctions
Map of user component name with constructors to build a component.
void SetDesignParticle(const BDSParticleDefinition *designParticleIn)
Update values for nominal rigidity and relativisitic beta of the beam particle.
G4double beta0
Cache of nominal relativistic beta for the beam particle.
BDSAcceleratorComponent * ConstructComponent(const G4String &componentTypeName, GMAD::Element const *elementIn, GMAD::Element const *prevElementIn, GMAD::Element const *nextElementIn, G4double currentArcLength=0)
Holder for all information required to create a crystal.
All info required to build complete field of any type.
Which integrator to use for each type of magnet / field object.
Holder struct of all information required to create the outer geometry of a magnet.
Abstract base class that implements features common to all magnets.
Wrapper for particle definition.
A holder for any placement offsets and rotations for a BDSAcceleratorComponent.
Parser namespace for GMAD language. Combination of Geant4 and MAD.