Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/examples/extended/analysis/AnaEx01/shared/src/DetectorConstruction.cc

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /examples/extended/analysis/AnaEx01/shared/src/DetectorConstruction.cc (Version 11.3.0) and /examples/extended/analysis/AnaEx01/shared/src/DetectorConstruction.cc (Version 10.5.p1)


  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 /// \file DetectorConstruction.cc                  26 /// \file DetectorConstruction.cc
 27 /// \brief Implementation of the DetectorConst     27 /// \brief Implementation of the DetectorConstruction class
                                                   >>  28 //
                                                   >>  29 //
                                                   >>  30 //
                                                   >>  31 // 
 28                                                    32 
 29 //....oooOO0OOooo........oooOO0OOooo........oo     33 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 30 //....oooOO0OOooo........oooOO0OOooo........oo     34 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 31                                                    35 
 32 #include "DetectorConstruction.hh"                 36 #include "DetectorConstruction.hh"
 33                                                << 
 34 #include "DetectorMessenger.hh"                    37 #include "DetectorMessenger.hh"
 35                                                    38 
 36 #include "G4Box.hh"                            << 
 37 #include "G4Colour.hh"                         << 
 38 #include "G4GeometryManager.hh"                << 
 39 #include "G4LogicalVolume.hh"                  << 
 40 #include "G4LogicalVolumeStore.hh"             << 
 41 #include "G4Material.hh"                           39 #include "G4Material.hh"
 42 #include "G4NistManager.hh"                        40 #include "G4NistManager.hh"
                                                   >>  41 
                                                   >>  42 #include "G4Box.hh"
                                                   >>  43 #include "G4LogicalVolume.hh"
 43 #include "G4PVPlacement.hh"                        44 #include "G4PVPlacement.hh"
 44 #include "G4PVReplica.hh"                          45 #include "G4PVReplica.hh"
                                                   >>  46 
                                                   >>  47 #include "G4StateManager.hh"
                                                   >>  48 #include "G4GeometryManager.hh"
 45 #include "G4PhysicalVolumeStore.hh"                49 #include "G4PhysicalVolumeStore.hh"
 46 #include "G4RunManager.hh"                     <<  50 #include "G4LogicalVolumeStore.hh"
 47 #include "G4SolidStore.hh"                         51 #include "G4SolidStore.hh"
 48 #include "G4StateManager.hh"                   <<  52 
 49 #include "G4SystemOfUnits.hh"                  << 
 50 #include "G4VisAttributes.hh"                      53 #include "G4VisAttributes.hh"
                                                   >>  54 #include "G4Colour.hh"
                                                   >>  55 #include "G4SystemOfUnits.hh"
                                                   >>  56 #include "G4RunManager.hh"
 51                                                    57 
 52 //....oooOO0OOooo........oooOO0OOooo........oo     58 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 53                                                    59 
 54 DetectorConstruction::DetectorConstruction()       60 DetectorConstruction::DetectorConstruction()
 55 {                                              <<  61 :G4VUserDetectorConstruction(),
                                                   >>  62  fAbsorberMaterial(0),fGapMaterial(0),fDefaultMaterial(0),
                                                   >>  63  fSolidWorld(0),fLogicWorld(0),fPhysiWorld(0),
                                                   >>  64  fSolidCalor(0),fLogicCalor(0),fPhysiCalor(0),
                                                   >>  65  fSolidLayer(0),fLogicLayer(0),fPhysiLayer(0),
                                                   >>  66  fSolidAbsorber(0),fLogicAbsorber(0),fPhysiAbsorber(0),
                                                   >>  67  fSolidGap (0),fLogicGap (0),fPhysiGap (0),
                                                   >>  68  fDetectorMessenger(0)
                                                   >>  69 {
                                                   >>  70   // default parameter values of the calorimeter
                                                   >>  71   fAbsorberThickness = 10.*mm;
                                                   >>  72   fGapThickness      =  5.*mm;
                                                   >>  73   fNbOfLayers        = 10;
                                                   >>  74   fCalorSizeYZ       = 10.*cm;
 56   ComputeCalorParameters();                        75   ComputeCalorParameters();
 57                                                <<  76   
 58   // materials                                     77   // materials
 59   DefineMaterials();                               78   DefineMaterials();
 60   SetAbsorberMaterial("G4_Pb");                    79   SetAbsorberMaterial("G4_Pb");
 61   SetGapMaterial("G4_lAr");                        80   SetGapMaterial("G4_lAr");
 62                                                <<  81   
 63   // create commands for interactive definitio     82   // create commands for interactive definition of the calorimeter
 64   fDetectorMessenger = new DetectorMessenger(t     83   fDetectorMessenger = new DetectorMessenger(this);
 65 }                                                  84 }
 66                                                    85 
 67 //....oooOO0OOooo........oooOO0OOooo........oo     86 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 68                                                    87 
 69 DetectorConstruction::~DetectorConstruction()      88 DetectorConstruction::~DetectorConstruction()
 70 {                                              <<  89 { delete fDetectorMessenger;}
 71   delete fDetectorMessenger;                   << 
 72 }                                              << 
 73                                                    90 
 74 //....oooOO0OOooo........oooOO0OOooo........oo     91 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 75                                                    92 
 76 G4VPhysicalVolume* DetectorConstruction::Const     93 G4VPhysicalVolume* DetectorConstruction::Construct()
 77 {                                                  94 {
 78   return ConstructCalorimeter();                   95   return ConstructCalorimeter();
 79 }                                                  96 }
 80                                                    97 
 81 //....oooOO0OOooo........oooOO0OOooo........oo     98 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 82                                                    99 
 83 void DetectorConstruction::DefineMaterials()      100 void DetectorConstruction::DefineMaterials()
 84 {                                              << 101 { 
 85   // use G4-NIST materials data base           << 102 // use G4-NIST materials data base
 86   //                                           << 103 //
 87   G4NistManager* man = G4NistManager::Instance << 104 G4NistManager* man = G4NistManager::Instance();
 88   fDefaultMaterial = man->FindOrBuildMaterial( << 105 fDefaultMaterial = man->FindOrBuildMaterial("G4_Galactic");
 89   man->FindOrBuildMaterial("G4_Pb");           << 106 man->FindOrBuildMaterial("G4_Pb");
 90   man->FindOrBuildMaterial("G4_lAr");          << 107 man->FindOrBuildMaterial("G4_lAr");
 91                                                << 108 
 92   // print table                               << 109 // print table
 93   //                                           << 110 //
 94   G4cout << *(G4Material::GetMaterialTable())  << 111 G4cout << *(G4Material::GetMaterialTable()) << G4endl;
 95 }                                                 112 }
 96                                                   113 
 97 //....oooOO0OOooo........oooOO0OOooo........oo    114 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 98                                                   115 
 99 G4VPhysicalVolume* DetectorConstruction::Const    116 G4VPhysicalVolume* DetectorConstruction::ConstructCalorimeter()
100 {                                                 117 {
                                                   >> 118 
101   // Clean old geometry, if any                   119   // Clean old geometry, if any
102   //                                              120   //
103   G4GeometryManager::GetInstance()->OpenGeomet    121   G4GeometryManager::GetInstance()->OpenGeometry();
104   G4PhysicalVolumeStore::GetInstance()->Clean(    122   G4PhysicalVolumeStore::GetInstance()->Clean();
105   G4LogicalVolumeStore::GetInstance()->Clean()    123   G4LogicalVolumeStore::GetInstance()->Clean();
106   G4SolidStore::GetInstance()->Clean();           124   G4SolidStore::GetInstance()->Clean();
107                                                   125 
108   // complete the Calor parameters definition     126   // complete the Calor parameters definition
109   ComputeCalorParameters();                       127   ComputeCalorParameters();
110                                                << 128    
111   //                                           << 129   //     
112   // World                                        130   // World
113   //                                              131   //
114   fSolidWorld = new G4Box("World",  // its nam << 132   fSolidWorld = new G4Box("World",                                //its name
115                           fWorldSizeX / 2, fWo << 133                    fWorldSizeX/2,fWorldSizeYZ/2,fWorldSizeYZ/2);  //its size
116                                                << 134                          
117   fLogicWorld = new G4LogicalVolume(fSolidWorl << 135   fLogicWorld = new G4LogicalVolume(fSolidWorld,            //its solid
118                                     fDefaultMa << 136                                    fDefaultMaterial,        //its material
119                                     "World");  << 137                                    "World");                //its name
120                                                << 138                                    
121   fPhysiWorld = new G4PVPlacement(nullptr,  // << 139   fPhysiWorld = new G4PVPlacement(0,                        //no rotation
122                                   G4ThreeVecto << 140                                  G4ThreeVector(),           //at (0,0,0)
123                                   fLogicWorld, << 141                                  fLogicWorld,             //its logical volume
124                                   "World",  // << 142                                  "World",                   //its name
125                                   nullptr,  // << 143                                  0,                         //its mother  volume
126                                   false,  // n << 144                                  false,                  //no boolean operation
127                                   0);  // copy << 145                                  0);                        //copy number
128                                                << 146   
129   //                                           << 147   //                               
130   // Calorimeter                                  148   // Calorimeter
131   //                                           << 149   //  
132   fSolidCalor = nullptr;                       << 150   fSolidCalor=0; fLogicCalor=0; fPhysiCalor=0;
133   fLogicCalor = nullptr;                       << 151   fSolidLayer=0; fLogicLayer=0; fPhysiLayer=0;
134   fPhysiCalor = nullptr;                       << 152   
135   fSolidLayer = nullptr;                       << 153   if (fCalorThickness > 0.)  
136   fLogicLayer = nullptr;                       << 154     { fSolidCalor = new G4Box("Calorimeter",                //its name
137   fPhysiLayer = nullptr;                       << 155                     fCalorThickness/2,fCalorSizeYZ/2,fCalorSizeYZ/2);//size
138                                                << 156                                  
139   if (fCalorThickness > 0.) {                  << 157       fLogicCalor = new G4LogicalVolume(fSolidCalor,        //its solid
140     fSolidCalor = new G4Box("Calorimeter",  // << 158                                         fDefaultMaterial,   //its material
141                             fCalorThickness /  << 159                                         "Calorimeter");     //its name
142                                                << 160                                            
143     fLogicCalor = new G4LogicalVolume(fSolidCa << 161       fPhysiCalor = new G4PVPlacement(0,                    //no rotation
144                                       fDefault << 162                                      G4ThreeVector(),       //at (0,0,0)
145                                       "Calorim << 163                                      fLogicCalor,           //its logical volume
146                                                << 164                                      "Calorimeter",         //its name
147     fPhysiCalor = new G4PVPlacement(nullptr,   << 165                                      fLogicWorld,           //its mother  volume
148                                     G4ThreeVec << 166                                      false,              //no boolean operation
149                                     fLogicCalo << 167                                      0);                    //copy number
150                                     "Calorimet << 168   
151                                     fLogicWorl << 169   //                                 
152                                     false,  // << 170   // Layer
153                                     0);  // co << 171   //
154                                                << 172       fSolidLayer = new G4Box("Layer",                        //its name
155     //                                         << 173                        fLayerThickness/2,fCalorSizeYZ/2,fCalorSizeYZ/2); //size
156     // Layer                                   << 174                        
157     //                                         << 175       fLogicLayer = new G4LogicalVolume(fSolidLayer,        //its solid
158     fSolidLayer = new G4Box("Layer",  // its n << 176                                        fDefaultMaterial,    //its material
159                             fLayerThickness /  << 177                                        "Layer");            //its name
160                                                << 178       if (fNbOfLayers > 1)                                      
161     fLogicLayer = new G4LogicalVolume(fSolidLa << 179         fPhysiLayer = new G4PVReplica("Layer",              //its name
162                                       fDefault << 180                                      fLogicLayer,           //its logical volume
163                                       "Layer") << 181                                      fLogicCalor,           //its mother
164     if (fNbOfLayers > 1) {                     << 182                                      kXAxis,              //axis of replication
165       fPhysiLayer = new G4PVReplica("Layer",   << 183                                      fNbOfLayers,           //number of replica
166                                     fLogicLaye << 184                                      fLayerThickness);      //witdth of replica
167                                     fLogicCalo << 185       else
168                                     kXAxis,  / << 186         fPhysiLayer = new G4PVPlacement(0,                  //no rotation
169                                     fNbOfLayer << 187                                      G4ThreeVector(),       //at (0,0,0)
170                                     fLayerThic << 188                                      fLogicLayer,           //its logical volume
171     }                                          << 189                                      "Layer",               //its name
172     else {                                     << 190                                      fLogicCalor,           //its mother  volume
173       fPhysiLayer = new G4PVPlacement(nullptr, << 191                                      false,               //no boolean operation
174                                       G4ThreeV << 192                                      0);                    //copy number     
175                                       fLogicLa << 193     }                                   
176                                       "Layer", << 194   
177                                       fLogicCa << 195   //                               
178                                       false,   << 
179                                       0);  //  << 
180     }                                          << 
181   }                                            << 
182                                                << 
183   //                                           << 
184   // Absorber                                     196   // Absorber
185   //                                              197   //
186   fSolidAbsorber = nullptr;                    << 198   fSolidAbsorber=0; fLogicAbsorber=0; fPhysiAbsorber=0;  
187   fLogicAbsorber = nullptr;                    << 199   
188   fPhysiAbsorber = nullptr;                    << 200   if (fAbsorberThickness > 0.) 
189                                                << 201     { fSolidAbsorber = new G4Box("Absorber",                //its name
190   if (fAbsorberThickness > 0.) {               << 202                           fAbsorberThickness/2,fCalorSizeYZ/2,fCalorSizeYZ/2); 
191     fSolidAbsorber = new G4Box("Absorber",  // << 203                           
192                                fAbsorberThickn << 204       fLogicAbsorber = new G4LogicalVolume(fSolidAbsorber,    //its solid
193                                                << 205                                             fAbsorberMaterial, //its material
194     fLogicAbsorber = new G4LogicalVolume(fSoli << 206                                             fAbsorberMaterial->GetName());//name
195                                          fAbso << 207                                                 
196                                          fAbso << 208       fPhysiAbsorber = new G4PVPlacement(0,                   //no rotation
197                                                << 209                           G4ThreeVector(-fGapThickness/2,0.,0.),  //its position
198     fPhysiAbsorber = new G4PVPlacement(nullptr << 210                                         fLogicAbsorber,     //its logical volume
199                                        G4Three << 211                                         fAbsorberMaterial->GetName(), //its name
200                                        fLogicA << 212                                         fLogicLayer,          //its mother
201                                        fAbsorb << 213                                         false,               //no boulean operat
202                                        fLogicL << 214                                         0);                   //copy number
203                                        false,  << 215                                         
204                                        0);  // << 216     }
205   }                                            << 217   
206                                                << 218   //                                 
207   //                                           << 
208   // Gap                                          219   // Gap
209   //                                              220   //
210   fSolidGap = nullptr;                         << 221   fSolidGap=0; fLogicGap=0; fPhysiGap=0; 
211   fLogicGap = nullptr;                         << 222   
212   fPhysiGap = nullptr;                         << 223   if (fGapThickness > 0.)
213                                                << 224     { fSolidGap = new G4Box("Gap",
214   if (fGapThickness > 0.) {                    << 225                                fGapThickness/2,fCalorSizeYZ/2,fCalorSizeYZ/2);
215     fSolidGap = new G4Box("Gap", fGapThickness << 226                                
216                                                << 227       fLogicGap = new G4LogicalVolume(fSolidGap,
217     fLogicGap = new G4LogicalVolume(fSolidGap, << 228                                            fGapMaterial,
218                                                << 229                                            fGapMaterial->GetName());
219     fPhysiGap = new G4PVPlacement(nullptr,  // << 230                                            
220                                   G4ThreeVecto << 231       fPhysiGap = new G4PVPlacement(0,                      //no rotation
221                                   fLogicGap,   << 232                G4ThreeVector(fAbsorberThickness/2,0.,0.),   //its position
222                                   fGapMaterial << 233                                    fLogicGap,               //its logical volume
223                                   fLogicLayer, << 234                                    fGapMaterial->GetName(), //its name
224                                   false,  // n << 235                                    fLogicLayer,             //its mother
225                                   0);  // copy << 236                                    false,                   //no boulean operat
226   }                                            << 237                                    0);                      //copy number
227                                                << 238     }
228   PrintCalorParameters();                      << 239     
229                                                << 240   PrintCalorParameters();     
230   //                                           << 241   
                                                   >> 242   //                                        
231   // Visualization attributes                     243   // Visualization attributes
232   //                                              244   //
233   fLogicWorld->SetVisAttributes(G4VisAttribute << 245   fLogicWorld->SetVisAttributes (G4VisAttributes::GetInvisible());
234                                                   246 
235   auto simpleBoxVisAtt = new G4VisAttributes(G << 247   G4VisAttributes* simpleBoxVisAtt= new G4VisAttributes(G4Colour(1.0,1.0,1.0));
236   simpleBoxVisAtt->SetVisibility(true);           248   simpleBoxVisAtt->SetVisibility(true);
237   fLogicCalor->SetVisAttributes(simpleBoxVisAt    249   fLogicCalor->SetVisAttributes(simpleBoxVisAtt);
238                                                   250 
239   //                                              251   //
240   // always return the physical World          << 252   //always return the physical World
241   //                                              253   //
242   return fPhysiWorld;                             254   return fPhysiWorld;
243 }                                                 255 }
244                                                   256 
245 //....oooOO0OOooo........oooOO0OOooo........oo    257 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
246                                                   258 
247 void DetectorConstruction::PrintCalorParameter    259 void DetectorConstruction::PrintCalorParameters()
248 {                                                 260 {
249   G4cout << "\n-------------------------------    261   G4cout << "\n------------------------------------------------------------"
250          << "\n---> The calorimeter is " << fN    262          << "\n---> The calorimeter is " << fNbOfLayers << " layers of: [ "
251          << fAbsorberThickness / mm << "mm of  << 263          << fAbsorberThickness/mm << "mm of " << fAbsorberMaterial->GetName() 
252          << fGapThickness / mm << "mm of " <<  << 264          << " + "
                                                   >> 265          << fGapThickness/mm << "mm of " << fGapMaterial->GetName() << " ] " 
253          << "\n-------------------------------    266          << "\n------------------------------------------------------------\n";
254 }                                                 267 }
255                                                   268 
256 //....oooOO0OOooo........oooOO0OOooo........oo    269 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
257                                                   270 
258 void DetectorConstruction::SetAbsorberMaterial << 271 void DetectorConstruction::SetAbsorberMaterial(G4String materialChoice)
259 {                                                 272 {
260   // search the material by its name           << 273   // search the material by its name   
261   auto material = G4NistManager::Instance()->F << 274   G4Material* pttoMaterial =
262   if (material != nullptr) {                   << 275   G4NistManager::Instance()->FindOrBuildMaterial(materialChoice);      
263     fAbsorberMaterial = material;              << 276   if (pttoMaterial)
264     if (fLogicAbsorber != nullptr) {           << 277   {
265       fLogicAbsorber->SetMaterial(fAbsorberMat << 278       fAbsorberMaterial = pttoMaterial;
266       G4RunManager::GetRunManager()->PhysicsHa << 279       if ( fLogicAbsorber )
267     }                                          << 280       {
                                                   >> 281           fLogicAbsorber->SetMaterial(fAbsorberMaterial);
                                                   >> 282           G4RunManager::GetRunManager()->PhysicsHasBeenModified();
                                                   >> 283       }
268   }                                               284   }
269 }                                                 285 }
270                                                   286 
271 //....oooOO0OOooo........oooOO0OOooo........oo    287 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
272                                                   288 
273 void DetectorConstruction::SetGapMaterial(cons << 289 void DetectorConstruction::SetGapMaterial(G4String materialChoice)
274 {                                                 290 {
275   auto material = G4NistManager::Instance()->F << 291   // search the material by its name
276   if (material != nullptr) {                   << 292   G4Material* pttoMaterial =  
277     fGapMaterial = material;                   << 293   G4NistManager::Instance()->FindOrBuildMaterial(materialChoice);   
278     if (fLogicGap != nullptr) {                << 294   if (pttoMaterial)
279       fLogicGap->SetMaterial(fGapMaterial);    << 295   {
280       G4RunManager::GetRunManager()->PhysicsHa << 296       fGapMaterial = pttoMaterial;
281     }                                          << 297       if ( fLogicGap )
                                                   >> 298       {
                                                   >> 299           fLogicGap->SetMaterial(fGapMaterial);
                                                   >> 300           G4RunManager::GetRunManager()->PhysicsHasBeenModified();
                                                   >> 301       }
282   }                                               302   }
283 }                                                 303 }
284                                                   304 
285 //....oooOO0OOooo........oooOO0OOooo........oo    305 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
286                                                   306 
287 void DetectorConstruction::SetAbsorberThicknes << 307 void DetectorConstruction::SetAbsorberThickness(G4double val)
288 {                                                 308 {
289   // change Absorber thickness and recompute t    309   // change Absorber thickness and recompute the calorimeter parameters
290   fAbsorberThickness = value;                  << 310   fAbsorberThickness = val;
291   if (G4StateManager::GetStateManager()->GetCu << 311   if ( G4StateManager::GetStateManager()->GetCurrentState() != G4State_PreInit ) {
292     G4RunManager::GetRunManager()->Reinitializ    312     G4RunManager::GetRunManager()->ReinitializeGeometry();
293   }                                               313   }
294 }                                                 314 }
295                                                   315 
296 //....oooOO0OOooo........oooOO0OOooo........oo    316 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
297                                                   317 
298 void DetectorConstruction::SetGapThickness(G4d << 318 void DetectorConstruction::SetGapThickness(G4double val)
299 {                                                 319 {
300   // change Gap thickness and recompute the ca    320   // change Gap thickness and recompute the calorimeter parameters
301   fGapThickness = value;                       << 321   fGapThickness = val;
302   if (G4StateManager::GetStateManager()->GetCu << 322   if ( G4StateManager::GetStateManager()->GetCurrentState() != G4State_PreInit ) {
303     G4RunManager::GetRunManager()->Reinitializ    323     G4RunManager::GetRunManager()->ReinitializeGeometry();
304   }                                               324   }
305 }                                                 325 }
306                                                   326 
307 //....oooOO0OOooo........oooOO0OOooo........oo    327 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
308                                                   328 
309 void DetectorConstruction::SetCalorSizeYZ(G4do << 329 void DetectorConstruction::SetCalorSizeYZ(G4double val)
310 {                                                 330 {
311   // change the transverse size and recompute     331   // change the transverse size and recompute the calorimeter parameters
312   fCalorSizeYZ = value;                        << 332   fCalorSizeYZ = val;
313   if (G4StateManager::GetStateManager()->GetCu << 333   if ( G4StateManager::GetStateManager()->GetCurrentState() != G4State_PreInit ) {
314     G4RunManager::GetRunManager()->Reinitializ    334     G4RunManager::GetRunManager()->ReinitializeGeometry();
315   }                                               335   }
316 }                                                 336 }
317                                                   337 
318 //....oooOO0OOooo........oooOO0OOooo........oo    338 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
319                                                   339 
320 void DetectorConstruction::SetNbOfLayers(G4int << 340 void DetectorConstruction::SetNbOfLayers(G4int val)
321 {                                                 341 {
322   fNbOfLayers = value;                         << 342   fNbOfLayers = val;
323   if (G4StateManager::GetStateManager()->GetCu << 343   if ( G4StateManager::GetStateManager()->GetCurrentState() != G4State_PreInit ) {
324     G4RunManager::GetRunManager()->Reinitializ    344     G4RunManager::GetRunManager()->ReinitializeGeometry();
325   }                                               345   }
326 }                                                 346 }
327                                                   347 
328 //....oooOO0OOooo........oooOO0OOooo........oo    348 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
329                                                   349