All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Private Member Functions | Private Attributes | List of all members
evd_tool::MicroBooNEDrawer Class Reference
Inheritance diagram for evd_tool::MicroBooNEDrawer:
evd_tool::IExperimentDrawer

Public Member Functions

 MicroBooNEDrawer (const fhicl::ParameterSet &pset)
 
void DetOutline3D (evdb::View3D *view) override
 
 ~MicroBooNEDrawer ()
 

Private Member Functions

void configure (const fhicl::ParameterSet &pset)
 
void DrawRectangularBox (evdb::View3D *view, double *coordsLo, double *coordsHi, int color=kGray, int width=1, int style=1)
 
void DrawGrids (evdb::View3D *view, double *coordsLo, double *coordsHi, int color=kGray, int width=1, int style=1)
 
void DrawAxes (evdb::View3D *view, double *coordsLo, double *coordsHi, int color=kGray, int width=1, int style=1)
 
void DrawBadChannels (evdb::View3D *view, double *coords, int color, int width, int style)
 
- Private Member Functions inherited from evd_tool::IExperimentDrawer
virtual ~IExperimentDrawer () noexcept=default
 

Private Attributes

bool fThreeWindow
 true to draw rectangular box representing 3 windows More...
 
bool fDrawGrid
 true to draw backing grid More...
 
bool fDrawAxes
 true to draw coordinate axes More...
 
bool fDrawBadChannels
 true to draw bad channels More...
 

Detailed Description

Definition at line 21 of file MicroBooNEDrawer_tool.cc.

Constructor & Destructor Documentation

evd_tool::MicroBooNEDrawer::MicroBooNEDrawer ( const fhicl::ParameterSet &  pset)
explicit

Definition at line 46 of file MicroBooNEDrawer_tool.cc.

47 {
48  configure(pset);
49 }
void configure(const fhicl::ParameterSet &pset)
evd_tool::MicroBooNEDrawer::~MicroBooNEDrawer ( )
inline

Definition at line 28 of file MicroBooNEDrawer_tool.cc.

28 {}

Member Function Documentation

void evd_tool::MicroBooNEDrawer::configure ( const fhicl::ParameterSet &  pset)
private

Definition at line 51 of file MicroBooNEDrawer_tool.cc.

52 {
53  // Start by recovering the parameters
54  fThreeWindow = pset.get< bool >("DrawThreeWindow", true);
55  fDrawGrid = pset.get< bool >("DrawGrid", true);
56  fDrawAxes = pset.get< bool >("DrawAxes", true);
57  fDrawBadChannels = pset.get< bool >("DrawBadChannels", true);
58 
59  return;
60 }
bool fDrawAxes
true to draw coordinate axes
bool fDrawBadChannels
true to draw bad channels
bool fThreeWindow
true to draw rectangular box representing 3 windows
bool fDrawGrid
true to draw backing grid
void evd_tool::MicroBooNEDrawer::DetOutline3D ( evdb::View3D *  view)
overridevirtual

Implements evd_tool::IExperimentDrawer.

Definition at line 63 of file MicroBooNEDrawer_tool.cc.

64 {
65  art::ServiceHandle<geo::Geometry const> geo;
66 
67  // If requested, draw the outer three window volume first
68  if (fThreeWindow)
69  {
70  double threeWinCoordsLo[] = {-2.*geo->DetHalfWidth(), -geo->DetHalfHeight(), 0.};
71  double threeWinCoordsHi[] = { 4.*geo->DetHalfWidth(), geo->DetHalfHeight(), geo->DetLength()};
72 
73  DrawRectangularBox(view, threeWinCoordsLo, threeWinCoordsHi, kGray);
74  }
75 
76  // Now draw the standard volume
77  double coordsLo[] = { 0., -geo->DetHalfHeight(), 0.};
78  double coordsHi[] = {2.*geo->DetHalfWidth(), geo->DetHalfHeight(), geo->DetLength()};
79 
80  DrawRectangularBox(view, coordsLo, coordsHi, kRed, 2, 1);
81 
82  // It could be that we don't want to see the grids
83  if (fDrawGrid) DrawGrids(view, coordsLo, coordsHi, kGray+2, 1, 1);
84 
85  if (fDrawAxes) DrawAxes(view, coordsLo, coordsHi, kBlue, 1, 1);
86 
87  if (fDrawBadChannels) DrawBadChannels(view, coordsHi, kGray, 1, 1);
88 
89  return;
90 }
bool fDrawAxes
true to draw coordinate axes
void DrawGrids(evdb::View3D *view, double *coordsLo, double *coordsHi, int color=kGray, int width=1, int style=1)
bool fDrawBadChannels
true to draw bad channels
void DrawAxes(evdb::View3D *view, double *coordsLo, double *coordsHi, int color=kGray, int width=1, int style=1)
bool fThreeWindow
true to draw rectangular box representing 3 windows
void DrawBadChannels(evdb::View3D *view, double *coords, int color, int width, int style)
void DrawRectangularBox(evdb::View3D *view, double *coordsLo, double *coordsHi, int color=kGray, int width=1, int style=1)
bool fDrawGrid
true to draw backing grid
void evd_tool::MicroBooNEDrawer::DrawAxes ( evdb::View3D *  view,
double *  coordsLo,
double *  coordsHi,
int  color = kGray,
int  width = 1,
int  style = 1 
)
private

Definition at line 173 of file MicroBooNEDrawer_tool.cc.

174 {
175 
176  // Indicate coordinate system
177  double x0 = -0.20; // Center location of the key
178  double y0 = 1.10*coordsLo[1]; // Center location of the key
179  double z0 = -0.10*coordsHi[2]; // Center location of the key
180  double sz = 0.20*coordsHi[2]; // Scale size of the key in z direction
181 
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);
187 
188  yaxis.SetPoint(0, x0, y0, z0);
189  yaxis.SetPoint(1, x0, y0+sz, z0);
190 
191  zaxis.SetPoint(0, x0, y0, z0);
192  zaxis.SetPoint(1, x0, y0, z0+sz);
193 
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);
197 
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);
201 
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);
205 
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);
209 
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);
215 
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);
222 
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);
231 
232  return;
233 }
def style
Definition: util.py:237
void evd_tool::MicroBooNEDrawer::DrawBadChannels ( evdb::View3D *  view,
double *  coords,
int  color,
int  width,
int  style 
)
private

Definition at line 235 of file MicroBooNEDrawer_tool.cc.

236 {
237  art::ServiceHandle<geo::Geometry const> geo;
238  art::ServiceHandle<evd::RawDrawingOptions const> rawOpt;
239 
240  lariov::ChannelStatusProvider const& channelStatus
241  = art::ServiceHandle<lariov::ChannelStatusService const>()->GetProvider();
242 
243  // We want to translate the wire position to the opposite side of the TPC...
244  for(size_t viewNo = 0; viewNo < geo->Nviews(); viewNo++)
245  {
246  for(size_t wireNo = 0; wireNo < geo->Nwires(viewNo); wireNo++)
247  {
248  geo::WireID wireID = geo::WireID(rawOpt->fCryostat, rawOpt->fTPC, viewNo, wireNo);
249 
250  raw::ChannelID_t channel = geo->PlaneWireToChannel(wireID);
251 
252  if (channelStatus.IsBad(channel))
253  {
254  const geo::WireGeo* wireGeo = geo->WirePtr(wireID);
255 
256  double wireStart[3];
257  double wireEnd[3];
258 
259  wireGeo->GetStart(wireStart);
260  wireGeo->GetEnd(wireEnd);
261 
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]);
265  }
266  }
267  }
268 
269  return;
270 }
void GetStart(double *xyz) const
Definition: WireGeo.h:157
Geometry description of a TPC wireThe wire is a single straight segment on a wire plane...
Definition: WireGeo.h:65
virtual bool IsBad(raw::ChannelID_t channel) const =0
Returns whether the specified channel is bad in the current run.
def style
Definition: util.py:237
IDparameter< geo::WireID > WireID
Member type of validated geo::WireID parameter.
Class providing information about the quality of channels.
void GetEnd(double *xyz) const
Definition: WireGeo.h:163
unsigned int ChannelID_t
Type representing the ID of a readout channel.
Definition: RawTypes.h:28
void evd_tool::MicroBooNEDrawer::DrawGrids ( evdb::View3D *  view,
double *  coordsLo,
double *  coordsHi,
int  color = kGray,
int  width = 1,
int  style = 1 
)
private

Definition at line 125 of file MicroBooNEDrawer_tool.cc.

126 {
127  double z = coordsLo[2];
128  // Grid running along x and y at constant z
129  for (;;) {
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);
133 
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);
137 
138  z += 10.0;
139  if (z>coordsHi[2]) break;
140  }
141 
142  // Grid running along z at constant x
143  double x = 0.0;
144  for (;;) {
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]);
148  x += 10.0;
149  if (x>coordsHi[0]) break;
150  }
151 
152  // Grid running along z at constant y
153  double y = 0.0;
154  for (;;) {
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]);
158  y += 10.0;
159  if (y>coordsHi[1]) break;
160  }
161  y = -10.0;
162  for (;;) {
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]);
166  y -= 10.0;
167  if (y<coordsLo[1]) break;
168  }
169 
170  return;
171 }
process_name opflash particleana ie ie ie z
process_name opflash particleana ie x
def style
Definition: util.py:237
process_name opflash particleana ie ie y
void evd_tool::MicroBooNEDrawer::DrawRectangularBox ( evdb::View3D *  view,
double *  coordsLo,
double *  coordsHi,
int  color = kGray,
int  width = 1,
int  style = 1 
)
private

Definition at line 92 of file MicroBooNEDrawer_tool.cc.

93 {
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]);
100 
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]);
107 
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]);
114 
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]);
121 
122  return;
123 }
walls no bottom
Definition: selectors.fcl:105
def style
Definition: util.py:237
walls no top
Definition: selectors.fcl:105

Member Data Documentation

bool evd_tool::MicroBooNEDrawer::fDrawAxes
private

true to draw coordinate axes

Definition at line 40 of file MicroBooNEDrawer_tool.cc.

bool evd_tool::MicroBooNEDrawer::fDrawBadChannels
private

true to draw bad channels

Definition at line 41 of file MicroBooNEDrawer_tool.cc.

bool evd_tool::MicroBooNEDrawer::fDrawGrid
private

true to draw backing grid

Definition at line 39 of file MicroBooNEDrawer_tool.cc.

bool evd_tool::MicroBooNEDrawer::fThreeWindow
private

true to draw rectangular box representing 3 windows

Definition at line 38 of file MicroBooNEDrawer_tool.cc.


The documentation for this class was generated from the following file: