Loading...
Searching...
No Matches
Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
RE06ParallelWorld Class Reference

#include <Doxymodules_runAndEvent.h>

Inheritance diagram for RE06ParallelWorld:
G4VUserParallelWorld

Public Member Functions

 RE06ParallelWorld (G4String worldName)
 
virtual ~RE06ParallelWorld ()
 
virtual void Construct ()
 
virtual void ConstructSD ()
 
void SetSerialGeometry (G4bool ser)
 
G4bool IsSerial () const
 

Private Member Functions

void SetupGeometry ()
 
void SetupDetectors ()
 

Private Attributes

G4LogicalVolumefCalorLogical [3]
 
G4LogicalVolumefLayerLogical [3]
 
G4VPhysicalVolumefCalorPhysical [3]
 
G4VPhysicalVolumefLayerPhysical [3]
 
G4String fCalName [3]
 
G4bool fConstructed
 
G4bool fSerial
 
G4double fTotalThickness
 
G4int fNumberOfLayers
 

Static Private Attributes

static G4ThreadLocal G4bool fSDConstructed = false
 

Detailed Description

Definition at line 138 of file Doxymodules_runAndEvent.h.

Constructor & Destructor Documentation

◆ RE06ParallelWorld()

RE06ParallelWorld::RE06ParallelWorld ( G4String  worldName)

Definition at line 55 of file RE06ParallelWorld.cc.

56:G4VUserParallelWorld(worldName),
57 fConstructed(false),
58 fSerial(false),
59 fTotalThickness(2.0*m),
61{
62 for(size_t i=0;i<3;i++)
63 {
64 fCalorLogical[i] = 0;
65 fLayerLogical[i] = 0;
66 fCalorPhysical[i] = 0;
67 fLayerPhysical[i] = 0;
68 }
69 fCalName[0] = "Calor-AP";
70 fCalName[1] = "Calor-BP";
71 fCalName[2] = "Calor-CP";
72}
G4VPhysicalVolume * fCalorPhysical[3]
G4LogicalVolume * fCalorLogical[3]
G4VPhysicalVolume * fLayerPhysical[3]
G4LogicalVolume * fLayerLogical[3]

◆ ~RE06ParallelWorld()

RE06ParallelWorld::~RE06ParallelWorld ( )
virtual

Definition at line 76 of file RE06ParallelWorld.cc.

77{;}

Member Function Documentation

◆ Construct()

void RE06ParallelWorld::Construct ( )
virtual

Definition at line 81 of file RE06ParallelWorld.cc.

82{
83 if(!fConstructed)
84 {
85 fConstructed = true;
87 }
88}

◆ ConstructSD()

void RE06ParallelWorld::ConstructSD ( )
virtual

Definition at line 92 of file RE06ParallelWorld.cc.

93{
95 {
96 fSDConstructed = true;
98 }
99}
static G4ThreadLocal G4bool fSDConstructed

◆ SetSerialGeometry()

void RE06ParallelWorld::SetSerialGeometry ( G4bool  ser)

Definition at line 200 of file RE06ParallelWorld.cc.

201{
202 if(fSerial==serial) return;
203 fSerial=serial;
204 if(!fConstructed) return;
205 for(G4int i=0;i<3;i++)
206 {
207 if(fSerial)
208 {
210 ->SetTranslation(G4ThreeVector(0.,0.,G4double(i-1)*2.*m));
211 }
212 else
213 {
215 ->SetTranslation(G4ThreeVector(0.,G4double(i-1)*m,0.));
216 }
217 }
218}

◆ IsSerial()

G4bool RE06ParallelWorld::IsSerial ( ) const
inline

Definition at line 50 of file RE06ParallelWorld.hh.

50{ return fSerial; }

◆ SetupGeometry()

void RE06ParallelWorld::SetupGeometry ( )
private

Definition at line 102 of file RE06ParallelWorld.cc.

103{
104 //
105 // World
106 //
107 G4VPhysicalVolume* ghostWorld = GetWorld();
108 G4LogicalVolume* worldLogical = ghostWorld->GetLogicalVolume();
109
110 //
111 // Calorimeter
112 //
113 G4VSolid* calorSolid
114 = new G4Tubs("Calor",0.0,0.5*m,fTotalThickness/2.,0.0,360.*deg);
115 G4int i;
116 for(i=0;i<3;i++)
117 {
118 fCalorLogical[i] = new G4LogicalVolume(calorSolid,0,fCalName[i]);
119 if(fSerial)
120 {
121 fCalorPhysical[i] = new G4PVPlacement(0,
122 G4ThreeVector(0.,0.,G4double(i-1)*fTotalThickness),
123 fCalorLogical[i],fCalName[i],worldLogical,false,i);
124 }
125 else
126 {
127 fCalorPhysical[i] = new G4PVPlacement(0,
128 G4ThreeVector(0.,G4double(i-1)*m,0.),
129 fCalorLogical[i],fCalName[i],worldLogical,false,i);
130 }
131 }
132
133 //
134 // Layers --- as absorbers
135 //
136 G4VSolid* layerSolid
137 = new G4Tubs("Layer",0.0,0.5*m,fTotalThickness/2.,0.0,360.*deg);
138 for(i=0;i<3;i++)
139 {
140 fLayerLogical[i]
141 = new G4LogicalVolume(layerSolid,0,fCalName[i]+"_LayerLog");
143 = new G4PVReplica(fCalName[i]+"_Layer",fLayerLogical[i],fCalorLogical[i],
145 }
146
147}

◆ SetupDetectors()

void RE06ParallelWorld::SetupDetectors ( )
private

Definition at line 151 of file RE06ParallelWorld.cc.

152{
153 G4SDManager::GetSDMpointer()->SetVerboseLevel(1);
154 G4String filterName, particleName;
155
156 G4SDParticleFilter* gammaFilter
157 = new G4SDParticleFilter(filterName="gammaFilter",particleName="gamma");
158 G4SDParticleFilter* electronFilter
159 = new G4SDParticleFilter(filterName="electronFilter",particleName="e-");
160 G4SDParticleFilter* positronFilter
161 = new G4SDParticleFilter(filterName="positronFilter",particleName="e+");
162 G4SDParticleFilter* epFilter
163 = new G4SDParticleFilter(filterName="epFilter");
164 epFilter->add(particleName="e-");
165 epFilter->add(particleName="e+");
166
167 for(G4int i=0;i<3;i++)
168 {
169 G4String detName = fCalName[i]+"_para";
171
172 G4VPrimitiveScorer* primitive;
173 primitive = new G4PSEnergyDeposit("eDep");
174 det->RegisterPrimitive(primitive);
175 primitive = new G4PSNofSecondary("nGamma");
176 primitive->SetFilter(gammaFilter);
177 det->RegisterPrimitive(primitive);
178 primitive = new G4PSNofSecondary("nElectron");
179 primitive->SetFilter(electronFilter);
180 det->RegisterPrimitive(primitive);
181 primitive = new G4PSNofSecondary("nPositron");
182 primitive->SetFilter(positronFilter);
183 det->RegisterPrimitive(primitive);
184 primitive = new G4PSTrackLength("trackLength");
185 primitive->SetFilter(epFilter);
186 det->RegisterPrimitive(primitive);
187 primitive = new G4PSNofStep("nStep");
188 primitive->SetFilter(epFilter);
189 det->RegisterPrimitive(primitive);
190
191 G4SDManager::GetSDMpointer()->AddNewDetector(det);
192 SetSensitiveDetector(fLayerLogical[i], det);
193 }
194 G4SDManager::GetSDMpointer()->SetVerboseLevel(0);
195
196}

Member Data Documentation

◆ fCalorLogical

G4LogicalVolume* RE06ParallelWorld::fCalorLogical[3]
private

Definition at line 56 of file RE06ParallelWorld.hh.

◆ fLayerLogical

G4LogicalVolume* RE06ParallelWorld::fLayerLogical[3]
private

Definition at line 57 of file RE06ParallelWorld.hh.

◆ fCalorPhysical

G4VPhysicalVolume* RE06ParallelWorld::fCalorPhysical[3]
private

Definition at line 58 of file RE06ParallelWorld.hh.

◆ fLayerPhysical

G4VPhysicalVolume* RE06ParallelWorld::fLayerPhysical[3]
private

Definition at line 59 of file RE06ParallelWorld.hh.

◆ fCalName

G4String RE06ParallelWorld::fCalName[3]
private

Definition at line 60 of file RE06ParallelWorld.hh.

◆ fConstructed

G4bool RE06ParallelWorld::fConstructed
private

Definition at line 61 of file RE06ParallelWorld.hh.

◆ fSDConstructed

G4ThreadLocal G4bool RE06ParallelWorld::fSDConstructed = false
staticprivate

Definition at line 62 of file RE06ParallelWorld.hh.

◆ fSerial

G4bool RE06ParallelWorld::fSerial
private

Definition at line 63 of file RE06ParallelWorld.hh.

◆ fTotalThickness

G4double RE06ParallelWorld::fTotalThickness
private

Definition at line 64 of file RE06ParallelWorld.hh.

◆ fNumberOfLayers

G4int RE06ParallelWorld::fNumberOfLayers
private

Definition at line 65 of file RE06ParallelWorld.hh.


The documentation for this class was generated from the following files:

Applications | User Support | Publications | Collaboration