include/BDSComponentFactory.hh

00001 #ifndef __BDSCOMPONENTFACTORY_
00002 #define __BDSCOMPONENTFACTORY_
00003 
00004 #include <list>
00005 #include "globals.hh"
00006 #include "parser/gmad.h"
00007 #include "BDSAcceleratorComponent.hh"
00008 
00009 class BDSComponentFactory{
00010 public:
00011   BDSComponentFactory();
00012   ~BDSComponentFactory();
00013   BDSAcceleratorComponent* createComponent(std::list<struct Element>::iterator elementIter, std::list<struct Element>& beamline_list);
00014   BDSAcceleratorComponent* createComponent(Element aElement, Element previousElement, Element nextElement);
00015   BDSAcceleratorComponent* createComponent();
00016   
00017 private:
00018   G4bool   verbose;
00019   
00020   G4double _charge, _momentum, _brho;
00021   G4double _bpRad, _FeRad; 
00022   // magnetic field moments (depending on the magnet type)
00023   G4double _bField;       // dipole (constant) field (G4 units)
00024   G4double _bPrime;       // quadrupole field gradient dBy/dx (G4 units)
00025   G4double _bDoublePrime; // sextupole field coefficient d^2 By/dx^2 (G4 units)
00026   G4double _bTriplePrime; // octupole field coefficient d^3 By/dy^3 (G4 units)
00027   
00028   // stuff for rescaling due to synchrotron radiation, IGNORING
00029   G4double _synch_factor ;
00030   // drifts
00031   G4double _driftLength;
00032   G4String _driftName ;
00033   G4double _driftStartAper, _driftEndAper;
00034   std::list<struct Element>::iterator _elementIter, _previousElementIter, _nextElementIter;
00035   
00036   
00037   std::list<BDSAcceleratorComponent*> itsBeamline;
00038   Element _element, _previousElement, _nextElement;
00039   BDSAcceleratorComponent* createSampler();
00040   BDSAcceleratorComponent* createCSampler();
00041   BDSAcceleratorComponent* createDump();
00042   BDSAcceleratorComponent* createDrift();
00043   BDSAcceleratorComponent* createPCLDrift();
00044   BDSAcceleratorComponent* createRF();
00045   BDSAcceleratorComponent* createSBend();
00046   BDSAcceleratorComponent* createRBend();
00047   BDSAcceleratorComponent* createHKick();
00048   BDSAcceleratorComponent* createVKick();
00049   BDSAcceleratorComponent* createQuad();  
00050   BDSAcceleratorComponent* createSextupole();
00051   BDSAcceleratorComponent* createOctupole();
00052   BDSAcceleratorComponent* createMultipole();
00053   BDSAcceleratorComponent* createElement();
00054   BDSAcceleratorComponent* createSolenoid();
00055   BDSAcceleratorComponent* createECol();
00056   BDSAcceleratorComponent* createRCol();
00057   BDSAcceleratorComponent* createMuSpoiler();
00058   BDSAcceleratorComponent* createLaser();
00059   BDSAcceleratorComponent* createTransform3D();
00060 };
00061 #endif

Generated on 27 Aug 2013 for BDSIM by  doxygen 1.4.7