Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/geometry/solids/CSG/src/G4UBox.cc

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/CSG/src/G4UBox.cc (Version 11.3.0) and /geometry/solids/CSG/src/G4UBox.cc (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 // Implementation for G4UBox wrapper class        
 27 //                                                
 28 // 13.09.13 G.Cosmo, CERN/PH                      
 29 // -------------------------------------------    
 30                                                   
 31 #include "G4Box.hh"                               
 32 #include "G4UBox.hh"                              
 33                                                   
 34 #if ( defined(G4GEOM_USE_USOLIDS) || defined(G    
 35                                                   
 36 #include "G4AffineTransform.hh"                   
 37 #include "G4VPVParameterisation.hh"               
 38 #include "G4BoundingEnvelope.hh"                  
 39                                                   
 40 using namespace CLHEP;                            
 41                                                   
 42 //////////////////////////////////////////////    
 43 //                                                
 44 // Constructor - check & set half widths          
 45                                                   
 46                                                   
 47 G4UBox::G4UBox(const G4String& pName,             
 48                      G4double pX,                 
 49                      G4double pY,                 
 50                      G4double pZ)                 
 51   : Base_t(pName, pX, pY, pZ)                     
 52 {                                                 
 53 }                                                 
 54                                                   
 55 //////////////////////////////////////////////    
 56 //                                                
 57 // Fake default constructor - sets only member    
 58 //                            for usage restri    
 59                                                   
 60 G4UBox::G4UBox( __void__& a )                     
 61   : Base_t(a)                                     
 62 {                                                 
 63 }                                                 
 64                                                   
 65 //////////////////////////////////////////////    
 66 //                                                
 67 // Destructor                                     
 68                                                   
 69 G4UBox::~G4UBox() = default;                      
 70                                                   
 71 //////////////////////////////////////////////    
 72 //                                                
 73 // Copy constructor                               
 74                                                   
 75 G4UBox::G4UBox(const G4UBox& rhs)                 
 76   : Base_t(rhs)                                   
 77 {                                                 
 78 }                                                 
 79                                                   
 80 //////////////////////////////////////////////    
 81 //                                                
 82 // Assignment operator                            
 83                                                   
 84 G4UBox& G4UBox::operator = (const G4UBox& rhs)    
 85 {                                                 
 86    // Check assignment to self                    
 87    //                                             
 88    if (this == &rhs)  { return *this; }           
 89                                                   
 90    // Copy base class data                        
 91    //                                             
 92    Base_t::operator=(rhs);                        
 93                                                   
 94    return *this;                                  
 95 }                                                 
 96                                                   
 97 //////////////////////////////////////////////    
 98 //                                                
 99 // Accessors & modifiers                          
100                                                   
101 G4double G4UBox::GetXHalfLength() const           
102 {                                                 
103   return x();                                     
104 }                                                 
105 G4double G4UBox::GetYHalfLength() const           
106 {                                                 
107   return y();                                     
108 }                                                 
109 G4double G4UBox::GetZHalfLength() const           
110 {                                                 
111   return z();                                     
112 }                                                 
113                                                   
114 void G4UBox::SetXHalfLength(G4double dx)          
115 {                                                 
116   SetX(dx);                                       
117   fRebuildPolyhedron = true;                      
118 }                                                 
119 void G4UBox::SetYHalfLength(G4double dy)          
120 {                                                 
121   SetY(dy);                                       
122   fRebuildPolyhedron = true;                      
123 }                                                 
124 void G4UBox::SetZHalfLength(G4double dz)          
125 {                                                 
126   SetZ(dz);                                       
127   fRebuildPolyhedron = true;                      
128 }                                                 
129                                                   
130 //////////////////////////////////////////////    
131 //                                                
132 // Dispatch to parameterisation for replicatio    
133 // computation & modification.                    
134                                                   
135 void G4UBox::ComputeDimensions(G4VPVParameteri    
136                                const G4int n,     
137                                const G4VPhysic    
138 {                                                 
139   p->ComputeDimensions(*(G4Box*)this,n,pRep);     
140 }                                                 
141                                                   
142 //////////////////////////////////////////////    
143 //                                                
144 // Make a clone of the object                     
145                                                   
146 G4VSolid* G4UBox::Clone() const                   
147 {                                                 
148   return new G4UBox(*this);                       
149 }                                                 
150                                                   
151 //////////////////////////////////////////////    
152 //                                                
153 // Get bounding box                               
154                                                   
155 void G4UBox::BoundingLimits(G4ThreeVector& pMi    
156 {                                                 
157   G4double dx = GetXHalfLength();                 
158   G4double dy = GetYHalfLength();                 
159   G4double dz = GetZHalfLength();                 
160   pMin.set(-dx,-dy,-dz);                          
161   pMax.set( dx, dy, dz);                          
162                                                   
163   // Check correctness of the bounding box        
164   //                                              
165   if (pMin.x() >= pMax.x() || pMin.y() >= pMax    
166   {                                               
167     std::ostringstream message;                   
168     message << "Bad bounding box (min >= max)     
169             << GetName() << " !"                  
170             << "\npMin = " << pMin                
171             << "\npMax = " << pMax;               
172     G4Exception("G4UBox::BoundingLimits()", "G    
173                 JustWarning, message);            
174     StreamInfo(G4cout);                           
175   }                                               
176 }                                                 
177                                                   
178 //////////////////////////////////////////////    
179 //                                                
180 // Calculate extent under transform and specif    
181                                                   
182 G4bool                                            
183 G4UBox::CalculateExtent(const EAxis pAxis,        
184                         const G4VoxelLimits& p    
185                         const G4AffineTransfor    
186                               G4double& pMin,     
187 {                                                 
188   G4ThreeVector bmin, bmax;                       
189                                                   
190   // Get bounding box limits                      
191   BoundingLimits(bmin,bmax);                      
192                                                   
193   // Find extent                                  
194   G4BoundingEnvelope bbox(bmin,bmax);             
195   return bbox.CalculateExtent(pAxis,pVoxelLimi    
196 }                                                 
197                                                   
198                                                   
199 //////////////////////////////////////////////    
200 //                                                
201 // Create polyhedron for visualization            
202                                                   
203 G4Polyhedron* G4UBox::CreatePolyhedron() const    
204 {                                                 
205   return new G4PolyhedronBox(GetXHalfLength(),    
206                              GetYHalfLength(),    
207                              GetZHalfLength())    
208 }                                                 
209                                                   
210 #endif  // G4GEOM_USE_USOLIDS                     
211