Geant4 Cross Reference |
1 // 1 2 // ******************************************* 3 // * License and Disclaimer 4 // * 5 // * The Geant4 software is copyright of th 6 // * the Geant4 Collaboration. It is provided 7 // * conditions of the Geant4 Software License 8 // * LICENSE and available at http://cern.ch/ 9 // * include a list of copyright holders. 10 // * 11 // * Neither the authors of this software syst 12 // * institutes,nor the agencies providing fin 13 // * work make any representation or warran 14 // * regarding this software system or assum 15 // * use. Please see the license in the file 16 // * for the full disclaimer and the limitatio 17 // * 18 // * This code implementation is the result 19 // * technical work of the GEANT4 collaboratio 20 // * By using, copying, modifying or distri 21 // * any work based on the software) you ag 22 // * use in resulting scientific publicati 23 // * acceptance of all terms of the Geant4 Sof 24 // ******************************************* 25 // 26 // G4GDMLParameterisation implementation 27 // 28 // Author: Zoltan Torzsok, November 2007 29 // ------------------------------------------- 30 31 #include "G4GDMLParameterisation.hh" 32 #include "G4PolyconeHistorical.hh" 33 #include "G4PolyhedraHistorical.hh" 34 35 // ------------------------------------------- 36 G4int G4GDMLParameterisation::GetSize() const 37 { 38 return (G4int) parameterList.size(); 39 } 40 41 // ------------------------------------------- 42 void G4GDMLParameterisation::AddParameter(cons 43 { 44 parameterList.push_back(newParameter); 45 } 46 47 // ------------------------------------------- 48 void G4GDMLParameterisation::ComputeTransforma 49 const G4int index, G4VPhysicalVolume* physvo 50 { 51 physvol->SetTranslation(parameterList[index] 52 physvol->SetRotation(parameterList[index].pR 53 } 54 55 // ------------------------------------------- 56 void G4GDMLParameterisation::ComputeDimensions 57 58 { 59 box.SetXHalfLength(parameterList[index].dime 60 box.SetYHalfLength(parameterList[index].dime 61 box.SetZHalfLength(parameterList[index].dime 62 } 63 64 // ------------------------------------------- 65 void G4GDMLParameterisation::ComputeDimensions 66 67 { 68 trd.SetXHalfLength1(parameterList[index].dim 69 trd.SetXHalfLength2(parameterList[index].dim 70 trd.SetYHalfLength1(parameterList[index].dim 71 trd.SetYHalfLength2(parameterList[index].dim 72 trd.SetZHalfLength(parameterList[index].dime 73 } 74 75 // ------------------------------------------- 76 void G4GDMLParameterisation::ComputeDimensions 77 78 { 79 trap.SetAllParameters(parameterList[index].d 80 parameterList[index].d 81 parameterList[index].d 82 parameterList[index].d 83 parameterList[index].d 84 parameterList[index].d 85 parameterList[index].d 86 parameterList[index].d 87 parameterList[index].d 88 parameterList[index].d 89 parameterList[index].d 90 } 91 92 // ------------------------------------------- 93 void G4GDMLParameterisation::ComputeDimensions 94 95 { 96 tubs.SetInnerRadius(parameterList[index].dim 97 tubs.SetOuterRadius(parameterList[index].dim 98 tubs.SetZHalfLength(parameterList[index].dim 99 tubs.SetStartPhiAngle(parameterList[index].d 100 tubs.SetDeltaPhiAngle(parameterList[index].d 101 } 102 103 // ------------------------------------------- 104 void G4GDMLParameterisation::ComputeDimensions 105 106 { 107 cons.SetInnerRadiusMinusZ(parameterList[inde 108 cons.SetOuterRadiusMinusZ(parameterList[inde 109 cons.SetInnerRadiusPlusZ(parameterList[index 110 cons.SetOuterRadiusPlusZ(parameterList[index 111 cons.SetZHalfLength(parameterList[index].dim 112 cons.SetStartPhiAngle(parameterList[index].d 113 cons.SetDeltaPhiAngle(parameterList[index].d 114 } 115 116 // ------------------------------------------- 117 void G4GDMLParameterisation::ComputeDimensions 118 119 120 { 121 sphere.SetInnerRadius(parameterList[index].d 122 sphere.SetOuterRadius(parameterList[index].d 123 sphere.SetStartPhiAngle(parameterList[index] 124 sphere.SetDeltaPhiAngle(parameterList[index] 125 sphere.SetStartThetaAngle(parameterList[inde 126 sphere.SetDeltaThetaAngle(parameterList[inde 127 } 128 129 // ------------------------------------------- 130 void G4GDMLParameterisation::ComputeDimensions 131 132 { 133 orb.SetRadius(parameterList[index].dimension 134 } 135 136 // ------------------------------------------- 137 void G4GDMLParameterisation::ComputeDimensions 138 139 140 { 141 ellipsoid.SetSemiAxis(parameterList[index].d 142 parameterList[index].d 143 parameterList[index].d 144 ellipsoid.SetZCuts(parameterList[index].dime 145 parameterList[index].dime 146 } 147 148 // ------------------------------------------- 149 void G4GDMLParameterisation::ComputeDimensions 150 151 152 { 153 torus.SetAllParameters(parameterList[index]. 154 parameterList[index]. 155 parameterList[index]. 156 parameterList[index]. 157 parameterList[index]. 158 } 159 160 // ------------------------------------------- 161 void G4GDMLParameterisation::ComputeDimensions 162 163 { 164 para.SetXHalfLength(parameterList[index].dim 165 para.SetYHalfLength(parameterList[index].dim 166 para.SetZHalfLength(parameterList[index].dim 167 para.SetAlpha(parameterList[index].dimension 168 para.SetTanAlpha(std::tan(parameterList[inde 169 para.SetThetaAndPhi(parameterList[index].dim 170 parameterList[index].dim 171 } 172 173 // ------------------------------------------- 174 void G4GDMLParameterisation::ComputeDimensions 175 176 { 177 hype.SetInnerRadius(parameterList[index].dim 178 hype.SetOuterRadius(parameterList[index].dim 179 hype.SetZHalfLength(parameterList[index].dim 180 hype.SetInnerStereo(parameterList[index].dim 181 hype.SetOuterStereo(parameterList[index].dim 182 } 183 184 // ------------------------------------------- 185 void G4GDMLParameterisation::ComputeDimensions 186 187 188 { 189 G4PolyconeHistorical origparam(*(pcone.GetOr 190 origparam.Start_angle = parameterList[inde 191 origparam.Opening_angle = parameterList[inde 192 origparam.Num_z_planes = (G4int) parameterL 193 G4int nZplanes = origparam.Num_z_pl 194 195 for(G4int ii = 0; ii < nZplanes; ++ii) 196 { 197 origparam.Rmin[ii] = parameterList[ind 198 origparam.Rmax[ii] = parameterList[ind 199 origparam.Z_values[ii] = parameterList[ind 200 } 201 202 pcone.SetOriginalParameters(&origparam); // 203 pcone.Reset(); // 204 } 205 206 // ------------------------------------------- 207 void G4GDMLParameterisation::ComputeDimensions 208 209 210 { 211 G4PolyhedraHistorical origparam(*(polyhedra. 212 origparam.Start_angle = parameterList[inde 213 origparam.Opening_angle = parameterList[inde 214 origparam.Num_z_planes = (G4int) parameterL 215 origparam.numSide = (G4int) parameterL 216 217 G4int nZplanes = origparam.Num_z_planes; 218 219 for(G4int ii = 0; ii < nZplanes; ++ii) 220 { 221 origparam.Rmin[ii] = parameterList[ind 222 origparam.Rmax[ii] = parameterList[ind 223 origparam.Z_values[ii] = parameterList[ind 224 } 225 polyhedra.SetOriginalParameters( 226 &origparam); // copy values & transfe 227 polyhedra.Reset(); // reset to new solid pa 228 } 229