Geant4 10.7.0
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
 
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 71 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;
73 colorR = 0;
74 colorG = 0;
75 colorB = 0;
76
79
80 nColumn = 640;
81 nRow = 640;
82
83 eyePosition = G4ThreeVector(1.*m,1.*m,1.*m);
84 targetPosition = G4ThreeVector(0.,0.,0.);
85 lightDirection = G4ThreeVector(-0.1,-0.2,-0.3).unit();
86 up = G4ThreeVector(0,1,0);
87 viewSpan = 5.0*deg;
88 headAngle = 0.;
89 attenuationLength = 1.0*m;
90
91 distortionOn = false;
92 antialiasingOn = false;
93
94 backgroundColour = G4Colour(1.,1.,1.);
95}
CLHEP::Hep3Vector G4ThreeVector
Hep3Vector unit() const
static G4EventManager * GetEventManager()
static G4RTMessenger * GetInstance(G4TheRayTracer *p1)
G4RTTrackingAction * theRayTracerTrackingAction
G4UserTrackingAction * theUserTrackingAction
G4RTSteppingAction * theRayTracerSteppingAction
G4ThreeVector lightDirection
G4EventManager * theEventManager
G4UserStackingAction * theRayTracerStackingAction
G4UserEventAction * theUserEventAction
unsigned char * colorG
G4UserSteppingAction * theUserSteppingAction
G4Colour backgroundColour
unsigned char * colorR
G4double attenuationLength
G4ThreeVector targetPosition
G4UserEventAction * theRayTracerEventAction
G4VFigureFileMaker * theFigMaker
G4VRTScanner * theScanner
G4UserStackingAction * theUserStackingAction
G4ThreeVector eyePosition
unsigned char * colorB
G4RTMessenger * theMessenger
G4RayShooter * theRayShooter
G4ThreeVector up

◆ ~G4TheRayTracer()

G4TheRayTracer::~G4TheRayTracer ( )
virtual

Definition at line 97 of file G4TheRayTracer.cc.

Member Function Documentation

◆ Attenuate()

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

Definition at line 391 of file G4TheRayTracer.cc.

393{
394 const G4VisAttributes* preAtt = point->GetPreStepAtt();
395
396 G4bool visible = ValidColour(preAtt);
397 if(!visible) return sourceCol;
398
399 G4Colour objCol = preAtt->GetColour();
400 G4double stepRed = objCol.GetRed();
401 G4double stepGreen = objCol.GetGreen();
402 G4double stepBlue = objCol.GetBlue();
403 G4double stepAlpha = objCol.GetAlpha();
404 G4double stepLength = point->GetStepLength();
405
406 G4double attenuationFuctor;
407 if(stepAlpha > 0.9999999){ stepAlpha = 0.9999999; } // patch to the next line
408 attenuationFuctor = -stepAlpha/(1.0-stepAlpha)*stepLength/attenuationLength;
409
410 G4double KtRed = std::exp((1.0-stepRed)*attenuationFuctor);
411 G4double KtGreen = std::exp((1.0-stepGreen)*attenuationFuctor);
412 G4double KtBlue = std::exp((1.0-stepBlue)*attenuationFuctor);
413 if(KtRed>1.0){KtRed=1.0;}
414 if(KtGreen>1.0){KtGreen=1.0;}
415 if(KtBlue>1.0){KtBlue=1.0;}
416 return G4Colour(sourceCol.GetRed()*KtRed,
417 sourceCol.GetGreen()*KtGreen,sourceCol.GetBlue()*KtBlue);
418}
double G4double
Definition: G4Types.hh:83
bool G4bool
Definition: G4Types.hh:86
G4double GetBlue() const
Definition: G4Colour.hh:152
G4double GetAlpha() const
Definition: G4Colour.hh:153
G4double GetRed() const
Definition: G4Colour.hh:150
G4double GetGreen() const
Definition: G4Colour.hh:151
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 190 of file G4TheRayTracer.cc.

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

300{
301 //G4cout << nColumn << " " << nRow << G4endl;
303}
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 305 of file G4TheRayTracer.cc.

306{
307 G4TrajectoryContainer * trajectoryContainer = anEvent->GetTrajectoryContainer();
308
309 G4RayTrajectory* trajectory = (G4RayTrajectory*)( (*trajectoryContainer)[0] );
310 if(!trajectory) return false;
311
312 G4int nPoint = trajectory->GetPointEntries();
313 if(nPoint==0) return false;
314
315 G4Colour initialColour(backgroundColour);
316 if( trajectory->GetPointC(nPoint-1)->GetPostStepAtt() )
317 { initialColour = GetSurfaceColour(trajectory->GetPointC(nPoint-1)); }
318 rayColour = Attenuate(trajectory->GetPointC(nPoint-1),initialColour);
319
320 for(G4int i=nPoint-2;i>=0;--i)
321 {
322 G4Colour surfaceColour = GetSurfaceColour(trajectory->GetPointC(i));
323 G4double weight = 1.0 - surfaceColour.GetAlpha();
324 G4Colour mixedColour = GetMixedColour(rayColour,surfaceColour,weight);
325 rayColour = Attenuate(trajectory->GetPointC(i),mixedColour);
326 }
327
328 return true;
329}
G4TrajectoryContainer * GetTrajectoryContainer() const
Definition: G4Event.hh:160
const G4VisAttributes * GetPostStepAtt() const
virtual int GetPointEntries() const
G4RayTrajectoryPoint * GetPointC(G4int i) 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 331 of file G4TheRayTracer.cc.

333{
334 G4double red = weight*surfCol.GetRed() + (1.-weight)*transCol.GetRed();
335 G4double green = weight*surfCol.GetGreen() + (1.-weight)*transCol.GetGreen();
336 G4double blue = weight*surfCol.GetBlue() + (1.-weight)*transCol.GetBlue();
337 G4double alpha = weight*surfCol.GetAlpha() + (1.-weight)*transCol.GetAlpha();
338 return G4Colour(red,green,blue,alpha);
339}

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 341 of file G4TheRayTracer.cc.

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

175{
180
182 if(theSDMan)
183 { theSDMan->Activate("/",true); }
184}
void SetUserAction(G4UserEventAction *userAction)
void Activate(G4String dName, G4bool activeFlag)
Definition: G4SDManager.cc:121
static G4SDManager * GetSDMpointerIfExist()
Definition: G4SDManager.cc:48

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 150 of file G4TheRayTracer.cc.

151{
156
159
164
166 if(theSDMan)
167 { theSDMan->Activate("/",false); }
168
170 theGeomMan->OpenGeometry();
171 theGeomMan->CloseGeometry(true);
172}
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 107 of file G4TheRayTracer.cc.

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

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

◆ ValidColour()

G4bool G4TheRayTracer::ValidColour ( const G4VisAttributes visAtt)
protected

Definition at line 420 of file G4TheRayTracer.cc.

421{
422 G4bool val = true;
423 if(!visAtt)
424 { val = false; }
425 else if(!(visAtt->IsVisible()))
426 { val = false; }
427 else if(visAtt->IsForceDrawingStyle()
429 { val = false; }
430 return val;
431}
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
protected

◆ 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: