source: snovis/trunk/source/G4Lab/SoG4Trajectories.h @ 233

Last change on this file since 233 was 233, checked in by barrand, 17 years ago
  • Property svn:eol-style set to native
File size: 1.6 KB
Line 
1#ifndef G4Lab_SoG4Trajectories_h
2#define G4Lab_SoG4Trajectories_h
3
4// Inheritance :
5#include <Inventor/nodes/SoShape.h>
6
7#include <Inventor/fields/SoSFEnum.h>
8#include <Inventor/fields/SoSFFloat.h>
9#include <Inventor/fields/SoSFInt32.h>
10#include <Inventor/fields/SoSFBool.h>
11#include <Inventor/fields/SoSFNode.h>
12
13#include <vector>
14
15class G4TrajectoryContainer;
16class SoSensor;
17class SoFieldSensor;
18
19class PointIdentifier {
20public:
21  PointIdentifier(int aTrajectory,int aPoint)
22    :fTrajectory(aTrajectory),fPoint(aPoint){}
23public:
24  int fTrajectory;
25  int fPoint;
26};
27
28class SoG4Trajectories : public SoShape {
29  SO_NODE_HEADER(SoG4Trajectories);
30public:
31  enum Model {
32    ALL,
33    TIMED
34  };
35  SoSFEnum model;
36
37  SoSFFloat timeStart;
38  SoSFFloat timeInterval;
39  SoSFInt32 timeSteps;
40  SoSFInt32 timeIndex;
41
42  // Info nodes :
43  SoSFFloat timeMin;
44  SoSFFloat timeMax;
45  SoSFBool verbose;
46
47  SoSFNode alternateRep;
48public:
49  SoG4Trajectories();
50  virtual void generateAlternateRep();
51  virtual void clearAlternateRep();
52public:
53  static void initClass();
54protected:
55  virtual void GLRender(SoGLRenderAction*);
56  virtual void rayPick(SoRayPickAction*);
57  virtual void computeBBox(SoAction*,SbBox3f&,SbVec3f&);
58  virtual void generatePrimitives(SoAction*);
59  virtual void doAction(SoAction*);
60protected:
61  virtual ~SoG4Trajectories();
62private:
63  void flush();
64  static void sensorCB(void*,SoSensor*);
65  bool isG4LabTrajectories(G4TrajectoryContainer*);
66  void timeOrder(G4TrajectoryContainer*);
67private:
68  G4TrajectoryContainer* fContainer;
69  std::vector< std::vector<PointIdentifier> > fTimeOrderedPoints;
70  SoFieldSensor* fSensor;
71};
72
73#endif
Note: See TracBrowser for help on using the repository browser.