Geant4 11.2.2
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4VtkUnstructuredGridPipeline.hh
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25
26#ifndef G4VTKUNSTRUCTUREDGRIDPIPELINE_HH
27#define G4VTKUNSTRUCTUREDGRIDPIPELINE_HH
28
29#include <map>
30#include <vector>
31
32#include "G4VVtkPipeline.hh"
33#include "G4PseudoScene.hh"
34
35#include <vtkSmartPointer.h>
36#include <vtkPoints.h>
37#include <vtkCharArray.h>
38#include <vtkDoubleArray.h>
39#include <vtkUnstructuredGrid.h>
40#if VTK_MINOR_VERSION >= 2
41#include <vtkStaticCleanUnstructuredGrid.h>
42#endif
43#include <vtkLookupTable.h>
44#include <vtkDiscretizableColorTransferFunction.h>
45
46class vtkClipDataSet;
47class vtkDataSetMapper;
48class vtkUnstructuredGridVolumeMapper;
49class vtkUnstructuredGridVolumeRayCastMapper;
50class vtkUnstructuredGridVolumeZSweepMapper;
51class vtkOpenGLProjectedTetrahedraMapper;
52class vtkActor;
53
54class G4Mesh;
55
57{
58 public:
60
62
65 std::size_t GetNumberOfFilters() { return filters.size(); }
66 vtkSmartPointer<vtkUnstructuredGridAlgorithm> GetFinalFilter() { return filters[filters.size() - 1]; }
67
68 void Modified() {};
69 void Clear() {};
70 void Print() {};
71
72 void Enable() {};
73 void Disable() {};
74
75 void SetUnstructuredGridData(const G4Mesh &mesh);
76
77 protected:
79 public:
81 G4int depth,
82 vtkPoints *points,
83 vtkDoubleArray *pointColourValues,
84 vtkDoubleArray *cellColourValues,
85 vtkDoubleArray *pointColourIndices,
86 vtkDoubleArray *cellColourIndices,
87 vtkDiscretizableColorTransferFunction *colourLUT,
88 vtkUnstructuredGrid *unstructuredGrid) // input...the following are outputs by reference
89 : fpPVModel(pvModel), fDepth(depth), fpPoints(points), fpGrid(unstructuredGrid),
90 fpPointColourValues(pointColourValues), fpCellColourValues(cellColourValues),
91 fpPointColourIndices(pointColourIndices), fpCellColourIndices(cellColourIndices),
92 fpColourLUT(colourLUT)
93 {}
94
99 for(auto i : fpColourMap) {
100 G4cout << i.first << " " << i.second << G4endl;
101 }
102 }
103
104 protected:
105 using G4PseudoScene::AddSolid; // except for...
106 void AddSolid(const G4VSolid& /*solid*/) override {};
107 void AddSolid(const G4Box& /*box*/) override{};
108 void ProcessVolume(const G4VSolid&) override {
109 // Do nothing if uninteresting solids found, e.g., the container if not marked invisible.
110 }
119 std::map<std::size_t,double> fpColourMap;
121 std::vector<G4ThreeVector> fpPointVector;
122 std::map<std::size_t, std::size_t> fpPointMap;
126 };
128 public:
130 G4int depth,
131 vtkPoints *points,
132 vtkDoubleArray *pointColourValues,
133 vtkDoubleArray *cellColourValues,
134 vtkDoubleArray *pointColourIndices,
135 vtkDoubleArray *cellColourIndices,
136 vtkDiscretizableColorTransferFunction *colourLUT,
137 vtkUnstructuredGrid *unstructuredGrid) // input...the following are outputs by reference
138 : PseudoSceneVtkBase(pvModel,depth,points,pointColourValues,cellColourValues,
139 pointColourIndices, cellColourIndices, colourLUT, unstructuredGrid)
140 {}
141 private:
142 using G4PseudoScene::AddSolid; // except for...
143 void AddSolid(const G4VSolid& solid) override;
144 void ProcessVolume(const G4VSolid&) override {}
145 };
147 public:
149 G4int depth,
150 vtkPoints *points,
151 vtkDoubleArray *pointColourValues,
152 vtkDoubleArray *cellColourValues,
153 vtkDoubleArray *pointColourIndices,
154 vtkDoubleArray *cellColourIndices,
155 vtkDiscretizableColorTransferFunction *colourLUT,
156 vtkUnstructuredGrid *unstructuredGrid) // input...the following are outputs by reference
157 : PseudoSceneVtkBase(pvModel,depth,points,pointColourValues,cellColourValues,
158 pointColourIndices,cellColourIndices,colourLUT, unstructuredGrid)
159 {}
160 private:
161 using G4PseudoScene::AddSolid; // except for...
162 void AddSolid(const G4Box& box) override;
163 void ProcessVolume(const G4VSolid&) override {}
164 };
165
166 private:
168 vtkSmartPointer<vtkDoubleArray> pointColourValues;
169 vtkSmartPointer<vtkDoubleArray> cellColourValues;
170 vtkSmartPointer<vtkDoubleArray> pointColourIndices;
171 vtkSmartPointer<vtkDoubleArray> cellColourIndices;
173
175 std::vector<vtkSmartPointer<vtkUnstructuredGridAlgorithm>> filters; // derived types can store filters in this vector
176#if VTK_MINOR_VERSION >= 2
178#endif
184};
185
186
187#endif // G4VTKUNSTRUCTUREDGRIDPIPELINE_HH
int G4int
Definition G4Types.hh:85
#define G4endl
Definition G4ios.hh:67
G4GLOB_DLL std::ostream G4cout
Definition G4Box.hh:56
void AddSolid(const G4Box &solid)
G4VtkVisContext vc
PseudoSceneForCubicalCells(G4PhysicalVolumeModel *pvModel, G4int depth, vtkPoints *points, vtkDoubleArray *pointColourValues, vtkDoubleArray *cellColourValues, vtkDoubleArray *pointColourIndices, vtkDoubleArray *cellColourIndices, vtkDiscretizableColorTransferFunction *colourLUT, vtkUnstructuredGrid *unstructuredGrid)
PseudoSceneForTetCells(G4PhysicalVolumeModel *pvModel, G4int depth, vtkPoints *points, vtkDoubleArray *pointColourValues, vtkDoubleArray *cellColourValues, vtkDoubleArray *pointColourIndices, vtkDoubleArray *cellColourIndices, vtkDiscretizableColorTransferFunction *colourLUT, vtkUnstructuredGrid *unstructuredGrid)
vtkSmartPointer< vtkDiscretizableColorTransferFunction > fpColourLUT
PseudoSceneVtkBase(G4PhysicalVolumeModel *pvModel, G4int depth, vtkPoints *points, vtkDoubleArray *pointColourValues, vtkDoubleArray *cellColourValues, vtkDoubleArray *pointColourIndices, vtkDoubleArray *cellColourIndices, vtkDiscretizableColorTransferFunction *colourLUT, vtkUnstructuredGrid *unstructuredGrid)
G4VtkUnstructuredGridPipeline(G4String name, const G4VtkVisContext &vc)
void AddFilter(vtkSmartPointer< vtkUnstructuredGridAlgorithm > f)
vtkSmartPointer< vtkUnstructuredGridAlgorithm > GetFinalFilter()
vtkSmartPointer< vtkUnstructuredGridAlgorithm > GetFilter(G4int iFilter)