Geant4 Cross Reference |
1 // 1 2 // ******************************************* 3 // * License and Disclaimer 4 // * 5 // * The Geant4 software is copyright of th 6 // * the Geant4 Collaboration. It is provided 7 // * conditions of the Geant4 Software License 8 // * LICENSE and available at http://cern.ch/ 9 // * include a list of copyright holders. 10 // * 11 // * Neither the authors of this software syst 12 // * institutes,nor the agencies providing fin 13 // * work make any representation or warran 14 // * regarding this software system or assum 15 // * use. Please see the license in the file 16 // * for the full disclaimer and the limitatio 17 // * 18 // * This code implementation is the result 19 // * technical work of the GEANT4 collaboratio 20 // * By using, copying, modifying or distri 21 // * any work based on the software) you ag 22 // * use in resulting scientific publicati 23 // * acceptance of all terms of the Geant4 Sof 24 // ******************************************* 25 // 26 // Author: F. Poignant, floriane.poignant@gma 27 // 28 /// file STCyclotronDetectorConstruction.cc 29 30 #ifndef STCyclotronDetectorConstruction_h 31 #define STCyclotronDetectorConstruction_h 1 32 33 #include "G4VUserDetectorConstruction.hh" 34 #include "globals.hh" 35 #include "G4PhysicalConstants.hh" 36 #include <fstream> 37 38 class G4VPhysicalVolume; 39 class G4LogicalVolume; 40 class G4Region; 41 class G4Tubs; 42 class G4Material; 43 class STCyclotronDetectorMessenger; 44 class G4Element; 45 46 /// Detector construction class to define mate 47 48 class STCyclotronDetectorConstruction : public 49 { 50 public: 51 STCyclotronDetectorConstruction(); 52 ~STCyclotronDetectorConstruction(); 53 54 G4VPhysicalVolume* Construct(); 55 void ConstructSDandField(); 56 57 void SetTargetDiameter(G4double ); 58 void SetTargetIsotopeName(G4String ); 59 void SetTargetIsotopeZ(G4double ); 60 void SetTargetIsotopeN(G4int ); 61 void SetTargetIsotopeA(G4double ); 62 void SetTargetElementName(G4String ); 63 void SetTargetElementSymbole(G4String ); 64 void SetTargetElementNComponents(G4int ); 65 void SetTargetElementAbundance(G4double ); 66 void SetTargetMaterialDensity(G4double ); 67 void SetTargetMaterialNComponents(G4int ); 68 void SetTargetMaterialFractionMass(G4double 69 void SetTargetNaturalElement(G4String ); 70 void SetTargetNaturalMaterialFractionMass(G4 71 G4bool UpdateMaterial(); 72 void SetTargetMaterial(G4String ); 73 74 void SetFoilIsotopeName(G4String ); 75 void SetFoilIsotopeZ(G4double ); 76 void SetFoilIsotopeN(G4int ); 77 void SetFoilIsotopeA(G4double ); 78 void SetFoilElementName(G4String ); 79 void SetFoilElementSymbole(G4String ); 80 void SetFoilElementNComponents(G4int ); 81 void SetFoilElementAbundance(G4double ); 82 void SetFoilMaterialDensity(G4double ); 83 void SetFoilMaterialNComponents(G4int ); 84 void SetFoilMaterialFractionMass(G4double ); 85 void SetFoilNaturalElement(G4String ); 86 void SetFoilNaturalMaterialFractionMass(G4do 87 G4bool UpdateFoilMaterial(); 88 void SetFoilMaterial(G4String ); 89 90 void SetTargetThickness(G4double ); 91 void SetFoilThickness(G4double ); 92 93 //Get methods 94 inline G4double GetTargetPosition1(){return 95 inline G4double GetTargetPosition2(){return 96 inline G4double GetVolumeTarget(){return pi* 97 inline G4double GetFoilPosition1(){return fZ 98 inline G4double GetTargetVolume(){return fTa 99 inline G4double GetFoilVolume(){return fFoil 100 inline G4double GetFoilThickness(){return fF 101 inline G4double GetTargetThickness(){return 102 inline G4double GetTargetDiameter(){return f 103 104 private: 105 106 STCyclotronDetectorMessenger* fDetectorMesse 107 108 //Messenger parameters 109 G4double fTarget_diameter; 110 std::vector<G4String> fIsotopeName; 111 std::vector<G4double> fIsotopeZ; 112 std::vector<G4int> fIsotopeN; 113 std::vector<G4double> fIsotopeA; 114 std::vector<G4String> fElementName; 115 std::vector<G4String> fElementSymbole; 116 std::vector<G4int> fElementNComponents; 117 std::vector<G4double> fElementAbundance; 118 std::vector<G4String> fNaturalElementName; 119 std::vector<G4double> fNaturalMaterialFracti 120 G4double fDensity_target; 121 G4int fTarget_NComponents; 122 std::vector<G4double> fMaterialFractionMass; 123 124 std::vector<G4String> fIsotopeNameFoil; 125 std::vector<G4double> fIsotopeZFoil; 126 std::vector<G4int> fIsotopeNFoil; 127 std::vector<G4double> fIsotopeAFoil; 128 std::vector<G4String> fElementNameFoil; 129 std::vector<G4String> fElementSymboleFoil; 130 std::vector<G4int> fElementNComponentsFoi 131 std::vector<G4double> fElementAbundanceFoil; 132 std::vector<G4String> fNaturalElementNameFoi 133 std::vector<G4double> fNaturalMaterialFracti 134 G4double fDensity_foil; 135 G4int fFoil_NComponents; 136 std::vector<G4double> fMaterialFractionMassF 137 138 G4double fTarget_thickness; 139 G4double fFoil_thickness; 140 141 //Parameters that are used/modified in the s 142 //When modifying the target parameters 143 144 //Material 145 G4Material* fTarget_Material; 146 G4Material* fFoil_Material; 147 //Foil 148 G4double fZ_foil_position; 149 G4Tubs* fSolidFoil; 150 G4LogicalVolume* fLogicFoil; 151 G4VPhysicalVolume* fPhysFoil; 152 //WORLD 153 G4LogicalVolume* fLogicWorld; 154 //PART 3 155 G4double fLayer_z_position_PART3; 156 G4VPhysicalVolume* fPhysLayer_PART3; 157 G4VPhysicalVolume* fPhysTube_PART3; 158 //PART 4 159 G4double fTube_outerRadius_PART4; 160 G4double fTube_length_PART4; 161 G4double fLayer_z_position_PART4; 162 G4VPhysicalVolume* fPhysTube_PART4; 163 G4VPhysicalVolume* fPhysLayer_PART4; 164 G4double fLayer1_z_position_PART4; 165 G4VPhysicalVolume* fPhysLayer1_PART4; 166 //Target 167 G4LogicalVolume* fLogicTarget; 168 G4double fTarget_z_position; 169 G4Tubs* fSolidTarget; 170 G4VPhysicalVolume* fPhysTarget; 171 //PART 5 172 G4double fLayer1_z_position_PART5; 173 G4VPhysicalVolume* fPhysLayer1_PART5; 174 G4double fLayer2_z_position_PART5; 175 G4VPhysicalVolume* fPhysLayer2_PART5; 176 G4double fLayer3_z_position_PART5; 177 G4VPhysicalVolume* fPhysLayer3_PART5; 178 179 G4Region* fRegionTarget; 180 G4Region* fRegionFoil; 181 182 G4double fTargetVolume; 183 G4double fFoilVolume; 184 185 std::ofstream fParametersSummary; 186 187 }; 188 #endif 189