source: trunk/examples/advanced/lAr_calorimeter/src/FCALCryostatVolumes.cc@ 1319

Last change on this file since 1319 was 807, checked in by garnier, 17 years ago

update

File size: 9.2 KB
Line 
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// Author: Mathieu Fontaine Rachid Mazini
27// fontaine@lps.umontreal.ca Rachid.Mazini@cern.ch
28// Language: C++
29// Tested on : g++
30// Prerequisites: None
31// Purpose: Source file defining the differents volumes
32// in the cryostat
33// Developped: 10-March-2000 M.F.
34//
35//-----------------------------------------------------------------------------
36
37#include "FCALCryostatVolumes.hh"
38
39#include "FCALMaterialConsultant.hh"
40
41#include "FCALEMModule.hh"
42#include "FCALHadModule.hh"
43
44
45#include "G4Box.hh"
46#include "G4Tubs.hh"
47#include "G4Trd.hh"
48#include "G4LogicalVolume.hh"
49#include "G4VPhysicalVolume.hh"
50#include "G4PVPlacement.hh"
51#include "G4SubtractionSolid.hh"
52
53#include "G4ThreeVector.hh"
54#include "G4RotationMatrix.hh"
55#include "G4VisAttributes.hh"
56#include "G4Colour.hh"
57
58FCALCryostatVolumes::FCALCryostatVolumes()
59{
60#include "FCALCryostatVolumesParameters.input"
61}
62
63FCALCryostatVolumes::~FCALCryostatVolumes() {;}
64
65G4LogicalVolume * FCALCryostatVolumes::Construct()
66{
67
68 //-----------------------------
69 // construction of materials
70 //-----------------------------
71
72 FCALMaterialConsultant * FCALMaterials = new FCALMaterialConsultant();
73
74 FCALMaterials->construct();
75
76
77//-----------------------------------------
78// G4VisAttributes * ColorOfIron = new G4VisAttributes(G4Colour(0.3,0.3,0.3));
79 G4VisAttributes * ColorOfLead = new G4VisAttributes(G4Colour(0.5,0.5,0.5));
80 G4VisAttributes * ColorOfAir = new G4VisAttributes(G4Colour(1.,1.,1.));
81// G4VisAttributes * ColorOfLarg = new G4VisAttributes(G4Colour(1.0, 1.0, 0.0));
82
83
84 //-----------------------------
85 // Cryostat
86 //-----------------------------
87 G4Tubs * SolidCryostat =
88 new G4Tubs("CryostatSolid", CryostatRMin, CryostatRMax, CryostatLenght,
89 StartingPhi, DPhi);
90 G4LogicalVolume * LogicalCryostat =
91 new G4LogicalVolume(SolidCryostat,FCALMaterials->Material("Iron"),
92 "CryostatLogical");
93
94 // LogicalCryostat->SetVisAttributes(ColorOfIron);
95 LogicalCryostat->SetVisAttributes(G4VisAttributes::Invisible);
96
97
98 //------------------------------
99 // Insulation
100 //------------------------------
101 G4Tubs * SolidInsulation =
102 new G4Tubs("InsulationSolid", InsulationRMin, InsulationRMax,
103 InsulationLenght, StartingPhi, DPhi);
104 G4LogicalVolume * LogicalInsulation =
105 new G4LogicalVolume(SolidInsulation, FCALMaterials->Material("Air"),
106 "InsulationLogical");
107// G4VPhysicalVolume * PhysicalInsulation =
108 new G4PVPlacement(0, 0, LogicalInsulation, "InsulationPhysical",
109 LogicalCryostat, 0, 0);
110
111 LogicalInsulation->SetVisAttributes(ColorOfAir);
112 // LogicalInsulation->SetVisAttributes(G4VisAttributes::Invisible);
113
114
115 //-------------------------------------
116 // Air to replace Iron inside Cryostat
117 //-------------------------------------
118 /*
119 G4Tubs * SolidAirCryostat =
120 new G4Tubs("AirCryostatSolid", CryostatRMin, LArgRMax, CryostatLength,
121 StartingPhi, DPhi);
122 G4LogicalVolume * LogicalAirCryostat =
123 new G4LogicalVolume(SolidAirCryostat, FCALMaterials->Material("Air"),
124 "AirCryostatLogical");
125 G4VPhysicalVolume * PhysicalAirCryostat =
126 new G4PVPlacement(0, 0, LogicalAirCryostat, "AirCryostatPhysical",
127 LogicalCryostat, 0, 0);
128
129 LogicalAirCryostat->SetVisAttributes(ColorOfAir);
130 // LogicalAirCryostat->SetVisAttributes(G4VisAttributes::Invisible);
131 */
132
133
134 //--------------------
135 // Liquid Argon
136 //--------------------
137 G4Tubs * SolidLArg =
138 new G4Tubs("LArgSolid", LArgRMin, LArgRMax, LArgLenght,StartingPhi,DPhi);
139 G4LogicalVolume * LogicalLArg =
140 new G4LogicalVolume(SolidLArg, FCALMaterials->Material("LiquidArgon"),
141 "LArgLogical");
142 G4VPhysicalVolume * PhysicalLArg =
143 new G4PVPlacement(0,G4ThreeVector(LArgPosX, LArgPosY, LArgPosZ),
144 LogicalLArg, "LArgPhysical", LogicalCryostat, 0,0);
145
146 // LogicalLArg->SetVisAttributes(ColorOfLarg);
147 LogicalLArg->SetVisAttributes(G4VisAttributes::Invisible);
148
149 //-------------------
150 // Front Excluder
151 //-------------------
152 G4Box * SolidFrontExcluder =
153 new G4Box("FrontExcluderSolid", FrontExcluderSizeX, FrontExcluderSizeY,
154 FrontExcluderSizeZ);
155 G4LogicalVolume * LogicalFrontExcluder =
156 new G4LogicalVolume(SolidFrontExcluder, FCALMaterials->Material("Air")
157 , "FrontExcluderLogical");
158
159// G4VPhysicalVolume * PhysicalFrontExcluder =
160 new G4PVPlacement(0,G4ThreeVector(FrontExcluderPosX, FrontExcluderPosY,
161 FrontExcluderPosZ), "FrontExcluderPhysical",
162 LogicalFrontExcluder, PhysicalLArg, 0,0);
163
164 LogicalFrontExcluder->SetVisAttributes(ColorOfLead);
165 // LogicalFrontExcluder->SetVisAttributes(G4VisAttributes::Invisible);
166
167
168 //--------------------
169 // Back Excluder
170 //--------------------
171 G4Trd * SolidBackExcluder =
172 new G4Trd("BackExcluderSolid", BackExcluderSize1X, BackExcluderSize2X,
173 BackExcluderSize1Y, BackExcluderSize2Y, BackExcluderSizeZ);
174 G4LogicalVolume * LogicalBackExcluder =
175 new G4LogicalVolume(SolidBackExcluder, FCALMaterials->Material("Air"),
176 "BackExcluderLogical");
177
178 G4RotationMatrix * BackExcluderRotationMatrix = new G4RotationMatrix();
179 BackExcluderRotationMatrix->rotateX(BackExcluderRotX);
180
181// G4VPhysicalVolume * PhysicalBackExcluder =
182 new G4PVPlacement(BackExcluderRotationMatrix,
183 G4ThreeVector(BackExcluderPosX, BackExcluderPosY,
184 BackExcluderPosZ), "BackExcluder", LogicalBackExcluder,
185 PhysicalLArg, 0,0);
186
187 LogicalBackExcluder->SetVisAttributes(ColorOfLead);
188 // LogicalBackExcluder->SetVisAttributes(G4VisAttributes::Invisible);
189
190
191 //------------------------
192 // fcal envelope
193 //------------------------
194 G4Tubs * SolidFCALEnvelope =
195 new G4Tubs("FCALEnvelopeSolid", FCALEnvelopeRMin, FCALEnvelopeRMax,
196 FCALEnvelopeLenght, FCALEnvelopeStartPhi, FCALEnvelopeDPhi);
197
198 G4LogicalVolume * LogicalFCALEnvelope =
199 new G4LogicalVolume(SolidFCALEnvelope, FCALMaterials->Material("LiquidArgon"),
200 "FCALEnvelopeLogical");
201
202 G4RotationMatrix * FCALRotationMatrix = new G4RotationMatrix();
203 FCALRotationMatrix->rotateX(FCALEnvelopeRotX);
204 // FCALRotationMatrix->rotateY(FCALEnvelopeRotY);
205
206// G4VPhysicalVolume * PhysicalFCALEnvelopp =
207 new G4PVPlacement(FCALRotationMatrix,
208 G4ThreeVector(FCALEnvelopePosX,FCALEnvelopePosY,FCALEnvelopePosZ)
209 , LogicalFCALEnvelope, "FCALEnvelopePhysical", LogicalLArg, 0,0);
210
211 //LogicalFCALEnvelope->SetVisAttributes(ColorOfIron);
212 LogicalFCALEnvelope->SetVisAttributes(G4VisAttributes::Invisible);
213
214 //-----------------------------
215 // FCAL electromagnetic Module
216 //-----------------------------
217 EmModule = new FCALEMModule();
218 G4LogicalVolume * LogicalFCALEmModule = EmModule->Construct();
219
220 G4RotationMatrix * EmModuleRot = new G4RotationMatrix();
221 EmModuleRot->rotateZ(ModuleRotZ);
222
223// G4VPhysicalVolume * PhysicalFCALEmModule =
224 new G4PVPlacement(EmModuleRot,
225 G4ThreeVector(FCALEmModulePosX,FCALEmModulePosY,FCALEmModulePosZ),
226 LogicalFCALEmModule,"FCALEmModulePhysical",LogicalFCALEnvelope,0,0);
227
228
229 //-----------------------------
230 // hadronic fcal
231 //----------------------------
232 HadModule = new FCALHadModule();
233 G4LogicalVolume * LogicalFCALHadModule = HadModule->Construct();
234
235 G4RotationMatrix * HadModuleRot = new G4RotationMatrix();
236 HadModuleRot->rotateZ(ModuleRotZ);
237
238// G4VPhysicalVolume * PhysicalFCALHadModule =
239 new G4PVPlacement(HadModuleRot,
240 G4ThreeVector(FCALHadModulePosX,FCALHadModulePosY,FCALHadModulePosZ),
241 LogicalFCALHadModule, "FCALHadModulePhysical",LogicalFCALEnvelope,0,0);
242
243
244
245 //-------------------------
246 // Returning the mother
247 //-------------------------
248
249 return LogicalCryostat;
250
251}
Note: See TracBrowser for help on using the repository browser.