Back to home page

EIC code displayed by LXR

 
 

    


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   // 'vmax': limit imported volume count by hand in case of the beampipe import, otherwise
0033   // would have to go through a clipping exercise of the whole geometry tree;
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