/scratch0/jsnuveri/BDSIM/BDSIMgit/bdsim/include/BDSComponentFactory.hh

00001 #ifndef BDSCOMPONENTFACTORY_H
00002 #define BDSCOMPONENTFACTORY_H
00003 
00004 #include <list>
00005 #include "globals.hh"
00006 #include "parser/element.h"
00007 #include "BDSAcceleratorComponent.hh"
00008 #include "BDSBeamPipe.hh"
00009 #include "BDSBeamPipeInfo.hh"
00010 #include "BDSMagnetOuterInfo.hh"
00011 #include "BDSTunnelInfo.hh"
00012 
00013 class ElementList; 
00014 
00015 class BDSComponentFactory{
00016 public:
00017   BDSComponentFactory();
00018   ~BDSComponentFactory();
00019   
00020   BDSAcceleratorComponent* createComponent(std::list<struct Element>::iterator elementIter, ElementList& beamline_list);
00021   BDSAcceleratorComponent* createComponent(Element& aElement, Element& previousElement, Element& nextElement);
00022   BDSAcceleratorComponent* createComponent();
00023 
00024   // for each of them - special cases need only for ring logic
00025   BDSAcceleratorComponent* createTerminator();
00026   BDSAcceleratorComponent* createTeleporter();
00027  
00028 private:
00029   G4bool   verbose;
00030 
00031   G4double lengthSafety;
00032   
00033   G4double _charge, _momentum, _brho;
00034   
00035   std::list<struct Element>::iterator _elementIter, _previousElementIter, _nextElementIter;
00037   std::list<BDSAcceleratorComponent*> itsBeamline;
00039   Element _element, _previousElement, _nextElement;
00040   
00041   BDSAcceleratorComponent* createSampler();
00042   BDSAcceleratorComponent* createCSampler();
00043   BDSAcceleratorComponent* createDump();
00044   BDSAcceleratorComponent* createDrift();
00045   BDSAcceleratorComponent* createRF();
00046   BDSAcceleratorComponent* createSBend();
00047   BDSAcceleratorComponent* createRBend();
00048   BDSAcceleratorComponent* createHKick();
00049   BDSAcceleratorComponent* createVKick();
00050   BDSAcceleratorComponent* createQuad();  
00051   BDSAcceleratorComponent* createSextupole();
00052   BDSAcceleratorComponent* createOctupole();
00053   BDSAcceleratorComponent* createMultipole();
00054   BDSAcceleratorComponent* createElement();
00055   BDSAcceleratorComponent* createSolenoid();
00056   BDSAcceleratorComponent* createRectangularCollimator();
00057   BDSAcceleratorComponent* createEllipticalCollimator();
00058   BDSAcceleratorComponent* createMuSpoiler();
00059   BDSAcceleratorComponent* createLaser();
00060   BDSAcceleratorComponent* createScreen();
00061   BDSAcceleratorComponent* createAwakeScreen();
00062   BDSAcceleratorComponent* createTransform3D();
00063 
00065   G4bool HasSufficientMinimumLength(Element& element);
00066   
00068   G4Material*        PrepareBeamPipeMaterial(Element& element);
00069   G4Material*        PrepareVacuumMaterial(Element& element);
00070   BDSMagnetOuterInfo PrepareMagnetOuterInfo(Element& element);
00071   G4double           PrepareOuterDiameter(Element& element);
00072   BDSBeamPipeInfo*   PrepareBeamPipeInfo(Element& element);
00074 
00075 };
00076 #endif

Generated on 28 Jun 2015 for BDSIM by  doxygen 1.4.7