Loading...
Searching...
No Matches
F04DetectorConstruction.hh
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26//
27/// \file field/field04/include/F04DetectorConstruction.hh
28/// \brief Definition of the F04DetectorConstruction class
29//
30
31#ifndef F04DetectorConstruction_h
32#define F04DetectorConstruction_h 1
33
34#include "globals.hh"
35#include "G4Cache.hh"
36
37#include "G4LogicalVolume.hh"
38#include "G4RotationMatrix.hh"
39
40#include "CLHEP/Units/SystemOfUnits.h"
41
42class G4Tubs;
43
45
46class F04Materials;
47class G4Material;
48
49class F04GlobalField;
50
52
53#include "G4VUserDetectorConstruction.hh"
54
56{
57 public:
58
60 ~F04DetectorConstruction() override;
61
62 G4VPhysicalVolume* Construct() override;
64
65 void ConstructSDandField() override;
66
67 // StringToRotationMatrix() converts a string "X90,Y45" into a
68 // G4RotationMatrix.
69 // This is an active rotation, in that the object is first rotated
70 // around the parent's X axis by 90 degrees, then the object is
71 // further rotated around the parent's Y axis by 45 degrees.
72 // The return value points to a G4RotationMatrix on the heap, so
73 // it is persistent. Angles are in degrees, can have decimals,
74 // and can be negative. Axes are X, Y, Z.
75
76 static G4RotationMatrix StringToRotationMatrix(G4String rotation);
77
78 public:
79
81 void SetWorldSizeZ(G4double);
82 void SetWorldSizeR(G4double);
83
84 void SetCaptureMgntRadius(G4double);
85 void SetCaptureMgntLength(G4double);
86 void SetCaptureMgntB1(G4double);
87 void SetCaptureMgntB2(G4double);
88
89 void SetTransferMgntRadius(G4double);
90 void SetTransferMgntLength(G4double);
91 void SetTransferMgntB(G4double);
92 void SetTransferMgntPos(G4double);
93
95 void SetTargetThickness(G4double);
96 void SetTargetRadius(G4double);
97 void SetTargetPos(G4double);
98 void SetTargetAngle(G4int);
99
101 void SetDegraderThickness(G4double);
102 void SetDegraderRadius(G4double);
103 void SetDegraderPos(G4double);
104
105 public:
106
108 G4double GetWorldSizeZ() {return fWorldSizeZ;}
109 G4double GetWorldSizeR() {return fWorldSizeR;}
110
114 G4double GetCaptureMgntB1() {return fCaptureMgntB1;}
115 G4double GetCaptureMgntB2() {return fCaptureMgntB2;}
116 G4ThreeVector GetCaptureMgntCenter() {return fCaptureMgntCenter;}
117
121 G4double GetTransferMgntB() {return fTransferMgntB;}
124
126 G4double GetTargetRadius() {return fTargetRadius;}
128 G4double GetTargetPos() {return fTargetPos;}
129 G4int GetTargetAngle() {return fTargetAngle;}
130
134 G4double GetDegraderPos() {return fDegraderPos;}
135
136 private:
137
138 F04DetectorMessenger* fDetectorMessenger = nullptr; // pointer to the Messenger
140
142
143 G4Material* fVacuum = nullptr;
144
145 G4Tubs* fSolidWorld = nullptr;
148
152
156
160
164
166 G4double fWorldSizeR = 5. * CLHEP::m;
167 G4double fWorldSizeZ = 50. * CLHEP::m;
168
169 G4double fCaptureMgntLength = 4.0 * CLHEP::m;
170 G4double fCaptureMgntRadius = 0.6 * CLHEP::m;
171 G4double fCaptureMgntB1 = 0.;
172 G4double fCaptureMgntB2 = 0.;
173
174 G4double fTransferMgntLength = 15.0 * CLHEP::m;
175 G4double fTransferMgntRadius = 0.3 * CLHEP::m;
176 G4double fTransferMgntB = 0.;
177 G4double fTransferMgntPos = 0.;
178
180 G4double fTargetThickness = 16.0 * CLHEP::cm;
181 G4double fTargetRadius = 0.4 * CLHEP::cm;
182 G4double fTargetPos = 0.;
183 G4int fTargetAngle = 0.;
184
186 G4double fDegraderThickness = 0.1 * CLHEP::cm;
187 G4double fDegraderRadius = 30.0 * CLHEP::cm;
188 G4double fDegraderPos = 0.;
189
191
192 private:
193
194 void DefineMaterials();
195
196};
197
198#endif
G4VPhysicalVolume * Construct() override
G4VPhysicalVolume * ConstructDetector()
G4VPhysicalVolume * fPhysiTransferMgnt
F04DetectorMessenger * fDetectorMessenger
G4Cache< F04GlobalField * > fFieldSetUp
static G4RotationMatrix StringToRotationMatrix(G4String rotation)
G4VPhysicalVolume * fPhysiCaptureMgnt

Applications | User Support | Publications | Collaboration