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

Last change on this file since 260 was 233, checked in by barrand, 19 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.