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