G4LogicalBorderSurface.hh

Go to the documentation of this file.
00001 //
00002 // ********************************************************************
00003 // * License and Disclaimer                                           *
00004 // *                                                                  *
00005 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
00006 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
00007 // * conditions of the Geant4 Software License,  included in the file *
00008 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
00009 // * include a list of copyright holders.                             *
00010 // *                                                                  *
00011 // * Neither the authors of this software system, nor their employing *
00012 // * institutes,nor the agencies providing financial support for this *
00013 // * work  make  any representation or  warranty, express or implied, *
00014 // * regarding  this  software system or assume any liability for its *
00015 // * use.  Please see the license in the file  LICENSE  and URL above *
00016 // * for the full disclaimer and the limitation of liability.         *
00017 // *                                                                  *
00018 // * This  code  implementation is the result of  the  scientific and *
00019 // * technical work of the GEANT4 collaboration.                      *
00020 // * By using,  copying,  modifying or  distributing the software (or *
00021 // * any work based  on the software)  you  agree  to acknowledge its *
00022 // * use  in  resulting  scientific  publications,  and indicate your *
00023 // * acceptance of all terms of the Geant4 Software license.          *
00024 // ********************************************************************
00025 //
00026 //
00027 // $Id$
00028 //
00029 // class G4LogicalBorderSurface
00030 //
00031 // Class description:
00032 //
00033 // A Logical Surface class for surfaces defined by the boundary
00034 // of two physical volumes.
00035 
00036 // History:
00037 // -------
00038 // Created:     1997-06-17
00039 // Author:      John Apostolakis (John.Apostolakis@cern.ch)
00040 //
00041 // --------------------------------------------------------------------
00042 #ifndef G4LogicalBorderSurface_h
00043 #define G4LogicalBorderSurface_h 1
00044 
00045 #include <vector>
00046 
00047 #include "G4LogicalSurface.hh"
00048 #include "G4VPhysicalVolume.hh"
00049 
00050 class G4VPhysicalVolume;
00051 class G4LogicalBorderSurface;
00052 
00053 typedef std::vector<G4LogicalBorderSurface*> G4LogicalBorderSurfaceTable;
00054 
00055 class G4LogicalBorderSurface : public G4LogicalSurface
00056 {
00057 
00058   public:  // with description
00059 
00060     G4LogicalBorderSurface( const G4String& name,
00061                                   G4VPhysicalVolume* vol1, 
00062                                   G4VPhysicalVolume* vol2,
00063                                   G4SurfaceProperty* surfaceProperty );
00064     ~G4LogicalBorderSurface();
00065       // Constructor and destructor
00066 
00067     static G4LogicalBorderSurface* GetSurface( const G4VPhysicalVolume* vol1,
00068                                                const G4VPhysicalVolume* vol2 );
00069     inline void SetPhysicalVolumes( G4VPhysicalVolume* vol1,
00070                                     G4VPhysicalVolume* vol2 );
00071     inline const G4VPhysicalVolume* GetVolume1() const;
00072     inline const G4VPhysicalVolume* GetVolume2() const;
00073       // Generic accessors.
00074 
00075     inline void SetVolume1( G4VPhysicalVolume* vol1 );
00076     inline void SetVolume2( G4VPhysicalVolume* vol2 );
00077       // To use with care!
00078 
00079     static void CleanSurfaceTable();
00080     static const G4LogicalBorderSurfaceTable* GetSurfaceTable();
00081     static size_t GetNumberOfBorderSurfaces();
00082     static void DumpInfo(); 
00083       // To handle the table of surfaces.
00084 
00085     G4int operator==( const G4LogicalBorderSurface &right ) const;
00086     G4int operator!=( const G4LogicalBorderSurface &right ) const;
00087       // Operators.
00088 
00089   private:
00090 
00091     G4LogicalBorderSurface(const G4LogicalBorderSurface &right);
00092     const G4LogicalBorderSurface& operator=(const G4LogicalBorderSurface &right);
00093 
00094   private:
00095 
00096     G4VPhysicalVolume* Volume1;  // Physical Volume pointer on side 1
00097     G4VPhysicalVolume* Volume2;  // Physical Volume pointer on side 2
00098 
00099     static G4LogicalBorderSurfaceTable theBorderSurfaceTable;
00100       // The static Table of BorderSurfaces.
00101 };
00102 
00103 // ********************************************************************
00104 // Inline methods
00105 // ********************************************************************
00106 
00107 #include "G4LogicalBorderSurface.icc"
00108 
00109 #endif /* G4LogicalBorderSurface_h */
00110 

Generated on Mon May 27 17:48:49 2013 for Geant4 by  doxygen 1.4.7