/scratch0/jsnuveri/BDSIM/BDSIMgit/bdsim/include/BDSDetectorConstruction.hh

00001 #ifndef BDSDetectorConstruction_h
00002 #define BDSDetectorConstruction_h 
00003 
00004 #include "BDSGlobalConstants.hh"
00005 #include "G4VUserDetectorConstruction.hh"
00006 #include "globals.hh"
00007 
00008 #include "G4Region.hh"
00009 #include "G4GeometrySampler.hh"
00010 
00011 //GFlash parameterisation
00012 #include "GFlashHomoShowerParameterisation.hh"
00013 #include "BDSShowerModel.hh"
00014 #include "GFlashHitMaker.hh"
00015 #include "GFlashParticleBounds.hh"
00016 
00017 
00018 class G4Box;
00019 class G4LogicalVolume;
00020 class G4VPhysicalVolume;
00021 class G4UniformMagField;
00022 class G4UserLimits;
00023 class G4VSensitiveDetector;
00024 
00025 class BDSBeamline;
00026 class ElementList;
00027 
00028 class BDSDetectorConstruction : public G4VUserDetectorConstruction
00029 {
00030 public:
00031   BDSDetectorConstruction();
00032   ~BDSDetectorConstruction();
00033 
00034   virtual G4VPhysicalVolume* Construct();
00035 
00036   inline G4VPhysicalVolume* GetWorldVolume()
00037   {return physiWorld;}
00038   
00039 private:
00041   BDSDetectorConstruction& operator=(const BDSDetectorConstruction&);
00042   BDSDetectorConstruction(BDSDetectorConstruction&);
00043 
00044   G4VPhysicalVolume* ConstructBDS(ElementList& beamline_list);
00045 
00046   void SetMagField(const G4double afield);
00047   
00050   void BuildBeamline();
00051   
00054   void BuildWorld();
00055   
00057   void ComponentPlacement();
00058   
00060   void SetGFlashOnVolume(G4LogicalVolume* volume);
00061 
00062   G4bool verbose;
00063 
00064   G4GeometrySampler* itsGeometrySampler;
00065 
00066   G4Region*          precisionRegion;
00067   G4Region*          gasRegion;
00068 
00069   G4Box*             solidWorld;    //pointer to the solid World 
00070   G4LogicalVolume*   logicWorld;    //pointer to the logical World
00071   G4VPhysicalVolume* physiWorld;    //pointer to the physical World
00072   std::vector<G4double> itsWorldSize;
00073   std::vector<G4VPhysicalVolume*> fPhysicalVolumeVector; //a vector with all the physical volumes
00074 
00075   G4UniformMagField* magField;      //pointer to the magnetic field
00076   G4UserLimits* BDSUserLimits;
00077 
00078   G4VSensitiveDetector* BDSSensitiveDetector;
00079   
00080   // Gflash members
00081   std::vector<GFlashHomoShowerParameterisation*> theParameterisation;
00082   GFlashHitMaker *theHitMaker;
00083   GFlashParticleBounds *theParticleBounds;
00084   //  GFlashParticleBounds *theParticleBoundsVac;
00085   std::vector<BDSShowerModel*> theFastShowerModel;
00086   std::vector<G4Region*> gFlashRegion;
00087 
00088   G4RotationMatrix* _globalRotation;
00089 };
00090 
00091 #endif
00092 

Generated on 28 Jun 2015 for BDSIM by  doxygen 1.4.7