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

#include <G4TheRayTracer.hh>

+ Inheritance diagram for G4TheRayTracer:

Public Member Functions

 G4TheRayTracer (G4VFigureFileMaker *figMaker=0, G4VRTScanner *scanner=0)
 
virtual ~G4TheRayTracer ()
 
virtual void Trace (const 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 (const G4Colour &val)
 
G4Colour GetBackgroundColour () const
 

Protected Member Functions

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

Protected Attributes

G4RayShootertheRayShooter
 
G4RTMessengertheMessenger
 
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
 

Static Protected Attributes

static G4VFigureFileMakertheFigMaker = 0
 
static G4VRTScannertheScanner = 0
 

Detailed Description

Definition at line 71 of file G4TheRayTracer.hh.

Constructor & Destructor Documentation

◆ G4TheRayTracer()

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

Definition at line 62 of file G4TheRayTracer.cc.

64{
65 theFigMaker = figMaker;
67 theScanner = scanner;
78 colorR = 0;
79 colorG = 0;
80 colorB = 0;
81
84
85 nColumn = 640;
86 nRow = 640;
87
88 eyePosition = G4ThreeVector(1.*m,1.*m,1.*m);
89 targetPosition = G4ThreeVector(0.,0.,0.);
90 lightDirection = G4ThreeVector(-0.1,-0.2,-0.3).unit();
91 up = G4ThreeVector(0,1,0);
92 viewSpan = 5.0*deg;
93 headAngle = 0.;
94 attenuationLength = 1.0*m;
95
96 distortionOn = false;
97 antialiasingOn = false;
98
99 backgroundColour = G4Colour(1.,1.,1.);
100}
CLHEP::Hep3Vector G4ThreeVector
Hep3Vector unit() const
static G4EventManager * GetEventManager()
static G4RTMessenger * GetInstance(G4TheRayTracer *p1)
G4RTTrackingAction * theRayTracerTrackingAction
G4UserTrackingAction * theUserTrackingAction
G4RTSteppingAction * theRayTracerSteppingAction
static G4VRTScanner * theScanner
G4ThreeVector lightDirection
G4EventManager * theEventManager
static G4VFigureFileMaker * theFigMaker
G4UserStackingAction * theRayTracerStackingAction
G4UserEventAction * theUserEventAction
unsigned char * colorG
G4UserSteppingAction * theUserSteppingAction
G4Colour backgroundColour
unsigned char * colorR
G4double attenuationLength
G4ThreeVector targetPosition
G4UserEventAction * theRayTracerEventAction
G4UserStackingAction * theUserStackingAction
G4ThreeVector eyePosition
unsigned char * colorB
G4RTMessenger * theMessenger
G4RayShooter * theRayShooter
G4ThreeVector up

◆ ~G4TheRayTracer()

G4TheRayTracer::~G4TheRayTracer ( )
virtual

Definition at line 102 of file G4TheRayTracer.cc.

Member Function Documentation

◆ Attenuate()

G4Colour G4TheRayTracer::Attenuate ( G4RayTrajectoryPoint * point,
const G4Colour & sourceCol )
protected

Definition at line 396 of file G4TheRayTracer.cc.

398{
399 const G4VisAttributes* preAtt = point->GetPreStepAtt();
400
401 G4bool visible = ValidColour(preAtt);
402 if(!visible) return sourceCol;
403
404 G4Colour objCol = preAtt->GetColour();
405 G4double stepRed = objCol.GetRed();
406 G4double stepGreen = objCol.GetGreen();
407 G4double stepBlue = objCol.GetBlue();
408 G4double stepAlpha = objCol.GetAlpha();
409 G4double stepLength = point->GetStepLength();
410
411 G4double attenuationFuctor;
412 if(stepAlpha > 0.9999999){ stepAlpha = 0.9999999; } // patch to the next line
413 attenuationFuctor = -stepAlpha/(1.0-stepAlpha)*stepLength/attenuationLength;
414
415 G4double KtRed = std::exp((1.0-stepRed)*attenuationFuctor);
416 G4double KtGreen = std::exp((1.0-stepGreen)*attenuationFuctor);
417 G4double KtBlue = std::exp((1.0-stepBlue)*attenuationFuctor);
418 if(KtRed>1.0){KtRed=1.0;}
419 if(KtGreen>1.0){KtGreen=1.0;}
420 if(KtBlue>1.0){KtBlue=1.0;}
421 return G4Colour(sourceCol.GetRed()*KtRed,
422 sourceCol.GetGreen()*KtGreen,sourceCol.GetBlue()*KtBlue);
423}
double G4double
Definition G4Types.hh:83
bool G4bool
Definition G4Types.hh:86
G4double GetBlue() const
Definition G4Colour.hh:154
G4double GetAlpha() const
Definition G4Colour.hh:155
G4double GetRed() const
Definition G4Colour.hh:152
G4double GetGreen() const
Definition G4Colour.hh:153
G4double GetStepLength() const
const G4VisAttributes * GetPreStepAtt() const
G4bool ValidColour(const G4VisAttributes *visAtt)
const G4Colour & GetColour() const

Referenced by GenerateColour().

◆ CreateBitMap()

G4bool G4TheRayTracer::CreateBitMap ( )
protectedvirtual

Reimplemented in G4TheMTRayTracer.

Definition at line 195 of file G4TheRayTracer.cc.

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

Referenced by Trace().

◆ CreateFigureFile()

void G4TheRayTracer::CreateFigureFile ( const G4String & fileName)
protected

Definition at line 304 of file G4TheRayTracer.cc.

305{
306 //G4cout << nColumn << " " << nRow << G4endl;
308}
virtual void CreateFigureFile(const G4String &fileName, int nColumn, int nRow, unsigned char *colorR, unsigned char *colorG, unsigned char *colorB)=0

Referenced by G4TheMTRayTracer::Trace(), and Trace().

◆ GenerateColour()

G4bool G4TheRayTracer::GenerateColour ( G4Event * anEvent)
protected

Definition at line 310 of file G4TheRayTracer.cc.

311{
312 G4TrajectoryContainer * trajectoryContainer = anEvent->GetTrajectoryContainer();
313
314 G4RayTrajectory* trajectory = (G4RayTrajectory*)( (*trajectoryContainer)[0] );
315 if(!trajectory) return false;
316
317 G4int nPoint = trajectory->GetPointEntries();
318 if(nPoint==0) return false;
319
320 G4Colour initialColour(backgroundColour);
321 if( trajectory->GetPointC(nPoint-1)->GetPostStepAtt() )
322 { initialColour = GetSurfaceColour(trajectory->GetPointC(nPoint-1)); }
323 rayColour = Attenuate(trajectory->GetPointC(nPoint-1),initialColour);
324
325 for(G4int i=nPoint-2;i>=0;--i)
326 {
327 G4Colour surfaceColour = GetSurfaceColour(trajectory->GetPointC(i));
328 G4double weight = 1.0 - surfaceColour.GetAlpha();
329 G4Colour mixedColour = GetMixedColour(rayColour,surfaceColour,weight);
330 rayColour = Attenuate(trajectory->GetPointC(i),mixedColour);
331 }
332
333 return true;
334}
G4TrajectoryContainer * GetTrajectoryContainer() const
Definition G4Event.hh:165
const G4VisAttributes * GetPostStepAtt() const
G4RayTrajectoryPoint * GetPointC(G4int i) const
virtual G4int GetPointEntries() const
G4Colour Attenuate(G4RayTrajectoryPoint *point, const G4Colour &sourceCol)
G4Colour GetSurfaceColour(G4RayTrajectoryPoint *point)
G4Colour GetMixedColour(const G4Colour &surfCol, const 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 ( const G4Colour & surfCol,
const G4Colour & transCol,
G4double weight = 0.5 )
protected

Definition at line 336 of file G4TheRayTracer.cc.

338{
339 G4double red = weight*surfCol.GetRed() + (1.-weight)*transCol.GetRed();
340 G4double green = weight*surfCol.GetGreen() + (1.-weight)*transCol.GetGreen();
341 G4double blue = weight*surfCol.GetBlue() + (1.-weight)*transCol.GetBlue();
342 G4double alpha = weight*surfCol.GetAlpha() + (1.-weight)*transCol.GetAlpha();
343 return G4Colour(red,green,blue,alpha);
344}

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;}

Referenced by G4RayTracerXViewer::Initialise().

◆ GetSurfaceColour()

G4Colour G4TheRayTracer::GetSurfaceColour ( G4RayTrajectoryPoint * point)
protected

Definition at line 346 of file G4TheRayTracer.cc.

347{
348 const G4VisAttributes* preAtt = point->GetPreStepAtt();
349 const G4VisAttributes* postAtt = point->GetPostStepAtt();
350
351 G4bool preVis = ValidColour(preAtt);
352 G4bool postVis = ValidColour(postAtt);
353
354 G4Colour transparent(1.,1.,1.,0.);
355
356 if(!preVis&&!postVis) return transparent;
357
358 G4ThreeVector normal = point->GetSurfaceNormal();
359
360 G4Colour preCol(1.,1.,1.);
361 G4Colour postCol(1.,1.,1.);
362
363 if(preVis)
364 {
365 const G4Colour& preAttColour = preAtt->GetColour();
366 G4double brill = (1.0-(-lightDirection).dot(normal))/2.0;
367 G4double red = preAttColour.GetRed();
368 G4double green = preAttColour.GetGreen();
369 G4double blue = preAttColour.GetBlue();
370 preCol = G4Colour
371 (red*brill,green*brill,blue*brill,preAttColour.GetAlpha());
372 }
373 else
374 { preCol = transparent; }
375
376 if(postVis)
377 {
378 const G4Colour& postAttColour = postAtt->GetColour();
379 G4double brill = (1.0-(-lightDirection).dot(-normal))/2.0;
380 G4double red = postAttColour.GetRed();
381 G4double green = postAttColour.GetGreen();
382 G4double blue = postAttColour.GetBlue();
383 postCol = G4Colour
384 (red*brill,green*brill,blue*brill,postAttColour.GetAlpha());
385 }
386 else
387 { postCol = transparent; }
388
389 if(!preVis) return postCol;
390 if(!postVis) return preCol;
391
392 G4double weight = 0.5;
393 return GetMixedColour(preCol,postCol,weight);
394}
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 ( )
protectedvirtual

Reimplemented in G4TheMTRayTracer.

Definition at line 179 of file G4TheRayTracer.cc.

180{
185
187 if(theSDMan)
188 { theSDMan->Activate("/",true); }
189}
void SetUserAction(G4UserEventAction *userAction)
void Activate(G4String dName, G4bool activeFlag)
static G4SDManager * GetSDMpointerIfExist()

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 ( const 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::Initialise(), and G4RTMessenger::SetNewValue().

◆ SetNRow()

void G4TheRayTracer::SetNRow ( G4int val)
inline

Definition at line 166 of file G4TheRayTracer.hh.

166{ nRow = val; }

Referenced by G4RayTracerViewer::Initialise(), 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 ( )
protectedvirtual

Reimplemented in G4TheMTRayTracer.

Definition at line 155 of file G4TheRayTracer.cc.

156{
161
164
169
171 if(theSDMan)
172 { theSDMan->Activate("/",false); }
173
175 theGeomMan->OpenGeometry();
176 theGeomMan->CloseGeometry(true);
177}
G4UserTrackingAction * GetUserTrackingAction()
G4UserSteppingAction * GetUserSteppingAction()
G4UserStackingAction * GetUserStackingAction()
G4UserEventAction * GetUserEventAction()

Referenced by Trace().

◆ Trace()

void G4TheRayTracer::Trace ( const G4String & fileName)
virtual

Reimplemented in G4TheMTRayTracer.

Definition at line 112 of file G4TheRayTracer.cc.

113{
115 G4ApplicationState currentState = theStateMan->GetCurrentState();
116 if(currentState!=G4State_Idle)
117 {
118 G4warn << "Illegal application state - Trace() ignored." << G4endl;
119 return;
120 }
121
122 if(!theFigMaker)
123 {
124 G4warn << "Figure file maker class is not specified - Trace() ignored." << G4endl;
125 return;
126 }
127
129 G4int storeTrajectory = UI->GetCurrentIntValue("/tracking/storeTrajectory");
130 if(storeTrajectory==0) UI->ApplyCommand("/tracking/storeTrajectory 1");
131
132
134 eyeDirection = tmpVec.unit();
135 colorR = new unsigned char[nColumn*nRow];
136 colorG = new unsigned char[nColumn*nRow];
137 colorB = new unsigned char[nColumn*nRow];
138
140 G4bool succeeded = CreateBitMap();
141 if(succeeded)
142 { CreateFigureFile(fileName); }
143 else
144 { G4warn << "Could not create figure file" << G4endl;
145 G4warn << "You might set the eye position outside of the world volume" << G4endl; }
147
148 if(storeTrajectory==0) UI->ApplyCommand("/tracking/storeTrajectory 0");
149
150 delete [] colorR;
151 delete [] colorG;
152 delete [] colorB;
153}
G4ApplicationState
#define G4warn
Definition G4Scene.cc:41
#define G4endl
Definition G4ios.hh:67
const G4ApplicationState & GetCurrentState() const
virtual void StoreUserActions()
virtual G4bool CreateBitMap()
void CreateFigureFile(const G4String &fileName)
virtual void RestoreUserActions()
G4int ApplyCommand(const char *aCommand)
G4int GetCurrentIntValue(const char *aCommand, G4int parameterNumber=1, G4bool reGet=true)
static G4UImanager * GetUIpointer()

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

◆ ValidColour()

G4bool G4TheRayTracer::ValidColour ( const G4VisAttributes * visAtt)
protected

Definition at line 425 of file G4TheRayTracer.cc.

426{
427 G4bool val = true;
428 if(!visAtt)
429 { val = false; }
430 else if(!(visAtt->IsVisible()))
431 { val = false; }
432 else if(visAtt->IsForceDrawingStyle()
434 { val = false; }
435 return val;
436}
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

◆ colorG

unsigned char* G4TheRayTracer::colorG
protected

◆ colorR

unsigned char* G4TheRayTracer::colorR
protected

◆ distortionOn

G4bool G4TheRayTracer::distortionOn
protected

◆ eyeDirection

G4ThreeVector G4TheRayTracer::eyeDirection
protected

◆ eyePosition

◆ 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

◆ nRow

◆ rayColour

G4Colour G4TheRayTracer::rayColour
protected

Definition at line 160 of file G4TheRayTracer.hh.

Referenced by CreateBitMap(), and GenerateColour().

◆ targetPosition

G4ThreeVector G4TheRayTracer::targetPosition
protected

◆ theEventManager

G4EventManager* G4TheRayTracer::theEventManager
protected

◆ theFigMaker

◆ 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 = 0
staticprotected

◆ theUserEventAction

G4UserEventAction* G4TheRayTracer::theUserEventAction
protected

Definition at line 131 of file G4TheRayTracer.hh.

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

◆ theUserStackingAction

G4UserStackingAction* G4TheRayTracer::theUserStackingAction
protected

Definition at line 132 of file G4TheRayTracer.hh.

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

◆ theUserSteppingAction

G4UserSteppingAction* G4TheRayTracer::theUserSteppingAction
protected

Definition at line 134 of file G4TheRayTracer.hh.

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

◆ theUserTrackingAction

G4UserTrackingAction* G4TheRayTracer::theUserTrackingAction
protected

Definition at line 133 of file G4TheRayTracer.hh.

Referenced by G4TheRayTracer(), 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

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