ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
FCALEMModule.cc
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file FCALEMModule.cc
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: Rachid Mazini
27 // Rachid.Mazini@cern.ch
28 // Language: C++
29 // Tested on : g++ (egcs.2.1.1, RH6.1)
30 // Prerequisites: None
31 // Purpose: Source file defining the geometry of EMModule 0 of the
32 // FCAL.
33 // Developped: 10-March-2000 R.M.
34 //
35 //
36 //-----------------------------------------------------------------------------
37 
38 #include <fstream>
39 #include <cstdlib>
40 
41 #include "FCALEMModule.hh"
42 
44 
45 #include "G4SDManager.hh"
46 #include "FCALEMModuleSD.hh"
47 
48 #include "G4PhysicalConstants.hh"
49 #include "G4SystemOfUnits.hh"
50 #include "G4Box.hh"
51 #include "G4Tubs.hh"
52 #include "G4LogicalVolume.hh"
53 #include "G4VPhysicalVolume.hh"
54 #include "G4PVPlacement.hh"
55 #include "G4SubtractionSolid.hh"
56 
57 #include "G4ThreeVector.hh"
58 #include "G4VisAttributes.hh"
59 #include "G4Colour.hh"
60 
62  FcalEmModuleSD(0)
63  {
64  F1LArGapID = new G4int[2400];
65  F1LArIX = new G4int[2400];
66  F1LArJY = new G4int[2400];
67  F1LArITile = new G4int[2400];
68  F1LArGapPosX = new G4double[2400];
69  F1LArGapPosY = new G4double[2400];
70 }
71 
72 
74  delete [] F1LArGapID;
75  delete [] F1LArGapPosX;
76  delete [] F1LArGapPosY;
77  delete [] F1LArIX;
78  delete [] F1LArJY;
79  delete [] F1LArITile;
80 }
81 
82 
84 #include "FCALEMModuleParameters.input"
85  std::ifstream File
86  ("geom_data/FCal1Electrodes.dat");
87 
88  if(!File) G4cerr << "Failed to open file FCal1Electrodes data file " << G4endl;
89  File.seekg(0);
90 
91  NF1LarGap = 0;
92  while(!(File.eof())) {
93  NF1LarGap++;
96  };
97  G4cout << "********" << " Number of Rods in FCAL1 : " << NF1LarGap-1 << G4endl;;
98 }
99 
100 
101 
103 {
104  //-----------------------------
105  // construction of materials
106  //-----------------------------
107  FCALMaterialConsultant *FCALMaterials =
109 
110  G4VisAttributes * ColorOfEMModule = new G4VisAttributes(G4Colour(1.,0.,0.5));
111 // G4VisAttributes * ColorOfLArg = new G4VisAttributes(G4Colour(0.,0.,1.));
112 
113  //----------------------------
114  // Read Parameters
115  //----------------------------
117 
118 //-----------------------------------------
119 // Logical to be returned (FCAL EM module)
120 //-----------------------------------------
121  G4Tubs * SolidEmModule =
122  new G4Tubs("EmModuleSold", EmModuleRMin, EmModuleRMax, EmModuleLenght,
124  G4LogicalVolume * LogicalEmModule =
125  new G4LogicalVolume(SolidEmModule, FCALMaterials->Material("Copper"),
126  "EmModuleLogical");
127 
128  LogicalEmModule->SetSmartless(FCALEmSmart);
129 
130  LogicalEmModule->SetVisAttributes(ColorOfEMModule);
131  // LogicalEmModule->SetVisAttributes(G4VisAttributes::GetInvisible());
132 
133 
134 //---------------------
135 // FCAL Cable Troff
136 //---------------------
137  G4Tubs * SolidF1CableTroff =
138  new G4Tubs("F1CableTroffSolid", F1CableTroffRMin, F1CableTroffRMax,
140  G4LogicalVolume * LogicalF1CableTroff =
141  new G4LogicalVolume(SolidF1CableTroff, FCALMaterials->Material("FCAL1CuArKap"),
142  "F1CableTroffLogical");
143 
144  G4ThreeVector F1CableTroffTrans(0.,0.,0.);
145  G4RotationMatrix F1CableTroffRot;
146 
147  G4int i=0;
148  for(i=0 ; i < NCableTroff ; i++)
149  {
150 // G4VPhysicalVolume * PhysicalF1CableTroff =
151  new G4PVPlacement(G4Transform3D(F1CableTroffRot,F1CableTroffTrans),
152  LogicalF1CableTroff,"F1CableTroffPhysical",
153  LogicalEmModule,0,i+1);
154 
155  F1CableTroffRot.rotateZ(F1CableTroffRotZ);
156  }
157 
158  LogicalF1CableTroff->SetVisAttributes(ColorOfEMModule);
159  // LogicalF1CableTroff->SetVisAttributes(G4VisAttributes::GetInvisible());
160 
161 
162  //----------------------
163  // LArg gaps
164  //----------------------
165 
166  G4Tubs * SolidF1LArGap =
167  new G4Tubs("F1LArGapSolid",F1LArGapRmin, F1LArGapRmax, F1LArGapLenght,
169 
170  G4LogicalVolume * LogicalF1LArGap =
171  new G4LogicalVolume(SolidF1LArGap, FCALMaterials->Material("LiquidArgon"),
172  "LArg Gap");
173 
174  for(i=1; i < NF1LarGap; i++){
175 // G4VPhysicalVolume * PhysicalF1LArGap =
177  LogicalF1LArGap,"F1LArGapPhysical", LogicalEmModule, 0, i);
178  };
179 
180  // LogicalF1LArGap->SetVisAttributes(ColorOfLArg);
182 
183 
184  // Sensitive Volumes
186 
187  if(!FcalEmModuleSD)
188  {
189  FcalEmModuleSD = new FCALEMModuleSD("FCALTB/EmModuleSD");
191  }
192  LogicalF1LArGap->SetSensitiveDetector(FcalEmModuleSD);
193 
194 
195 
196  return LogicalEmModule;
197 
198 }
199 
200 
202 { return F1LArITile[GapID]; }
203 
205 { return F1LArGapPosX[GapID]; }
206 
207