Geant4  10.03
CCalEcal.cc
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 //
27 // File: CCalEcal.cc
28 // Description: CCalEcal Geometry factory class for crystal matrix
30 #include "CCalEcal.hh"
31 
32 #include <fstream>
33 #include "CCalutils.hh"
34 
35 //#define debug
36 
38 
41  //Let's open the file
42  G4cout << " ==> Opening file " << File() << " to read elements..."
43  << G4endl;
44 
45  std::ifstream is;
46  bool ok = openGeomFile(is, pathName, File());
47  if (!ok)
48  return 0;
49 
50  // Find *DO CrystalMatrix
51  findDO(is, G4String("CrystalMatrix"));
52 
53  //Let's read overall box dimensions and positions
54  readName(is,genMat);
55  is >> widBox >> lengBox >> xpos >> ypos >> zpos >> thetaX >> phiX
56  >> thetaY >> phiY >> thetaZ >> phiZ >> jump;
57 #ifdef debug
58  G4cout << tab << "General material: " << genMat << "\tBox dimensions "
59  << widBox << ", " << lengBox << G4endl;
60  G4cout << tab << "Positioned at (" << xpos << ", " << ypos << ", " << zpos
61  << ") with rotation (" << thetaX << ", " << phiX << ", " << thetaY
62  << ", " << phiY << ", " << thetaZ << ", " << phiZ << ")" << G4endl;
63 #endif
64 
65  //Then the layer positions
66  int i=0;
67  readName(is,layMat);
68  is >> layNum >> layRadius >> layAngle >> lengFront;
69  for (i=0; i<5; i++)
70  is >> layPar[i];
71 #ifdef debug
72  G4cout << tab << "Layer material: " << layMat << " Number " << layNum
73  << " Radius " << layRadius << " Angle " << layAngle/deg
74  << " front dist " << lengFront << " Parameters ";
75  for (i=0; i<5; i++)
76  G4cout << layPar[i] << " ";
77  G4cout << G4endl;
78 #endif
79 
80  //Then the crystal positions
81  readName(is,crystMat);
82  is >> crystNum >> crystLength >> crystTol;
83  for (i=0; i<5; i++)
84  is >> crystPar[i];
85 #ifdef debug
86  G4cout << tab << "Crystal material: " << crystMat << " Number " << crystNum
87  << " Length " << crystLength << " Tolerance " << crystTol
88  << " Parameters ";
89  for (i=0; i<5; i++)
90  G4cout << crystPar[i] << " ";
91  G4cout << G4endl;
92 #endif
93 
94  //Then the support material
95  readName(is,suppMat);
96  is >> dxSupp >> dySupp >> dzSupp >> distSupp >> jump;
97 #ifdef debug
98  G4cout << tab << "Support material: " << suppMat << " Dimensions " << dxSupp
99  << ", " << dySupp << ", " << dzSupp << " Distance " << distSupp << G4endl;
100 #endif
101 
103  // Close the file
104  G4cout << " ==> Closing file " << File() << G4endl;
105  is.close();
106 
107  return 1;
108 
109 }
110 
int crystNum
Definition: CCalEcal.hh:88
double thetaY
Definition: CCalEcal.hh:81
double crystLength
Definition: CCalEcal.hh:89
double xpos
Definition: CCalEcal.hh:80
bool openGeomFile(std::ifstream &is, const G4String &pathname, const G4String &filename)
Definition: CCalutils.cc:116
int layNum
Definition: CCalEcal.hh:83
double dySupp
Definition: CCalEcal.hh:93
double crystPar[5]
Definition: CCalEcal.hh:91
G4String genMat
Definition: CCalEcal.hh:78
virtual void constructDaughters()
Definition: CCalEcal.cc:111
std::istream & jump(std::istream &)
Definition: CCalutils.cc:95
std::ifstream & findDO(std::ifstream &, const G4String &)
Definition: CCalutils.cc:72
double ypos
Definition: CCalEcal.hh:80
double thetaZ
Definition: CCalEcal.hh:81
G4String crystMat
Definition: CCalEcal.hh:87
double layAngle
Definition: CCalEcal.hh:84
double thetaX
Definition: CCalEcal.hh:81
double lengBox
Definition: CCalEcal.hh:79
G4String suppMat
Definition: CCalEcal.hh:92
std::ifstream & readName(std::ifstream &, G4String &)
Definition: CCalutils.cc:53
G4GLOB_DLL std::ostream G4cout
virtual int readFile()
Definition: CCalEcal.cc:39
std::ostream & tab(std::ostream &)
Definition: CCalutils.cc:89
double dxSupp
Definition: CCalEcal.hh:93
double phiY
Definition: CCalEcal.hh:81
G4String pathName
double lengFront
Definition: CCalEcal.hh:85
double layRadius
Definition: CCalEcal.hh:84
double phiX
Definition: CCalEcal.hh:81
double zpos
Definition: CCalEcal.hh:80
double widBox
Definition: CCalEcal.hh:79
#define G4endl
Definition: G4ios.hh:61
double distSupp
Definition: CCalEcal.hh:94
G4String layMat
Definition: CCalEcal.hh:82
double layPar[5]
Definition: CCalEcal.hh:86
G4String File() const
Definition: CCalDetector.hh:79
static constexpr double deg
Definition: G4SIunits.hh:152
double dzSupp
Definition: CCalEcal.hh:93
double phiZ
Definition: CCalEcal.hh:81
double crystTol
Definition: CCalEcal.hh:90
virtual ~CCalEcal()
Definition: CCalEcal.cc:37