Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/examples/extended/optical/wls/src/WLSMaterials.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/optical/wls/src/WLSMaterials.cc (Version 11.3.0) and /examples/extended/optical/wls/src/WLSMaterials.cc (Version 9.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 //                                                 26 //
 27 /// \file optical/wls/src/WLSMaterials.cc      << 
 28 /// \brief Implementation of the WLSMaterials  << 
 29 //                                                 27 //
 30 //                                             << 
 31 #include "WLSMaterials.hh"                     << 
 32                                                << 
 33 #include "G4NistManager.hh"                    << 
 34 #include "G4SystemOfUnits.hh"                  << 
 35                                                    28 
 36 WLSMaterials* WLSMaterials::fInstance = nullpt <<  29 #include "WLSMaterials.hh"
 37                                                << 
 38 //....oooOO0OOooo........oooOO0OOooo........oo << 
 39                                                    30 
 40 WLSMaterials::WLSMaterials()                       31 WLSMaterials::WLSMaterials()
 41 {                                                  32 {
 42   fNistMan = G4NistManager::Instance();        <<  33   nistMan = G4NistManager::Instance();
 43   fNistMan->SetVerbose(2);                     <<  34 
                                                   >>  35   nistMan->SetVerbose(2);
 44                                                    36 
 45   CreateMaterials();                               37   CreateMaterials();
 46 }                                                  38 }
 47                                                    39 
 48 //....oooOO0OOooo........oooOO0OOooo........oo << 
 49                                                << 
 50 WLSMaterials::~WLSMaterials()                      40 WLSMaterials::~WLSMaterials()
 51 {                                                  41 {
 52   delete fAir;                                 <<  42   delete    PMMA;
 53   delete fPMMA;                                <<  43   delete    Pethylene;
 54   delete fPethylene;                           <<  44   delete    FPethylene;
 55   delete fFPethylene;                          <<  45   delete    Polystyrene;
 56   delete fPolystyrene;                         <<  46   delete    Silicone;
 57   delete fSilicone;                            << 
 58   delete fCoating;                             << 
 59 }                                                  47 }
 60                                                    48 
 61 //....oooOO0OOooo........oooOO0OOooo........oo <<  49 WLSMaterials* WLSMaterials::instance = 0;
 62                                                    50 
 63 WLSMaterials* WLSMaterials::GetInstance()          51 WLSMaterials* WLSMaterials::GetInstance()
 64 {                                                  52 {
 65   if (!fInstance) {                            <<  53   if (instance == 0)
 66     fInstance = new WLSMaterials();            <<  54     {
 67   }                                            <<  55       instance = new WLSMaterials();
 68   return fInstance;                            <<  56     }
                                                   >>  57   return instance;
 69 }                                                  58 }
 70                                                    59 
 71 //....oooOO0OOooo........oooOO0OOooo........oo << 
 72                                                << 
 73 G4Material* WLSMaterials::GetMaterial(const G4     60 G4Material* WLSMaterials::GetMaterial(const G4String material)
 74 {                                                  61 {
 75   G4Material* mat = fNistMan->FindOrBuildMater <<  62   G4Material* mat =  nistMan->FindOrBuildMaterial(material);
 76                                                    63 
 77   if (!mat) mat = G4Material::GetMaterial(mate     64   if (!mat) mat = G4Material::GetMaterial(material);
 78   if (!mat) {                                      65   if (!mat) {
 79     G4ExceptionDescription ed;                 <<  66      std::ostringstream o;
 80     ed << "Material " << material << " not fou <<  67      o << "Material " << material << " not found!";
 81     G4Exception("WLSMaterials::GetMaterial", " <<  68      G4Exception("WLSMaterials::GetMaterial","",
                                                   >>  69                  FatalException,o.str().c_str());
 82   }                                                70   }
 83                                                    71 
 84   return mat;                                      72   return mat;
 85 }                                                  73 }
 86                                                    74 
 87 //....oooOO0OOooo........oooOO0OOooo........oo << 
 88                                                << 
 89 void WLSMaterials::CreateMaterials()               75 void WLSMaterials::CreateMaterials()
 90 {                                                  76 {
 91   G4double density;                                77   G4double density;
 92   G4int ncomponents;                               78   G4int ncomponents;
 93   G4double fractionmass;                           79   G4double fractionmass;
 94   std::vector<G4int> natoms;                       80   std::vector<G4int> natoms;
 95   std::vector<G4double> fractionMass;              81   std::vector<G4double> fractionMass;
 96   std::vector<G4String> elements;                  82   std::vector<G4String> elements;
 97                                                    83 
 98   // Materials Definitions                         84   // Materials Definitions
 99   // =====================                         85   // =====================
100                                                    86 
101   //------------------------------------------     87   //--------------------------------------------------
102   // Vacuum                                        88   // Vacuum
103   //------------------------------------------     89   //--------------------------------------------------
104                                                    90 
105   fNistMan->FindOrBuildMaterial("G4_Galactic") <<  91   nistMan->FindOrBuildMaterial("G4_Galactic");
106                                                    92 
107   //------------------------------------------     93   //--------------------------------------------------
108   // Air                                           94   // Air
109   //------------------------------------------     95   //--------------------------------------------------
110                                                    96 
111   fAir = fNistMan->FindOrBuildMaterial("G4_AIR <<  97   Air = nistMan->FindOrBuildMaterial("G4_AIR");
112                                                    98 
113   //------------------------------------------     99   //--------------------------------------------------
114   // WLSfiber PMMA                                100   // WLSfiber PMMA
115   //------------------------------------------    101   //--------------------------------------------------
116                                                   102 
117   elements.push_back("C");                     << 103   elements.push_back("C");     natoms.push_back(5);
118   natoms.push_back(5);                         << 104   elements.push_back("H");     natoms.push_back(8);
119   elements.push_back("H");                     << 105   elements.push_back("O");     natoms.push_back(2);
120   natoms.push_back(8);                         << 
121   elements.push_back("O");                     << 
122   natoms.push_back(2);                         << 
123                                                   106 
124   density = 1.190 * g / cm3;                   << 107   density = 1.190*g/cm3;
125                                                   108 
126   fPMMA = fNistMan->ConstructNewMaterial("PMMA << 109   PMMA = nistMan->
                                                   >> 110           ConstructNewMaterial("PMMA", elements, natoms, density);
127                                                   111 
128   elements.clear();                               112   elements.clear();
129   natoms.clear();                                 113   natoms.clear();
130                                                   114 
131   //------------------------------------------    115   //--------------------------------------------------
132   // Cladding (polyethylene)                      116   // Cladding (polyethylene)
133   //------------------------------------------    117   //--------------------------------------------------
134                                                   118 
135   elements.push_back("C");                     << 119   elements.push_back("C");     natoms.push_back(2);
136   natoms.push_back(2);                         << 120   elements.push_back("H");     natoms.push_back(4);
137   elements.push_back("H");                     << 
138   natoms.push_back(4);                         << 
139                                                   121 
140   density = 1.200 * g / cm3;                   << 122   density = 1.200*g/cm3;
141                                                   123 
142   fPethylene = fNistMan->ConstructNewMaterial( << 124   Pethylene = nistMan->
                                                   >> 125           ConstructNewMaterial("Pethylene", elements, natoms, density);
143                                                   126 
144   elements.clear();                               127   elements.clear();
145   natoms.clear();                                 128   natoms.clear();
146                                                   129 
147   //------------------------------------------    130   //--------------------------------------------------
148   // Double Cladding (fluorinated polyethylene    131   // Double Cladding (fluorinated polyethylene)
149   //------------------------------------------    132   //--------------------------------------------------
150                                                   133 
151   elements.push_back("C");                     << 134   elements.push_back("C");     natoms.push_back(2);
152   natoms.push_back(2);                         << 135   elements.push_back("H");     natoms.push_back(4);
153   elements.push_back("H");                     << 
154   natoms.push_back(4);                         << 
155                                                   136 
156   density = 1.400 * g / cm3;                   << 137   density = 1.400*g/cm3;
157                                                   138 
158   fFPethylene = fNistMan->ConstructNewMaterial << 139   FPethylene = nistMan->
                                                   >> 140           ConstructNewMaterial("FPethylene", elements, natoms, density);
159                                                   141 
160   elements.clear();                               142   elements.clear();
161   natoms.clear();                                 143   natoms.clear();
162                                                   144 
163   //------------------------------------------    145   //--------------------------------------------------
164   // Polystyrene                                  146   // Polystyrene
165   //------------------------------------------    147   //--------------------------------------------------
                                                   >> 148  
                                                   >> 149   elements.push_back("C");     natoms.push_back(8);
                                                   >> 150   elements.push_back("H");     natoms.push_back(8);
166                                                   151 
167   elements.push_back("C");                     << 152   density = 1.050*g/cm3;
168   natoms.push_back(8);                         << 
169   elements.push_back("H");                     << 
170   natoms.push_back(8);                         << 
171                                                   153 
172   density = 1.050 * g / cm3;                   << 154   Polystyrene = nistMan->
173                                                << 155           ConstructNewMaterial("Polystyrene", elements, natoms, density);
174   fPolystyrene = fNistMan->ConstructNewMateria << 
175                                                   156 
176   elements.clear();                               157   elements.clear();
177   natoms.clear();                                 158   natoms.clear();
178                                                   159 
179   //------------------------------------------    160   //--------------------------------------------------
180   // Silicone (Template for Optical Grease)       161   // Silicone (Template for Optical Grease)
181   //------------------------------------------    162   //--------------------------------------------------
182                                                   163 
183   elements.push_back("C");                     << 164   elements.push_back("C");     natoms.push_back(2);
184   natoms.push_back(2);                         << 165   elements.push_back("H");     natoms.push_back(6);
185   elements.push_back("H");                     << 166   
186   natoms.push_back(6);                         << 167   density = 1.060*g/cm3;
187                                                << 
188   density = 1.060 * g / cm3;                   << 
189                                                   168 
190   fSilicone = fNistMan->ConstructNewMaterial(" << 169   Silicone = nistMan->
                                                   >> 170           ConstructNewMaterial("Silicone", elements, natoms, density);
191                                                   171 
192   elements.clear();                               172   elements.clear();
193   natoms.clear();                                 173   natoms.clear();
194                                                   174 
195   //------------------------------------------    175   //--------------------------------------------------
196   // Aluminium                                    176   // Aluminium
197   //------------------------------------------    177   //--------------------------------------------------
198                                                   178 
199   fNistMan->FindOrBuildMaterial("G4_Al");      << 179   nistMan->FindOrBuildMaterial("G4_Al");
200                                                   180 
201   //------------------------------------------    181   //--------------------------------------------------
202   // TiO2                                         182   // TiO2
203   //------------------------------------------    183   //--------------------------------------------------
204                                                   184 
205   elements.push_back("Ti");                    << 185   elements.push_back("Ti");     natoms.push_back(1);
206   natoms.push_back(1);                         << 186   elements.push_back("O");      natoms.push_back(2);
207   elements.push_back("O");                     << 
208   natoms.push_back(2);                         << 
209                                                   187 
210   density = 4.26 * g / cm3;                    << 188   density     = 4.26*g/cm3;
211                                                   189 
212   G4Material* TiO2 = fNistMan->ConstructNewMat << 190   G4Material* TiO2 = nistMan->
                                                   >> 191           ConstructNewMaterial("TiO2", elements, natoms, density);
213                                                   192 
214   elements.clear();                               193   elements.clear();
215   natoms.clear();                                 194   natoms.clear();
216                                                   195 
217   //------------------------------------------    196   //--------------------------------------------------
218   // Scintillator Coating - 15% TiO2 and 85% p    197   // Scintillator Coating - 15% TiO2 and 85% polystyrene by weight.
219   //------------------------------------------    198   //--------------------------------------------------
220                                                   199 
221   density = 1.52 * g / cm3;                    << 200   density = 1.52*g/cm3;
222                                                   201 
223   fCoating = new G4Material("Coating", density << 202   Coating =
                                                   >> 203           new G4Material("Coating", density, ncomponents=2);
224                                                   204 
225   fCoating->AddMaterial(TiO2, fractionmass = 1 << 205   Coating->AddMaterial(TiO2,        fractionmass = 15*perCent);
226   fCoating->AddMaterial(fPolystyrene, fraction << 206   Coating->AddMaterial(Polystyrene, fractionmass = 85*perCent);
227                                                   207 
228   //                                              208   //
229   // ------------ Generate & Add Material Prop    209   // ------------ Generate & Add Material Properties Table ------------
230   //                                              210   //
231                                                   211 
232   std::vector<G4double> energy = {             << 212   const G4int nEntries = 50;
233     2.00 * eV, 2.03 * eV, 2.06 * eV, 2.09 * eV << 
234     2.24 * eV, 2.27 * eV, 2.30 * eV, 2.33 * eV << 
235     2.48 * eV, 2.51 * eV, 2.54 * eV, 2.57 * eV << 
236     2.72 * eV, 2.75 * eV, 2.78 * eV, 2.81 * eV << 
237     2.96 * eV, 2.99 * eV, 3.02 * eV, 3.05 * eV << 
238     3.20 * eV, 3.23 * eV, 3.26 * eV, 3.29 * eV << 
239     3.44 * eV, 3.47 * eV};                     << 
240                                                   213 
241   std::vector<G4double> energySmall = {2.0 * e << 214   G4double PhotonEnergy[nEntries] =
                                                   >> 215   {2.00*eV,2.03*eV,2.06*eV,2.09*eV,2.12*eV,
                                                   >> 216    2.15*eV,2.18*eV,2.21*eV,2.24*eV,2.27*eV,
                                                   >> 217    2.30*eV,2.33*eV,2.36*eV,2.39*eV,2.42*eV,
                                                   >> 218    2.45*eV,2.48*eV,2.51*eV,2.54*eV,2.57*eV,
                                                   >> 219    2.60*eV,2.63*eV,2.66*eV,2.69*eV,2.72*eV,
                                                   >> 220    2.75*eV,2.78*eV,2.81*eV,2.84*eV,2.87*eV,
                                                   >> 221    2.90*eV,2.93*eV,2.96*eV,2.99*eV,3.02*eV,
                                                   >> 222    3.05*eV,3.08*eV,3.11*eV,3.14*eV,3.17*eV,
                                                   >> 223    3.20*eV,3.23*eV,3.26*eV,3.29*eV,3.32*eV,
                                                   >> 224    3.35*eV,3.38*eV,3.41*eV,3.44*eV,3.47*eV};
242                                                   225 
243   //------------------------------------------    226   //--------------------------------------------------
244   // Air                                          227   // Air
245   //------------------------------------------    228   //--------------------------------------------------
246                                                   229 
247   std::vector<G4double> refractiveIndex = {1.0 << 230   G4double RefractiveIndex[nEntries] =
                                                   >> 231   { 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00,
                                                   >> 232     1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00,
                                                   >> 233     1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00,
                                                   >> 234     1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00,
                                                   >> 235     1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00};
248                                                   236 
249   auto mpt = new G4MaterialPropertiesTable();  << 237   G4MaterialPropertiesTable* MPT = new G4MaterialPropertiesTable();
250   mpt->AddProperty("RINDEX", energySmall, refr << 238   MPT->AddProperty("RINDEX", PhotonEnergy, RefractiveIndex, nEntries);
251                                                   239 
252   fAir->SetMaterialPropertiesTable(mpt);       << 240   Air->SetMaterialPropertiesTable(MPT);
253                                                   241 
254   //------------------------------------------    242   //--------------------------------------------------
255   //  PMMA for WLSfibers                          243   //  PMMA for WLSfibers
256   //------------------------------------------    244   //--------------------------------------------------
257                                                   245 
258   std::vector<G4double> refractiveIndexWLSfibe << 246   G4double RefractiveIndexWLSfiber[nEntries] =
259                                                << 247   { 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60,
260   std::vector<G4double> absWLSfiber = {        << 248     1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60,
261     5.40 * m, 5.40 * m, 5.40 * m, 5.40 * m, 5. << 249     1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60,
262     5.40 * m, 5.40 * m, 5.40 * m, 5.40 * m, 5. << 250     1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60,
263     5.40 * m, 5.40 * m, 5.40 * m, 5.40 * m, 5. << 251     1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60};
264     5.40 * m, 5.40 * m, 1.10 * m, 1.10 * m, 1. << 252 
265     1. * mm,  1. * mm,  1. * mm,  1. * mm,  1. << 253   G4double AbsWLSfiber[nEntries] =
266     1. * mm,  1. * mm,  1. * mm,  1. * mm,  1. << 254   {5.40*m,5.40*m,5.40*m,5.40*m,5.40*m,5.40*m,5.40*m,5.40*m,5.40*m,5.40*m,
267                                                << 255    5.40*m,5.40*m,5.40*m,5.40*m,5.40*m,5.40*m,5.40*m,5.40*m,5.40*m,5.40*m,
268   std::vector<G4double> emissionFib = {0.05, 0 << 256    5.40*m,5.40*m,5.40*m,5.40*m,5.40*m,5.40*m,5.40*m,5.40*m,5.40*m,1.10*m,
269                                        3.25, 3 << 257    1.10*m,1.10*m,1.10*m,1.10*m,1.10*m,1.10*m, 1.*mm, 1.*mm, 1.*mm, 1.*mm,
270                                        12.9, 1 << 258     1.*mm, 1.*mm, 1.*mm, 1.*mm, 1.*mm, 1.*mm, 1.*mm, 1.*mm, 1.*mm, 1.*mm};
271                                        15.0, 9 << 259 
272                                        0.00, 0 << 260   G4double EmissionFib[nEntries] =
                                                   >> 261   {0.05, 0.10, 0.30, 0.50, 0.75, 1.00, 1.50, 1.85, 2.30, 2.75,
                                                   >> 262    3.25, 3.80, 4.50, 5.20, 6.00, 7.00, 8.50, 9.50, 11.1, 12.4,
                                                   >> 263    12.9, 13.0, 12.8, 12.3, 11.1, 11.0, 12.0, 11.0, 17.0, 16.9,
                                                   >> 264    15.0, 9.00, 2.50, 1.00, 0.05, 0.00, 0.00, 0.00, 0.00, 0.00,
                                                   >> 265    0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00};
273                                                   266 
274   // Add entries into properties table            267   // Add entries into properties table
275   auto mptWLSfiber = new G4MaterialPropertiesT << 268   G4MaterialPropertiesTable* MPTWLSfiber = new G4MaterialPropertiesTable();
276   mptWLSfiber->AddProperty("RINDEX", energySma << 269   MPTWLSfiber->
277   mptWLSfiber->AddProperty("WLSABSLENGTH", ene << 270            AddProperty("RINDEX",PhotonEnergy,RefractiveIndexWLSfiber,nEntries);
278   mptWLSfiber->AddProperty("WLSCOMPONENT", ene << 271   // MPTWLSfiber->AddProperty("ABSLENGTH",PhotonEnergy,AbsWLSfiber,nEntries);
279   mptWLSfiber->AddConstProperty("WLSTIMECONSTA << 272   MPTWLSfiber->AddProperty("WLSABSLENGTH",PhotonEnergy,AbsWLSfiber,nEntries);
                                                   >> 273   MPTWLSfiber->AddProperty("WLSCOMPONENT",PhotonEnergy,EmissionFib,nEntries);
                                                   >> 274   MPTWLSfiber->AddConstProperty("WLSTIMECONSTANT", 0.5*ns);
280                                                   275 
281   fPMMA->SetMaterialPropertiesTable(mptWLSfibe << 276   PMMA->SetMaterialPropertiesTable(MPTWLSfiber);
282                                                   277 
283   //------------------------------------------    278   //--------------------------------------------------
284   //  Polyethylene                                279   //  Polyethylene
285   //------------------------------------------    280   //--------------------------------------------------
286                                                   281 
287   std::vector<G4double> refractiveIndexClad1 = << 282   G4double RefractiveIndexClad1[nEntries] =
288                                                << 283   { 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49,
289   std::vector<G4double> absClad = {20.0 * m, 2 << 284     1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49,
                                                   >> 285     1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49,
                                                   >> 286     1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49,
                                                   >> 287     1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49};
                                                   >> 288 
                                                   >> 289   G4double AbsClad[nEntries] =
                                                   >> 290   {20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,
                                                   >> 291    20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,
                                                   >> 292    20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,
                                                   >> 293    20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,
                                                   >> 294    20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m};
290                                                   295 
291   // Add entries into properties table            296   // Add entries into properties table
292   auto mptClad1 = new G4MaterialPropertiesTabl << 297   G4MaterialPropertiesTable* MPTClad1 = new G4MaterialPropertiesTable();
293   mptClad1->AddProperty("RINDEX", energySmall, << 298   MPTClad1->AddProperty("RINDEX",PhotonEnergy,RefractiveIndexClad1,nEntries);
294   mptClad1->AddProperty("ABSLENGTH", energySma << 299   MPTClad1->AddProperty("ABSLENGTH",PhotonEnergy,AbsClad,nEntries);
295                                                   300 
296   fPethylene->SetMaterialPropertiesTable(mptCl << 301   Pethylene->SetMaterialPropertiesTable(MPTClad1);
297                                                   302 
298   //------------------------------------------    303   //--------------------------------------------------
299   // Fluorinated Polyethylene                     304   // Fluorinated Polyethylene
300   //------------------------------------------    305   //--------------------------------------------------
301                                                   306 
302   std::vector<G4double> refractiveIndexClad2 = << 307    G4double RefractiveIndexClad2[nEntries] =
                                                   >> 308    { 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42,
                                                   >> 309      1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42,
                                                   >> 310      1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42,
                                                   >> 311      1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42,
                                                   >> 312      1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42};
303                                                   313 
304   // Add entries into properties table            314   // Add entries into properties table
305   auto mptClad2 = new G4MaterialPropertiesTabl << 315   G4MaterialPropertiesTable* MPTClad2 = new G4MaterialPropertiesTable();
306   mptClad2->AddProperty("RINDEX", energySmall, << 316   MPTClad2->AddProperty("RINDEX",PhotonEnergy,RefractiveIndexClad2,nEntries);
307   mptClad2->AddProperty("ABSLENGTH", energySma << 317   MPTClad2->AddProperty("ABSLENGTH",PhotonEnergy,AbsClad,nEntries);
308                                                   318 
309   fFPethylene->SetMaterialPropertiesTable(mptC << 319   FPethylene->SetMaterialPropertiesTable(MPTClad2);
310                                                   320 
311   //------------------------------------------    321   //--------------------------------------------------
312   // Silicone                                     322   // Silicone
313   //------------------------------------------    323   //--------------------------------------------------
314                                                   324 
315   std::vector<G4double> refractiveIndexSilicon << 325    G4double RefractiveIndexSilicone[nEntries] =
                                                   >> 326    { 1.46, 1.46, 1.46, 1.46, 1.46, 1.46, 1.46, 1.46, 1.46, 1.46,
                                                   >> 327      1.46, 1.46, 1.46, 1.46, 1.46, 1.46, 1.46, 1.46, 1.46, 1.46,
                                                   >> 328      1.46, 1.46, 1.46, 1.46, 1.46, 1.46, 1.46, 1.46, 1.46, 1.46,
                                                   >> 329      1.46, 1.46, 1.46, 1.46, 1.46, 1.46, 1.46, 1.46, 1.46, 1.46,
                                                   >> 330      1.46, 1.46, 1.46, 1.46, 1.46, 1.46, 1.46, 1.46, 1.46, 1.46};
316                                                   331 
317   // Add entries into properties table            332   // Add entries into properties table
318   auto mptSilicone = new G4MaterialPropertiesT << 333   G4MaterialPropertiesTable* MPTSilicone = new G4MaterialPropertiesTable();
319   mptSilicone->AddProperty("RINDEX", energySma << 334   MPTSilicone->
320   mptSilicone->AddProperty("ABSLENGTH", energy << 335            AddProperty("RINDEX",PhotonEnergy,RefractiveIndexSilicone,nEntries);
                                                   >> 336   MPTSilicone->AddProperty("ABSLENGTH",PhotonEnergy,AbsClad,nEntries);
321                                                   337 
322   fSilicone->SetMaterialPropertiesTable(mptSil << 338   Silicone->SetMaterialPropertiesTable(MPTSilicone);
323                                                   339 
324   //------------------------------------------    340   //--------------------------------------------------
325   //  Polystyrene                                 341   //  Polystyrene
326   //------------------------------------------    342   //--------------------------------------------------
327                                                   343 
328   std::vector<G4double> refractiveIndexPS = {1 << 344   G4double RefractiveIndexPS[nEntries] =
329                                                << 345   { 1.50, 1.50, 1.50, 1.50, 1.50, 1.50, 1.50, 1.50, 1.50, 1.50,
330   std::vector<G4double> absPS = {2. * cm, 2. * << 346     1.50, 1.50, 1.50, 1.50, 1.50, 1.50, 1.50, 1.50, 1.50, 1.50,
331                                                << 347     1.50, 1.50, 1.50, 1.50, 1.50, 1.50, 1.50, 1.50, 1.50, 1.50,
332   std::vector<G4double> scintilFast = {        << 348     1.50, 1.50, 1.50, 1.50, 1.50, 1.50, 1.50, 1.50, 1.50, 1.50,
333     0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0. << 349     1.50, 1.50, 1.50, 1.50, 1.50, 1.50, 1.50, 1.50, 1.50, 1.50};
334     0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0. << 350 
335     1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1. << 351   G4double AbsPS[nEntries] =
336                                                << 352   {2.*cm,2.*cm,2.*cm,2.*cm,2.*cm,2.*cm,2.*cm,2.*cm,2.*cm,2.*cm,
                                                   >> 353    2.*cm,2.*cm,2.*cm,2.*cm,2.*cm,2.*cm,2.*cm,2.*cm,2.*cm,2.*cm,
                                                   >> 354    2.*cm,2.*cm,2.*cm,2.*cm,2.*cm,2.*cm,2.*cm,2.*cm,2.*cm,2.*cm,
                                                   >> 355    2.*cm,2.*cm,2.*cm,2.*cm,2.*cm,2.*cm,2.*cm,2.*cm,2.*cm,2.*cm,
                                                   >> 356    2.*cm,2.*cm,2.*cm,2.*cm,2.*cm,2.*cm,2.*cm,2.*cm,2.*cm,2.*cm};
                                                   >> 357 
                                                   >> 358   G4double ScintilFast[nEntries] =
                                                   >> 359   {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
                                                   >> 360    0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
                                                   >> 361    0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
                                                   >> 362    1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
                                                   >> 363    1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0};
                                                   >> 364   
337   // Add entries into properties table            365   // Add entries into properties table
338   auto mptPolystyrene = new G4MaterialProperti << 366   G4MaterialPropertiesTable* MPTPolystyrene = new G4MaterialPropertiesTable();
339   mptPolystyrene->AddProperty("RINDEX", energy << 367   MPTPolystyrene->AddProperty("RINDEX",PhotonEnergy,RefractiveIndexPS,nEntries);
340   mptPolystyrene->AddProperty("ABSLENGTH", ene << 368   MPTPolystyrene->AddProperty("ABSLENGTH",PhotonEnergy,AbsPS,nEntries);
341   mptPolystyrene->AddProperty("SCINTILLATIONCO << 369   MPTPolystyrene->
342   mptPolystyrene->AddConstProperty("SCINTILLAT << 370                AddProperty("FASTCOMPONENT",PhotonEnergy, ScintilFast,nEntries);
343   mptPolystyrene->AddConstProperty("RESOLUTION << 371   MPTPolystyrene->AddConstProperty("SCINTILLATIONYIELD",10./keV);
344   mptPolystyrene->AddConstProperty("SCINTILLAT << 372   MPTPolystyrene->AddConstProperty("RESOLUTIONSCALE",1.0);
345                                                << 373   MPTPolystyrene->AddConstProperty("FASTTIMECONSTANT", 10.*ns);
346   fPolystyrene->SetMaterialPropertiesTable(mpt << 374  
                                                   >> 375   Polystyrene->SetMaterialPropertiesTable(MPTPolystyrene);
347                                                   376 
348   // Set the Birks Constant for the Polystyren    377   // Set the Birks Constant for the Polystyrene scintillator
349   fPolystyrene->GetIonisation()->SetBirksConst << 378 
                                                   >> 379   Polystyrene->GetIonisation()->SetBirksConstant(0.126*mm/MeV);
                                                   >> 380 
350 }                                                 381 }
351                                                   382