00001 /* BDSIM code. Version 1.0 00002 Author: Grahame A. Blair, Royal Holloway, Univ. of London. 00003 Last modified 12.12.2004 00004 Copyright (c) 2004 by G.A.Blair. ALL RIGHTS RESERVED. 00005 */ 00006 00007 #ifndef BDSMuSpoiler_h 00008 #define BDSMuSpoiler_h 1 00009 00010 #include "globals.hh" 00011 #include "BDSAcceleratorComponent.hh" 00012 #include "G4Mag_UsualEqRhs.hh" 00013 #include "BDSMaterials.hh" 00014 #include "G4LogicalVolume.hh" 00015 00016 #include "G4UserLimits.hh" 00017 #include "G4VisAttributes.hh" 00018 00019 #include "G4Box.hh" 00020 //#include "BDSEnergyCounterSD.hh" 00021 #include "BDSMuSpoilerMagField.hh" 00022 #include "G4FieldManager.hh" 00023 00024 class BDSMuSpoiler :public BDSAcceleratorComponent 00025 { 00026 public: 00027 BDSMuSpoiler(G4String& aName, G4double aLength,G4double bpRad, 00028 G4double rInner, G4double rOuter,G4double BField, 00029 std::list<G4double> blmLocZ, std::list<G4double> blmLocTheta, 00030 G4String aTunnelMaterial=""); 00031 00032 00033 ~BDSMuSpoiler(); 00034 00035 protected: 00036 00037 private: 00038 G4VisAttributes* SetVisAttributes(); 00039 G4VisAttributes* SetBPVisAttributes(); 00040 00041 // Geometrical objects: 00042 00043 void BuildMuSpoiler(); 00044 void BuildMuSpoilerTunnel(); 00045 void BuildBLMs(); 00046 00047 G4VPhysicalVolume* itsPhysiComp; 00048 G4VPhysicalVolume* itsPhysiCompSoil; 00049 G4VPhysicalVolume* itsPhysiComp2; 00050 G4VPhysicalVolume* itsPhysiInnerBP; 00051 G4VPhysicalVolume* itsPhysiBP; 00052 G4LogicalVolume* itsSolidLogVol; 00053 G4LogicalVolume* itsInnerLogVol; 00054 G4LogicalVolume* itsBeampipeLogicalVolume; 00055 G4LogicalVolume* itsInnerBPLogicalVolume; 00056 G4Tubs* itsBPTube; 00057 G4Tubs* itsInnerBPTube; 00058 00059 G4Tubs* itsSoilTube; 00060 G4Tubs* itsTunnelTube; 00061 G4Tubs* itsInnerTunnelTube; 00062 00063 G4LogicalVolume* itsInnerTunnelLogicalVolume; 00064 G4LogicalVolume* itsSoilTunnelLogicalVolume; 00065 G4UserLimits* itsTunnelUserLimits; 00066 G4UserLimits* itsSoilTunnelUserLimits; 00067 G4UserLimits* itsInnerTunnelUserLimits; 00068 00069 G4VisAttributes* itsVisAttributes; 00070 G4VisAttributes* itsBPVisAttributes; 00071 G4Mag_UsualEqRhs* itsEqRhs; 00072 00073 private: 00074 // BDSEnergyCounterSD* itsEnergyCounterSD; 00075 G4double itsBeampipeRadius; 00076 G4double itsInnerRadius; 00077 G4double itsOuterRadius; 00078 G4double itsBField; 00079 00080 BDSMuSpoilerMagField* itsMagField; 00081 G4FieldManager* itsFieldMgr; 00082 }; 00083 00084 #endif