Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4TheRayTracer Class Reference

#include <G4TheRayTracer.hh>

Public Member Functions

 G4TheRayTracer (G4VFigureFileMaker *figMaker=0, G4VRTScanner *scanner=0)
 
 ~G4TheRayTracer ()
 
void Trace (G4String fileName)
 
void SetFigureFileMaker (G4VFigureFileMaker *figMaker)
 
G4VFigureFileMakerGetFigureFileMaker ()
 
void SetScanner (G4VRTScanner *scanner)
 
G4VRTScannerGetScanner ()
 
void SetNColumn (G4int val)
 
G4int GetNColumn () const
 
void SetNRow (G4int val)
 
G4int GetNRow () const
 
void SetEyePosition (const G4ThreeVector &val)
 
G4ThreeVector GetEyePosition () const
 
void SetTargetPosition (const G4ThreeVector &val)
 
G4ThreeVector GetTargetPosition () const
 
void SetLightDirection (const G4ThreeVector &val)
 
G4ThreeVector GetLightDirection () const
 
void SetUpVector (const G4ThreeVector &val)
 
G4ThreeVector GetUpVector () const
 
void SetHeadAngle (G4double val)
 
G4double GetHeadAngle () const
 
void SetViewSpan (G4double val)
 
G4double GetViewSpan () const
 
void SetAttenuationLength (G4double val)
 
G4double GetAttenuationLength () const
 
void SetDistortion (G4bool val)
 
G4bool GetDistortion () const
 
void SetBackgroundColour (G4Colour val)
 
G4Colour GetBackgroundColour () const
 

Protected Member Functions

G4bool CreateBitMap ()
 
void CreateFigureFile (G4String fileName)
 
G4bool GenerateColour (G4Event *anEvent)
 
void StoreUserActions ()
 
void RestoreUserActions ()
 
G4Colour GetSurfaceColour (G4RayTrajectoryPoint *point)
 
G4Colour GetMixedColour (G4Colour surfCol, G4Colour transCol, G4double weight=0.5)
 
G4Colour Attenuate (G4RayTrajectoryPoint *point, G4Colour sourceCol)
 
G4bool ValidColour (const G4VisAttributes *visAtt)
 

Protected Attributes

G4RayShootertheRayShooter
 
G4VFigureFileMakertheFigMaker
 
G4RTMessengertheMessenger
 
G4VRTScannertheScanner
 
G4EventManagertheEventManager
 
G4UserEventActiontheUserEventAction
 
G4UserStackingActiontheUserStackingAction
 
G4UserTrackingActiontheUserTrackingAction
 
G4UserSteppingActiontheUserSteppingAction
 
G4UserEventActiontheRayTracerEventAction
 
G4UserStackingActiontheRayTracerStackingAction
 
G4RTTrackingActiontheRayTracerTrackingAction
 
G4RTSteppingActiontheRayTracerSteppingAction
 
unsigned char * colorR
 
unsigned char * colorG
 
unsigned char * colorB
 
G4int nColumn
 
G4int nRow
 
G4ThreeVector eyePosition
 
G4ThreeVector targetPosition
 
G4ThreeVector eyeDirection
 
G4ThreeVector lightDirection
 
G4ThreeVector up
 
G4double headAngle
 
G4double viewSpan
 
G4double attenuationLength
 
G4bool distortionOn
 
G4bool antialiasingOn
 
G4Colour rayColour
 
G4Colour backgroundColour
 

Detailed Description

Definition at line 72 of file G4TheRayTracer.hh.

Constructor & Destructor Documentation

◆ G4TheRayTracer()

G4TheRayTracer::G4TheRayTracer ( G4VFigureFileMaker figMaker = 0,
G4VRTScanner scanner = 0 
)

Definition at line 57 of file G4TheRayTracer.cc.

59{
60 theFigMaker = figMaker;
62 theScanner = scanner;
71
72 nColumn = 640;
73 nRow = 640;
74
75 eyePosition = G4ThreeVector(1.*m,1.*m,1.*m);
76 targetPosition = G4ThreeVector(0.,0.,0.);
77 lightDirection = G4ThreeVector(-0.1,-0.2,-0.3).unit();
78 up = G4ThreeVector(0,1,0);
79 viewSpan = 5.0*deg;
80 headAngle = 0.;
81 attenuationLength = 1.0*m;
82
83 distortionOn = false;
84 antialiasingOn = false;
85
86 backgroundColour = G4Colour(1.,1.,1.);
87}
CLHEP::Hep3Vector G4ThreeVector
Hep3Vector unit() const
static G4EventManager * GetEventManager()
static G4RTMessenger * GetInstance(G4TheRayTracer *p1, G4RTSteppingAction *p2)
G4RTTrackingAction * theRayTracerTrackingAction
G4RTSteppingAction * theRayTracerSteppingAction
G4ThreeVector lightDirection
G4EventManager * theEventManager
G4UserStackingAction * theRayTracerStackingAction
G4Colour backgroundColour
G4double attenuationLength
G4ThreeVector targetPosition
G4UserEventAction * theRayTracerEventAction
G4VFigureFileMaker * theFigMaker
G4VRTScanner * theScanner
G4ThreeVector eyePosition
G4RTMessenger * theMessenger
G4RayShooter * theRayShooter
G4ThreeVector up

◆ ~G4TheRayTracer()

G4TheRayTracer::~G4TheRayTracer ( )

Definition at line 89 of file G4TheRayTracer.cc.

Member Function Documentation

◆ Attenuate()

G4Colour G4TheRayTracer::Attenuate ( G4RayTrajectoryPoint point,
G4Colour  sourceCol 
)
protected

Definition at line 376 of file G4TheRayTracer.cc.

377{
378 const G4VisAttributes* preAtt = point->GetPreStepAtt();
379
380 G4bool visible = ValidColour(preAtt);
381 if(!visible) return sourceCol;
382
383 G4Colour objCol = preAtt->GetColour();
384 G4double stepRed = objCol.GetRed();
385 G4double stepGreen = objCol.GetGreen();
386 G4double stepBlue = objCol.GetBlue();
387 G4double stepAlpha = objCol.GetAlpha();
388 G4double stepLength = point->GetStepLength();
389
390 G4double attenuationFuctor;
391 if(stepAlpha > 0.9999999){ stepAlpha = 0.9999999; } // patch to the next line
392 attenuationFuctor = -stepAlpha/(1.0-stepAlpha)*stepLength/attenuationLength;
393
394 G4double KtRed = std::exp((1.0-stepRed)*attenuationFuctor);
395 G4double KtGreen = std::exp((1.0-stepGreen)*attenuationFuctor);
396 G4double KtBlue = std::exp((1.0-stepBlue)*attenuationFuctor);
397 if(KtRed>1.0){KtRed=1.0;}
398 if(KtGreen>1.0){KtGreen=1.0;}
399 if(KtBlue>1.0){KtBlue=1.0;}
400 return G4Colour(sourceCol.GetRed()*KtRed,
401 sourceCol.GetGreen()*KtGreen,sourceCol.GetBlue()*KtBlue);
402}
double G4double
Definition: G4Types.hh:64
bool G4bool
Definition: G4Types.hh:67
G4double GetBlue() const
Definition: G4Colour.hh:140
G4double GetAlpha() const
Definition: G4Colour.hh:141
G4double GetRed() const
Definition: G4Colour.hh:138
G4double GetGreen() const
Definition: G4Colour.hh:139
G4double GetStepLength() const
const G4VisAttributes * GetPreStepAtt() const
G4bool ValidColour(const G4VisAttributes *visAtt)
const G4Colour & GetColour() const

Referenced by GenerateColour().

◆ CreateBitMap()

G4bool G4TheRayTracer::CreateBitMap ( )
protected

Definition at line 182 of file G4TheRayTracer.cc.

183{
184 G4int iEvent = 0;
185 G4double stepAngle = viewSpan/100.;
186 G4double viewSpanX = stepAngle*nColumn;
187 G4double viewSpanY = stepAngle*nRow;
188 G4bool succeeded;
189
190// Confirm process(es) of Geantino is initialized
191 G4VPhysicalVolume* pWorld =
193 GetNavigatorForTracking()->GetWorldVolume();
196 G4ProcessVector* pVector
198 for (G4int j=0; j < pVector->size(); ++j) {
199 (*pVector)[j]->BuildPhysicsTable(*(G4Geantino::GeantinoDefinition()));
200 }
201
202// Close geometry and set the application state
204 geomManager->OpenGeometry();
205 geomManager->CloseGeometry(1,0);
206
207 G4ThreeVector center(0,0,0);
208 G4Navigator* navigator =
210 navigator->LocateGlobalPointAndSetup(center,0,false);
211
213 theStateMan->SetNewState(G4State_GeomClosed);
214
215// Event loop
217 G4int iRow, iColumn;
218 while (theScanner->Coords(iRow,iColumn)) {
219 G4int iCoord = iRow * nColumn + iColumn;
220 G4double dRow = 0, dColumn = 0; // Antialiasing increments.
221 G4Event* anEvent = new G4Event(iEvent++);
222 G4double angleX = -(viewSpanX/2. - (iColumn+dColumn)*stepAngle);
223 G4double angleY = viewSpanY/2. - (iRow+dRow)*stepAngle;
224 G4ThreeVector rayDirection;
225 if(distortionOn)
226 {
227 rayDirection = G4ThreeVector(-std::tan(angleX)/std::cos(angleY),std::tan(angleY)/std::cos(angleX),1.0);
228 }
229 else
230 {
231 rayDirection = G4ThreeVector(-std::tan(angleX),std::tan(angleY),1.0);
232 }
233 G4double cp = std::cos(eyeDirection.phi());
234 G4double sp = std::sqrt(1.-cp*cp);
235 G4double ct = std::cos(eyeDirection.theta());
236 G4double st = std::sqrt(1.-ct*ct);
237 G4double gamma = std::atan2(ct*cp*up.x()+ct*sp*up.y()-st*up.z(), -sp*up.x()+cp*up.y());
238 rayDirection.rotateZ(-gamma);
239 rayDirection.rotateZ(headAngle);
240 rayDirection.rotateUz(eyeDirection);
241 G4ThreeVector rayPosition(eyePosition);
242 G4bool interceptable = true;
243 // Check if rayPosition is in the world.
244 EInside whereisit =
245 pWorld->GetLogicalVolume()->GetSolid()->Inside(rayPosition);
246 if (whereisit != kInside) {
247 // It's outside the world, so move it inside.
248 G4double outsideDistance =
249 pWorld->GetLogicalVolume()->GetSolid()->
250 DistanceToIn(rayPosition,rayDirection);
251 if (outsideDistance != kInfinity) {
252 // Borrowing from geometry, where 1e-8 < epsilon < 1e-3, in
253 // absolute/internal length units, is used for ensuring good
254 // behaviour, choose to add 0.001 to ensure rayPosition is
255 // definitely inside the world volume (JA 16/9/2005)...
256 rayPosition = rayPosition+(outsideDistance+0.001)*rayDirection;
257 }
258 else {
259 interceptable = false;
260 }
261 }
262 if (interceptable) {
263 theRayShooter->Shoot(anEvent,rayPosition,rayDirection.unit());
265 succeeded = GenerateColour(anEvent);
266 colorR[iCoord] = (unsigned char)(int(255*rayColour.GetRed()));
267 colorG[iCoord] = (unsigned char)(int(255*rayColour.GetGreen()));
268 colorB[iCoord] = (unsigned char)(int(255*rayColour.GetBlue()));
269 } else { // Ray does not intercept world at all.
270 // Store background colour...
271 colorR[iCoord] = (unsigned char)(int(255*backgroundColour.GetRed()));
272 colorG[iCoord] = (unsigned char)(int(255*backgroundColour.GetGreen()));
273 colorB[iCoord] = (unsigned char)(int(255*backgroundColour.GetBlue()));
274 succeeded = true;
275 }
276
277 theScanner->Draw(colorR[iCoord],colorG[iCoord],colorB[iCoord]);
278
279 delete anEvent;
280 if(!succeeded) return false;
281 }
282
283 theStateMan->SetNewState(G4State_Idle);
284 return true;
285}
@ G4State_Idle
@ G4State_GeomClosed
int G4int
Definition: G4Types.hh:66
double z() const
double phi() const
double theta() const
double x() const
Hep3Vector & rotateZ(double)
Definition: ThreeVector.cc:144
double y() const
Hep3Vector & rotateUz(const Hep3Vector &)
Definition: ThreeVector.cc:72
void ProcessOneEvent(G4Event *anEvent)
static G4Geantino * GeantinoDefinition()
Definition: G4Geantino.cc:82
G4bool CloseGeometry(G4bool pOptimise=true, G4bool verbose=false, G4VPhysicalVolume *vol=0)
void OpenGeometry(G4VPhysicalVolume *vol=0)
static G4GeometryManager * GetInstance()
G4VSolid * GetSolid() const
virtual G4VPhysicalVolume * LocateGlobalPointAndSetup(const G4ThreeVector &point, const G4ThreeVector *direction=0, const G4bool pRelativeSearch=true, const G4bool ignoreDirection=true)
Definition: G4Navigator.cc:116
G4ProcessManager * GetProcessManager() const
G4ProcessVector * GetProcessList() const
G4int size() const
void UpdateCoupleTable(G4VPhysicalVolume *currentWorld)
static G4ProductionCutsTable * GetProductionCutsTable()
void Shoot(G4Event *evt, G4ThreeVector vtx, G4ThreeVector direc)
Definition: G4RayShooter.cc:59
static G4RegionStore * GetInstance()
void UpdateMaterialList(G4VPhysicalVolume *currentWorld=0)
static G4StateManager * GetStateManager()
G4bool SetNewState(G4ApplicationState requestedState)
G4ThreeVector eyeDirection
G4bool GenerateColour(G4Event *anEvent)
unsigned char * colorG
unsigned char * colorR
unsigned char * colorB
static G4TransportationManager * GetTransportationManager()
G4Navigator * GetNavigatorForTracking() const
G4LogicalVolume * GetLogicalVolume() const
virtual void Initialize(G4int nRow, G4int nColumn)=0
virtual void Draw(unsigned char red, unsigned char green, unsigned char blue)
Definition: G4VRTScanner.hh:71
virtual G4bool Coords(G4int &iRow, G4int &iColumn)=0
virtual EInside Inside(const G4ThreeVector &p) const =0
EInside
Definition: geomdefs.hh:58
@ kInside
Definition: geomdefs.hh:58

Referenced by Trace().

◆ CreateFigureFile()

void G4TheRayTracer::CreateFigureFile ( G4String  fileName)
protected

Definition at line 287 of file G4TheRayTracer.cc.

288{
289 //G4cout << nColumn << " " << nRow << G4endl;
291}
virtual void CreateFigureFile(G4String fileName, int nColumn, int nRow, unsigned char *colorR, unsigned char *colorG, unsigned char *colorB)=0

Referenced by Trace().

◆ GenerateColour()

G4bool G4TheRayTracer::GenerateColour ( G4Event anEvent)
protected

Definition at line 293 of file G4TheRayTracer.cc.

294{
295 G4TrajectoryContainer * trajectoryContainer = anEvent->GetTrajectoryContainer();
296
297 G4RayTrajectory* trajectory = (G4RayTrajectory*)( (*trajectoryContainer)[0] );
298 if(!trajectory) return false;
299
300 G4int nPoint = trajectory->GetPointEntries();
301 if(nPoint==0) return false;
302
303 G4Colour initialColour(backgroundColour);
304 if( trajectory->GetPointC(nPoint-1)->GetPostStepAtt() )
305 { initialColour = GetSurfaceColour(trajectory->GetPointC(nPoint-1)); }
306 rayColour = Attenuate(trajectory->GetPointC(nPoint-1),initialColour);
307
308 for(int i=nPoint-2;i>=0;i--)
309 {
310 G4Colour surfaceColour = GetSurfaceColour(trajectory->GetPointC(i));
311 G4double weight = 1.0 - surfaceColour.GetAlpha();
312 G4Colour mixedColour = GetMixedColour(rayColour,surfaceColour,weight);
313 rayColour = Attenuate(trajectory->GetPointC(i),mixedColour);
314 }
315
316 return true;
317}
G4TrajectoryContainer * GetTrajectoryContainer() const
Definition: G4Event.hh:177
const G4VisAttributes * GetPostStepAtt() const
virtual int GetPointEntries() const
G4RayTrajectoryPoint * GetPointC(G4int i) const
G4Colour GetSurfaceColour(G4RayTrajectoryPoint *point)
G4Colour Attenuate(G4RayTrajectoryPoint *point, G4Colour sourceCol)
G4Colour GetMixedColour(G4Colour surfCol, G4Colour transCol, G4double weight=0.5)

Referenced by CreateBitMap().

◆ GetAttenuationLength()

G4double G4TheRayTracer::GetAttenuationLength ( ) const
inline

Definition at line 181 of file G4TheRayTracer.hh.

181{ return attenuationLength; }

Referenced by G4RTMessenger::GetCurrentValue().

◆ GetBackgroundColour()

G4Colour G4TheRayTracer::GetBackgroundColour ( ) const
inline

Definition at line 185 of file G4TheRayTracer.hh.

185{ return backgroundColour; }

Referenced by G4RTMessenger::GetCurrentValue().

◆ GetDistortion()

G4bool G4TheRayTracer::GetDistortion ( ) const
inline

Definition at line 183 of file G4TheRayTracer.hh.

183{ return distortionOn; }

Referenced by G4RTMessenger::GetCurrentValue().

◆ GetEyePosition()

G4ThreeVector G4TheRayTracer::GetEyePosition ( ) const
inline

Definition at line 169 of file G4TheRayTracer.hh.

169{ return eyePosition; }

Referenced by G4RTMessenger::GetCurrentValue().

◆ GetFigureFileMaker()

G4VFigureFileMaker * G4TheRayTracer::GetFigureFileMaker ( )
inline

Definition at line 116 of file G4TheRayTracer.hh.

116{return theFigMaker;}

◆ GetHeadAngle()

G4double G4TheRayTracer::GetHeadAngle ( ) const
inline

Definition at line 177 of file G4TheRayTracer.hh.

177{ return headAngle; }

Referenced by G4RTMessenger::GetCurrentValue().

◆ GetLightDirection()

G4ThreeVector G4TheRayTracer::GetLightDirection ( ) const
inline

Definition at line 173 of file G4TheRayTracer.hh.

173{ return lightDirection; }

Referenced by G4RTMessenger::GetCurrentValue().

◆ GetMixedColour()

G4Colour G4TheRayTracer::GetMixedColour ( G4Colour  surfCol,
G4Colour  transCol,
G4double  weight = 0.5 
)
protected

Definition at line 319 of file G4TheRayTracer.cc.

320{
321 G4double red = weight*surfCol.GetRed() + (1.-weight)*transCol.GetRed();
322 G4double green = weight*surfCol.GetGreen() + (1.-weight)*transCol.GetGreen();
323 G4double blue = weight*surfCol.GetBlue() + (1.-weight)*transCol.GetBlue();
324 G4double alpha = weight*surfCol.GetAlpha() + (1.-weight)*transCol.GetAlpha();
325 return G4Colour(red,green,blue,alpha);
326}

Referenced by GenerateColour(), and GetSurfaceColour().

◆ GetNColumn()

G4int G4TheRayTracer::GetNColumn ( ) const
inline

Definition at line 165 of file G4TheRayTracer.hh.

165{ return nColumn; }

Referenced by G4RTMessenger::GetCurrentValue(), and G4RayTracerViewer::SetView().

◆ GetNRow()

G4int G4TheRayTracer::GetNRow ( ) const
inline

Definition at line 167 of file G4TheRayTracer.hh.

167{ return nRow; }

Referenced by G4RTMessenger::GetCurrentValue().

◆ GetScanner()

G4VRTScanner * G4TheRayTracer::GetScanner ( )
inline

Definition at line 121 of file G4TheRayTracer.hh.

121{return theScanner;}

◆ GetSurfaceColour()

G4Colour G4TheRayTracer::GetSurfaceColour ( G4RayTrajectoryPoint point)
protected

Definition at line 328 of file G4TheRayTracer.cc.

329{
330 const G4VisAttributes* preAtt = point->GetPreStepAtt();
331 const G4VisAttributes* postAtt = point->GetPostStepAtt();
332
333 G4bool preVis = ValidColour(preAtt);
334 G4bool postVis = ValidColour(postAtt);
335
336 G4Colour transparent(1.,1.,1.,0.);
337
338 if(!preVis&&!postVis) return transparent;
339
340 G4ThreeVector normal = point->GetSurfaceNormal();
341
342 G4Colour preCol(1.,1.,1.);
343 G4Colour postCol(1.,1.,1.);
344
345 if(preVis)
346 {
347 G4double brill = (1.0-(-lightDirection).dot(normal))/2.0;
348 G4double red = preAtt->GetColour().GetRed();
349 G4double green = preAtt->GetColour().GetGreen();
350 G4double blue = preAtt->GetColour().GetBlue();
351 preCol = G4Colour
352 (red*brill,green*brill,blue*brill,preAtt->GetColour().GetAlpha());
353 }
354 else
355 { preCol = transparent; }
356
357 if(postVis)
358 {
359 G4double brill = (1.0-(-lightDirection).dot(-normal))/2.0;
360 G4double red = postAtt->GetColour().GetRed();
361 G4double green = postAtt->GetColour().GetGreen();
362 G4double blue = postAtt->GetColour().GetBlue();
363 postCol = G4Colour
364 (red*brill,green*brill,blue*brill,postAtt->GetColour().GetAlpha());
365 }
366 else
367 { postCol = transparent; }
368
369 if(!preVis) return postCol;
370 if(!postVis) return preCol;
371
372 G4double weight = 0.5;
373 return GetMixedColour(preCol,postCol,weight);
374}
G4ThreeVector GetSurfaceNormal() const

Referenced by GenerateColour().

◆ GetTargetPosition()

G4ThreeVector G4TheRayTracer::GetTargetPosition ( ) const
inline

Definition at line 171 of file G4TheRayTracer.hh.

171{ return targetPosition; }

Referenced by G4RTMessenger::GetCurrentValue().

◆ GetUpVector()

G4ThreeVector G4TheRayTracer::GetUpVector ( ) const
inline

Definition at line 175 of file G4TheRayTracer.hh.

175{ return up; }

◆ GetViewSpan()

G4double G4TheRayTracer::GetViewSpan ( ) const
inline

Definition at line 179 of file G4TheRayTracer.hh.

179{ return viewSpan; }

Referenced by G4RTMessenger::GetCurrentValue().

◆ RestoreUserActions()

void G4TheRayTracer::RestoreUserActions ( )
protected

Definition at line 166 of file G4TheRayTracer.cc.

167{
172
174 if(theSDMan)
175 { theSDMan->Activate("/",true); }
176}
void SetUserAction(G4UserEventAction *userAction)
void Activate(G4String dName, G4bool activeFlag)
Definition: G4SDManager.cc:119
static G4SDManager * GetSDMpointerIfExist()
Definition: G4SDManager.cc:49
G4UserTrackingAction * theUserTrackingAction
G4UserEventAction * theUserEventAction
G4UserSteppingAction * theUserSteppingAction
G4UserStackingAction * theUserStackingAction

Referenced by Trace().

◆ SetAttenuationLength()

void G4TheRayTracer::SetAttenuationLength ( G4double  val)
inline

Definition at line 180 of file G4TheRayTracer.hh.

180{ attenuationLength = val; }

Referenced by G4RTMessenger::SetNewValue().

◆ SetBackgroundColour()

void G4TheRayTracer::SetBackgroundColour ( G4Colour  val)
inline

Definition at line 184 of file G4TheRayTracer.hh.

184{ backgroundColour = val; }

Referenced by G4RayTracerViewer::SetView().

◆ SetDistortion()

void G4TheRayTracer::SetDistortion ( G4bool  val)
inline

Definition at line 182 of file G4TheRayTracer.hh.

182{ distortionOn = val; }

Referenced by G4RTMessenger::SetNewValue().

◆ SetEyePosition()

void G4TheRayTracer::SetEyePosition ( const G4ThreeVector val)
inline

Definition at line 168 of file G4TheRayTracer.hh.

168{ eyePosition = val; }

Referenced by G4RTMessenger::SetNewValue(), and G4RayTracerViewer::SetView().

◆ SetFigureFileMaker()

void G4TheRayTracer::SetFigureFileMaker ( G4VFigureFileMaker figMaker)
inline

Definition at line 112 of file G4TheRayTracer.hh.

115 { theFigMaker = figMaker; }

◆ SetHeadAngle()

void G4TheRayTracer::SetHeadAngle ( G4double  val)
inline

Definition at line 176 of file G4TheRayTracer.hh.

176{ headAngle = val; }

Referenced by G4RTMessenger::SetNewValue().

◆ SetLightDirection()

void G4TheRayTracer::SetLightDirection ( const G4ThreeVector val)
inline

Definition at line 172 of file G4TheRayTracer.hh.

172{ lightDirection = val.unit(); }

Referenced by G4RTMessenger::SetNewValue(), and G4RayTracerViewer::SetView().

◆ SetNColumn()

void G4TheRayTracer::SetNColumn ( G4int  val)
inline

Definition at line 164 of file G4TheRayTracer.hh.

164{ nColumn = val; }

Referenced by G4RayTracerViewer::G4RayTracerViewer(), and G4RTMessenger::SetNewValue().

◆ SetNRow()

void G4TheRayTracer::SetNRow ( G4int  val)
inline

Definition at line 166 of file G4TheRayTracer.hh.

166{ nRow = val; }

Referenced by G4RayTracerViewer::G4RayTracerViewer(), and G4RTMessenger::SetNewValue().

◆ SetScanner()

void G4TheRayTracer::SetScanner ( G4VRTScanner scanner)
inline

Definition at line 117 of file G4TheRayTracer.hh.

120 { theScanner = scanner; }

◆ SetTargetPosition()

void G4TheRayTracer::SetTargetPosition ( const G4ThreeVector val)
inline

Definition at line 170 of file G4TheRayTracer.hh.

170{ targetPosition = val; }

Referenced by G4RTMessenger::SetNewValue(), and G4RayTracerViewer::SetView().

◆ SetUpVector()

void G4TheRayTracer::SetUpVector ( const G4ThreeVector val)
inline

Definition at line 174 of file G4TheRayTracer.hh.

174{ up = val; }

Referenced by G4RayTracerViewer::SetView().

◆ SetViewSpan()

void G4TheRayTracer::SetViewSpan ( G4double  val)
inline

Definition at line 178 of file G4TheRayTracer.hh.

178{ viewSpan = val; }

Referenced by G4RTMessenger::SetNewValue().

◆ StoreUserActions()

void G4TheRayTracer::StoreUserActions ( )
protected

Definition at line 142 of file G4TheRayTracer.cc.

143{
148
151
156
158 if(theSDMan)
159 { theSDMan->Activate("/",false); }
160
162 theGeomMan->OpenGeometry();
163 theGeomMan->CloseGeometry(true);
164}
G4UserTrackingAction * GetUserTrackingAction()
G4UserSteppingAction * GetUserSteppingAction()
G4UserStackingAction * GetUserStackingAction()
G4UserEventAction * GetUserEventAction()

Referenced by Trace().

◆ Trace()

void G4TheRayTracer::Trace ( G4String  fileName)

Definition at line 99 of file G4TheRayTracer.cc.

100{
102 G4ApplicationState currentState = theStateMan->GetCurrentState();
103 if(currentState!=G4State_Idle)
104 {
105 G4cerr << "Illegal application state - Trace() ignored." << G4endl;
106 return;
107 }
108
109 if(!theFigMaker)
110 {
111 G4cerr << "Figure file maker class is not specified - Trace() ignored." << G4endl;
112 return;
113 }
114
116 G4int storeTrajectory = UI->GetCurrentIntValue("/tracking/storeTrajectory");
117 if(storeTrajectory==0) UI->ApplyCommand("/tracking/storeTrajectory 1");
118
119
121 eyeDirection = tmpVec.unit();
122 colorR = new unsigned char[nColumn*nRow];
123 colorG = new unsigned char[nColumn*nRow];
124 colorB = new unsigned char[nColumn*nRow];
125
127 G4bool succeeded = CreateBitMap();
128 if(succeeded)
129 { CreateFigureFile(fileName); }
130 else
131 { G4cerr << "Could not create figure file" << G4endl;
132 G4cerr << "You might set the eye position outside of the world volume" << G4endl; }
134
135 if(storeTrajectory==0) UI->ApplyCommand("/tracking/storeTrajectory 0");
136
137 delete [] colorR;
138 delete [] colorG;
139 delete [] colorB;
140}
G4ApplicationState
#define G4endl
Definition: G4ios.hh:52
G4DLLIMPORT std::ostream G4cerr
G4ApplicationState GetCurrentState() const
G4bool CreateBitMap()
void CreateFigureFile(G4String fileName)
void RestoreUserActions()
G4int ApplyCommand(const char *aCommand)
Definition: G4UImanager.cc:369
G4int GetCurrentIntValue(const char *aCommand, G4int parameterNumber=1, G4bool reGet=true)
Definition: G4UImanager.cc:184
static G4UImanager * GetUIpointer()
Definition: G4UImanager.cc:51

Referenced by G4RayTracerViewer::DrawView(), and G4RTMessenger::SetNewValue().

◆ ValidColour()

G4bool G4TheRayTracer::ValidColour ( const G4VisAttributes visAtt)
protected

Definition at line 404 of file G4TheRayTracer.cc.

405{
406 G4bool val = true;
407 if(!visAtt)
408 { val = false; }
409 else if(!(visAtt->IsVisible()))
410 { val = false; }
411 else if(visAtt->IsForceDrawingStyle()
413 { val = false; }
414 return val;
415}
G4bool IsVisible() const
ForcedDrawingStyle GetForcedDrawingStyle() const
G4bool IsForceDrawingStyle() const

Referenced by Attenuate(), and GetSurfaceColour().

Member Data Documentation

◆ antialiasingOn

G4bool G4TheRayTracer::antialiasingOn
protected

Definition at line 158 of file G4TheRayTracer.hh.

Referenced by G4TheRayTracer().

◆ attenuationLength

G4double G4TheRayTracer::attenuationLength
protected

◆ backgroundColour

G4Colour G4TheRayTracer::backgroundColour
protected

◆ colorB

unsigned char* G4TheRayTracer::colorB
protected

Definition at line 143 of file G4TheRayTracer.hh.

Referenced by CreateBitMap(), CreateFigureFile(), and Trace().

◆ colorG

unsigned char* G4TheRayTracer::colorG
protected

Definition at line 142 of file G4TheRayTracer.hh.

Referenced by CreateBitMap(), CreateFigureFile(), and Trace().

◆ colorR

unsigned char* G4TheRayTracer::colorR
protected

Definition at line 141 of file G4TheRayTracer.hh.

Referenced by CreateBitMap(), CreateFigureFile(), and Trace().

◆ distortionOn

G4bool G4TheRayTracer::distortionOn
protected

Definition at line 157 of file G4TheRayTracer.hh.

Referenced by CreateBitMap(), G4TheRayTracer(), GetDistortion(), and SetDistortion().

◆ eyeDirection

G4ThreeVector G4TheRayTracer::eyeDirection
protected

Definition at line 150 of file G4TheRayTracer.hh.

Referenced by CreateBitMap(), and Trace().

◆ eyePosition

G4ThreeVector G4TheRayTracer::eyePosition
protected

◆ headAngle

G4double G4TheRayTracer::headAngle
protected

Definition at line 153 of file G4TheRayTracer.hh.

Referenced by CreateBitMap(), G4TheRayTracer(), GetHeadAngle(), and SetHeadAngle().

◆ lightDirection

G4ThreeVector G4TheRayTracer::lightDirection
protected

◆ nColumn

G4int G4TheRayTracer::nColumn
protected

◆ nRow

G4int G4TheRayTracer::nRow
protected

◆ rayColour

G4Colour G4TheRayTracer::rayColour
protected

Definition at line 160 of file G4TheRayTracer.hh.

Referenced by CreateBitMap(), and GenerateColour().

◆ targetPosition

G4ThreeVector G4TheRayTracer::targetPosition
protected

Definition at line 149 of file G4TheRayTracer.hh.

Referenced by G4TheRayTracer(), GetTargetPosition(), SetTargetPosition(), and Trace().

◆ theEventManager

G4EventManager* G4TheRayTracer::theEventManager
protected

◆ theFigMaker

G4VFigureFileMaker* G4TheRayTracer::theFigMaker
protected

◆ theMessenger

G4RTMessenger* G4TheRayTracer::theMessenger
protected

Definition at line 126 of file G4TheRayTracer.hh.

Referenced by G4TheRayTracer(), and ~G4TheRayTracer().

◆ theRayShooter

G4RayShooter* G4TheRayTracer::theRayShooter
protected

Definition at line 124 of file G4TheRayTracer.hh.

Referenced by CreateBitMap(), G4TheRayTracer(), and ~G4TheRayTracer().

◆ theRayTracerEventAction

G4UserEventAction* G4TheRayTracer::theRayTracerEventAction
protected

Definition at line 136 of file G4TheRayTracer.hh.

Referenced by G4TheRayTracer(), and StoreUserActions().

◆ theRayTracerStackingAction

G4UserStackingAction* G4TheRayTracer::theRayTracerStackingAction
protected

Definition at line 137 of file G4TheRayTracer.hh.

Referenced by G4TheRayTracer(), and StoreUserActions().

◆ theRayTracerSteppingAction

G4RTSteppingAction* G4TheRayTracer::theRayTracerSteppingAction
protected

Definition at line 139 of file G4TheRayTracer.hh.

Referenced by G4TheRayTracer(), StoreUserActions(), and ~G4TheRayTracer().

◆ theRayTracerTrackingAction

G4RTTrackingAction* G4TheRayTracer::theRayTracerTrackingAction
protected

Definition at line 138 of file G4TheRayTracer.hh.

Referenced by G4TheRayTracer(), StoreUserActions(), and ~G4TheRayTracer().

◆ theScanner

G4VRTScanner* G4TheRayTracer::theScanner
protected

◆ theUserEventAction

G4UserEventAction* G4TheRayTracer::theUserEventAction
protected

Definition at line 131 of file G4TheRayTracer.hh.

Referenced by RestoreUserActions(), and StoreUserActions().

◆ theUserStackingAction

G4UserStackingAction* G4TheRayTracer::theUserStackingAction
protected

Definition at line 132 of file G4TheRayTracer.hh.

Referenced by RestoreUserActions(), and StoreUserActions().

◆ theUserSteppingAction

G4UserSteppingAction* G4TheRayTracer::theUserSteppingAction
protected

Definition at line 134 of file G4TheRayTracer.hh.

Referenced by RestoreUserActions(), and StoreUserActions().

◆ theUserTrackingAction

G4UserTrackingAction* G4TheRayTracer::theUserTrackingAction
protected

Definition at line 133 of file G4TheRayTracer.hh.

Referenced by RestoreUserActions(), and StoreUserActions().

◆ up

G4ThreeVector G4TheRayTracer::up
protected

Definition at line 152 of file G4TheRayTracer.hh.

Referenced by CreateBitMap(), G4TheRayTracer(), GetUpVector(), and SetUpVector().

◆ viewSpan

G4double G4TheRayTracer::viewSpan
protected

Definition at line 154 of file G4TheRayTracer.hh.

Referenced by CreateBitMap(), G4TheRayTracer(), GetViewSpan(), and SetViewSpan().


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