00001
00002
00003
00004
00005 #ifndef BDSCollimator_h
00006 #define BDSCollimator_h
00007
00008 #include "globals.hh"
00009 #include "BDSAcceleratorComponent.hh"
00010 #include "BDSMaterials.hh"
00011 #include "G4LogicalVolume.hh"
00012 #include "G4Mag_UsualEqRhs.hh"
00013
00014 #include "G4UserLimits.hh"
00015 #include "G4VisAttributes.hh"
00016 #include "G4Box.hh"
00017 #include "G4EllipticalTube.hh"
00018 #include "G4VSolid.hh"
00019 #include "G4SubtractionSolid.hh"
00020
00021 class BDSCollimator :public BDSAcceleratorComponent
00022 {
00023 public:
00024 BDSCollimator(G4String aName, G4double aLength,G4double bpRad,
00025 G4double xAper, G4double yAper,G4int type,G4Material *collimatorMaterial, G4double outR,
00026 std::list<G4double> blmLocZ, std::list<G4double> blmLocTheta,
00027 G4String aTunnelMaterial="");
00028 ~BDSCollimator();
00029
00030 protected:
00031
00032 private:
00033 void BuildBLMs();
00034 void BuildInnerCollimator();
00035 void BuildCollimatorTunnel();
00036 G4VisAttributes* SetVisAttributes();
00037
00038
00039
00040 G4VPhysicalVolume* itsPhysiComp;
00041 G4VPhysicalVolume* itsPhysiComp2;
00042 G4LogicalVolume* itsSolidLogVol;
00043 G4LogicalVolume* itsTempSolidLogVol;
00044 G4LogicalVolume* itsInnerLogVol;
00045
00046 G4VSolid* itsInnerSolid;
00047 G4VSolid* itsOuterSolid;
00048 G4SubtractionSolid* itsSolid;
00049
00050
00051 G4Tubs* itsSoilTube;
00052 G4Tubs* itsTunnelTube;
00053 G4Tubs* itsInnerTunnelTube;
00054 G4LogicalVolume* itsInnerTunnelLogicalVolume;
00055 G4LogicalVolume* itsSoilTunnelLogicalVolume;
00056 G4UserLimits* itsTunnelUserLimits;
00057 G4UserLimits* itsSoilTunnelUserLimits;
00058 G4UserLimits* itsInnerTunnelUserLimits;
00059
00060 G4VisAttributes* itsVisAttributes;
00061 G4Mag_UsualEqRhs* itsEqRhs;
00062
00063 private:
00064 G4Material* itsCollimatorMaterial;
00065
00066 G4double itsOuterR;
00067 };
00068
00069 #endif