Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/geometry/solids/specific/include/G4TwistTubsSide.hh

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /geometry/solids/specific/include/G4TwistTubsSide.hh (Version 11.3.0) and /geometry/solids/specific/include/G4TwistTubsSide.hh (Version 7.1)


  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 // G4TwistTubsSide                                
 27 //                                                
 28 // Class description:                             
 29 //                                                
 30 // Class describing a twisted boundary surface    
 31                                                   
 32 // 01-Aug-2002 - Kotoyo Hoshina (hoshina@hepbu    
 33 // 13-Nov-2003 - O.Link (Oliver.Link@cern.ch),    
 34 //               from original version in Jupi    
 35 // -------------------------------------------    
 36 #ifndef G4TWISTTUBSSIDE_HH                        
 37 #define G4TWISTTUBSSIDE_HH                        
 38                                                   
 39 #include "G4VTwistSurface.hh"                     
 40                                                   
 41 class G4TwistTubsSide : public G4VTwistSurface    
 42 {                                                 
 43   public:                                         
 44                                                   
 45     G4TwistTubsSide(const G4String&         na    
 46                     const G4RotationMatrix& ro    
 47                     const G4ThreeVector&    tl    
 48                           G4int    handedness,    
 49                     const G4double kappa,         
 50                     const EAxis    axis0 = kXA    
 51                     const EAxis    axis1 = kZA    
 52                           G4double axis0min =     
 53                           G4double axis1min =     
 54                           G4double axis0max =     
 55                           G4double axis1max =     
 56                                                   
 57     G4TwistTubsSide(const G4String& name,         
 58                           G4double  EndInnerRa    
 59                           G4double  EndOuterRa    
 60                           G4double  DPhi,         
 61                           G4double  EndPhi[2],    
 62                           G4double  EndZ[2],      
 63                           G4double  InnerRadiu    
 64                           G4double  OuterRadiu    
 65                           G4double  Kappa,        
 66                           G4int     handedness    
 67                                                   
 68    ~G4TwistTubsSide() override;                   
 69                                                   
 70     G4ThreeVector GetNormal(const G4ThreeVecto    
 71                                   G4bool isGlo    
 72                                                   
 73     G4int DistanceToSurface(const G4ThreeVecto    
 74                             const G4ThreeVecto    
 75                                   G4ThreeVecto    
 76                                   G4double  di    
 77                                   G4int     ar    
 78                                   G4bool    is    
 79                             EValidate validate    
 80                                                   
 81     G4int DistanceToSurface(const G4ThreeVecto    
 82                                   G4ThreeVecto    
 83                                   G4double        
 84                                   G4int           
 85                                                   
 86     inline G4ThreeVector ProjectAtPXPZ(const G    
 87                                              G    
 88                                                   
 89     inline G4ThreeVector SurfacePoint(G4double    
 90                                       G4bool i    
 91     inline G4double GetBoundaryMin(G4double ph    
 92     inline G4double GetBoundaryMax(G4double ph    
 93     inline G4double GetSurfaceArea() override     
 94     void GetFacets( G4int m, G4int n, G4double    
 95                     G4int faces[][4], G4int is    
 96                                                   
 97     G4TwistTubsSide(__void__&);                   
 98       // Fake default constructor for usage re    
 99       // persistency for clients requiring pre    
100       // persistifiable objects.                  
101                                                   
102   private:                                        
103                                                   
104     G4double DistanceToPlane(const G4ThreeVect    
105                              const G4ThreeVect    
106                              const G4ThreeVect    
107                              const G4ThreeVect    
108                              const G4ThreeVect    
109                              const G4int          
110                                    G4ThreeVect    
111                                    G4ThreeVect    
112                                                   
113     G4int GetAreaCode(const G4ThreeVector& xx,    
114                             G4bool         wit    
115                                                   
116     void SetCorners() override;                   
117                                                   
118     void SetCorners( G4double endInnerRad[2],     
119                      G4double endOuterRad[2],     
120                      G4double endPhi[2],          
121                      G4double endZ[2] ) ;         
122                                                   
123     void SetBoundaries() override;                
124                                                   
125   private:                                        
126                                                   
127     G4double       fKappa;          // std::ta    
128 };                                                
129                                                   
130                                                   
131 //============================================    
132 // inline functions                               
133 //============================================    
134                                                   
135 inline                                            
136 G4ThreeVector G4TwistTubsSide::ProjectAtPXPZ(c    
137                                                   
138 {                                                 
139   // Get Rho at p.z() on Hyperbolic Surface.      
140   G4ThreeVector tmpp;                             
141   if (isglobal) { tmpp = fRot.inverse()*p - fT    
142   else          { tmpp = p; }                     
143   G4ThreeVector xx(p.x(), p.x() * fKappa * p.z    
144   if (isglobal) { return (fRot * xx + fTrans);    
145   return xx;                                      
146 }                                                 
147                                                   
148 inline                                            
149 G4ThreeVector                                     
150 G4TwistTubsSide::SurfacePoint(G4double x, G4do    
151 {                                                 
152   G4ThreeVector SurfPoint( x , x * fKappa * z     
153                                                   
154   if (isGlobal) { return (fRot * SurfPoint + f    
155   return SurfPoint;                               
156 }                                                 
157                                                   
158 inline                                            
159 G4double G4TwistTubsSide::GetBoundaryMin(G4dou    
160 {                                                 
161   return  fAxisMin[0] ;  // inner radius at z     
162 }                                                 
163                                                   
164 inline                                            
165 G4double G4TwistTubsSide::GetBoundaryMax(G4dou    
166 {                                                 
167   return  fAxisMax[0] ;  // outer radius at z     
168 }                                                 
169                                                   
170 inline                                            
171 G4double G4TwistTubsSide::GetSurfaceArea()        
172 {                                                 
173   // approximation only                           
174   return ( fAxisMax[0] - fAxisMin[0] ) * ( fAx    
175 }                                                 
176                                                   
177 #endif                                            
178