ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4MIRDThyroid.cc
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4MIRDThyroid.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 //
27 // Previous authors: G. Guerrieri, S. Guatelli and M. G. Pia, INFN Genova, Italy
28 // Authors (since 2007): S. Guatelli, University of Wollongong, Australia
29 //
30 //
31 //
32 #include "G4MIRDThyroid.hh"
33 
34 #include "globals.hh"
35 #include "G4SystemOfUnits.hh"
36 #include "G4SDManager.hh"
37 #include "G4VisAttributes.hh"
39 #include "G4RotationMatrix.hh"
40 #include "G4ThreeVector.hh"
41 #include "G4VPhysicalVolume.hh"
42 #include "G4PVPlacement.hh"
43 #include "G4Tubs.hh"
44 #include "G4Box.hh"
45 #include "G4VSolid.hh"
46 #include "G4SubtractionSolid.hh"
47 #include "G4HumanPhantomColour.hh"
48 
50 {
51 }
52 
54 {
55 }
56 
57 
59  const G4String& colourName, G4bool wireFrame, G4bool)
60 {
61 
62 
63  G4cout << "Construct " << volumeName <<" with mother "<<mother->GetName()<<G4endl;
64 
66  G4Material* soft = material -> GetMaterial("soft_tissue");
67  delete material;
68 
69  G4double z= 4.20*cm; //c thickness = c,
70  G4double rmin= 0. * cm;
71  G4double rmax= 1.85 *cm; //Rmax
72  G4double startphi = 0. * degree;
73  G4double deltaphi= 180. * degree; // y< y0
74 
75  G4Tubs* LobOfThyroidOut = new G4Tubs("LobOfThyroidOut",
76  rmin, rmax,z/2.,
77  startphi, deltaphi);
78 
79  z= 4.50*cm; // c thickness + something
80  rmax= 0.83 * cm; //r
81  deltaphi= 360. * degree;
82  G4Tubs* LobOfThyroidIn = new G4Tubs("LobOfThyroidIn",
83  rmin, rmax,z/2.,
84  startphi, deltaphi);
85 
86  G4double xx = 3.72*cm;
87  G4double yy= 3.72*cm;
88  G4double zz= 20.00*cm;
89  G4Box* SubtrThyroid = new G4Box("SubtrThyroid",
90  xx/2., yy/2., zz/2.);
91 
92  // subtraction of the two tubs
93  G4SubtractionSolid* FirstThyroid = new G4SubtractionSolid("FirstThyroid",
94  LobOfThyroidOut,
95  LobOfThyroidIn);
96 
97  G4RotationMatrix* relative_matrix = new G4RotationMatrix();
98  relative_matrix -> rotateX(-50.* degree);
99 
100  G4SubtractionSolid* SecondThyroid = new G4SubtractionSolid("SecondThyroid",
101  FirstThyroid,
102  SubtrThyroid,
103  relative_matrix,
104  G4ThreeVector(0.0 *cm,0.0 *cm, 4.20*cm));
105 
106  G4RotationMatrix* relative_matrix_2 = new G4RotationMatrix();
107  relative_matrix_2 -> rotateX(50.* degree);
108 
109  G4SubtractionSolid* thyroid = new G4SubtractionSolid("SecondThyroid",
110  SecondThyroid,
111  SubtrThyroid,
112  relative_matrix_2,
113  G4ThreeVector(0.0 *cm,0.0 *cm, -5.40*cm));
114 
115 
116 
117  G4LogicalVolume* logicThyroid = new G4LogicalVolume(thyroid, soft,
118  "ThyroidVolume",
119  0, 0, 0);
120 
122  rm->rotateZ(180.*degree);
123  G4VPhysicalVolume* physThyroid = new G4PVPlacement(rm,
124  // G4ThreeVector(0.0*cm,-3.91*cm, -5.925*cm),//y0
125  G4ThreeVector(0.0*cm,-3.91*cm, -5.65*cm),//y0
126  "physicalThyroid",
127  logicThyroid,
128  mother,
129  false,
130  0,true);
131 
132 
133  // Visualization Attributes
134  G4HumanPhantomColour* colourPointer = new G4HumanPhantomColour();
135  G4Colour colour = colourPointer -> GetColour(colourName);
136  G4VisAttributes* ThyroidVisAtt = new G4VisAttributes(colour);
137  ThyroidVisAtt->SetForceSolid(wireFrame);
138  logicThyroid->SetVisAttributes(ThyroidVisAtt);
139 
140  G4cout << "Thyroid created !!!!!!" << G4endl;
141 
142  // Testing Thyroid Volume
143  G4double ThyroidVol = logicThyroid->GetSolid()->GetCubicVolume();
144  G4cout << "Volume of Thyroid = " << ThyroidVol/cm3 << " cm^3" << G4endl;
145 
146  // Testing Thyroid Material
147  G4String ThyroidMat = logicThyroid->GetMaterial()->GetName();
148  G4cout << "Material of Thyroid = " << ThyroidMat << G4endl;
149 
150  // Testing Density
151  G4double ThyroidDensity = logicThyroid->GetMaterial()->GetDensity();
152  G4cout << "Density of Material = " << ThyroidDensity*cm3/g << " g/cm^3" << G4endl;
153 
154  // Testing Mass
155  G4double ThyroidMass = (ThyroidVol)*ThyroidDensity;
156  G4cout << "Mass of Thyroid = " << ThyroidMass/gram << " g" << G4endl;
157 
158 
159  return physThyroid;
160 }