ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4tgrVolume.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4tgrVolume.hh
1 //
2 // ********************************************************************
3 // * License and Disclaimer *
4 // * *
5 // * The Geant4 software is copyright of the Copyright Holders of *
6 // * the Geant4 Collaboration. It is provided under the terms and *
7 // * conditions of the Geant4 Software License, included in the file *
8 // * LICENSE and available at http://cern.ch/geant4/license . These *
9 // * include a list of copyright holders. *
10 // * *
11 // * Neither the authors of this software system, nor their employing *
12 // * institutes,nor the agencies providing financial support for this *
13 // * work make any representation or warranty, express or implied, *
14 // * regarding this software system or assume any liability for its *
15 // * use. Please see the license in the file LICENSE and URL above *
16 // * for the full disclaimer and the limitation of liability. *
17 // * *
18 // * This code implementation is the result of the scientific and *
19 // * technical work of the GEANT4 collaboration. *
20 // * By using, copying, modifying or distributing the software (or *
21 // * any work based on the software) you agree to acknowledge its *
22 // * use in resulting scientific publications, and indicate your *
23 // * acceptance of all terms of the Geant4 Software license. *
24 // ********************************************************************
25 //
26 //
27 //
28 //
29 // class G4tgrVolume
30 //
31 // Class description:
32 //
33 // Abstract base class to manage the geometry info of any volume.
34 // Volumes created in this class contain the information of a detector volume.
35 // They have associated several detector placements that can be instances of
36 // G4tgrPlace, G4tgrPlaceDivision, G4tgrPlaceDivRep or
37 // G4tgrPlaceParameterisation.
38 // Each detector positioning is done inside a parent. As there can be several
39 // parents, one parent for each volume placement will be written, even if that
40 // means that parents are repeated...
41 
42 // History:
43 // - Created. P.Arce, CIEMAT (November 2007)
44 // -------------------------------------------------------------------------
45 
46 #ifndef G4tgrVolume_h
47 #define G4tgrVolume_h
48 
49 #include "globals.hh"
50 
51 #include <vector>
52 #include <map>
53 
54 class G4tgrSolid;
55 class G4tgrPlace;
56 class G4tgrPlaceDivRep;
58 
60 {
61  public: // with description
62 
63  G4tgrVolume();
64  G4tgrVolume( const std::vector<G4String>& wl );
65  G4tgrVolume( const G4tgrVolume& vol );
66  virtual ~G4tgrVolume();
67 
68  virtual G4tgrPlace* AddPlace( const std::vector<G4String>& wl );
69  // Add a position with the data read from a ':place' tag
70 
71  G4tgrPlaceDivRep* AddPlaceReplica( const std::vector<G4String>& wl );
72  // Add a replicated position
73 
74  G4tgrPlaceParameterisation* AddPlaceParam(const std::vector<G4String>& wl);
75  // Add a parameterised position
76 
77  void AddVisibility( const std::vector<G4String>& wl );
78  // Add visibility flag
79 
80  void AddRGBColour( const std::vector<G4String>& wl );
81  // Add colour
82 
83  void AddCheckOverlaps( const std::vector<G4String>& wl );
84  // Add check overlaps flag
85 
86  // Accessors
87 
88  const G4String& GetName() const {return theName;}
89  void SetName(const G4String& name) {theName = name;}
90  const G4String& GetType() const {return theType;}
91  G4tgrSolid* GetSolid() const {return theSolid;}
92  const G4String& GetMaterialName() const {return theMaterialName;}
93 
94  const std::vector<G4tgrPlace*> GetPlacements() const {return thePlacements;}
96  G4double* GetColour() const {return theRGBColour;}
97  G4double* GetRGBColour() const {return theRGBColour;}
98 
100 
101  virtual G4tgrVolume* GetVolume( G4int ii ) const;
102 
103  friend std::ostream& operator<<(std::ostream& os, const G4tgrVolume& obj);
104 
105  protected:
106 
108  // Name of the volume
110  // Type of the volume
112  // Material of which the corresponding PV will be made of
114  // Solid
115  std::vector<G4tgrPlace*> thePlacements;
116  // Vector of placements
117 
121 };
122 
123 #endif