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
G4VModel.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// John Allison 31st December 1997.
31//
32// Class Description:
33//
34// G4VModel is a base class for visualization models. A model is a
35// graphics-system-indepedent description of a Geant4 component.
36// The key fuctionality of a model is to know how to describe itself
37// to a scene handler. A scene is a collection of models.
38// A special case is made for G4PhysicalVolumeModel - a non-null pointer
39// is to be returned by G4PhysicalVolumeModel::GetG4PhysicalVolumeModel().
40
41#ifndef G4VMODEL_HH
42#define G4VMODEL_HH
43
44#include "globals.hh"
45#include "G4VisExtent.hh"
46#include "G4Transform3D.hh"
47
50
51class G4PhysicalVolumeModel; // Special case - see above.
52
53class G4VModel {
54
55public: // With description
56
57 friend std::ostream& operator << (std::ostream& os, const G4VModel&);
58
60 (const G4Transform3D& modelTransformation = G4Transform3D(),
61 const G4ModelingParameters* = 0);
62
63 virtual ~G4VModel ();
64
66 // The main task of a model is to describe itself to the graphics scene.
67
69
70 const G4String& GetType() const;
71 // The sub-class should set its type, which could be the class
72 // name, or, in the case of G4CallBackModel, it could be the type of
73 // object it is coding.
74
75 virtual G4String GetCurrentDescription () const;
76 // A description which depends on the current state of the model.
77
78 virtual G4String GetCurrentTag () const;
79 // A tag which depends on the current state of the model.
80
81 const G4VisExtent& GetExtent () const;
82 // Extent of visible objects in local coordinate system.
83
85 // A description which does not change and lasts the life of the model.
86
87 const G4String& GetGlobalTag () const;
88 // A tag which does not change and lasts the life of the model.
89
91 // Model transformation, i.e., position and orientation of model in
92 // world. It is the responsibility of the model to apply this
93 // transformation before passing items to the graphics scene.
94
95 // Set methods for above...
97 void SetExtent (const G4VisExtent&);
98 void SetType (const G4String&);
100 void SetGlobalTag (const G4String&);
102
103 virtual G4bool Validate (G4bool warn = true);
104 // Validate, but allow internal changes (hence non-const function).
105
106protected:
107
114
115private:
116
117 // Private copy constructor and assigment operator - copying and
118 // assignment not allowed. Keeps CodeWizard happy.
119 G4VModel (const G4VModel&);
120 G4VModel& operator = (const G4VModel&);
121};
122
123#include "G4VModel.icc"
124
125#endif
HepGeom::Transform3D G4Transform3D
bool G4bool
Definition: G4Types.hh:67
void SetType(const G4String &)
const G4ModelingParameters * GetModelingParameters() const
void SetGlobalDescription(const G4String &)
G4VisExtent fExtent
Definition: G4VModel.hh:111
void SetModelingParameters(const G4ModelingParameters *)
friend std::ostream & operator<<(std::ostream &os, const G4VModel &)
Definition: G4VModel.cc:63
virtual G4String GetCurrentDescription() const
Definition: G4VModel.cc:54
virtual G4String GetCurrentTag() const
Definition: G4VModel.cc:49
void SetGlobalTag(const G4String &)
G4String fGlobalDescription
Definition: G4VModel.hh:110
void SetExtent(const G4VisExtent &)
const G4String & GetGlobalTag() const
virtual ~G4VModel()
Definition: G4VModel.cc:47
virtual G4bool Validate(G4bool warn=true)
Definition: G4VModel.cc:59
const G4VisExtent & GetExtent() const
const G4String & GetGlobalDescription() const
const G4String & GetType() const
G4String fType
Definition: G4VModel.hh:108
const G4ModelingParameters * fpMP
Definition: G4VModel.hh:113
const G4Transform3D & GetTransformation() const
G4Transform3D fTransform
Definition: G4VModel.hh:112
virtual void DescribeYourselfTo(G4VGraphicsScene &)=0
void SetTransformation(const G4Transform3D &)
G4String fGlobalTag
Definition: G4VModel.hh:109