Geant4  10.02.p03
CexmcScenePrimitives Class Reference

#include <CexmcScenePrimitives.hh>

Inheritance diagram for CexmcScenePrimitives:
Collaboration diagram for CexmcScenePrimitives:

Classes

struct  CexmcRadialLine
 

Public Member Functions

 CexmcScenePrimitives (CexmcSetup *setup)
 
 ~CexmcScenePrimitives ()
 
void DescribeYourselfTo (G4VGraphicsScene &scene)
 
void MarkTargetCenter (G4bool on=true)
 
void DrawRadialLine (const G4ThreeVector &line)
 
void HighlightInnerCrystals (G4bool=true)
 
void ClearRadialLines (void)
 
void SetColour (CexmcSPType primitive, const G4Colour &colour)
 
- Public Member Functions inherited from G4VModel
 G4VModel (const G4Transform3D &modelTransformation=G4Transform3D(), const G4ModelingParameters *=0)
 
virtual ~G4VModel ()
 
const G4ModelingParametersGetModelingParameters () const
 
const G4StringGetType () const
 
virtual G4String GetCurrentDescription () const
 
virtual G4String GetCurrentTag () const
 
const G4VisExtentGetExtent () const
 
const G4StringGetGlobalDescription () const
 
const G4StringGetGlobalTag () const
 
const G4Transform3DGetTransformation () const
 
void SetModelingParameters (const G4ModelingParameters *)
 
void SetExtent (const G4VisExtent &)
 
void SetType (const G4String &)
 
void SetGlobalDescription (const G4String &)
 
void SetGlobalTag (const G4String &)
 
void SetTransformation (const G4Transform3D &)
 
virtual G4bool Validate (G4bool warn=true)
 

Private Types

typedef std::vector< CexmcRadialLineCexmcRadialLines
 
typedef std::map< CexmcSPType, G4ColourCexmcSPColourMap
 

Private Member Functions

void DrawRadialLine (G4VGraphicsScene &scene, const CexmcRadialLine *rLine)
 
void MarkTargetCenter (G4VGraphicsScene &scene)
 
void HighlightInnerCrystals (G4VGraphicsScene &scene)
 
void UpdateScene (void)
 

Private Attributes

CexmcSetupsetup
 
G4bool markTargetCenter
 
G4bool highlightInnerCrystals
 
CexmcRadialLines radialLines
 
CexmcSPColourMap spColours
 
CexmcScenePrimitivesMessengermessenger
 

Additional Inherited Members

- Protected Attributes inherited from G4VModel
G4String fType
 
G4String fGlobalTag
 
G4String fGlobalDescription
 
G4VisExtent fExtent
 
G4Transform3D fTransform
 
const G4ModelingParametersfpMP
 

Detailed Description

Definition at line 67 of file CexmcScenePrimitives.hh.

Member Typedef Documentation

◆ CexmcRadialLines

Definition at line 83 of file CexmcScenePrimitives.hh.

◆ CexmcSPColourMap

Definition at line 85 of file CexmcScenePrimitives.hh.

Constructor & Destructor Documentation

◆ CexmcScenePrimitives()

CexmcScenePrimitives::CexmcScenePrimitives ( CexmcSetup setup)
explicit

Definition at line 71 of file CexmcScenePrimitives.cc.

71  :
72  setup( setup ), markTargetCenter( false ), highlightInnerCrystals( false ),
73  messenger( NULL )
74 {
77  spColours[ CexmcTargetCenterMark_SP ] = CexmcDefaultSPColour;
78  spColours[ CexmcRadialLine_SP ] = CexmcDefaultSPColour;
79  spColours[ CexmcInnerCrystalsHl_SP ] = CexmcDefaultSPColour;
80 }
const G4String CexmcScenePrimitivesDescription("CexmcScenePrimitives")
CexmcScenePrimitivesMessenger * messenger
void SetGlobalDescription(const G4String &)
Here is the call graph for this function:

◆ ~CexmcScenePrimitives()

CexmcScenePrimitives::~CexmcScenePrimitives ( )

Definition at line 83 of file CexmcScenePrimitives.cc.

84 {
85  delete messenger;
86 }
CexmcScenePrimitivesMessenger * messenger

Member Function Documentation

◆ ClearRadialLines()

void CexmcScenePrimitives::ClearRadialLines ( void  )
inline

Definition at line 161 of file CexmcScenePrimitives.hh.

162 {
163  radialLines.clear();
164  UpdateScene();
165 }
CexmcRadialLines radialLines
Here is the call graph for this function:
Here is the caller graph for this function:

◆ DescribeYourselfTo()

void CexmcScenePrimitives::DescribeYourselfTo ( G4VGraphicsScene scene)
virtual

Implements G4VModel.

Definition at line 89 of file CexmcScenePrimitives.cc.

90 {
91  if ( markTargetCenter )
92  MarkTargetCenter( scene );
94  HighlightInnerCrystals( scene );
95  for ( CexmcRadialLines::const_iterator k( radialLines.begin() );
96  k != radialLines.end(); ++k )
97  {
98  DrawRadialLine( scene, &*k );
99  }
100 }
void MarkTargetCenter(G4bool on=true)
CexmcRadialLines radialLines
void HighlightInnerCrystals(G4bool=true)
void DrawRadialLine(const G4ThreeVector &line)
Here is the call graph for this function:

◆ DrawRadialLine() [1/2]

void CexmcScenePrimitives::DrawRadialLine ( const G4ThreeVector line)
inline

Definition at line 140 of file CexmcScenePrimitives.hh.

141 {
142  radialLines.push_back( line );
143  UpdateScene();
144 }
CexmcRadialLines radialLines
Here is the call graph for this function:
Here is the caller graph for this function:

◆ DrawRadialLine() [2/2]

void CexmcScenePrimitives::DrawRadialLine ( G4VGraphicsScene scene,
const CexmcRadialLine rLine 
)
private

Definition at line 120 of file CexmcScenePrimitives.cc.

122 {
123  G4double theta( rLine->theta * deg );
124  G4double phi( rLine->phi * deg );
125  G4double length( rLine->length * cm );
126  G4Point3D radialLineEnd( - std::sin( theta ) * std::cos( phi ) * length,
127  std::sin( theta ) * std::sin( phi ) * length,
128  std::cos( theta ) * length );
129 
130  G4Polyline line;
131  line.push_back( G4ThreeVector() );
132  line.push_back( radialLineEnd );
133 
134  G4VisAttributes visAttributes( spColours[ CexmcRadialLine_SP ] );
135  visAttributes.SetLineWidth( CexmcRadialLineWidth );
136  line.SetVisAttributes( visAttributes );
137 
138  G4Circle circle;
139  circle.SetScreenSize( CexmcRadialLineCapScreenSize );
140  circle.SetFillStyle( G4Circle::filled );
142 
143  const G4AffineTransform & transform( setup->GetTargetTransform() );
144  G4Transform3D transform3D( G4RotationMatrix(),
145  transform.NetTranslation() );
146 
147  scene.BeginPrimitives( transform3D );
148  scene.AddPrimitive( circle );
149  scene.AddPrimitive( line );
150  scene.EndPrimitives();
151 }
static const double cm
Definition: G4SIunits.hh:118
CLHEP::Hep3Vector G4ThreeVector
CLHEP::HepRotation G4RotationMatrix
void SetFillStyle(FillStyle)
virtual void BeginPrimitives(const G4Transform3D &objectTransformation=G4Transform3D())=0
virtual void AddPrimitive(const G4Polyline &)=0
static const double deg
Definition: G4SIunits.hh:151
void SetVisAttributes(const G4VisAttributes *)
Definition: G4Visible.cc:80
virtual void EndPrimitives()=0
double G4double
Definition: G4Types.hh:76
const G4AffineTransform & GetTargetTransform(void) const
Definition: CexmcSetup.hh:161
void SetScreenSize(G4double)
Here is the call graph for this function:

◆ HighlightInnerCrystals() [1/2]

void CexmcScenePrimitives::HighlightInnerCrystals ( G4bool  on = true)
inline

Definition at line 154 of file CexmcScenePrimitives.hh.

155 {
157  UpdateScene();
158 }
Here is the call graph for this function:
Here is the caller graph for this function:

◆ HighlightInnerCrystals() [2/2]

void CexmcScenePrimitives::HighlightInnerCrystals ( G4VGraphicsScene scene)
private

Definition at line 154 of file CexmcScenePrimitives.cc.

155 {
156  const CexmcSetup::CalorimeterGeometryData & calorimeterGeometry(
158  G4double icWidth( calorimeterGeometry.crystalWidth *
159  ( calorimeterGeometry.nCrystalsInRow - 2 ) / 2 );
160  G4double icHeight( calorimeterGeometry.crystalHeight *
161  ( calorimeterGeometry.nCrystalsInColumn - 2 ) / 2 );
162  G4double icLength( calorimeterGeometry.crystalLength / 2 );
163  icWidth = icWidth < 0 ? 0 : icWidth;
164  icHeight = icHeight < 0 ? 0 : icHeight;
165 
166  G4PolyhedronBox innerCrystals( icWidth, icHeight, icLength );
168  visAttributes.SetLineWidth( CexmcICHlLineLineWidth );
169  innerCrystals.SetVisAttributes( visAttributes );
170 
171  const G4AffineTransform & transformLeft(
173  G4Transform3D transform3DLeft(
174  transformLeft.NetRotation().inverse(),
175  transformLeft.NetTranslation() );
176  const G4AffineTransform & transformRight(
178  G4Transform3D transform3DRight(
179  transformRight.NetRotation().inverse(),
180  transformRight.NetTranslation() );
181 
182  scene.BeginPrimitives( transform3DLeft );
183  scene.AddPrimitive( innerCrystals );
184  scene.EndPrimitives();
185  scene.BeginPrimitives( transform3DRight );
186  scene.AddPrimitive( innerCrystals );
187  scene.EndPrimitives();
188 }
virtual void BeginPrimitives(const G4Transform3D &objectTransformation=G4Transform3D())=0
virtual void AddPrimitive(const G4Polyline &)=0
const G4AffineTransform & GetCalorimeterRightTransform(void) const
Definition: CexmcSetup.hh:174
const G4AffineTransform & GetCalorimeterLeftTransform(void) const
Definition: CexmcSetup.hh:167
virtual void EndPrimitives()=0
double G4double
Definition: G4Types.hh:76
const CalorimeterGeometryData & GetCalorimeterGeometry(void) const
Definition: CexmcSetup.hh:182
Here is the call graph for this function:

◆ MarkTargetCenter() [1/2]

void CexmcScenePrimitives::MarkTargetCenter ( G4bool  on = true)
inline

Definition at line 147 of file CexmcScenePrimitives.hh.

148 {
149  markTargetCenter = on;
150  UpdateScene();
151 }
Here is the call graph for this function:
Here is the caller graph for this function:

◆ MarkTargetCenter() [2/2]

void CexmcScenePrimitives::MarkTargetCenter ( G4VGraphicsScene scene)
private

Definition at line 103 of file CexmcScenePrimitives.cc.

104 {
105  G4Circle circle;
106  circle.SetScreenSize( CexmcMarkerScreenSize );
107  circle.SetFillStyle( G4Circle::filled );
109 
110  const G4AffineTransform & transform( setup->GetTargetTransform() );
111  G4Transform3D transform3D( G4RotationMatrix(),
112  transform.NetTranslation() );
113 
114  scene.BeginPrimitives( transform3D );
115  scene.AddPrimitive( circle );
116  scene.EndPrimitives();
117 }
CLHEP::HepRotation G4RotationMatrix
void SetFillStyle(FillStyle)
virtual void BeginPrimitives(const G4Transform3D &objectTransformation=G4Transform3D())=0
virtual void AddPrimitive(const G4Polyline &)=0
void SetVisAttributes(const G4VisAttributes *)
Definition: G4Visible.cc:80
virtual void EndPrimitives()=0
const G4AffineTransform & GetTargetTransform(void) const
Definition: CexmcSetup.hh:161
void SetScreenSize(G4double)
Here is the call graph for this function:

◆ SetColour()

void CexmcScenePrimitives::SetColour ( CexmcSPType  primitive,
const G4Colour colour 
)
inline

Definition at line 133 of file CexmcScenePrimitives.hh.

135 {
136  spColours[ primitive ] = colour;
137 }
Here is the caller graph for this function:

◆ UpdateScene()

void CexmcScenePrimitives::UpdateScene ( void  )
inlineprivate

Definition at line 168 of file CexmcScenePrimitives.hh.

169 {
171  if ( visManager )
172  visManager->NotifyHandlers();
173 }
static G4VVisManager * GetConcreteInstance()
Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ highlightInnerCrystals

G4bool CexmcScenePrimitives::highlightInnerCrystals
private

Definition at line 122 of file CexmcScenePrimitives.hh.

◆ markTargetCenter

G4bool CexmcScenePrimitives::markTargetCenter
private

Definition at line 120 of file CexmcScenePrimitives.hh.

◆ messenger

CexmcScenePrimitivesMessenger* CexmcScenePrimitives::messenger
private

Definition at line 129 of file CexmcScenePrimitives.hh.

◆ radialLines

CexmcRadialLines CexmcScenePrimitives::radialLines
private

Definition at line 124 of file CexmcScenePrimitives.hh.

◆ setup

CexmcSetup* CexmcScenePrimitives::setup
private

Definition at line 118 of file CexmcScenePrimitives.hh.

◆ spColours

CexmcSPColourMap CexmcScenePrimitives::spColours
private

Definition at line 126 of file CexmcScenePrimitives.hh.


The documentation for this class was generated from the following files: