File indexing completed on 2025-01-30 10:30:43
0001
0002 #include <vector>
0003
0004 #ifndef _PFRICH_EPIC_DETECTOR_CONSTRUCTION_
0005 #define _PFRICH_EPIC_DETECTOR_CONSTRUCTION_
0006
0007 #include "DetectorConstruction.h"
0008
0009 class G4UnionSolid;
0010 class G4PVPlacement;
0011
0012 class CherenkovDetector;
0013 class CherenkovDetectorCollection;
0014 class OpticalBoundary;
0015
0016 class EpicDetectorConstruction : public DetectorConstruction
0017 {
0018 public:
0019 EpicDetectorConstruction(CherenkovDetectorCollection *geometry);
0020 virtual ~EpicDetectorConstruction() {};
0021
0022 void ConstructSDandField();
0023
0024 G4VPhysicalVolume* Construct( void );
0025
0026 void ExportGdmlFile( void );
0027
0028 private:
0029 G4LogicalVolume *m_expHall_log;
0030 double m_gas_volume_radius, m_gzOffset, m_r0min, m_r0max, m_gas_volume_offset;
0031
0032
0033
0034 void ImportGdmlFile(const char *fname, unsigned vmax = 0);
0035
0036 void BuildVesselWalls(DarkBox *dbox);
0037 G4UnionSolid *FlangeCut(double length, double clearance);
0038 void DefineAerogel (CherenkovDetector *cdet, DarkBox *dbox, G4UnionSolid *flange);
0039 void DefineAcrylic (CherenkovDetector *cdet, DarkBox *dbox, G4UnionSolid *flange);
0040 void DefineMirrors (CherenkovDetector *cdet, DarkBox *dbox, G4VSolid *gas_tube, G4UnionSolid *flange);
0041 };
0042
0043 #endif