Geant4 Cross Reference |
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 // G4ParameterisationTrd[X/Y/Z] 27 // 28 // Class description: 29 // 30 // This class represents the parameterised positioning equivalent to 31 // dividing a trapezoid along one of each axis X, Y, Z. 32 33 // 09.05.01 - P.Arce, Initial version 34 // 08.04.04 - I.Hrivnacova, Implemented reflection 35 // -------------------------------------------------------------------- 36 #ifndef G4PARAMETERISATIONTRD_HH 37 #define G4PARAMETERISATIONTRD_HH 1 38 39 #include <vector> 40 41 #include "G4VDivisionParameterisation.hh" 42 #include "G4VSolid.hh" 43 44 class G4VPhysicalVolume; 45 46 // Dummy declarations to get rid of warnings ... 47 // 48 class G4Cons; 49 class G4Box; 50 class G4Sphere; 51 class G4Orb; 52 class G4Ellipsoid; 53 class G4Torus; 54 class G4Para; 55 class G4Hype; 56 class G4Tubs; 57 class G4Polycone; 58 class G4Polyhedra; 59 60 class G4VParameterisationTrd : public G4VDivisionParameterisation 61 { 62 public: // with description 63 64 G4VParameterisationTrd( EAxis axis, G4int nCopies, 65 G4double offset, G4double step, 66 G4VSolid* msolid, DivisionType divType ); 67 68 ~G4VParameterisationTrd() override; 69 70 protected: 71 72 G4bool bDivInTrap = false; 73 }; 74 75 class G4ParameterisationTrdX : public G4VParameterisationTrd 76 { 77 public: // with description 78 79 G4ParameterisationTrdX( EAxis axis, G4int nCopies, 80 G4double width, G4double offset, 81 G4VSolid* motherSolid, DivisionType divType ); 82 ~G4ParameterisationTrdX() override; 83 84 G4double GetMaxParameter() const override; 85 86 void ComputeTransformation(const G4int copyNo, 87 G4VPhysicalVolume* physVol) const override; 88 89 void ComputeDimensions(G4Trd& trd, const G4int copyNo, 90 const G4VPhysicalVolume* pv) const override; 91 92 void ComputeDimensions(G4Trap& trd, const G4int copyNo, 93 const G4VPhysicalVolume* pv) const override; 94 95 private: // Dummy declarations to get rid of warnings ... 96 97 void ComputeDimensions (G4Cons&,const G4int, 98 const G4VPhysicalVolume*) const override {} 99 void ComputeDimensions (G4Box&,const G4int, 100 const G4VPhysicalVolume*) const override {} 101 void ComputeDimensions (G4Sphere&,const G4int, 102 const G4VPhysicalVolume*) const override {} 103 void ComputeDimensions (G4Orb&,const G4int, 104 const G4VPhysicalVolume*) const override {} 105 void ComputeDimensions (G4Ellipsoid&,const G4int, 106 const G4VPhysicalVolume*) const override {} 107 void ComputeDimensions (G4Torus&,const G4int, 108 const G4VPhysicalVolume*) const override {} 109 void ComputeDimensions (G4Para&,const G4int, 110 const G4VPhysicalVolume*) const override {} 111 void ComputeDimensions (G4Hype&,const G4int, 112 const G4VPhysicalVolume*) const override {} 113 void ComputeDimensions (G4Tubs&,const G4int, 114 const G4VPhysicalVolume*) const override {} 115 void ComputeDimensions (G4Polycone&,const G4int, 116 const G4VPhysicalVolume*) const override {} 117 void ComputeDimensions (G4Polyhedra&,const G4int, 118 const G4VPhysicalVolume*) const override {} 119 }; 120 121 122 class G4ParameterisationTrdY : public G4VParameterisationTrd 123 { 124 public: // with description 125 126 G4ParameterisationTrdY( EAxis axis, G4int nCopies, 127 G4double width, G4double offset, 128 G4VSolid* motherSolid, DivisionType divType ); 129 ~G4ParameterisationTrdY() override; 130 131 G4double GetMaxParameter() const override; 132 133 void ComputeTransformation(const G4int copyNo, 134 G4VPhysicalVolume *physVol) const override; 135 136 void ComputeDimensions(G4Trd& trd, const G4int copyNo, 137 const G4VPhysicalVolume* pv) const override; 138 139 void ComputeDimensions (G4Trap&,const G4int, 140 const G4VPhysicalVolume*) const override; 141 142 private: // Dummy declarations to get rid of warnings ... 143 144 void ComputeDimensions (G4Cons&,const G4int, 145 const G4VPhysicalVolume*) const override {} 146 void ComputeDimensions (G4Box&,const G4int, 147 const G4VPhysicalVolume*) const override {} 148 void ComputeDimensions (G4Sphere&,const G4int, 149 const G4VPhysicalVolume*) const override {} 150 void ComputeDimensions (G4Orb&,const G4int, 151 const G4VPhysicalVolume*) const override {} 152 void ComputeDimensions (G4Ellipsoid&,const G4int, 153 const G4VPhysicalVolume*) const override {} 154 void ComputeDimensions (G4Torus&,const G4int, 155 const G4VPhysicalVolume*) const override {} 156 void ComputeDimensions (G4Para&,const G4int, 157 const G4VPhysicalVolume*) const override {} 158 void ComputeDimensions (G4Hype&,const G4int, 159 const G4VPhysicalVolume*) const override {} 160 void ComputeDimensions (G4Tubs&,const G4int, 161 const G4VPhysicalVolume*) const override {} 162 void ComputeDimensions (G4Polycone&,const G4int, 163 const G4VPhysicalVolume*) const override {} 164 void ComputeDimensions (G4Polyhedra&,const G4int, 165 const G4VPhysicalVolume*) const override {} 166 }; 167 168 169 class G4ParameterisationTrdZ : public G4VParameterisationTrd 170 { 171 public: // with description 172 173 G4ParameterisationTrdZ( EAxis axis, G4int nCopies, 174 G4double width, G4double offset, 175 G4VSolid* motherSolid, DivisionType divType ); 176 ~G4ParameterisationTrdZ() override; 177 178 G4double GetMaxParameter() const override; 179 180 void ComputeTransformation(const G4int copyNo, 181 G4VPhysicalVolume* physVol) const override; 182 void ComputeDimensions(G4Trd& trd, const G4int copyNo, 183 const G4VPhysicalVolume* pv) const override; 184 185 private: // Dummy declarations to get rid of warnings ... 186 187 void ComputeDimensions (G4Cons&,const G4int, 188 const G4VPhysicalVolume*) const override {} 189 void ComputeDimensions (G4Box&,const G4int, 190 const G4VPhysicalVolume*) const override {} 191 void ComputeDimensions (G4Sphere&,const G4int, 192 const G4VPhysicalVolume*) const override {} 193 void ComputeDimensions (G4Orb&,const G4int, 194 const G4VPhysicalVolume*) const override {} 195 void ComputeDimensions (G4Ellipsoid&,const G4int, 196 const G4VPhysicalVolume*) const override {} 197 void ComputeDimensions (G4Torus&,const G4int, 198 const G4VPhysicalVolume*) const override {} 199 void ComputeDimensions (G4Para&,const G4int, 200 const G4VPhysicalVolume*) const override {} 201 void ComputeDimensions (G4Trap&,const G4int, 202 const G4VPhysicalVolume*) const override {} 203 void ComputeDimensions (G4Hype&,const G4int, 204 const G4VPhysicalVolume*) const override {} 205 void ComputeDimensions (G4Tubs&,const G4int, 206 const G4VPhysicalVolume*) const override {} 207 void ComputeDimensions (G4Polycone&,const G4int, 208 const G4VPhysicalVolume*) const override {} 209 void ComputeDimensions (G4Polyhedra&,const G4int, 210 const G4VPhysicalVolume*) const override {} 211 }; 212 213 #endif 214