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 G4ModelingParameters * GetModelingParameters () const
 
const G4String & GetType () const
 
virtual G4String GetCurrentDescription () const
 
virtual G4String GetCurrentTag () const
 
const G4VisExtent & GetExtent () const
 
const G4String & GetGlobalDescription () const
 
const G4String & GetGlobalTag () const
 
const G4Transform3D & GetTransformation () 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< CexmcRadialLine > CexmcRadialLines
 
typedef std::map< CexmcSPType, G4Colour > CexmcSPColourMap
 

Private Member Functions

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

Private Attributes

CexmcSetup * setup
 
G4bool markTargetCenter
 
G4bool highlightInnerCrystals
 
CexmcRadialLines radialLines
 
CexmcSPColourMap spColours
 
CexmcScenePrimitivesMessenger * messenger
 

Additional Inherited Members

- Protected Attributes inherited from G4VModel
G4String fType
 
G4String fGlobalTag
 
G4String fGlobalDescription
 
G4VisExtent fExtent
 
G4Transform3D fTransform
 
const G4ModelingParameters * fpMP
 

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: