VMC Examples Version 6.8
Loading...
Searching...
No Matches
Ex03DetectorConstruction.h
Go to the documentation of this file.
1#ifndef EX03_DETECTOR_CONSTRUCTION_H
2#define EX03_DETECTOR_CONSTRUCTION_H
3
4//------------------------------------------------
5// The Virtual Monte Carlo examples
6// Copyright (C) 2014 - 2018 Ivana Hrivnacova
7// All rights reserved.
8//
9// For the licensing terms see geant4_vmc/LICENSE.
10// Contact: root-vmc@cern.ch
11//-------------------------------------------------
12
13/// \file Ex03DetectorConstruction.h
14/// \brief Definition of the Ex03DetectorConstruction class
15///
16/// Geant4 ExampleN03 adapted to Virtual Monte Carlo: \n
17/// Id: ExN03DetectorConstruction.hh,v 1.5 2002/01/09 17:24:11 ranjard Exp
18/// GEANT4 tag $Name: $
19///
20/// \author I. Hrivnacova; IPN, Orsay
21
22#include <map>
23
24#include <Riostream.h>
25#include <TObject.h>
26#include <TString.h>
27
28/// \ingroup E03
29/// \brief The detector construction (via TGeo )
30///
31/// \date 06/03/2003
32/// \author I. Hrivnacova; IPN, Orsay
33
35{
36 public:
39
40 public:
43 void SetCuts();
46 // void UpdateGeometry();
47
48 // set methods
49 void SetNbOfLayers(Int_t value);
50 void SetDefaultMaterial(const TString& materialName);
51 void SetAbsorberMaterial(const TString& materialName);
52 void SetGapMaterial(const TString& materialName);
53 void SetCalorSizeYZ(Double_t value);
54 void SetAbsorberThickness(Double_t value);
55 void SetGapThickness(Double_t value);
56
57 /// Split sensitive slabs into normal and reflected half-thickness placements.
58 void SetUseReflection(Bool_t value) { fUseReflection = value; }
59 /// Require reflected hits in every event of the optional regression test.
60 void SetRequireReflectedHits(Bool_t value) { fRequireReflectedHits = value; }
61
62 //
63 // get methods
64
65 /// \return Whether reflected sensitive placements are enabled
66 Bool_t GetUseReflection() const { return fUseReflection; }
67 /// \return Whether each event must contain reflected absorber and gap hits
69
70 /// \return The number of calorimeter layers
71 Int_t GetNbOfLayers() const { return fNbOfLayers; }
72
73 /// \return The world size x component
74 Double_t GetWorldSizeX() const { return fWorldSizeX; }
75
76 /// \return The world size y,z component
77 Double_t GetWorldSizeYZ() const { return fWorldSizeYZ; }
78
79 /// \return The calorimeter size y,z component
80 Double_t GetCalorSizeYZ() const { return fCalorSizeYZ; }
81
82 /// \return The calorimeter thickness
83 Double_t GetCalorThickness() const { return fCalorThickness; }
84
85 /// \return The absorber thickness
86 Double_t GetAbsorberThickness() const { return fAbsorberThickness; }
87
88 /// \return The gap thickness
89 Double_t GetGapThickness() const { return fGapThickness; }
90
91 private:
92 // helper type for setting cuts
93 struct MaterialCuts
94 {
96 TString name, Double_t p1, Double_t p2, Double_t p3, Double_t p4)
97 : fName(name), fCUTGAM(p1), fBCUTE(p2), fCUTELE(p3), fDCUTE(p4)
98 {}
99 TString fName;
100 Double_t fCUTGAM;
101 Double_t fBCUTE;
102 Double_t fCUTELE;
103 Double_t fDCUTE;
104 };
105
106 // methods
108
109 // data members
110 Int_t fNbOfLayers; ///< The number of calorimeter layers
111 Double_t fWorldSizeX; ///< The world size x component
112 Double_t fWorldSizeYZ; ///< The world size y,z component
113 Double_t fCalorSizeYZ; ///< The calorimeter size y,z component
114 Double_t fCalorThickness; ///< The calorimeter thickness
115 Double_t fLayerThickness; ///< The calorimeter layer thickness
116 Double_t fAbsorberThickness; ///< The absorber thickness
117 Double_t fGapThickness; ///< The gap thickness
118
119 TString fDefaultMaterial; ///< The default material name
120 TString fAbsorberMaterial; ///< The absorber material name
121 TString fGapMaterial; ///< The gap material name
122
123 Bool_t fUseReflection; ///< Enable reflected sensitive placements
124 Bool_t fRequireReflectedHits; ///< Enable the per-event regression check
125
126 ClassDef(Ex03DetectorConstruction, 1) // Ex03DetectorConstruction
127};
128
129#endif // EX03_DETECTOR_CONSTRUCTION_H
The detector construction (via TGeo ).
virtual ~Ex03DetectorConstruction()
Double_t fWorldSizeYZ
The world size y,z component.
Int_t fNbOfLayers
The number of calorimeter layers.
Bool_t fUseReflection
Enable reflected sensitive placements.
void SetNbOfLayers(Int_t value)
Double_t fGapThickness
The gap thickness.
TString fDefaultMaterial
The default material name.
void SetRequireReflectedHits(Bool_t value)
Require reflected hits in every event of the optional regression test.
void SetGapThickness(Double_t value)
void SetAbsorberThickness(Double_t value)
Bool_t fRequireReflectedHits
Enable the per-event regression check.
TString fAbsorberMaterial
The absorber material name.
Double_t fLayerThickness
The calorimeter layer thickness.
TString fGapMaterial
The gap material name.
Double_t fAbsorberThickness
The absorber thickness.
void SetUseReflection(Bool_t value)
Split sensitive slabs into normal and reflected half-thickness placements.
void SetAbsorberMaterial(const TString &materialName)
void SetDefaultMaterial(const TString &materialName)
Double_t fCalorThickness
The calorimeter thickness.
void SetCalorSizeYZ(Double_t value)
Double_t fWorldSizeX
The world size x component.
void SetGapMaterial(const TString &materialName)
Double_t fCalorSizeYZ
The calorimeter size y,z component.
MaterialCuts(TString name, Double_t p1, Double_t p2, Double_t p3, Double_t p4)