Geant4 Cross Reference |
1 // 1 // 2 // ******************************************* 2 // ******************************************************************** 3 // * License and Disclaimer << 3 // * DISCLAIMER * 4 // * 4 // * * 5 // * The Geant4 software is copyright of th << 5 // * The following disclaimer summarizes all the specific disclaimers * 6 // * the Geant4 Collaboration. It is provided << 6 // * of contributors to this software. The specific disclaimers,which * 7 // * conditions of the Geant4 Software License << 7 // * govern, are listed with their locations in: * 8 // * LICENSE and available at http://cern.ch/ << 8 // * http://cern.ch/geant4/license * 9 // * include a list of copyright holders. << 10 // * 9 // * * 11 // * Neither the authors of this software syst 10 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing fin 11 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warran 12 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assum 13 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file << 14 // * use. * 16 // * for the full disclaimer and the limitatio << 17 // * 15 // * * 18 // * This code implementation is the result << 16 // * This code implementation is the intellectual property of the * 19 // * technical work of the GEANT4 collaboratio << 17 // * GEANT4 collaboration. * 20 // * By using, copying, modifying or distri << 18 // * By copying, distributing or modifying the Program (or any work * 21 // * any work based on the software) you ag << 19 // * based on the Program) you indicate your acceptance of this * 22 // * use in resulting scientific publicati << 20 // * statement, and all its terms. * 23 // * acceptance of all terms of the Geant4 Sof << 24 // ******************************************* 21 // ******************************************************************** 25 // 22 // >> 23 // >> 24 // $Id: G4Trap.icc,v 1.4 2004/12/02 09:31:28 gcosmo Exp $ >> 25 // GEANT4 tag $Name: geant4-07-00-patch-01 $ >> 26 // >> 27 // -------------------------------------------------------------------- >> 28 // GEANT 4 inline definitions file >> 29 // >> 30 // G4Trap.icc >> 31 // 26 // Implementation of inline methods of G4Trap 32 // Implementation of inline methods of G4Trap 27 // ------------------------------------------- 33 // -------------------------------------------------------------------- 28 34 29 inline 35 inline 30 G4double G4Trap::GetZHalfLength() const 36 G4double G4Trap::GetZHalfLength() const 31 { 37 { 32 return fDz ; 38 return fDz ; 33 } 39 } 34 40 35 inline 41 inline 36 G4ThreeVector G4Trap::GetSymAxis() const 42 G4ThreeVector G4Trap::GetSymAxis() const 37 { 43 { 38 G4double cosTheta = 1.0/std::sqrt(1+fTthetaC 44 G4double cosTheta = 1.0/std::sqrt(1+fTthetaCphi*fTthetaCphi + 39 fTthetaSphi*fTt 45 fTthetaSphi*fTthetaSphi) ; 40 46 41 return { fTthetaCphi*cosTheta, fTthetaSphi*c << 47 return G4ThreeVector(fTthetaCphi*cosTheta, >> 48 fTthetaSphi*cosTheta, >> 49 cosTheta) ; 42 } 50 } 43 51 44 inline 52 inline 45 G4double G4Trap::GetYHalfLength1() const 53 G4double G4Trap::GetYHalfLength1() const 46 { 54 { 47 return fDy1 ; 55 return fDy1 ; 48 } 56 } 49 57 50 inline 58 inline 51 G4double G4Trap::GetXHalfLength1() const 59 G4double G4Trap::GetXHalfLength1() const 52 { 60 { 53 return fDx1 ; 61 return fDx1 ; 54 } 62 } 55 63 56 inline 64 inline 57 G4double G4Trap::GetXHalfLength2() const 65 G4double G4Trap::GetXHalfLength2() const 58 { 66 { 59 return fDx2 ; 67 return fDx2 ; 60 } 68 } 61 69 62 inline 70 inline 63 G4double G4Trap::GetTanAlpha1() const 71 G4double G4Trap::GetTanAlpha1() const 64 { 72 { 65 return fTalpha1 ; 73 return fTalpha1 ; 66 } 74 } 67 75 68 inline 76 inline 69 G4double G4Trap::GetYHalfLength2() const 77 G4double G4Trap::GetYHalfLength2() const 70 { 78 { 71 return fDy2 ; 79 return fDy2 ; 72 } 80 } 73 81 74 inline 82 inline 75 G4double G4Trap::GetXHalfLength3() const 83 G4double G4Trap::GetXHalfLength3() const 76 { 84 { 77 return fDx3 ; 85 return fDx3 ; 78 } 86 } 79 87 80 inline 88 inline 81 G4double G4Trap::GetXHalfLength4() const 89 G4double G4Trap::GetXHalfLength4() const 82 { 90 { 83 return fDx4 ; 91 return fDx4 ; 84 } 92 } 85 93 86 inline 94 inline 87 G4double G4Trap::GetTanAlpha2() const 95 G4double G4Trap::GetTanAlpha2() const 88 { 96 { 89 return fTalpha2 ; 97 return fTalpha2 ; 90 } 98 } 91 99 92 inline 100 inline 93 TrapSidePlane G4Trap::GetSidePlane( G4int n ) 101 TrapSidePlane G4Trap::GetSidePlane( G4int n ) const 94 { 102 { 95 return fPlanes[n] ; 103 return fPlanes[n] ; 96 } 104 } 97 105 98 inline G4double G4Trap::GetPhi() const << 99 { << 100 return std::atan2(fTthetaSphi,fTthetaCphi); << 101 } << 102 << 103 inline G4double G4Trap::GetTheta() const << 104 { << 105 return std::atan(std::sqrt(fTthetaCphi*fTth << 106 +fTthetaSphi*fTt << 107 } << 108 106 109 inline G4double G4Trap::GetAlpha1() const << 107 /////////////////////////////////////////////////// 110 { << 108 // 111 return std::atan(fTalpha1); << 109 // Return the volume as a bit modified Trd 112 } << 113 110 114 inline G4double G4Trap::GetAlpha2() const << 111 inline >> 112 G4double G4Trap::GetCubicVolume() 115 { 113 { 116 return std::atan(fTalpha2); << 114 if(fCubicVolume != 0.) ; >> 115 else fCubicVolume = fDz*( (fDx1+fDx2+fDx3+fDx4)*(fDy1+fDy2) >> 116 + (fDx4+fDx3-fDx2-fDx1)*(fDy2-fDy1)/3 ); >> 117 return fCubicVolume; 117 } 118 } 118 119