File indexing completed on 2025-01-18 10:01:24
0001
0002 #include <TObject.h>
0003
0004 #ifndef _G4_OBJECT_
0005 #define _G4_OBJECT_
0006
0007 class G4Material;
0008 class G4VPhysicalVolume;
0009 class G4LogicalVolume;
0010 class G4Colour;
0011 class G4VSolid;
0012 class G4OpticalSurface;
0013
0014
0015 #ifdef _GEANT_SOURCE_CODE_
0016 #include <G4RotationMatrix.hh>
0017 #include <G4ThreeVector.hh>
0018 #else
0019 class G4RotationMatrix;
0020 class G4ThreeVector;
0021 #endif
0022
0023 class G4ObjectCopy: public TObject {
0024 public:
0025 G4ObjectCopy(G4VPhysicalVolume *phys = 0): m_PhysicalVolume(phys) {};
0026 ~G4ObjectCopy() {};
0027
0028 G4VPhysicalVolume *m_PhysicalVolume;
0029
0030 #ifndef DISABLE_ROOT_IO
0031 ClassDef(G4ObjectCopy, 1);
0032 #endif
0033 };
0034
0035 class G4Object: public TObject {
0036 public:
0037 G4Object(G4VSolid *solid = 0, G4Material *material = 0): m_Solid(solid), m_Material(material),
0038 m_LogicalVolume(0) {};
0039 ~G4Object() {};
0040
0041 void DefineIntersectionCut(G4VSolid *cut, G4RotationMatrix *rotation, const G4ThreeVector &translation, bool flip);
0042 void DefineSubtractionCut (G4VSolid *cut, G4RotationMatrix *rotation, const G4ThreeVector &translation, bool flip);
0043 void DefineUnion(G4VSolid *solid);
0044
0045
0046 void SetColor(const G4Colour &color);
0047
0048 void PlaceWedgeCopies(G4VPhysicalVolume *mother);
0049 virtual void AdjustWedgeCopies(G4VPhysicalVolume * ) {};
0050
0051 G4LogicalVolume *GetLogicalVolume( void ) const { return m_LogicalVolume; };
0052
0053 virtual G4ObjectCopy *CreateCopy(G4VPhysicalVolume *phys) { return new G4ObjectCopy(phys); };
0054 G4ObjectCopy *GetCopy(unsigned id) const {
0055 return (id < m_Copies.size() ? m_Copies[id] : 0);
0056 };
0057
0058 virtual G4OpticalSurface *GetMirrorSurface( void ) const { return 0; };
0059
0060 protected:
0061 G4VSolid *m_Solid;
0062 std::vector<G4ObjectCopy*> m_Copies;
0063
0064 private:
0065 G4Material *m_Material;
0066
0067 G4LogicalVolume *m_LogicalVolume;
0068
0069
0070 public:
0071
0072 void DefineLogicalVolume( void );
0073
0074 #ifndef DISABLE_ROOT_IO
0075 ClassDef(G4Object, 2)
0076 #endif
0077 };
0078
0079 #endif