00001 #ifndef __BDSTUNNELCAVITYSECTION_H 00002 #define __BDSTUNNELCAVITYSECTION_H 00003 #include "BDSAcceleratorComponent.hh" 00004 #include "G4ThreeVector.hh" 00005 00006 class BDSTunnelCavitySection 00007 { 00008 public: 00009 BDSTunnelCavitySection(); 00010 ~BDSTunnelCavitySection(); 00011 BDSTunnelCavitySection(BDSAcceleratorComponent* var);//A tunnel cavity section is associated with an accelerator component 00012 void visAttributes()const; 00013 //Setting functions 00014 void rotation(G4RotationMatrix* var); 00015 void logicalVolume(G4LogicalVolume* var); 00016 void solid(G4VSolid* var); 00017 void physi(G4VPhysicalVolume* var); 00018 //Getting functions 00019 G4ThreeVector* positionOffset(); 00020 G4RotationMatrix* rotation(); 00021 G4double length(); 00022 G4double angle(); 00023 G4double radius(); 00024 G4String name(); 00025 G4Material* material(); 00026 G4LogicalVolume* logicalVolume(); 00027 G4VSolid* solid(); 00028 BDSAcceleratorComponent* acceleratorComponent(); 00029 00030 private: 00031 G4String _name; 00032 G4double _radius; 00033 G4double _length; 00034 G4double _angle; 00035 G4ThreeVector* _positionOffset; 00036 G4RotationMatrix* _rotation; 00037 G4Material* _material; 00038 G4LogicalVolume* _logicalVolume; 00039 G4VSolid* _solid; 00040 G4VPhysicalVolume* _physi; 00041 //Just a null rotation matrix... 00042 G4RotationMatrix* _nullRotationMatrix; 00043 //The accelerator component associated with the section of tunnel cavity... 00044 BDSAcceleratorComponent* _acceleratorComponent; 00045 }; 00046 00047 #endif 00048 00049