00001 /* 00002 * Merlin C++ Class Library for Charged Particle Accelerator Simulations 00003 * 00004 * Class library version 2.0 (1999) 00005 * 00006 * file AcceleratorModel\StdComponent\CorrectorDipoles.h 00007 * last modified 07/06/99 23:07:04 00008 */ 00009 /* 00010 * This file is derived from software bearing the following 00011 * restrictions: 00012 * 00013 * MERLIN C++ class library for 00014 * Charge Particle Accelerator Simulations 00015 * Copyright (c) 1999 by N.J.Walker. ALL RIGHTS RESERVED. 00016 * 00017 * Permission to use, copy, modify, distribute and sell this 00018 * software and its documentation for any purpose is hereby 00019 * granted without fee, provided that the above copyright notice 00020 * appear in all copies and that both that copyright notice and 00021 * this permission notice appear in supporting documentation. 00022 * No representations about the suitability of this software for 00023 * any purpose is made. It is provided "as is" without express 00024 * or implied warranty. 00025 */ 00026 00027 #ifndef myCorrectorDipoles_h 00028 #define myCorrectorDipoles_h 1 00029 #include<vector> 00030 00031 // gab: 00032 //#include "merlin_config.h" 00033 00034 // RectMultipole 00035 //#include "AcceleratorModel/StdComponent/RectMultipole.h" 00036 #include "myRectMultipole.hh" 00037 #include "globals.hh" 00038 00039 //class Tracker; 00040 00041 // A horizontal corrector dipole. 00042 class XCor : public myRectMultipole 00043 { 00044 public: 00045 // Constructor taking the identifier for the corrector, the 00046 // length and the field (in Tesla). 00047 XCor (const G4String& id, G4double len, G4double B = 0); 00048 00049 // Virtual constructor. 00050 // virtual ModelElement* Copy () const; 00051 00052 // Returns the unique index for this class of accelerator 00053 // components. 00054 // virtual IndexType GetIndex () const; 00055 00056 // Returns the type G4String for this component. 00057 virtual const G4String& GetType () const; 00058 00059 // Primary tracking interface. Prepares the specified 00060 // Tracker object for tracking this component. 00061 // virtual void PrepareTracker (Tracker& aTracker); 00062 00063 // Data Members for Class Attributes 00064 00065 // static const IndexType ID; 00066 00067 protected: 00068 private: 00069 private: 00070 }; 00071 00072 // A vertical corrector dipole. 00073 00074 class YCor : public myRectMultipole 00075 { 00076 public: 00077 // Constructor taking the identifier for the corrector, the 00078 // length and the field (in Tesla). 00079 YCor (const G4String& id, G4double len, G4double B = 0); 00080 00081 00082 // Virtual constructor. 00083 // virtual ModelElement* Copy () const; 00084 00085 // Returns the unique index for this class of accelerator 00086 // components. 00087 00088 // virtual IndexType GetIndex () const; 00089 00090 // Returns the type G4String for this component. 00091 virtual const G4String& GetType () const; 00092 00093 // Primary tracking interface. Prepares the specified 00094 // Tracker object for tracking this component. 00095 // virtual void PrepareTracker (Tracker& aTracker); 00096 00097 // Data Members for Class Attributes 00098 00099 // static const IndexType ID; 00100 00101 protected: 00102 private: 00103 private: 00104 }; 00105 00106 // Class XCor 00107 00108 inline XCor::XCor (const G4String& id, G4double len, G4double B) 00109 : myRectMultipole(id,len,0,B){} 00110 00111 00112 // Class YCor 00113 00114 inline YCor::YCor (const G4String& id, G4double len, G4double B) 00115 : myRectMultipole(id,len,0,B,true) 00116 {} 00117 00118 #endif