G4StationConstruction.h
Go to the documentation of this file.
1 #ifndef _G4StationSimulatorOG_G4StationConstruction_h_
2 #define _G4StationSimulatorOG_G4StationConstruction_h_
3 
4 #include "G4StationSimulator.h"
5 #include "G4TankPMTAction.h"
6 #include "G4ScintillatorAction.h"
7 #include "G4UMDPixelAction.h"
9 #include "G4SoilAction.h"
10 
11 #include <utl/TabulatedFunction.h>
12 
13 #include <sdet/SDetector.h>
14 #include <mdet/MDetector.h>
15 #include <cdet/CDetector.h>
16 
17 // Geant 4 header files
18 #include <G4VUserDetectorConstruction.hh>
19 #include <G4VSolid.hh>
20 #include <G4Box.hh>
21 #include <G4Colour.hh>
22 #include <G4Element.hh>
23 #include <G4ElementTable.hh>
24 #include <G4LogicalBorderSurface.hh>
25 #include <G4LogicalVolume.hh>
26 #include <G4Material.hh>
27 #include <G4MaterialTable.hh>
28 #include <G4PVPlacement.hh>
29 #include <G4SDManager.hh>
30 #include <G4Sphere.hh>
31 #include <G4ThreeVector.hh>
32 #include <G4Tubs.hh>
33 #include <G4VisAttributes.hh>
34 #include <G4GeometryManager.hh>
35 #include <G4PhysicalVolumeStore.hh>
36 #include <G4LogicalVolumeStore.hh>
37 #include <G4SolidStore.hh>
38 #include <G4RunManager.hh>
39 #include <CLHEP/Units/SystemOfUnits.h>
40 #include <G4SubtractionSolid.hh>
41 #include <G4UnionSolid.hh>
42 #include <G4NistManager.hh>
44 #include <G4Ellipsoid.hh>
45 
46 
47 namespace G4StationSimulatorOG {
48 
49  class UMDScintiBox {
50  public:
51  void Box(const mdet::Scintillator&, const double w, const double l, const double h)
52  { fW = w; fL = l; fH = h; }
53  double GetLength() const { return fL; }
54  double GetWidth() const { return fW; }
55  double GetHeight() const { return fH; }
56  void GetDimensions(double& l, double& w, double& h) const
57  { l = fL; w = fW; h = fH; }
58  private:
59  double fL = 0;
60  double fW = 0;
61  double fH = 0;
62  };
63 
64 
65  class UMDFiberTube {
66  public:
67  void Cylinder(const mdet::Fiber&, const double l, const double r)
68  { fL = l; fR = r; }
69  double GetLength() const { return fL; }
70  double GetRadius() const { return fR; }
71  void GetDimensions(double& l, double& r) const
72  { l = fL; r = fR; }
73  private:
74  double fL = 0;
75  double fR = 0;
76  };
77 
78 
79  // DV: this class is not well designed, not clear if it should be owning or not
80  struct PMTConstruction {
81  void
83  {
84  delete fPMT_log;
85  fPMT_log = nullptr;
86  delete fPMT_log1;
87  fPMT_log1 = nullptr;
88  delete fInterface_log;
89  fInterface_log = nullptr;
90  delete fDome_log;
91  fDome_log = nullptr;
92  delete fPMT_phys;
93  fPMT_phys = nullptr;
94  delete fPMT_phys1;
95  fPMT_phys1 = nullptr;
96  delete fDome_phys;
97  fDome_phys = nullptr;
98  delete fInterface_phys;
99  fInterface_phys = nullptr;
100  delete fInner_phys;
101  fInner_phys = nullptr;
102  }
103 
104  unsigned int fId = 0;
105  int fPMTType = 0;
106  G4ThreeVector fPMTPosition;
107 
108  G4LogicalVolume* fPMT_log = nullptr;
109  G4LogicalVolume* fPMT_log1 = nullptr;
110  G4LogicalVolume* fInterface_log = nullptr;
111  G4LogicalVolume* fDome_log = nullptr;
112 
113  G4PVPlacement* fPMT_phys = nullptr;
114  G4PVPlacement* fPMT_phys1 = nullptr;
115  G4PVPlacement* fDome_phys = nullptr;
116  G4PVPlacement* fInterface_phys = nullptr;
117 
118  G4PVPlacement* fInner_phys = nullptr;
119  };
120 
121 
122  class G4StationConstruction : public G4VUserDetectorConstruction {
123 
124  public:
125  G4StationConstruction(const double simRadius, const bool umdEnabled, const double scintYield, const bool martaEnabled);
127 
128  virtual G4VPhysicalVolume* Construct() override;
129  void GetDataForThisTank();
130 
131  private:
132  G4NistManager* fNistManager = nullptr;
133 
135  bool fHasSmallPMT = false;
136  bool fHasScintillator = false;
137 
138  friend class G4StationFastCerenkov;
140 
141  void SetRequiredParameters();
142  void SetDetectorParameters();
143  void SetUMDParameters();
144  void SetMARTAParameters();
145  void SetXMLParameters();
146  void CreateElements();
147  void CreateMaterials();
148  void CleanupFreestore();
149  G4VPhysicalVolume* CreateTank();
150 
151  void CreateAir();
152  void CreateWater();
153  void CreateVacuum();
154  void CreatePyrex();
155  void CreatePyrex1();
156  void CreateLucite();
157  void CreateInterface();
158  void CreateHDPE();
159  void CreateLiner();
160  void CreateAluminium();
161  void CreateDirt();
162  void CreatePolystyrene();
165  void CreatePVC();
166  void CreateScintillator();
167  void CreateWLS();
168 
169  void CreateConcrete();
170  void CreateAcrylic();
171  void CreateSodaLimeGlass();
172  void CreateR134A();
173  void CreateBakelite();
174 
175  void SetScintPropertyTable();
177 
178  void CreatePrimitives();
179  void CreatePrimitivesUMD();
180  void CreatePrimitivesMARTA();
181  void CreateHall();
182  void AssembleStation();
183  void AssembleUMD();
184  void AssembleMARTA();
185  void AssembleTankSupport();
186 
187  bool fUMDEnabled = false;
188  bool fMARTAEnabled = false;
189  bool fElecBoxEnable = false;
190  bool fGroundEnable = false;
191  bool fSolarPanelEnable = false;
192  double fSimulationRadius = 0;
193 
194  G4Element* elN = nullptr;
195  G4Element* elO = nullptr;
196  G4Element* elAl = nullptr;
197  G4Element* elFe = nullptr;
198  G4Element* elH = nullptr;
199  G4Element* elSi = nullptr;
200  G4Element* elB = nullptr;
201  G4Element* elNa = nullptr;
202  G4Element* elC = nullptr;
203  G4Element* elCl = nullptr;
204  G4Element* elTi = nullptr;
205  G4Material* Air = nullptr;
206  G4Material* Water = nullptr;
207  G4Material* Vacuum = nullptr;
208  G4Material* SiO2 = nullptr;
209  G4Material* B2O2 = nullptr;
210  G4Material* Na2O = nullptr;
211  G4Material* Pyrex = nullptr;
212  G4Material* Pyrex1 = nullptr;
213  G4Material* CH3 = nullptr;
214  G4Material* TiO2 = nullptr;
215  G4Material* CH2 = nullptr;
216  G4Material* C = nullptr;
217  G4Material* CO2 = nullptr;
218  G4Material* Lucite = nullptr;
219  G4Material* Interface = nullptr;
220  G4Material* HDPE = nullptr;
221  G4Material* Al = nullptr;
222  G4Material* Dirt = nullptr;
223  G4Material* Polystyrene = nullptr;
224  G4Material* ExpandedPolystyreneFoam = nullptr;
225  G4Material* ExtrudedPolystyreneFoam = nullptr;
226  G4Material* PVC = nullptr;
227  G4Material* PPO = nullptr;
228  G4Material* POPOP = nullptr;
229  G4Material* ScintMat = nullptr;
230  G4Material* ScintCoating = nullptr;
231  G4Material* PMMA = nullptr;
232  G4Material* Pethylene = nullptr;
233  G4Material* FPethylene = nullptr;
234  G4MaterialPropertiesTable* airMPT = nullptr;
235  G4MaterialPropertiesTable* waterMPT = nullptr;
236  G4MaterialPropertiesTable* pmtfaceMPT = nullptr;
237  G4MaterialPropertiesTable* pmtfaceMPT1 = nullptr;
238  G4MaterialPropertiesTable* pmtdomeMPT = nullptr;
239  G4MaterialPropertiesTable* interfaceMPT = nullptr;
240  G4MaterialPropertiesTable* linerMPT = nullptr;
241  G4MaterialPropertiesTable* linerOpticalMPT = nullptr;
242  G4Material* fG4_Concrete = nullptr;
243  G4Material* fG4_Acrylic = nullptr;
244  G4Material* fSoda_lime_glass = nullptr;
245  G4Material* fR134a = nullptr;
246  G4Material* fG4_Aluminum = nullptr;
247  G4Material* fG4_Bakelite = nullptr;
248 
249  G4OpticalSurface* OpLinerSurface = nullptr;
250  G4LogicalBorderSurface* topsurface = nullptr;
251  G4LogicalBorderSurface* bottomsurface = nullptr;
252  G4LogicalBorderSurface* sidesurface = nullptr;
253  G4LogicalBorderSurface* umd_topsurface = nullptr;
254  G4LogicalBorderSurface* umd_bottomsurface = nullptr;
255  G4LogicalBorderSurface* umd_sidesurface = nullptr;
256 
257  G4Box* expHall_box = nullptr;
258  G4Box* solarPanel_solid = nullptr;
259  G4Box* elecBox_solid = nullptr;
260  G4Box* scin_casing_solid = nullptr;
261  G4Box* scin_sandwich_solid = nullptr;
262  G4Box* scin_roof_solid = nullptr;
263  G4Box* scin_styro_solid = nullptr;
264  G4Box* scin_solid = nullptr;
265  G4Tubs* tank_solid = nullptr;
266  G4Tubs* top_solid = nullptr;
267  G4Tubs* side_solid = nullptr;
268  G4Tubs* ground_solid = nullptr;
269  std::vector<PMTConstruction> fPMTs; // container for all PMTs
270  // standard PMTs
271  G4Ellipsoid* inner_solid = nullptr;
272  G4Ellipsoid* interface_in_aux = nullptr;
273  G4Ellipsoid* interface_out_aux = nullptr;
274  G4Ellipsoid* pmt_aux = nullptr;
275  G4Ellipsoid* pmt_aux1 = nullptr;
276  G4Ellipsoid* dome_in_aux = nullptr;
277  G4Ellipsoid* dome_out_aux = nullptr;
278  G4SubtractionSolid* pmt_solid = nullptr;
279  G4SubtractionSolid* pmt_solid1 = nullptr;
280  G4SubtractionSolid* interface_solid = nullptr;
281  G4SubtractionSolid* dome_solid = nullptr;
282  G4LogicalVolume* inner_log = nullptr;
283  // small PMT
284  G4Tubs* s_pmt_solid = nullptr;
285  G4Tubs* s_pmt_aux = nullptr;
286  G4Tubs* s_pmt_aux1 = nullptr;
287  G4SubtractionSolid* s_pmt_solid1 = nullptr;
288  G4Tubs* s_interface_solid = nullptr;
289  G4Tubs* s_dome_solid = nullptr;
290 
291  // AMIGA-UMD
292  // Solids and surfaces for modules (10m2+5m2)
293  G4Box* umd_casing_solid_large = nullptr;
294  G4Box* umd_casing_solid_small = nullptr;
295  G4Box* umd_strip_solid_large = nullptr;
296  G4Box* umd_strip_solid_small = nullptr;
298 
300  G4Box* umd_side_coat_solid_large = nullptr;
302  G4Box* umd_side_coat_solid_small = nullptr;
303 
304  G4Box* umd_back_side_coat_solid = nullptr;
305 
306  G4Tubs* umd_fiber_core_solid_large = nullptr;
307  G4Tubs* umd_fiber_clad1_solid_large = nullptr;
308  G4Tubs* umd_fiber_clad2_solid_large = nullptr;
309  G4Tubs* umd_fiber_core_solid_small = nullptr;
310  G4Tubs* umd_fiber_clad1_solid_small = nullptr;
311  G4Tubs* umd_fiber_clad2_solid_small = nullptr;
312 
313  G4Tubs* extra_fiber_solid = nullptr;
314  G4Tubs* extra_clad1_solid = nullptr;
315  G4Tubs* extra_clad2_solid = nullptr;
316 
317  G4Tubs* pixel_solid = nullptr;
318 
319  // Logical and physical volumes
320  G4LogicalVolume* umd_casing_log_large = nullptr;
321  G4LogicalVolume* umd_casing_log_small = nullptr;
322  G4PVPlacement* umd_casing_phys_large = nullptr;
323  G4PVPlacement* umd_casing_phys_small = nullptr;
324 
325  G4LogicalVolume* umd_strip_log_large = nullptr;
326  G4LogicalVolume* umd_strip_log_small = nullptr;
327  G4PVPlacement* umd_strip_phys_large = nullptr;
328  G4PVPlacement* umd_strip_phys_small = nullptr;
329 
330  G4LogicalVolume* umd_fiber_core_log_small = nullptr;
331  G4LogicalVolume* umd_fiber_clad1_log_small = nullptr;
332  G4LogicalVolume* umd_fiber_clad2_log_small = nullptr;
333  G4PVPlacement* umd_fiber_core_phys_small = nullptr;
334  G4PVPlacement* umd_fiber_clad1_phys_small = nullptr;
335  G4PVPlacement* umd_fiber_clad2_phys_small = nullptr;
336 
337  G4LogicalVolume* umd_fiber_core_log_large = nullptr;
338  G4LogicalVolume* umd_fiber_clad1_log_large = nullptr;
339  G4LogicalVolume* umd_fiber_clad2_log_large = nullptr;
340  G4PVPlacement* umd_fiber_core_phys_large = nullptr;
341  G4PVPlacement* umd_fiber_clad1_phys_large = nullptr;
342  G4PVPlacement* umd_fiber_clad2_phys_large = nullptr;
343 
344  G4LogicalVolume* extra_fiber_log = nullptr;
345  G4LogicalVolume* extra_clad1_log = nullptr;
346  G4LogicalVolume* extra_clad2_log = nullptr;
347  G4PVPlacement* extra_fiber_phy = nullptr;
348  G4PVPlacement* extra_clad1_phy = nullptr;
349  G4PVPlacement* extra_clad2_phy = nullptr;
350 
351  G4LogicalVolume* pixel_log = nullptr;
352  G4PVPlacement* pixel_phy = nullptr;
353 
354  // Logical and physicals for surfaces
355  G4LogicalVolume* umd_top_bot_coat_log_large = nullptr;
356  G4LogicalVolume* umd_top_bot_coat_log_small = nullptr;
357  G4PVPlacement* umd_top_coat_phys_large = nullptr;
358  G4PVPlacement* umd_top_coat_phys_small = nullptr;
359  G4PVPlacement* umd_bot_coat_phys_large = nullptr;
360  G4PVPlacement* umd_bot_coat_phys_small = nullptr;
361 
362  G4LogicalVolume* umd_side_coat_log_large = nullptr;
363  G4LogicalVolume* umd_side_coat_log_small = nullptr;
364  G4PVPlacement* umd_side1_coat_phys_large = nullptr;
365  G4PVPlacement* umd_side1_coat_phys_small = nullptr;
366  G4PVPlacement* umd_side2_coat_phys_large = nullptr;
367  G4PVPlacement* umd_side2_coat_phys_small = nullptr;
368 
369  G4LogicalVolume* umd_back_side_coat_log = nullptr;
370  G4PVPlacement* umd_back_side_coat_phys = nullptr;
371 
372  G4LogicalVolume* umd_strip_coat_log_large = nullptr;
373  G4LogicalVolume* umd_strip_coat_log_small = nullptr;
374  G4VPhysicalVolume* umd_strip_coat_phys_large = nullptr;
375  G4VPhysicalVolume* umd_strip_coat_phys_small = nullptr;
376 
377  G4OpticalSurface* fUMDScintSkinSurf = nullptr;
378  G4OpticalSurface* fUMDScintSkinSurfBack = nullptr;
379 
380  // MARTA
381  // Solids
382  G4Box* rpc_solid = nullptr;
383  G4Box* glass_solid = nullptr;
384  G4Box* gas_solid = nullptr;
385  G4Box* pcb_solid = nullptr;
386  G4Box* spacer_solid = nullptr;
387  G4SubtractionSolid* AlBox_solid = nullptr;
388 
389  // Logical volumes
390  G4LogicalVolume* al_box_log = nullptr;
391  G4LogicalVolume* rpc_log = nullptr;
392  G4LogicalVolume* gas_log = nullptr;
393  G4LogicalVolume* glass_log = nullptr;
394  G4LogicalVolume* pcb_log = nullptr;
395  G4LogicalVolume* spacer_log = nullptr;
396  // end MARTA
397 
398  G4LogicalVolume* expHall_log = nullptr;
399  G4LogicalVolume* tank_log = nullptr;
400  G4LogicalVolume* top_log = nullptr;
401  G4LogicalVolume* bottom_log = nullptr;
402  G4LogicalVolume* side_log = nullptr;
403 
404  G4LogicalVolume* ground_log = nullptr;
405  G4LogicalVolume* solarPanel_log = nullptr;
406  G4LogicalVolume* elecBox_log = nullptr;
407  G4LogicalVolume* scin_casing_log = nullptr;
408  G4LogicalVolume* scin_sandwich_log = nullptr;
409  G4LogicalVolume* scin_roof_log = nullptr;
410  G4LogicalVolume* scin_styro_log = nullptr;
411  G4LogicalVolume* scin_log = nullptr;
412 
413  G4PVPlacement* expHall_phys = nullptr;
414  G4PVPlacement* tank_phys = nullptr;
415  G4PVPlacement* top_phys = nullptr;
416  G4PVPlacement* bottom_phys = nullptr;
417  G4PVPlacement* side_phys = nullptr;
418 
419  G4PVPlacement* ground_phys = nullptr;
420  G4PVPlacement* solarPanel_phys = nullptr;
421  G4PVPlacement* elecBox_phys = nullptr;
422  G4PVPlacement* scin_casing_phys = nullptr;
423  G4PVPlacement* scin_sandwich_phys = nullptr;
424  G4PVPlacement* scin_roof_phys = nullptr;
425  G4PVPlacement* scin_styro_phys = nullptr;
426  G4PVPlacement* scin_phys1 = nullptr;
427  G4PVPlacement* scin_phys2 = nullptr;
428 
429  static G4ThreeVector fgTankCenter;
430 
431  double fFaceRadius = 0;
432  double fFaceRadiusz = 0;
433  double fFaceActiveRadius = 0;
434 
435  double fFaceRadius_SPMT = 0;
437  double fWindowRadius_SPMT = 0;
438 
439  double fExpHall_x = 0;
440  double fExpHall_y = 0;
441  double fExpHall_z = 0;
442  double fGroundThickness = 0;
443 
444  static double fgTankRadius;
445  static double fgTankHalfHeight;
446  static double fgTankThickness;
447  double fTankPos_x = 0;
448  double fTankPos_y = 0;
449  double fTankPos_z = 0;
450 
451  double fPmtRmin = 0;
452  static double fgPmtRmax;
453  double fInterfaceRmin = 0;
454  static double fgInterfaceRmax;
455  double fDomeRmin = 0;
456  static double fgDomeRmax;
458  double fGlassThickness = 0;
459  double fDomeThickness = 0;
460 
461  static double fPmtRmin_SPMT;
462  static double fPmtRmax_SPMT;
463  static double fInterfaceRadius_SPMT;
464  static double fDomeRadius_SPMT;
466  static double fGlassThickness_SPMT;
467  static double fDomeThickness_SPMT;
468 
469  double fMinPhi = 0;
470  double fMaxPhi = 0;
471  double fMinTheta = 0;
472  double fMaxTheta = 0;
473  double fPmtRzmin = 0;
474  static double fgPmtRzmax;
475  double fInterfaceRzmin = 0;
476  static double fgInterfaceRzmax;
477  double fDomeRzmin = 0;
478  static double fgDomeRzmax;
479 
480  double fPmtZ_SPMT = 0;
481  double fInterfaceZ_SPMT = 0;
482  double fDomeZ_SPMT = 0;
483 
484  //double fAlpha;
485  static double fgHeightz;
486 
493 
500  static double fgSIGMA_ALPHA;
509 
510  // Solar panel setup
511  //------------------
512 
513  double fSolarPanelLength = 0;
514  double fSolarPanelWidth = 0;
516 
517  double fSolarPanelX = 0;
518  double fSolarPanelY = 0;
519  double fSolarPanelZ = 0;
521 
522  // electronics box setup
523  // ---------------------
524 
525  double fElecBoxLength = 0;
526  double fElecBoxWidth = 0;
527  double fElecBoxThickness = 0;
528 
529  double fElecBoxX = 0;
530  double fElecBoxY = 0;
531  double fElecBoxZ = 0;
532  double fElecBoxTiltAngle = 0;
533 
534  // PMT setup
535  //----------
536  /*
537  The "PMT setup" consists of the dome,
538  a thin interface layer, and the face.
539  The pmt domes are hemispherical
540  shells with the same surface area as the
541  the actual domes.
542  The pmt "faces" are hemispherical domes
543  that have the same active area as the
544  photocathodes.
545  The origin of the following
546  coordinates is the center of the
547  tank -> (0.0, 0.0, 60.0) cm
548  Why? Because in order to have the
549  optical properties of the dome, etc.
550  work correctly, the volumes must
551  be defined and placed in the tank volume
552  (as opposed to the experimental hall volume)
553  Since the dome, interface, and face are
554  defined as hemispherical shells placed in
555  one another, they have they same
556  x-y-z coordinates.
557  */
558 
559  // PMT Optical properties
560 
561  /*
562  Tyvek Refractive Index on liner surface vs. momentum
563  (NOTE: refractive index is set to zero for the
564  following reason. The only surfaces that work
565  with the unified model are ground and
566  groundbackpainted (others are limited to either
567  purely specular or Lambertian reflection.) Both
568  ground and groundbackpainted necessarily calculate
569  transmissin coefficients based on index of refraction
570  of the next material. For groundbackpainted, you
571  are allowd to define a 'thin' layer of dielectric
572  between the ground surface and the painted one.
573  If this is defined to be zero, then all the photons
574  undergo total internal reflection from the ground
575  surface and the unfied model is used. Note that
576  this is a kludge, and the author of this code
577  needs to be contacted to discuss providing some
578  additional flexibility in the optical model.
579  */
580 
581  // scintillator setup
582  // ------------------
583 
587  unsigned int fNScintillatorBars = 0;
588  double fScintillatorGap = 0;
596  G4ThreeVector fScintillatorPosition;
598 
599  // UMD
600  std::map<mdet::Module::AreaKind, double> fModAreaLenghts;
601  std::map<unsigned int, double> fFiberLenghts;
602  unsigned int fUMDScints = 0;
603  double fUMDManifoldL = 0;
605  double fCoatingThickness = 0;
606  double fCladingThickness = 0;
607  double fUMDScintsW = 0;
608  double fUMDScintsH = 0;
609  double fUMDFiberRadius = 0;
610  double fPixelL = 0;
611  double fScintYield = 0; // for visualization or real simulation
612 
613  // MARTA
614  // RPC parameters
615  // Concrete tank support
616  // ---------------------
617 
618  // New precast design
619  bool fMakeTankSupport = false;
620 
627 
628  std::vector<G4ThreeVector> fRPCPositions;
629  std::vector<G4double> fRPCRotations;
630  G4ThreeVector fAlBoxInnerDimensions;
631  G4ThreeVector fAlBoxThickness;
632  double fPCBThickness = 0;
633  double fSpacerThickness = 0;
634 
635  double fRPCsizeX = 0;
636  double fRPCsizeY = 0;
637 
638  };
639 
640 }
641 
642 
643 #endif
void Cylinder(const mdet::Fiber &, const double l, const double r)
void GetDimensions(double &l, double &r) const
void GetDimensions(double &l, double &w, double &h) const
Class to hold collection (x,y) points and provide interpolation between them.
virtual G4VPhysicalVolume * Construct() override
std::map< unsigned int, double > fFiberLenghts
static utl::TabulatedFunction fgLinerSPECULARLOBECONSTANT
void Box(const mdet::Scintillator &, const double w, const double l, const double h)
Actual muon-sensitive objects.
static utl::TabulatedFunction fgLinerBACKSCATTERCONSTANT
static utl::TabulatedFunction fgLinerREFLECTIVITY
class that handles Geant4 SD Station simulation adopted from G4TankSimulator
static utl::TabulatedFunction fgLinerSPECULARSPIKECONSTANT
Optical mdet::Fiber used to conect mdet::Scintillator to mdet::Pixel.
Definition: Fiber.h:54
G4StationConstruction(const double simRadius, const bool umdEnabled, const double scintYield, const bool martaEnabled)
std::map< mdet::Module::AreaKind, double > fModAreaLenghts
static utl::TabulatedFunction fgPmtdomeABSORPTION
static utl::TabulatedFunction fgInterfaceABSORPTION

, generated on Tue Sep 26 2023.