00001 #ifndef BDSCCDCamera_h 00002 #define BDSCCDCamera_h 00003 00004 #include "globals.hh" 00005 #include "G4LogicalVolume.hh" 00006 00007 #include "G4VisAttributes.hh" 00008 #include "G4VSolid.hh" 00009 #include "G4PVPlacement.hh" 00010 #include "BDSCCDChip.hh" 00011 #include "BDSLens.hh" 00012 00013 class BDSCCDCamera 00014 { 00015 public: 00016 BDSCCDCamera(); 00017 ~BDSCCDCamera(); 00018 inline G4LogicalVolume* log(){return _log;} 00019 inline G4String name(){return _name;} 00020 inline G4ThreeVector size(){return _size;} 00021 inline void phys(G4PVPlacement* phys){_phys=phys;} 00022 inline G4PVPlacement* phys(){return _phys;} 00023 00024 private: 00025 void defaultDimensions(); 00026 void build(); 00027 void buildCavity(); 00028 void buildMotherVolume(); 00029 void buildCCDChip(); 00030 void buildObjectLens(); 00031 void buildImageLens(); 00032 void visAtt(); 00033 void placeComponents(); 00034 void placeCavity(); 00035 void placeCCDChip(); 00036 void placeObjectLens(); 00037 void placeImageLens(); 00038 00039 G4ThreeVector _size; 00040 G4String _name; 00041 G4String _logName; 00042 G4String _solidName; 00043 // Geometrical objects: 00044 G4LogicalVolume* _log; 00045 G4VSolid* _solid; 00046 G4VisAttributes* _visAtt; 00047 BDSCCDChip* _ccdChip; 00048 BDSLens* _objectLens; 00049 BDSLens* _imageLens; 00050 G4PVPlacement* _phys; 00051 G4double _cavityLength; 00052 G4LogicalVolume* _cavityLog; 00053 G4PVPlacement* _cavityPhys; 00054 }; 00055 00056 #endif