#ifndef GN1DetectorConstruction_h #define GN1DetectorConstruction_h 1 #include "G4VUserDetectorConstruction.hh" #include "globals.hh" class G4Box; class G4LogicalVolume; class G4VPhysicalVolume; class G4Material; class GN1DetectorMessenger; class GN1CalorimeterSD; #define inch 2.54*cm //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class GN1DetectorConstruction : public G4VUserDetectorConstruction { public: GN1DetectorConstruction(); ~GN1DetectorConstruction(); public: G4VPhysicalVolume* Construct(); void UpdateGeometry(); public: void PrintCalorParameters(); G4double GetWorldSizeX() {return WorldSizeX;}; G4double GetWorldSizeY() {return WorldSizeY;}; G4double GetWorldSizeZ() {return WorldSizeZ;}; G4int GetNbOfRows1() {return NbOfRows1;}; G4int GetNbOfRows2() {return NbOfRows2;}; G4int GetNbOfRows3() {return NbOfRows3;}; G4int GetNbOfRows4() {return NbOfRows4;}; G4int GetNbOfRows5() {return NbOfRows5;}; G4int GetNbOfRows6() {return NbOfRows6;}; G4int GetNbOfRows7() {return NbOfRows7;}; G4double GetBottom() {return DetectorBottom;} G4double GetTop() {return DetectorTop;} const G4VPhysicalVolume* GetPhysiWorld() {return physiWorld;}; // const G4VPhysicalVolume* GetPhysiVeto() {return physiVeto;}; int IsVeto(G4VPhysicalVolume* p) {return ( (p==physiVeto1)||(p==physiVeto2) );} private: G4Material* CalorMaterial; G4int NbOfRows1; G4double Block1SizeX; G4double Block1SizeY; G4double Block1SizeZ; G4int NbOfRows2; G4double Block2SizeX; G4double Block2SizeY; G4double Block2SizeZ; G4int NbOfRows3; G4double Block3SizeX; G4double Block3SizeY; G4double Block3SizeZ; G4int NbOfRows4; G4double Block4SizeX; G4double Block4SizeY; G4double Block4SizeZ; G4int NbOfRows5; G4double Block5SizeX; G4double Block5SizeY; G4double Block5SizeZ; G4int NbOfRows6; G4double Block6SizeX; G4double Block6SizeY; G4double Block6SizeZ; G4int NbOfRows7; G4double Block7SizeX; G4double Block7SizeY; G4double Block7SizeZ; G4Material* defaultMaterial; G4double WorldSizeX; G4double WorldSizeY; G4double WorldSizeZ; G4Box* solidWorld; G4LogicalVolume* logicWorld; G4VPhysicalVolume* physiWorld; G4Box* solidBlock1; G4LogicalVolume* logicBlock1; G4VPhysicalVolume* physiBlock1; G4Box* solidBlock2; G4LogicalVolume* logicBlock2; G4VPhysicalVolume* physiBlock2; G4Box* solidBlock3; G4LogicalVolume* logicBlock3; G4VPhysicalVolume* physiBlock3; G4Box* solidBlock4; G4LogicalVolume* logicBlock4; G4VPhysicalVolume* physiBlock4; G4Box* solidBlock5; G4LogicalVolume* logicBlock5; G4VPhysicalVolume* physiBlock5; G4Box* solidBlock6; G4LogicalVolume* logicBlock6; G4VPhysicalVolume* physiBlock6; G4Box* solidBlock7; G4LogicalVolume* logicBlock7; G4VPhysicalVolume* physiBlock7; G4Box* solidVeto; G4LogicalVolume* logicVeto; G4VPhysicalVolume* physiVeto1; G4VPhysicalVolume* physiVeto2; G4Material* PlateMaterial; G4Material* LeadMaterial; G4Material* Alplate; G4double DetectorBottom; G4double DetectorTop; GN1DetectorMessenger* detectorMessenger; //pointer to the Messenger GN1CalorimeterSD* calorimeterSD; //pointer to the sensitive detector private: void DefineMaterials(); G4VPhysicalVolume* ConstructCalorimeter(); }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #endif