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 // G4TwistedTrap 27 // 28 // Class description: 29 // 30 // A G4TwistedTrap is a general twisted trapezoid: The faces perpendicular to the 31 // z planes are trapezia, and their centres are not necessarily on 32 // a line parallel to the z axis. 33 // 34 // pDz Half-length along the z-axis 35 // pTheta Polar angle of the line joining the centres of the faces 36 // at -/+pDz 37 // pPhi Azimuthal angle of the line joing the centre of the face at 38 // -pDz to the centre of the face at +pDz 39 // pDy1 Half-length along y of the face at -pDz 40 // pDx1 Half-length along x of the side at y=-pDy1 of the face at -pDz 41 // pDx2 Half-length along x of the side at y=+pDy1 of the face at -pDz 42 // 43 // pDy2 Half-length along y of the face at +pDz 44 // pDx3 Half-length along x of the side at y=-pDy2 of the face at +pDz 45 // pDx4 Half-length along x of the side at y=+pDy2 of the face at +pDz 46 // pAlph Angle with respect to the y axis from the centre of the side 47 // 48 // 49 // A special regular case of a trapezoid with equal endcaps is available, 50 // with polar,azimuthal and tilt angles set to zero. 51 // 52 53 // Author: 27-Oct-2004 - O.Link (Oliver.Link@cern.ch) 54 // -------------------------------------------------------------------- 55 #ifndef G4TWISTEDTRAP_HH 56 #define G4TWISTEDTRAP_HH 57 58 #include "G4VTwistedFaceted.hh" 59 60 class G4TwistedTrap : public G4VTwistedFaceted 61 { 62 public: 63 64 G4TwistedTrap(const G4String& pName, 65 G4double pPhiTwist, 66 G4double pDx1, // half x length at -pDz,-pDy 67 G4double pDx2, // half x length at -pDz,+pDy 68 G4double pDy, 69 G4double pDz); 70 71 72 G4TwistedTrap(const G4String& pName, // Name of instance 73 G4double pPhiTwist, // twist angle 74 G4double pDz, // half z length 75 G4double pTheta, // direction between end planes 76 G4double pPhi, // defined by polar and azim. angles 77 G4double pDy1, // half y length at -pDz 78 G4double pDx1, // half x length at -pDz,-pDy 79 G4double pDx2, // half x length at -pDz,+pDy 80 G4double pDy2, // half y length at +pDz 81 G4double pDx3, // half x length at +pDz,-pDy 82 G4double pDx4, // half x length at +pDz,+pDy 83 G4double pAlph // tilt angle 84 ); 85 86 ~G4TwistedTrap() override; 87 88 // accessors 89 90 inline G4double GetY1HalfLength() const { return GetDy1() ; } 91 inline G4double GetX1HalfLength() const { return GetDx1() ; } 92 inline G4double GetX2HalfLength() const { return GetDx2() ; } 93 inline G4double GetY2HalfLength() const { return GetDy2() ; } 94 inline G4double GetX3HalfLength() const { return GetDx3() ; } 95 inline G4double GetX4HalfLength() const { return GetDx4() ; } 96 inline G4double GetZHalfLength() const { return GetDz() ; } 97 inline G4double GetPhiTwist() const { return GetTwistAngle() ; } 98 inline G4double GetTiltAngleAlpha() const { return GetAlpha() ; } 99 inline G4double GetPolarAngleTheta() const { return GetTheta() ; } 100 inline G4double GetAzimuthalAnglePhi() const { return GetPhi() ; } 101 102 G4GeometryType GetEntityType() const override; 103 104 G4VSolid* Clone() const override; 105 106 std::ostream &StreamInfo(std::ostream& os) const override; 107 108 G4TwistedTrap(__void__&); 109 // Fake default constructor for usage restricted to direct object 110 // persistency for clients requiring preallocation of memory for 111 // persistifiable objects. 112 113 G4TwistedTrap(const G4TwistedTrap& rhs); 114 G4TwistedTrap& operator=(const G4TwistedTrap& rhs); 115 // Copy constructor and assignment operator. 116 } ; 117 118 #endif 119