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

00001 #ifndef BDSBEAMLINEELEMENT_H
00002 #define BDSBEAMLINEELEMENT_H
00003 
00004 #include "BDSAcceleratorComponent.hh"
00005 #include "BDSGeometryComponent.hh"
00006 
00007 #include "globals.hh" // geant4 globals / types
00008 #include "G4RotationMatrix.hh"
00009 #include "G4ThreeVector.hh"
00010 
00011 #include <ostream>
00012 
00026 class BDSBeamlineElement: public BDSGeometryComponent
00027 {
00028 public:
00029   BDSBeamlineElement(BDSAcceleratorComponent* component,
00030                      G4ThreeVector            positionStart,
00031                      G4ThreeVector            positionMiddle,
00032                      G4ThreeVector            positionEnd,
00033                      G4RotationMatrix*        rotationStart,
00034                      G4RotationMatrix*        rotationMiddle,
00035                      G4RotationMatrix*        rotationEnd,
00036                      G4ThreeVector            referencePositionStart,
00037                      G4ThreeVector            referencePositionMiddle,
00038                      G4ThreeVector            referencePositionEnd,
00039                      G4RotationMatrix*        referenceRotationStart,
00040                      G4RotationMatrix*        referenceRotationMiddle,
00041                      G4RotationMatrix*        referenceRotationEnd,
00042                      G4double                 sPositionStart,
00043                      G4double                 sPositionMiddle,
00044                      G4double                 sPositionEnd,
00045                      G4ThreeVector            xAxisReferenceStart,
00046                      G4ThreeVector            yAxisReferenceStart,
00047                      G4ThreeVector            zAxisReferenceStart,
00048                      G4ThreeVector            xAxisReferenceMiddle,
00049                      G4ThreeVector            yAxisReferenceMiddle,
00050                      G4ThreeVector            zAxisReferenceMiddle,
00051                      G4ThreeVector            xAxisReferenceEnd,
00052                      G4ThreeVector            yAxisReferenceEnd,
00053                      G4ThreeVector            zAxisReferenceEnd);
00054 
00055   ~BDSBeamlineElement();
00056   
00058   inline BDSAcceleratorComponent* GetAcceleratorComponent()    const;
00059   inline G4String                 GetName()                    const;
00060   inline G4ThreeVector            GetPositionStart()           const;
00061   inline G4ThreeVector            GetPositionMiddle()          const;
00062   inline G4ThreeVector            GetPositionEnd()             const;
00063   inline G4RotationMatrix*        GetRotationStart()           const;
00064   inline G4RotationMatrix*        GetRotationMiddle()          const;
00065   inline G4RotationMatrix*        GetRotationEnd()             const;
00066   inline G4ThreeVector            GetReferencePositionStart()  const;
00067   inline G4ThreeVector            GetReferencePositionMiddle() const;
00068   inline G4ThreeVector            GetReferencePositionEnd()    const;
00069   inline G4RotationMatrix*        GetReferenceRotationStart()  const;
00070   inline G4RotationMatrix*        GetReferenceRotationMiddle() const;
00071   inline G4RotationMatrix*        GetReferenceRotationEnd()    const;
00072   inline G4double                 GetSPositionStart()          const;
00073   inline G4double                 GetSPositionMiddle()         const;
00074   inline G4double                 GetSPositionEnd()            const;
00075   inline G4ThreeVector            GetXAxisReferenceStart()     const;
00076   inline G4ThreeVector            GetYAxisReferenceStart()     const;
00077   inline G4ThreeVector            GetZAxisReferenceStart()     const;
00078   inline G4ThreeVector            GetXAxisReferenceMiddle()    const;
00079   inline G4ThreeVector            GetYAxisReferenceMiddle()    const;
00080   inline G4ThreeVector            GetZAxisReferenceMiddle()    const;
00081   inline G4ThreeVector            GetXAxisReferenceEnd()       const;
00082   inline G4ThreeVector            GetYAxisReferenceEnd()       const;
00083   inline G4ThreeVector            GetZAxisReferenceEnd()       const;
00085 
00087   inline void SetReferencePositionEnd(G4ThreeVector     newReferencePositionEnd);
00088   inline void SetReferenceRotationEnd(G4RotationMatrix* newReferenceRotatonEnd);
00089   inline void SetXAxisReferenceEnd   (G4ThreeVector     newXAxisReferenceEnd);
00090   inline void SetYAxisReferenceEnd   (G4ThreeVector     newYAxisReferenceEnd);
00091   inline void SetZAxisReferenceEnd   (G4ThreeVector     newZAxisReferenceEnd);
00093 
00095   friend std::ostream& operator<< (std::ostream& out, BDSBeamlineElement const &element);
00096   
00097 private:
00099   BDSBeamlineElement();
00100 
00102   BDSAcceleratorComponent* component;
00103   
00105   G4ThreeVector     positionStart;
00106   G4ThreeVector     positionMiddle;
00107   G4ThreeVector     positionEnd;
00109   
00111   G4RotationMatrix* rotationStart;
00112   G4RotationMatrix* rotationMiddle;
00113   G4RotationMatrix* rotationEnd;
00115 
00118   G4ThreeVector     referencePositionStart;
00119   G4ThreeVector     referencePositionMiddle;
00120   G4ThreeVector     referencePositionEnd;
00122   
00125   G4RotationMatrix* referenceRotationStart;
00126   G4RotationMatrix* referenceRotationMiddle;
00127   G4RotationMatrix* referenceRotationEnd;
00129 
00131   G4double          sPositionStart;
00132   G4double          sPositionMiddle;
00133   G4double          sPositionEnd;
00135 
00139   G4ThreeVector     xAxisReferenceStart;
00140   G4ThreeVector     yAxisReferenceStart;
00141   G4ThreeVector     zAxisReferenceStart;
00142   G4ThreeVector     xAxisReferenceMiddle;
00143   G4ThreeVector     yAxisReferenceMiddle;
00144   G4ThreeVector     zAxisReferenceMiddle;
00145   G4ThreeVector     xAxisReferenceEnd;
00146   G4ThreeVector     yAxisReferenceEnd;
00147   G4ThreeVector     zAxisReferenceEnd;
00149 };
00150 
00151 inline BDSAcceleratorComponent* BDSBeamlineElement::GetAcceleratorComponent() const
00152 {return component;}
00153 
00154 inline G4String                 BDSBeamlineElement::GetName() const
00155 {return component->GetName();}
00156 
00157 inline G4ThreeVector            BDSBeamlineElement::GetPositionStart() const
00158 {return positionStart;}
00159 
00160 inline G4ThreeVector            BDSBeamlineElement::GetPositionMiddle() const
00161 {return positionMiddle;}
00162 
00163 inline G4ThreeVector            BDSBeamlineElement::GetPositionEnd() const
00164 {return positionEnd;}
00165 
00166 inline G4RotationMatrix*        BDSBeamlineElement::GetRotationStart() const
00167 {return rotationStart;}
00168 
00169 inline G4RotationMatrix*        BDSBeamlineElement::GetRotationMiddle() const
00170 {return rotationMiddle;}
00171 
00172 inline G4RotationMatrix*        BDSBeamlineElement::GetRotationEnd() const
00173 {return rotationEnd;}
00174 
00175 inline G4ThreeVector            BDSBeamlineElement::GetReferencePositionStart() const
00176 {return referencePositionStart;}
00177 
00178 inline G4ThreeVector            BDSBeamlineElement::GetReferencePositionMiddle() const
00179 {return referencePositionMiddle;}
00180 
00181 inline G4ThreeVector            BDSBeamlineElement::GetReferencePositionEnd() const
00182 {return referencePositionEnd;}
00183 
00184 inline G4RotationMatrix*        BDSBeamlineElement::GetReferenceRotationStart() const
00185 {return referenceRotationStart;}
00186 
00187 inline G4RotationMatrix*        BDSBeamlineElement::GetReferenceRotationMiddle() const
00188 {return referenceRotationMiddle;}
00189 
00190 inline G4RotationMatrix*        BDSBeamlineElement::GetReferenceRotationEnd() const
00191 {return referenceRotationEnd;}
00192 
00193 inline G4double                 BDSBeamlineElement::GetSPositionStart() const
00194 {return sPositionStart;}
00195 
00196 inline G4double                 BDSBeamlineElement::GetSPositionMiddle() const
00197 {return sPositionMiddle;}
00198 
00199 inline G4double                 BDSBeamlineElement::GetSPositionEnd() const
00200 {return sPositionEnd;}
00201 
00202 inline G4ThreeVector            BDSBeamlineElement::GetXAxisReferenceStart() const
00203 {return xAxisReferenceStart;}
00204 
00205 inline G4ThreeVector            BDSBeamlineElement::GetYAxisReferenceStart() const
00206 {return yAxisReferenceStart;}
00207 
00208 inline G4ThreeVector            BDSBeamlineElement::GetZAxisReferenceStart() const
00209 {return zAxisReferenceStart;}
00210 
00211 inline G4ThreeVector            BDSBeamlineElement::GetXAxisReferenceMiddle() const
00212 {return xAxisReferenceMiddle;}
00213 
00214 inline G4ThreeVector            BDSBeamlineElement::GetYAxisReferenceMiddle() const
00215 {return yAxisReferenceMiddle;}
00216 
00217 inline G4ThreeVector            BDSBeamlineElement::GetZAxisReferenceMiddle() const
00218 {return zAxisReferenceMiddle;}
00219 
00220 inline G4ThreeVector            BDSBeamlineElement::GetXAxisReferenceEnd() const
00221 {return xAxisReferenceEnd;}
00222 
00223 inline G4ThreeVector            BDSBeamlineElement::GetYAxisReferenceEnd() const
00224 {return yAxisReferenceEnd;}
00225 
00226 inline G4ThreeVector            BDSBeamlineElement::GetZAxisReferenceEnd() const
00227 {return zAxisReferenceEnd;}
00228 
00229 
00230 #endif

Generated on 28 Jun 2015 for BDSIM by  doxygen 1.4.7