11 #include "nuevdb/EventDisplayBase/View3D.h"
13 #include "art/Framework/Services/Registry/ServiceHandle.h"
14 #include "art/Utilities/ToolMacros.h"
16 #include "TPolyLine3D.h"
31 void configure(
const fhicl::ParameterSet& pset);
32 void DrawRectangularBox(evdb::View3D* view,
double* coordsLo,
double* coordsHi,
int color=kGray,
int width = 1,
int style = 1);
33 void DrawGrids(evdb::View3D* view,
double* coordsLo,
double* coordsHi,
int color=kGray,
int width = 1,
int style = 1);
34 void DrawAxes(evdb::View3D* view,
double* coordsLo,
double* coordsHi,
int color=kGray,
int width = 1,
int style = 1);
54 fThreeWindow = pset.get<
bool >(
"DrawThreeWindow",
true);
55 fDrawGrid = pset.get<
bool >(
"DrawGrid",
true);
56 fDrawAxes = pset.get<
bool >(
"DrawAxes",
true);
65 art::ServiceHandle<geo::Geometry const> geo;
70 double threeWinCoordsLo[] = {-2.*geo->DetHalfWidth(), -geo->DetHalfHeight(), 0.};
71 double threeWinCoordsHi[] = { 4.*geo->DetHalfWidth(), geo->DetHalfHeight(), geo->DetLength()};
77 double coordsLo[] = { 0., -geo->DetHalfHeight(), 0.};
78 double coordsHi[] = {2.*geo->DetHalfWidth(), geo->DetHalfHeight(), geo->DetLength()};
94 TPolyLine3D&
top = view->AddPolyLine3D(5, color, width, style);
95 top.SetPoint(0, coordsLo[0], coordsHi[1], coordsLo[2]);
96 top.SetPoint(1, coordsHi[0], coordsHi[1], coordsLo[2]);
97 top.SetPoint(2, coordsHi[0], coordsHi[1], coordsHi[2]);
98 top.SetPoint(3, coordsLo[0], coordsHi[1], coordsHi[2]);
99 top.SetPoint(4, coordsLo[0], coordsHi[1], coordsLo[2]);
101 TPolyLine3D& side = view->AddPolyLine3D(5, color, width, style);
102 side.SetPoint(0, coordsHi[0], coordsHi[1], coordsLo[2]);
103 side.SetPoint(1, coordsHi[0], coordsLo[1], coordsLo[2]);
104 side.SetPoint(2, coordsHi[0], coordsLo[1], coordsHi[2]);
105 side.SetPoint(3, coordsHi[0], coordsHi[1], coordsHi[2]);
106 side.SetPoint(4, coordsHi[0], coordsHi[1], coordsLo[2]);
108 TPolyLine3D& side2 = view->AddPolyLine3D(5, color, width, style);
109 side2.SetPoint(0, coordsLo[0], coordsHi[1], coordsLo[2]);
110 side2.SetPoint(1, coordsLo[0], coordsLo[1], coordsLo[2]);
111 side2.SetPoint(2, coordsLo[0], coordsLo[1], coordsHi[2]);
112 side2.SetPoint(3, coordsLo[0], coordsHi[1], coordsHi[2]);
113 side2.SetPoint(4, coordsLo[0], coordsHi[1], coordsLo[2]);
115 TPolyLine3D&
bottom = view->AddPolyLine3D(5, color, width, style);
116 bottom.SetPoint(0, coordsLo[0], coordsLo[1], coordsLo[2]);
117 bottom.SetPoint(1, coordsHi[0], coordsLo[1], coordsLo[2]);
118 bottom.SetPoint(2, coordsHi[0], coordsLo[1], coordsHi[2]);
119 bottom.SetPoint(3, coordsLo[0], coordsLo[1], coordsHi[2]);
120 bottom.SetPoint(4, coordsLo[0], coordsLo[1], coordsLo[2]);
127 double z = coordsLo[2];
130 TPolyLine3D& gridt = view->AddPolyLine3D(2, color, style, width);
131 gridt.SetPoint(0, coordsLo[0], coordsLo[1], z);
132 gridt.SetPoint(1, coordsHi[0], coordsLo[1], z);
134 TPolyLine3D& grids = view->AddPolyLine3D(2, color, style, width);
135 grids.SetPoint(0, coordsHi[0], coordsLo[1], z);
136 grids.SetPoint(1, coordsHi[0], coordsHi[1], z);
139 if (z>coordsHi[2])
break;
145 TPolyLine3D& gridt = view->AddPolyLine3D(2, color, style, width);
146 gridt.SetPoint(0, x, coordsLo[1], coordsLo[2]);
147 gridt.SetPoint(1, x, coordsLo[1], coordsHi[2]);
149 if (x>coordsHi[0])
break;
155 TPolyLine3D& grids = view->AddPolyLine3D(2, color, style, width);
156 grids.SetPoint(0, coordsHi[0], y, coordsLo[2]);
157 grids.SetPoint(1, coordsHi[0], y, coordsHi[2]);
159 if (y>coordsHi[1])
break;
163 TPolyLine3D& grids = view->AddPolyLine3D(2, color, style, width);
164 grids.SetPoint(0, coordsHi[0], y, coordsLo[2]);
165 grids.SetPoint(1, coordsHi[0], y, coordsHi[2]);
167 if (y<coordsLo[1])
break;
178 double y0 = 1.10*coordsLo[1];
179 double z0 = -0.10*coordsHi[2];
180 double sz = 0.20*coordsHi[2];
182 TPolyLine3D& xaxis = view->AddPolyLine3D(2, color, style, width);
183 TPolyLine3D& yaxis = view->AddPolyLine3D(2, color, style, width);
184 TPolyLine3D& zaxis = view->AddPolyLine3D(2, color, style, width);
185 xaxis.SetPoint(0, x0, y0, z0);
186 xaxis.SetPoint(1, sz+x0, y0, z0);
188 yaxis.SetPoint(0, x0, y0, z0);
189 yaxis.SetPoint(1, x0, y0+sz, z0);
191 zaxis.SetPoint(0, x0, y0, z0);
192 zaxis.SetPoint(1, x0, y0, z0+sz);
194 TPolyLine3D& xpoint = view->AddPolyLine3D(3, color, style, width);
195 TPolyLine3D& ypoint = view->AddPolyLine3D(3, color, style, width);
196 TPolyLine3D& zpoint = view->AddPolyLine3D(3, color, style, width);
198 xpoint.SetPoint(0, 0.95*sz+x0, y0, z0-0.05*sz);
199 xpoint.SetPoint(1, 1.00*sz+x0, y0, z0);
200 xpoint.SetPoint(2, 0.95*sz+x0, y0, z0+0.05*sz);
202 ypoint.SetPoint(0, x0, 0.95*sz+y0, z0-0.05*sz);
203 ypoint.SetPoint(1, x0, 1.00*sz+y0, z0);
204 ypoint.SetPoint(2, x0, 0.95*sz+y0, z0+0.05*sz);
206 zpoint.SetPoint(0, x0-0.05*sz, y0, 0.95*sz+z0);
207 zpoint.SetPoint(1, x0+0.00*sz, y0, 1.00*sz+z0);
208 zpoint.SetPoint(2, x0+0.05*sz, y0, 0.95*sz+z0);
210 TPolyLine3D& zleg = view->AddPolyLine3D(4, color, style, width);
211 zleg.SetPoint(0, x0-0.05*sz, y0+0.05*sz, z0+1.05*sz);
212 zleg.SetPoint(1, x0+0.05*sz, y0+0.05*sz, z0+1.05*sz);
213 zleg.SetPoint(2, x0-0.05*sz, y0-0.05*sz, z0+1.05*sz);
214 zleg.SetPoint(3, x0+0.05*sz, y0-0.05*sz, z0+1.05*sz);
216 TPolyLine3D& yleg = view->AddPolyLine3D(5, color, style, width);
217 yleg.SetPoint(0, x0-0.05*sz, y0+1.15*sz, z0);
218 yleg.SetPoint(1, x0+0.00*sz, y0+1.10*sz, z0);
219 yleg.SetPoint(2, x0+0.00*sz, y0+1.05*sz, z0);
220 yleg.SetPoint(3, x0+0.00*sz, y0+1.10*sz, z0);
221 yleg.SetPoint(4, x0+0.05*sz, y0+1.15*sz, z0);
223 TPolyLine3D& xleg = view->AddPolyLine3D(7, color, style, width);
224 xleg.SetPoint(0, x0+1.05*sz, y0+0.05*sz, z0-0.05*sz);
225 xleg.SetPoint(1, x0+1.05*sz, y0+0.00*sz, z0-0.00*sz);
226 xleg.SetPoint(2, x0+1.05*sz, y0+0.05*sz, z0+0.05*sz);
227 xleg.SetPoint(3, x0+1.05*sz, y0+0.00*sz, z0-0.00*sz);
228 xleg.SetPoint(4, x0+1.05*sz, y0-0.05*sz, z0-0.05*sz);
229 xleg.SetPoint(5, x0+1.05*sz, y0+0.00*sz, z0-0.00*sz);
230 xleg.SetPoint(6, x0+1.05*sz, y0-0.05*sz, z0+0.05*sz);
237 art::ServiceHandle<geo::Geometry const> geo;
238 art::ServiceHandle<evd::RawDrawingOptions const> rawOpt;
241 = art::ServiceHandle<lariov::ChannelStatusService const>()->GetProvider();
244 for(
size_t viewNo = 0; viewNo < geo->Nviews(); viewNo++)
246 for(
size_t wireNo = 0; wireNo < geo->Nwires(viewNo); wireNo++)
252 if (channelStatus.
IsBad(channel))
262 TPolyLine3D& pl = view->AddPolyLine3D(2, color, style, width);
263 pl.SetPoint(0, coords[0]-0.5, wireStart[1], wireStart[2]);
264 pl.SetPoint(1, coords[0]-0.5, wireEnd[1], wireEnd[2]);
void GetStart(double *xyz) const
Geometry description of a TPC wireThe wire is a single straight segment on a wire plane...
process_name opflash particleana ie ie ie z
process_name opflash particleana ie x
virtual bool IsBad(raw::ChannelID_t channel) const =0
Returns whether the specified channel is bad in the current run.
process_name opflash particleana ie ie y
IDparameter< geo::WireID > WireID
Member type of validated geo::WireID parameter.
Class providing information about the quality of channels.
void GetEnd(double *xyz) const
Interface for experiment-specific channel quality info provider.
unsigned int ChannelID_t
Type representing the ID of a readout channel.
Interface for experiment-specific service for channel quality info.
This is the interface class for drawing 3D detector geometries.
art framework interface to geometry description