Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2024-09-28 07:03:43

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 // Want to help ROOT dictionary builder, but at the same time have "typedef CLHEP:: ..." working in the source code;
0014 // FIXME: a better way to handle this?;
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)/*, m_CopyCounter(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   //G4VSolid *GetSolid( void ) { return m_Solid; };
0045 
0046   void SetColor(const G4Colour &color);
0047 
0048   void PlaceWedgeCopies(G4VPhysicalVolume *mother);
0049   virtual void AdjustWedgeCopies(G4VPhysicalVolume * /*mother*/) {};
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   //unsigned m_CopyCounter;              //!
0069 
0070  public:
0071   // This call is deferred to the moment after all cuts on this solid are applied;
0072   void DefineLogicalVolume( void );
0073 
0074 #ifndef DISABLE_ROOT_IO
0075   ClassDef(G4Object, 2)
0076 #endif
0077 };
0078 
0079 #endif