Geant4 Cross Reference |
1 // 1 // 2 // ******************************************* 2 // ******************************************************************** 3 // * License and Disclaimer 3 // * License and Disclaimer * 4 // * 4 // * * 5 // * The Geant4 software is copyright of th 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/ 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. 9 // * include a list of copyright holders. * 10 // * 10 // * * 11 // * Neither the authors of this software syst 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing fin 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warran 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assum 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitatio 16 // * for the full disclaimer and the limitation of liability. * 17 // * 17 // * * 18 // * This code implementation is the result 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboratio 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distri 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you ag 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publicati 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Sof 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************* 24 // ******************************************************************** 25 // 25 // 26 // 26 // 27 //....oooOO0OOooo........oooOO0OOooo........oo 27 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 28 //....oooOO0OOooo........oooOO0OOooo........oo 28 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 29 29 30 #include "DetectorConstruction.hh" 30 #include "DetectorConstruction.hh" 31 31 32 #include "G4SystemOfUnits.hh" 32 #include "G4SystemOfUnits.hh" 33 #include "G4PhysicalConstants.hh" 33 #include "G4PhysicalConstants.hh" 34 #include "G4Material.hh" 34 #include "G4Material.hh" 35 #include "G4Tubs.hh" 35 #include "G4Tubs.hh" 36 #include "G4Box.hh" 36 #include "G4Box.hh" 37 #include "G4LogicalVolume.hh" 37 #include "G4LogicalVolume.hh" 38 #include "G4PVPlacement.hh" 38 #include "G4PVPlacement.hh" 39 #include "G4PVReplica.hh" 39 #include "G4PVReplica.hh" 40 #include "G4Transform3D.hh" 40 #include "G4Transform3D.hh" 41 #include "G4RotationMatrix.hh" 41 #include "G4RotationMatrix.hh" 42 42 43 #include "G4GeometryManager.hh" 43 #include "G4GeometryManager.hh" 44 #include "G4PhysicalVolumeStore.hh" 44 #include "G4PhysicalVolumeStore.hh" 45 #include "G4LogicalVolumeStore.hh" 45 #include "G4LogicalVolumeStore.hh" 46 #include "G4SolidStore.hh" 46 #include "G4SolidStore.hh" 47 47 48 #include "G4VisAttributes.hh" 48 #include "G4VisAttributes.hh" 49 49 50 50 51 //....oooOO0OOooo........oooOO0OOooo........oo 51 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 52 52 53 DetectorConstruction::DetectorConstruction() 53 DetectorConstruction::DetectorConstruction() 54 :fiberMat(0),lvol_fiber(0), absorberMat(0),lvo 54 :fiberMat(0),lvol_fiber(0), absorberMat(0),lvol_layer(0), 55 moduleMat(0),lvol_module(0), calorimeterMat(0 55 moduleMat(0),lvol_module(0), calorimeterMat(0),lvol_calorimeter(0), 56 worldMat(0),pvol_world(0), defaultMat(0) 56 worldMat(0),pvol_world(0), defaultMat(0) 57 { 57 { 58 // materials 58 // materials 59 DefineMaterials(); 59 DefineMaterials(); 60 60 61 // default parameter values of calorimeter 61 // default parameter values of calorimeter 62 // 62 // 63 fiberDiameter = 1.13*mm; //1.08*mm 63 fiberDiameter = 1.13*mm; //1.08*mm 64 nbOfFibers = 490; //490 64 nbOfFibers = 490; //490 65 distanceInterFibers = 1.35*mm; //1.35*mm 65 distanceInterFibers = 1.35*mm; //1.35*mm 66 layerThickness = 1.73*mm; //1.68*mm 66 layerThickness = 1.73*mm; //1.68*mm 67 milledLayer = 1.00*mm; //1.40*mm 67 milledLayer = 1.00*mm; //1.40*mm ? 68 nbOfLayers = 10; //10 68 nbOfLayers = 10; //10 69 nbOfModules = 9; //9 69 nbOfModules = 9; //9 70 70 71 fiberLength = (nbOfFibers+0.5)*dista 71 fiberLength = (nbOfFibers+0.5)*distanceInterFibers; //662.175*mm 72 } 72 } 73 73 74 //....oooOO0OOooo........oooOO0OOooo........oo 74 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 75 75 76 DetectorConstruction::~DetectorConstruction() 76 DetectorConstruction::~DetectorConstruction() 77 { } 77 { } 78 78 79 //....oooOO0OOooo........oooOO0OOooo........oo 79 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 80 80 81 G4VPhysicalVolume* DetectorConstruction::Const 81 G4VPhysicalVolume* DetectorConstruction::Construct() 82 { 82 { 83 return ConstructCalorimeter(); 83 return ConstructCalorimeter(); 84 } 84 } 85 85 86 //....oooOO0OOooo........oooOO0OOooo........oo 86 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 87 87 88 void DetectorConstruction::DefineMaterials() 88 void DetectorConstruction::DefineMaterials() 89 { 89 { 90 // define Elements 90 // define Elements 91 // 91 // 92 G4Element* H = new G4Element("Hydrogen","H" 92 G4Element* H = new G4Element("Hydrogen","H", 1, 1.01*g/mole); 93 G4Element* C = new G4Element("Carbon", "C" 93 G4Element* C = new G4Element("Carbon", "C", 6, 12.01*g/mole); 94 G4Element* N = new G4Element("Nitrogen","N" 94 G4Element* N = new G4Element("Nitrogen","N", 7, 14.01*g/mole); 95 G4Element* O = new G4Element("Oxygen", "O" 95 G4Element* O = new G4Element("Oxygen", "O", 8, 16.00*g/mole); 96 96 97 G4int natoms, ncomponents; 97 G4int natoms, ncomponents; 98 G4double density, massfraction; 98 G4double density, massfraction; 99 99 100 // Lead 100 // Lead 101 // 101 // 102 G4Material* Pb = 102 G4Material* Pb = 103 new G4Material("Lead", 82., 207.20*g/mole, d 103 new G4Material("Lead", 82., 207.20*g/mole, density= 0.98*11.20*g/cm3); 104 104 105 // Scintillator 105 // Scintillator 106 // 106 // 107 G4Material* Sci = 107 G4Material* Sci = 108 new G4Material("Scintillator", density= 1.03 108 new G4Material("Scintillator", density= 1.032*g/cm3, ncomponents=2); 109 Sci->AddElement(C, natoms=8); 109 Sci->AddElement(C, natoms=8); 110 Sci->AddElement(H, natoms=8); 110 Sci->AddElement(H, natoms=8); 111 111 112 Sci->GetIonisation()->SetBirksConstant(0.126 112 Sci->GetIonisation()->SetBirksConstant(0.126*mm/MeV); 113 113 114 // Air 114 // Air 115 // 115 // 116 G4Material* Air = 116 G4Material* Air = 117 new G4Material("Air", density= 1.290*mg/cm3, 117 new G4Material("Air", density= 1.290*mg/cm3, ncomponents=2); 118 Air->AddElement(N, massfraction=70*perCent); 118 Air->AddElement(N, massfraction=70*perCent); 119 Air->AddElement(O, massfraction=30.*perCent) 119 Air->AddElement(O, massfraction=30.*perCent); 120 120 121 // example of vacuum 121 // example of vacuum 122 // 122 // 123 density = universe_mean_density; //fr 123 density = universe_mean_density; //from PhysicalConstants.h 124 G4double pressure = 3.e-18*pascal; 124 G4double pressure = 3.e-18*pascal; 125 G4double temperature = 2.73*kelvin; 125 G4double temperature = 2.73*kelvin; 126 G4Material* Vacuum = 126 G4Material* Vacuum = 127 new G4Material("Galactic", 1., 1.008*g/mole, 127 new G4Material("Galactic", 1., 1.008*g/mole, density, 128 kStateGas,tempera 128 kStateGas,temperature,pressure); 129 129 130 //attribute materials 130 //attribute materials 131 // 131 // 132 defaultMat = Vacuum; 132 defaultMat = Vacuum; 133 fiberMat = Sci; 133 fiberMat = Sci; 134 absorberMat = Pb; 134 absorberMat = Pb; 135 moduleMat = defaultMat; 135 moduleMat = defaultMat; 136 calorimeterMat = defaultMat; 136 calorimeterMat = defaultMat; 137 worldMat = defaultMat; 137 worldMat = defaultMat; 138 138 139 // print table 139 // print table 140 // 140 // 141 G4cout << *(G4Material::GetMaterialTable()) 141 G4cout << *(G4Material::GetMaterialTable()) << G4endl; 142 } 142 } 143 143 144 //....oooOO0OOooo........oooOO0OOooo........oo 144 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 145 145 146 G4VPhysicalVolume* DetectorConstruction::Const 146 G4VPhysicalVolume* DetectorConstruction::ConstructCalorimeter() 147 { 147 { 148 // Cleanup old geometry 148 // Cleanup old geometry 149 // 149 // 150 G4GeometryManager::GetInstance()->OpenGeomet 150 G4GeometryManager::GetInstance()->OpenGeometry(); 151 G4PhysicalVolumeStore::GetInstance()->Clean( 151 G4PhysicalVolumeStore::GetInstance()->Clean(); 152 G4LogicalVolumeStore::GetInstance()->Clean() 152 G4LogicalVolumeStore::GetInstance()->Clean(); 153 G4SolidStore::GetInstance()->Clean(); 153 G4SolidStore::GetInstance()->Clean(); 154 154 155 // fibers 155 // fibers 156 // 156 // 157 G4Tubs* 157 G4Tubs* 158 svol_fiber = new G4Tubs("fiber", //name 158 svol_fiber = new G4Tubs("fiber", //name 159 0*mm, 0.5*fiberDiamet 159 0*mm, 0.5*fiberDiameter, //r1, r2 160 0.5*fiberLength, //half-length 160 0.5*fiberLength, //half-length 161 0., twopi); //theta1, theta2 161 0., twopi); //theta1, theta2 162 162 163 lvol_fiber = new G4LogicalVolume(svol_fiber, 163 lvol_fiber = new G4LogicalVolume(svol_fiber, //solid 164 fiberMat, 164 fiberMat, //material 165 "fiber"); 165 "fiber"); //name 166 166 167 // layer 167 // layer 168 // 168 // 169 G4double sizeX = layerThickness; 169 G4double sizeX = layerThickness; 170 G4double sizeY = distanceInterFibers*nbOfFib 170 G4double sizeY = distanceInterFibers*nbOfFibers; 171 G4double sizeZ = fiberLength; 171 G4double sizeZ = fiberLength; 172 172 173 G4Box* 173 G4Box* 174 svol_layer = new G4Box("layer", //name 174 svol_layer = new G4Box("layer", //name 175 0.5*sizeX, 0.5*sizeY, 0.5*si 175 0.5*sizeX, 0.5*sizeY, 0.5*sizeZ); //size 176 176 177 177 178 lvol_layer = new G4LogicalVolume(svol_layer, 178 lvol_layer = new G4LogicalVolume(svol_layer, //solid 179 absorberMat 179 absorberMat, //material 180 "layer"); 180 "layer"); //name 181 181 182 // put fibers within layer 182 // put fibers within layer 183 // 183 // 184 G4double Xcenter = 0.; 184 G4double Xcenter = 0.; 185 G4double Ycenter = -0.5*(sizeY + distanceInt 185 G4double Ycenter = -0.5*(sizeY + distanceInterFibers); 186 186 187 for (G4int k=0; k<nbOfFibers; k++) { 187 for (G4int k=0; k<nbOfFibers; k++) { 188 Ycenter += distanceInterFibers; 188 Ycenter += distanceInterFibers; 189 new G4PVPlacement(0, //no rotatio 189 new G4PVPlacement(0, //no rotation 190 G4ThreeVector(Xcenter,Ycenter,0.), 190 G4ThreeVector(Xcenter,Ycenter,0.), //position 191 lvol_fiber, 191 lvol_fiber, //logical volume 192 "fiber", //name 192 "fiber", //name 193 lvol_layer, // 193 lvol_layer, //mother 194 false, // 194 false, //no boulean operat 195 k+1); 195 k+1); //copy number 196 196 197 } 197 } 198 198 199 // modules 199 // modules 200 // 200 // 201 moduleThickness = layerThickness*nbOfLayers 201 moduleThickness = layerThickness*nbOfLayers + milledLayer; 202 sizeX = moduleThickness; 202 sizeX = moduleThickness; 203 sizeY = fiberLength; 203 sizeY = fiberLength; 204 sizeZ = fiberLength; 204 sizeZ = fiberLength; 205 205 206 G4Box* 206 G4Box* 207 svol_module = new G4Box("module", //name 207 svol_module = new G4Box("module", //name 208 0.5*sizeX, 0.5*sizeY, 0.5*si 208 0.5*sizeX, 0.5*sizeY, 0.5*sizeZ); //size 209 209 210 lvol_module = new G4LogicalVolume(svol_modul 210 lvol_module = new G4LogicalVolume(svol_module, //solid 211 absorberMat 211 absorberMat, //material 212 "module"); 212 "module"); //name 213 213 214 // put layers within module 214 // put layers within module 215 // 215 // 216 Xcenter = -0.5*(nbOfLayers+1)*layerThickness 216 Xcenter = -0.5*(nbOfLayers+1)*layerThickness; 217 Ycenter = 0.25*distanceInterFibers; 217 Ycenter = 0.25*distanceInterFibers; 218 218 219 for (G4int k=0; k<nbOfLayers; k++) { 219 for (G4int k=0; k<nbOfLayers; k++) { 220 Xcenter += layerThickness; 220 Xcenter += layerThickness; 221 Ycenter = - Ycenter; 221 Ycenter = - Ycenter; 222 new G4PVPlacement(0, //no rotatio 222 new G4PVPlacement(0, //no rotation 223 G4ThreeVector(Xcenter,Ycenter,0.), 223 G4ThreeVector(Xcenter,Ycenter,0.), //position 224 lvol_layer, 224 lvol_layer, //logical volume 225 "layer", //name 225 "layer", //name 226 lvol_module, 226 lvol_module, //mother 227 false, // 227 false, //no boulean operat 228 k+1); 228 k+1); //copy number 229 229 230 } 230 } 231 231 232 // calorimeter 232 // calorimeter 233 // 233 // 234 calorThickness = moduleThickness*nbOfModules 234 calorThickness = moduleThickness*nbOfModules; 235 sizeX = calorThickness; 235 sizeX = calorThickness; 236 sizeY = fiberLength; 236 sizeY = fiberLength; 237 sizeZ = fiberLength; 237 sizeZ = fiberLength; 238 238 239 G4Box* 239 G4Box* 240 svol_calorimeter = new G4Box("calorimeter", 240 svol_calorimeter = new G4Box("calorimeter", //name 241 0.5*sizeX, 0.5*sizeY, 0.5*si 241 0.5*sizeX, 0.5*sizeY, 0.5*sizeZ); //size 242 242 243 243 244 lvol_calorimeter = new G4LogicalVolume(svol_ 244 lvol_calorimeter = new G4LogicalVolume(svol_calorimeter, //solid 245 calorimeter 245 calorimeterMat, //material 246 "calorimete 246 "calorimeter"); //name 247 247 248 // put modules inside calorimeter 248 // put modules inside calorimeter 249 // 249 // 250 Xcenter = -0.5*(calorThickness + moduleThick 250 Xcenter = -0.5*(calorThickness + moduleThickness); 251 251 252 252 253 for (G4int k=0; k<nbOfModules; k++) { 253 for (G4int k=0; k<nbOfModules; k++) { 254 Xcenter += moduleThickness; 254 Xcenter += moduleThickness; 255 G4RotationMatrix rotm; 255 G4RotationMatrix rotm; //rotation matrix to place modules 256 if ((k+1)%2 == 0) rotm.rotateX(90*deg); 256 if ((k+1)%2 == 0) rotm.rotateX(90*deg); 257 G4Transform3D transform(rotm, G4ThreeVector( 257 G4Transform3D transform(rotm, G4ThreeVector(Xcenter,0.,0.)); 258 new G4PVPlacement(transform, //ro 258 new G4PVPlacement(transform, //rotation+position 259 lvol_module, // 259 lvol_module, //logical volume 260 "module", // 260 "module", //name 261 lvol_calorimeter, 261 lvol_calorimeter, //mother 262 false, // 262 false, //no boulean operat 263 k+1); 263 k+1); //copy number 264 } 264 } 265 265 266 // world 266 // world 267 // 267 // 268 sizeX = 1.2*calorThickness; 268 sizeX = 1.2*calorThickness; 269 sizeY = 1.2*fiberLength; 269 sizeY = 1.2*fiberLength; 270 sizeZ = 1.2*fiberLength; 270 sizeZ = 1.2*fiberLength; 271 271 272 worldSizeX = sizeX; 272 worldSizeX = sizeX; 273 273 274 G4Box* 274 G4Box* 275 svol_world = new G4Box("world", //name 275 svol_world = new G4Box("world", //name 276 0.5*sizeX, 0.5*sizeY, 0.5*si 276 0.5*sizeX, 0.5*sizeY, 0.5*sizeZ); //size 277 277 278 lvol_world = new G4LogicalVolume(svol_world, 278 lvol_world = new G4LogicalVolume(svol_world, //solid 279 worldMat, 279 worldMat, //material 280 "world"); 280 "world"); //name 281 281 282 pvol_world = new G4PVPlacement(0, //no r 282 pvol_world = new G4PVPlacement(0, //no rotation 283 G4ThreeVector(), //at (0,0,0) 283 G4ThreeVector(), //at (0,0,0) 284 lvol_world, 284 lvol_world, //logical volume 285 "world", // 285 "world", //name 286 0, //moth 286 0, //mother volume 287 false, // 287 false, //no boolean operation 288 0); //co 288 0); //copy number 289 289 290 //put calorimeter in world 290 //put calorimeter in world 291 // 291 // 292 new G4PVPlacement(0, //no rotation 292 new G4PVPlacement(0, //no rotation 293 G4ThreeVector(), //at ( 293 G4ThreeVector(), //at (0,0,0) 294 lvol_calorimeter, //logi 294 lvol_calorimeter, //logical volume 295 "calorimeter", //name 295 "calorimeter", //name 296 lvol_world, //mother 296 lvol_world, //mother volume 297 false, //no boolean o 297 false, //no boolean operation 298 0); //copy number 298 0); //copy number 299 299 300 PrintCalorParameters(); 300 PrintCalorParameters(); 301 301 302 // Visualization attributes 302 // Visualization attributes 303 // 303 // 304 lvol_fiber->SetVisAttributes (G4VisAttribute 304 lvol_fiber->SetVisAttributes (G4VisAttributes::GetInvisible()); 305 lvol_layer->SetVisAttributes (G4VisAttribute 305 lvol_layer->SetVisAttributes (G4VisAttributes::GetInvisible()); 306 lvol_world->SetVisAttributes (G4VisAttribute 306 lvol_world->SetVisAttributes (G4VisAttributes::GetInvisible()); 307 307 308 //always return the physical World 308 //always return the physical World 309 // 309 // 310 return pvol_world; 310 return pvol_world; 311 } 311 } 312 312 313 //....oooOO0OOooo........oooOO0OOooo........oo 313 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 314 314 315 #include "G4UnitsTable.hh" 315 #include "G4UnitsTable.hh" 316 316 317 void DetectorConstruction::PrintCalorParameter 317 void DetectorConstruction::PrintCalorParameters() 318 { 318 { 319 G4cout << "\n------------------------------- 319 G4cout << "\n-------------------------------------------------------------" 320 << "\n ---> The calorimeter is " << nbOfM 320 << "\n ---> The calorimeter is " << nbOfModules << " Modules" 321 << "\n ---> A Module is " << nbOfLayers < 321 << "\n ---> A Module is " << nbOfLayers << " Layers + 1 milled Layer"; 322 322 323 G4cout 323 G4cout 324 << "\n ---> A Layer is " << G4BestUnit(la 324 << "\n ---> A Layer is " << G4BestUnit(layerThickness,"Length") 325 << " thickness of " << absorberMat->GetNa 325 << " thickness of " << absorberMat->GetName(); 326 326 327 G4cout 327 G4cout 328 << "\n ---> A Layer includes " << nbOfFib 328 << "\n ---> A Layer includes " << nbOfFibers << " fibers of " 329 << fiberMat->GetName(); 329 << fiberMat->GetName(); 330 330 331 G4cout 331 G4cout 332 << "\n ---> diameter : " << G4BestUn 332 << "\n ---> diameter : " << G4BestUnit(fiberDiameter,"Length") 333 << "\n ---> length : " << G4BestUn 333 << "\n ---> length : " << G4BestUnit(fiberLength,"Length") 334 << "\n ---> distance : " << G4BestUn 334 << "\n ---> distance : " << G4BestUnit(distanceInterFibers,"Length"); 335 335 336 G4cout 336 G4cout 337 << "\n ---> The milled Layer is " << G4Be 337 << "\n ---> The milled Layer is " << G4BestUnit(milledLayer,"Length") 338 << " thickness of " << absorberMat->GetNa 338 << " thickness of " << absorberMat->GetName(); 339 339 340 G4cout 340 G4cout 341 << "\n\n ---> Module thickness " << G4BestU 341 << "\n\n ---> Module thickness " << G4BestUnit(moduleThickness,"Length"); 342 342 343 G4cout 343 G4cout 344 << "\n\n ---> Total calor thickness " << G4 344 << "\n\n ---> Total calor thickness " << G4BestUnit(calorThickness,"Length") 345 << "\n Tranverse size " << G4 345 << "\n Tranverse size " << G4BestUnit(fiberLength,"Length"); 346 346 347 G4cout << "\n------------------------------- 347 G4cout << "\n-------------------------------------------------------------\n"; 348 G4cout << G4endl; 348 G4cout << G4endl; 349 } 349 } 350 350 351 //....oooOO0OOooo........oooOO0OOooo........oo 351 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 352 352 353 #include "G4GlobalMagFieldMessenger.hh" 353 #include "G4GlobalMagFieldMessenger.hh" 354 #include "G4AutoDelete.hh" 354 #include "G4AutoDelete.hh" 355 355 356 void DetectorConstruction::ConstructSDandField 356 void DetectorConstruction::ConstructSDandField() 357 { 357 { 358 if ( fFieldMessenger.Get() == 0 ) { 358 if ( fFieldMessenger.Get() == 0 ) { 359 // Create global magnetic field messen 359 // Create global magnetic field messenger. 360 // Uniform magnetic field is then crea 360 // Uniform magnetic field is then created automatically if 361 // the field value is not zero. 361 // the field value is not zero. 362 G4ThreeVector fieldValue = G4ThreeVect 362 G4ThreeVector fieldValue = G4ThreeVector(); 363 G4GlobalMagFieldMessenger* msg = 363 G4GlobalMagFieldMessenger* msg = 364 new G4GlobalMagFieldMessenger(fieldVal 364 new G4GlobalMagFieldMessenger(fieldValue); 365 //msg->SetVerboseLevel(1); 365 //msg->SetVerboseLevel(1); 366 G4AutoDelete::Register(msg); 366 G4AutoDelete::Register(msg); 367 fFieldMessenger.Put( msg ); 367 fFieldMessenger.Put( msg ); 368 368 369 } 369 } 370 } 370 } 371 371 372 //....oooOO0OOooo........oooOO0OOooo........oo 372 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 373 373