00001
00007
00008
00009 #ifndef BDSDetectorConstruction_h
00010 #define BDSDetectorConstruction_h
00011
00012 #include "G4VUserDetectorConstruction.hh"
00013 #include "globals.hh"
00014
00015 #include"BDSMaterials.hh"
00016
00017 #include "parser/gmad.h"
00018
00019 class G4Box;
00020 class G4Tubs;
00021 class G4LogicalVolume;
00022 class G4VPhysicalVolume;
00023 class G4Material;
00024 class G4UniformMagField;
00025 class BDSCalorimeterSD;
00026
00027 class G4UserLimits;
00028 class G4VSensitiveDetector;
00029
00030 class G4Navigator;
00031
00032
00033
00034 class BDSDetectorConstruction : public G4VUserDetectorConstruction
00035 {
00036 public:
00037
00038 BDSDetectorConstruction();
00039 ~BDSDetectorConstruction();
00040
00041 public:
00042
00043 G4VPhysicalVolume* Construct();
00044 void SetMagField(const G4double afield);
00045 void UpdateGeometry();
00046
00047 public:
00048
00049 private:
00050 G4Box* solidWorld;
00051 G4LogicalVolume* logicWorld;
00052 G4VPhysicalVolume* physiWorld;
00053
00054 void DefineMaterials();
00055
00056 G4VPhysicalVolume* ConstructBDS(std::list<struct Element>& beamline_list);
00057 G4UniformMagField* magField;
00058 G4UserLimits* BDSUserLimits;
00059
00060 G4VSensitiveDetector * BDSSensitiveDetector;
00061
00062 };
00063
00064 #endif
00065