00001 /* BDSIM code. Version 1.0 00002 Author: Grahame A. Blair, Royal Holloway, Univ. of London. 00003 Last modified 24.7.2002 00004 Copyright (c) 2002 by G.A.Blair. ALL RIGHTS RESERVED. 00005 00006 Modified 22.03.05 by J.C.Carter, Royal Holloway, Univ. of London. 00007 Added GAB GetInnerLogicalVolume method 00008 */ 00009 00010 #ifndef BDSBeamPipe_h 00011 #define BDSBeamPipe_h 1 00012 00013 #include"globals.hh" 00014 #include "BDSMaterials.hh" 00015 #include "G4LogicalVolume.hh" 00016 00017 #include "G4FieldManager.hh" 00018 #include "G4ChordFinder.hh" 00019 #include "G4Mag_UsualEqRhs.hh" 00020 #include "G4UserLimits.hh" 00021 #include "G4VisAttributes.hh" 00022 #include "G4UniformMagField.hh" 00023 #include "G4IntersectionSolid.hh" 00024 #include "G4VSolid.hh" 00025 #include "G4Trd.hh" 00026 #include "G4Tubs.hh" 00027 #include "G4FieldManager.hh" 00028 00029 #include "BDSEnergyCounterSD.hh" 00030 00031 class BDSBeamPipe 00032 { 00033 public: 00034 BDSBeamPipe(const G4String& aName, G4double aLength, G4double aRadius, 00035 G4double angle=0); 00036 ~BDSBeamPipe(); 00037 00038 G4LogicalVolume* GetLogicalVolume(); 00039 G4LogicalVolume* GetInnerLogicalVolume(); 00040 G4ThreeVector GetPos(); 00041 G4RotationMatrix* GetRot(); 00042 00043 void SetBPFieldManager(G4FieldManager* aFieldManager); 00044 void SetCoarseFieldManager(G4FieldManager* aFieldManager); 00045 00046 protected: 00047 00048 private: 00049 G4LogicalVolume* itsLogicalVolume; 00050 G4LogicalVolume* itsInnerLogicalVolume; 00051 G4LogicalVolume* itsCoarseInnerLogicalVolume; 00052 G4VisAttributes* SetVisAttributes(); 00053 00054 G4VisAttributes* itsVisAttributes; 00055 00056 G4ThreeVector itsPos; 00057 G4RotationMatrix* itsRot; 00058 00059 G4Trd* itsTrd1; 00060 G4Trd* itsTrd2; 00061 G4IntersectionSolid* itsTubeInTrd; 00062 G4IntersectionSolid* itsInnerTubeInTrd; 00063 00064 G4Tubs* itsTube; 00065 G4Tubs* itsInnerTube; 00066 00067 BDSEnergyCounterSD* itsECounter; 00068 }; 00069 00070 inline G4LogicalVolume* BDSBeamPipe::GetInnerLogicalVolume() 00071 {return itsInnerLogicalVolume;} 00072 00073 #endif