Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
G4AssemblyTriplet.hh
Go to the documentation of this file.
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// $Id$
28//
29//
30// Class G4AssemblyTriplet
31//
32// Class description:
33//
34// A class to help place logical or assembly volumes inside a generic
35// containers (like STL vector ) together with information about its rotation,
36// placement and eventually reflection.
37// How to interpret the rotation and translation depends on the class which
38// uses a container of these triplets. The first class using G4AssemblyTriplet
39// is G4AssemblyVolume class.
40// The pointer to the logical or assembly volume is copied so this class
41// does not take its ownership and does not delete the object behind.
42
43// Author: Radovan Chytracek
44// Version: 1.0
45// Date: November 2000
46//
47// History:
48// March 2006, I.Hrivnacova - Extended to support assembly of assemblies
49// of volumes and reflections
50// ----------------------------------------------------------------------
51#ifndef G4_ASSEMBLYTRIPLET_H
52#define G4_ASSEMBLYTRIPLET_H
53
54#include "G4ThreeVector.hh"
55#include "G4RotationMatrix.hh"
56
57class G4LogicalVolume;
59
61{
62 public: // with description
63
65 // Default constructor
66
68 G4ThreeVector& translation,
69 G4RotationMatrix* pRotation,
70 G4bool isReflection = false);
71 // An explicit constructor for a logical volume
72
74 G4ThreeVector& translation,
75 G4RotationMatrix* pRotation,
76 G4bool isReflection = false);
77 // An explicit constructor for an assembly volume
78
80 // Copy constructor
81
83 // Destructor
84
86 // Assignment operator
87
88 inline G4LogicalVolume* GetVolume() const;
89 // Retrieve the logical volume reference
90
91 inline void SetVolume( G4LogicalVolume* pVolume );
92 // Update the logical volume reference
93
95 // Retrieve the assembly volume reference
96
97 inline void SetAssembly( G4AssemblyVolume* pAssembly );
98 // Update the assembly volume reference
99
101 // Retrieve the logical volume translation
102
103 inline void SetTranslation( G4ThreeVector& pVolume );
104 // Update the logical volume translation
105
107 // Retrieve the logical volume rotation
108
109 inline void SetRotation( G4RotationMatrix* pVolume );
110 // Update the logical volume rotation
111
112 inline G4bool IsReflection() const;
113 // Return true if the logical or assembly volume has reflection
114
115 private:
116
117 G4LogicalVolume* fVolume;
118 // A logical volume
119
120 G4ThreeVector fTranslation;
121 // A logical volume translation
122
123 G4RotationMatrix* fRotation;
124 // A logical volume rotation
125
126 private:
127
128 // Member data for handling assemblies of assemblies and reflections
129
130 G4AssemblyVolume* fAssembly;
131 // An assembly volume
132
133 G4bool fIsReflection;
134 // True if the logical or assembly volume has reflection
135};
136
137#include "G4AssemblyTriplet.icc"
138
139#endif // G4_ASSEMBLYTRIPLET_H
bool G4bool
Definition: G4Types.hh:67
void SetTranslation(G4ThreeVector &pVolume)
G4AssemblyTriplet(const G4AssemblyTriplet &second)
void SetVolume(G4LogicalVolume *pVolume)
G4AssemblyTriplet(G4AssemblyVolume *pAssembly, G4ThreeVector &translation, G4RotationMatrix *pRotation, G4bool isReflection=false)
G4LogicalVolume * GetVolume() const
G4AssemblyVolume * GetAssembly() const
void SetRotation(G4RotationMatrix *pVolume)
G4AssemblyTriplet & operator=(const G4AssemblyTriplet &second)
G4bool IsReflection() const
G4ThreeVector GetTranslation() const
G4AssemblyTriplet(G4LogicalVolume *pVolume, G4ThreeVector &translation, G4RotationMatrix *pRotation, G4bool isReflection=false)
G4RotationMatrix * GetRotation() const
void SetAssembly(G4AssemblyVolume *pAssembly)