00001 // 00002 // ******************************************************************** 00003 // * License and Disclaimer * 00004 // * * 00005 // * The Geant4 software is copyright of the Copyright Holders of * 00006 // * the Geant4 Collaboration. It is provided under the terms and * 00007 // * conditions of the Geant4 Software License, included in the file * 00008 // * LICENSE and available at http://cern.ch/geant4/license . These * 00009 // * include a list of copyright holders. * 00010 // * * 00011 // * Neither the authors of this software system, nor their employing * 00012 // * institutes,nor the agencies providing financial support for this * 00013 // * work make any representation or warranty, express or implied, * 00014 // * regarding this software system or assume any liability for its * 00015 // * use. Please see the license in the file LICENSE and URL above * 00016 // * for the full disclaimer and the limitation of liability. * 00017 // * * 00018 // * This code implementation is the result of the scientific and * 00019 // * technical work of the GEANT4 collaboration. * 00020 // * By using, copying, modifying or distributing the software (or * 00021 // * any work based on the software) you agree to acknowledge its * 00022 // * use in resulting scientific publications, and indicate your * 00023 // * acceptance of all terms of the Geant4 Software license. * 00024 // ******************************************************************** 00025 // 00026 // 00027 // $Id$ 00028 // 00029 // 00030 // class G4Region Inline Implementation file 00031 // 00032 // 19.09.02 - G.Cosmo: Created 00033 // -------------------------------------------------------------------- 00034 00035 // ******************************************************************** 00036 // Equality operator, defined by address only 00037 // ******************************************************************** 00038 // 00039 inline 00040 G4bool G4Region::operator==(const G4Region& rg) const 00041 { 00042 return (this==&rg) ? true : false; 00043 } 00044 00045 // ******************************************************************** 00046 // GetName 00047 // ******************************************************************** 00048 // 00049 inline 00050 const G4String& G4Region::GetName() const 00051 { 00052 return fName; 00053 } 00054 00055 // ******************************************************************** 00056 // SetName 00057 // ******************************************************************** 00058 // 00059 inline 00060 void G4Region::SetName(const G4String& pName) 00061 { 00062 fName = pName; 00063 } 00064 00065 // ******************************************************************** 00066 // RegionModified 00067 // ******************************************************************** 00068 // 00069 inline 00070 void G4Region::RegionModified(G4bool flag) 00071 { 00072 fRegionMod = flag; 00073 } 00074 00075 // ******************************************************************** 00076 // IsModified 00077 // ******************************************************************** 00078 // 00079 inline 00080 G4bool G4Region::IsModified() const 00081 { 00082 return fRegionMod; 00083 } 00084 00085 // ******************************************************************** 00086 // SetProductionCuts 00087 // ******************************************************************** 00088 // 00089 inline 00090 void G4Region::SetProductionCuts(G4ProductionCuts* cut) 00091 { 00092 fCut = cut; 00093 fRegionMod = true; 00094 } 00095 00096 // ******************************************************************** 00097 // GetProductionCuts 00098 // ******************************************************************** 00099 // 00100 inline 00101 G4ProductionCuts* G4Region::GetProductionCuts() const 00102 { 00103 return fCut; 00104 } 00105 00106 // ******************************************************************** 00107 // GetLogicalVolumeIterator 00108 // ******************************************************************** 00109 // 00110 inline 00111 std::vector<G4LogicalVolume*>::iterator 00112 G4Region::GetRootLogicalVolumeIterator() 00113 { 00114 G4RootLVList::iterator iterator = 00115 G4RootLVList::iterator(fRootVolumes.begin()); 00116 return iterator; 00117 } 00118 00119 // ******************************************************************** 00120 // GetMaterialIterator 00121 // ******************************************************************** 00122 // 00123 inline 00124 std::vector<G4Material*>::const_iterator 00125 G4Region::GetMaterialIterator() const 00126 { 00127 G4MaterialList::const_iterator iterator = fMaterials.begin(); 00128 return iterator; 00129 } 00130 00131 // ******************************************************************** 00132 // GetNumberOfMaterials 00133 // ******************************************************************** 00134 // 00135 inline 00136 size_t G4Region::GetNumberOfMaterials() const 00137 { 00138 return fMaterials.size(); 00139 } 00140 00141 // ******************************************************************** 00142 // GetNumberOfRootVolumes 00143 // ******************************************************************** 00144 // 00145 inline 00146 size_t G4Region::GetNumberOfRootVolumes() const 00147 { 00148 return fRootVolumes.size(); 00149 } 00150 00151 // ******************************************************************** 00152 // SetUserInformation 00153 // ******************************************************************** 00154 // 00155 inline 00156 void G4Region::SetUserInformation(G4VUserRegionInformation* ui) 00157 { 00158 fUserInfo = ui; 00159 } 00160 00161 // ******************************************************************** 00162 // GetUserInformation 00163 // ******************************************************************** 00164 // 00165 inline 00166 G4VUserRegionInformation* G4Region::GetUserInformation() const 00167 { 00168 return fUserInfo; 00169 } 00170 00171 // ******************************************************************** 00172 // SetUserLimits 00173 // ******************************************************************** 00174 // 00175 inline 00176 void G4Region::SetUserLimits(G4UserLimits* ul) 00177 { 00178 fUserLimits = ul; 00179 } 00180 00181 // ******************************************************************** 00182 // GetUserLimits 00183 // ******************************************************************** 00184 // 00185 inline 00186 G4UserLimits* G4Region::GetUserLimits() const 00187 { 00188 return fUserLimits; 00189 } 00190 00191 // ******************************************************************** 00192 // ClearMap 00193 // ******************************************************************** 00194 // 00195 inline 00196 void G4Region::ClearMap() 00197 { 00198 if(!(fMaterialCoupleMap.empty())) 00199 { 00200 G4MaterialCoupleMap::iterator b = fMaterialCoupleMap.begin(); 00201 G4MaterialCoupleMap::iterator e = fMaterialCoupleMap.end(); 00202 fMaterialCoupleMap.erase(b,e); 00203 } 00204 } 00205 00206 // ******************************************************************** 00207 // RegisterMateralCouplePair 00208 // ******************************************************************** 00209 // 00210 inline 00211 void G4Region::RegisterMaterialCouplePair(G4Material* mat, 00212 G4MaterialCutsCouple* couple) 00213 { 00214 fMaterialCoupleMap.insert(G4MaterialCouplePair(mat,couple)); 00215 } 00216 00217 // ******************************************************************** 00218 // FindCouple 00219 // ******************************************************************** 00220 // 00221 inline 00222 G4MaterialCutsCouple* G4Region::FindCouple(G4Material* mat) 00223 { 00224 G4MaterialCoupleMap::iterator c = fMaterialCoupleMap.find(mat); 00225 G4MaterialCutsCouple* couple = 0; 00226 if(c!=fMaterialCoupleMap.end()) couple = (*c).second; 00227 return couple; 00228 } 00229 00230 // ******************************************************************** 00231 // SetFastSimulationManager 00232 // ******************************************************************** 00233 // 00234 inline 00235 void G4Region::SetFastSimulationManager(G4FastSimulationManager* fsm) 00236 { 00237 fFastSimulationManager = fsm; 00238 } 00239 00240 // ******************************************************************** 00241 // GetFastSimulationManager 00242 // ******************************************************************** 00243 // 00244 inline 00245 G4FastSimulationManager* G4Region::GetFastSimulationManager() const 00246 { 00247 return fFastSimulationManager; 00248 } 00249 00250 // ******************************************************************** 00251 // GetFieldManager 00252 // ******************************************************************** 00253 // 00254 inline 00255 G4FieldManager* G4Region::GetFieldManager() const 00256 { 00257 return fFieldManager; 00258 } 00259 00260 // ******************************************************************** 00261 // SetFieldManager 00262 // ******************************************************************** 00263 // 00264 inline 00265 void G4Region::SetFieldManager(G4FieldManager* fm) 00266 { 00267 fFieldManager = fm; 00268 } 00269 00270 // ******************************************************************** 00271 // GetWorldPhysical 00272 // ******************************************************************** 00273 // 00274 inline 00275 G4VPhysicalVolume* G4Region::GetWorldPhysical() const 00276 { 00277 return fWorldPhys; 00278 } 00279 00280 // ******************************************************************** 00281 // AddMaterial 00282 // ******************************************************************** 00283 // 00284 inline 00285 void G4Region::AddMaterial(G4Material* aMaterial) 00286 { 00287 G4MaterialList::iterator pos = 00288 std::find(fMaterials.begin(),fMaterials.end(),aMaterial); 00289 if (pos == fMaterials.end()) 00290 { 00291 fMaterials.push_back(aMaterial); 00292 fRegionMod = true; 00293 } 00294 } 00295 00296 // ******************************************************************** 00297 // SetRegionalSteppingAction 00298 // ******************************************************************** 00299 // 00300 inline 00301 void G4Region::SetRegionalSteppingAction(G4UserSteppingAction* rusa) 00302 { 00303 fRegionalSteppingAction = rusa; 00304 } 00305 00306 // ******************************************************************** 00307 // GetRegionalSteppingAction 00308 // ******************************************************************** 00309 // 00310 inline 00311 G4UserSteppingAction* G4Region::GetRegionalSteppingAction() const 00312 { 00313 return fRegionalSteppingAction; 00314 } 00315 00316 // ******************************************************************** 00317 // UsedInMassGeometry 00318 // ******************************************************************** 00319 // 00320 inline 00321 void G4Region::UsedInMassGeometry(G4bool val) 00322 { 00323 fInMassGeometry = val; 00324 } 00325 00326 // ******************************************************************** 00327 // UsedInParallelGeometry 00328 // ******************************************************************** 00329 // 00330 inline 00331 void G4Region::UsedInParallelGeometry(G4bool val) 00332 { 00333 fInParallelGeometry = val; 00334 } 00335 00336 // ******************************************************************** 00337 // IsInMassGeometry 00338 // ******************************************************************** 00339 // 00340 inline 00341 G4bool G4Region::IsInMassGeometry() const 00342 { 00343 return fInMassGeometry; 00344 } 00345 00346 // ******************************************************************** 00347 // IsInParallelGeometry 00348 // ******************************************************************** 00349 // 00350 inline 00351 G4bool G4Region::IsInParallelGeometry() const 00352 { 00353 return fInParallelGeometry; 00354 }