#ifndef DETECTOR_CONSTRUCTION_HH #define DETECTOR_CONSTRUCTION_HH #include "G4VUserDetectorConstruction.hh" #include "globals.hh" #include "G4EqMagElectricField.hh" #include "G4UniformElectricField.hh" class G4FieldManager; class G4ChordFinder; class G4EquationOfMotion; class G4Mag_EqRhs; class G4EqMagElectricField; class G4MagIntegratorStepper; class G4MagInt_Driver; class G4VPhysicalVolume; class G4LogicalVolume; class DetectorConstruction : public G4VUserDetectorConstruction { public: //Constructor + Destructor DetectorConstruction(); ~DetectorConstruction(); public: G4VPhysicalVolume* Construct() override; //Field and sensitive detectors void ConstructSDandField() override; //Two different logical volumes with different local fields G4LogicalVolume* fElectriclogical_1; G4LogicalVolume* fElectriclogical_2; //Setup the required objects of the FIRST local field G4ElectricField* fEMfield_1; G4EqMagElectricField* fEquation_1; G4MagIntegratorStepper* fStepper_1; G4FieldManager* fFieldMgr_1; G4double fMinStep_1; G4ChordFinder* fChordFinder_1; //Setup the required objects of the SECOND local field G4ElectricField* fEMfield_2; G4EqMagElectricField* fEquation_2; G4MagIntegratorStepper* fStepper_2; G4FieldManager* fFieldMgr_2; G4double fMinStep_2; G4ChordFinder* fChordFinder_2; //world electric field G4ElectricField* fEMfield_WORLD; G4EqMagElectricField* fEquation_WORLD; G4MagIntegratorStepper* fStepper_WORLD; G4FieldManager* fFieldMgr_WORLD; G4double fMinStep_WORLD; G4ChordFinder* fChordFinder_WORLD; private: G4bool fCheckOverlaps; }; #endif