Classes | Public Types | Public Member Functions | Private Attributes | List of all members
AdcDetectorPlotter Class Reference

#include <AdcDetectorPlotter.h>

Inheritance diagram for AdcDetectorPlotter:
TpcDataTool AdcChannelTool

Classes

class  State
 

Public Types

using Index = unsigned int
 
using IndexVector = std::vector< Index >
 
using TPadManipulatorPtr = std::unique_ptr< TPadManipulator >
 
using TLatexPtr = std::unique_ptr< TLatex >
 
using StatePtr = std::shared_ptr< State >
 
- Public Types inherited from AdcChannelTool
using Index = unsigned int
 

Public Member Functions

 AdcDetectorPlotter (fhicl::ParameterSet const &ps)
 
 ~AdcDetectorPlotter () override=default
 
DataMap viewMap (const AdcChannelDataMap &acds) const override
 
bool updateWithView () const override
 
DataMap endEvent (const DuneEventInfo &) const override
 
int addChannel (const AdcChannelData &acd, double xfac) const
 
StatePtr getState () const
 
void initialize ()
 
- Public Member Functions inherited from TpcDataTool
virtual DataMap updateTpcData (TpcData &) const
 
virtual DataMap viewTpcData (const TpcData &) const
 
virtual int forwardTpcData () const
 
- Public Member Functions inherited from AdcChannelTool
virtual ~AdcChannelTool ()=default
 
virtual DataMap update (AdcChannelData &) const
 
virtual DataMap view (const AdcChannelData &acd) const
 
virtual DataMap updateMap (AdcChannelDataMap &acds) const
 
virtual bool viewWithUpdate () const
 
virtual DataMap beginEvent (const DuneEventInfo &) const
 
virtual DataMap close (const DataMap *dmin=nullptr)
 

Private Attributes

int m_LogLevel
 
float m_WireAngle
 
int m_DataType
 
float m_Tick0
 
float m_DriftSpeed
 
float m_XMin
 
float m_XMax
 
float m_ZMin
 
float m_ZMax
 
float m_SignalThreshold
 
bool m_SkipBadChannels
 
float m_ShowAllTicks
 
Index m_FirstTick
 
Index m_LastTick
 
bool m_ShowWires
 
bool m_ShowCathode
 
IndexVector m_ShowTpcSets
 
bool m_ShowGrid
 
std::string m_Title
 
std::string m_PlotTitle
 
std::string m_FileName
 
const lariov::ChannelStatusProviderm_pChannelStatusProvider
 
StatePtr m_state
 
const AdcChannelStringToolm_adcStringBuilder
 

Additional Inherited Members

- Static Public Member Functions inherited from AdcChannelTool
static int interfaceNotImplemented ()
 

Detailed Description

Definition at line 68 of file AdcDetectorPlotter.h.

Member Typedef Documentation

using AdcDetectorPlotter::Index = unsigned int

Definition at line 72 of file AdcDetectorPlotter.h.

Definition at line 73 of file AdcDetectorPlotter.h.

using AdcDetectorPlotter::StatePtr = std::shared_ptr<State>

Definition at line 92 of file AdcDetectorPlotter.h.

using AdcDetectorPlotter::TLatexPtr = std::unique_ptr<TLatex>

Definition at line 75 of file AdcDetectorPlotter.h.

Definition at line 74 of file AdcDetectorPlotter.h.

Constructor & Destructor Documentation

AdcDetectorPlotter::AdcDetectorPlotter ( fhicl::ParameterSet const &  ps)

Definition at line 53 of file AdcDetectorPlotter_tool.cc.

54 : m_LogLevel(ps.get<int>("LogLevel")),
55  m_WireAngle(ps.get<float>("WireAngle")),
56  m_DataType(ps.get<int>("DataType")),
57  m_Tick0(ps.get<float>("Tick0")),
58  m_DriftSpeed(ps.get<float>("DriftSpeed")),
59  m_XMin(ps.get<float>("XMin")),
60  m_XMax(ps.get<float>("XMax")),
61  m_ZMin(ps.get<float>("ZMin")),
62  m_ZMax(ps.get<float>("ZMax")),
63  m_SignalThreshold(ps.get<float>("SignalThreshold")),
64  m_SkipBadChannels(ps.get<bool>("SkipBadChannels")),
65  m_ShowAllTicks(ps.get<bool>("ShowAllTicks")),
66  m_FirstTick(ps.get<unsigned long>("FirstTick")),
67  m_LastTick(ps.get<unsigned long>("LastTick")),
68  m_ShowWires(ps.get<bool>("ShowWires")),
69  m_ShowCathode(ps.get<bool>("ShowCathode")),
70  m_ShowTpcSets(ps.get<IndexVector>("ShowTpcSets")),
71  m_ShowGrid(ps.get<bool>("ShowGrid")),
72  m_Title(ps.get<string>("Title")),
73  m_PlotTitle(ps.get<string>("PlotTitle")),
74  m_FileName(ps.get<string>("FileName")),
75  m_pChannelStatusProvider(nullptr),
76  m_state(new State) {
77  const string myname = "AdcDetectorPlotter::ctor: ";
79  string stringBuilder = "adcStringBuilder";
80  m_adcStringBuilder = ptm->getShared<AdcChannelStringTool>(stringBuilder);
81  if ( m_adcStringBuilder == nullptr ) {
82  cout << myname << "WARNING: AdcChannelStringTool not found: " << stringBuilder << endl;
83  }
84  if ( m_SkipBadChannels ) {
85  if ( m_LogLevel >= 1 ) cout << myname << "Fetching channel status service." << endl;
87  if ( m_pChannelStatusProvider == nullptr ) {
88  cout << myname << "WARNING: Channel status provider not found." << endl;
89  }
90  }
91  if ( m_LogLevel ) {
92  cout << myname << "Configuration: " << endl;
93  cout << myname << " LogLevel: " << m_LogLevel << endl;
94  cout << myname << " WireAngle: " << m_WireAngle << endl;
95  cout << myname << " DataType: " << m_DataType << endl;
96  cout << myname << " Tick0: " << m_Tick0 << endl;
97  cout << myname << " DriftSpeed: " << m_DriftSpeed << " cm/tick" << endl;
98  cout << myname << " XMin: " << m_XMin << " cm" << endl;
99  cout << myname << " XMax: " << m_XMax << " cm" << endl;
100  cout << myname << " ZMin: " << m_ZMin << " cm" << endl;
101  cout << myname << " ZMax: " << m_ZMax << " cm" << endl;
102  cout << myname << " SignalThreshold: " << m_SignalThreshold << endl;
103  cout << myname << " SkipBadChannels: " << (m_SkipBadChannels ? "true" : "false") << endl;
104  cout << myname << " ShowAllTicks: " << m_ShowAllTicks << endl;
105  cout << myname << " FirstTick: " << m_FirstTick << endl;
106  cout << myname << " LastTick: " << m_LastTick << endl;
107  cout << myname << " ShowWires: " << m_ShowWires << endl;
108  cout << myname << " ShowCathode: " << m_ShowCathode << endl;
109  cout << myname << " ShowTpcSets: [";
110  bool first = true;
111  for ( Index itps : m_ShowTpcSets ) {
112  if ( first ) first = false;
113  else cout << ", ";
114  cout << itps;
115  }
116  cout << "]" << endl;
117  cout << myname << " ShowGrid: " << m_ShowGrid << endl;
118  cout << myname << " Title: " << m_Title << endl;
119  cout << myname << " PlotTitle: " << m_PlotTitle << endl;
120  cout << myname << " FileName: " << m_FileName << endl;
121  }
122  WireSelector& sel = getState()->sel;
124  sel.selectTpcSets(m_ShowTpcSets);
125  //for ( Index itps : m_ShowTpcSets ) sel.selectTpcSet(itps);
126  const WireSelector::WireInfoVector& wdat = sel.fillData();
127  const WireSelector::WireInfoMap& wmap = sel.fillDataMap();
128  const WireSelector::WireSummary& wsum = sel.fillWireSummary();
129  const GeometryCore* pgeo = sel.geometry();
130  string gname = pgeo == nullptr ? "NONE" : pgeo->DetectorName();
131  if ( m_LogLevel ) {
132  cout << myname << "Derived: " << endl;
133  cout << myname << " Geometry name: " << gname << endl;
134  cout << myname << " # selected planes: " << sel.planeIDs().size() << endl;
135  cout << myname << " # selected wires: " << wdat.size() << endl;
136  cout << myname << " # selected wire points: " << wsum.size() << endl;
137  cout << myname << " # selected channels: " << wmap.size() << endl;
138  }
139 }
std::vector< Index > IndexVector
const lariov::ChannelStatusProvider * m_pChannelStatusProvider
const PlaneIDVector & planeIDs() const
Definition: WireSelector.h:123
unsigned int Index
const GeometryCore * geometry() const
Definition: WireSelector.h:106
StatePtr getState() const
void selectWireAngle(double wireAngle, double tol=0.001)
void selectTpcSets(const IndexVector &itpss)
std::string DetectorName() const
Returns a string with the name of the detector, as configured.
const AdcChannelStringTool * m_adcStringBuilder
std::vector< WireInfo > WireInfoVector
Definition: WireSelector.h:97
static constexpr double ps
Definition: Units.h:99
Description of geometry of one entire detector.
const WireSummary & fillWireSummary()
const WireInfoVector & fillData()
std::multimap< Index, const WireInfo * > WireInfoMap
Definition: WireSelector.h:98
const WireInfoMap & fillDataMap()
static DuneToolManager * instance(std::string fclname="", int dbg=1)
T * getShared(std::string name)
QTextStream & endl(QTextStream &s)
AdcDetectorPlotter::~AdcDetectorPlotter ( )
overridedefault

Member Function Documentation

int AdcDetectorPlotter::addChannel ( const AdcChannelData acd,
double  xfac 
) const

Definition at line 300 of file AdcDetectorPlotter_tool.cc.

300  {
301  const string myname = "AdcDetectorPlotter::addChannel: ";
302  bool isRaw = m_DataType == 1;
303  bool isPrep = m_DataType == 0;
304  if ( !isRaw && !isPrep ) {
305  cout << myname << "ERROR: Invalid data type: " << m_DataType << endl;
306  return 2;
307  }
308  State& state = *getState();
309  TGraph* pg = state.ppad->graph();
310  if ( pg == nullptr ) {
311  cout << myname << "ERROR: Graph is missing." << endl;
312  return 1;
313  }
314  AdcChannel icha = acd.channel();
315  auto rng = state.sel.dataMap().equal_range(icha);
316  Index nsam = isRaw ? acd.raw.size() : acd.samples.size();
317  if ( m_LogLevel >= 4 ) {
318  cout << myname << " Adding " << nsam << (isRaw ? " raw" : " processed")
319  << " sample" << (nsam==1 ? "" : "s") << endl;
320  }
321  for ( auto ient=rng.first; ient!=rng.second; ++ient) {
322  const WireSelector::WireInfo& win = *(ient->second);
323  float z = win.z;
324  float x1 = win.x1();
325  float x2 = win.x2();
326  float driftVelocity = win.driftSign()*m_DriftSpeed;
327  Index isam1 = 0;
328  Index isam2 = nsam;
329  if ( m_LastTick > m_FirstTick ) {
330  if ( m_FirstTick > isam1 ) isam1 = m_FirstTick;
331  if ( m_LastTick < isam2 ) isam2 = m_LastTick;
332  }
333  for ( Index isam=isam1; isam<isam2; ++isam ) {
334  float sig = isRaw ? acd.raw[isam] - acd.pedestal : acd.samples[isam];
335  if ( sig > m_SignalThreshold ) {
336  float x = win.x + driftVelocity*(isam - m_Tick0);
337  if ( ! m_ShowAllTicks ) {
338  if ( x < x1 ) continue;
339  if ( x > x2 ) continue;
340  }
341  Index ipt = pg->GetN();
342  pg->SetPoint(ipt, xsign*x, z);
343  if ( m_LogLevel >= 4 ) {
344  ostringstream sout;
345  sout.precision(2);
346  sout << myname << "Added point " << ipt << " (" << x << ", " << z << ")";
347  cout << sout.str() << endl;
348  }
349  } else if ( m_LogLevel >= 5 ) {
350  cout << myname << "Skipped sample " << isam << " with signal " << sig << endl;
351  }
352  }
353  }
354 /*
355  AdcChannel chan = acd.channel();
356  const AdcSignalVector& sams = acd.samples;
357  const AdcCountVector& raw = acd.raw;
358  AdcSignal ped = 0.0;
359  bool isRawPed = false;
360  if ( isRaw ) {
361  ped = acd.pedestal;
362  isRawPed = ped != AdcChannelData::badSignal;
363  }
364  unsigned int ibin = ph->GetBin(1, chan-chanFirst+1);
365  for ( Tick isam=0; isam<sams.size(); ++isam, ++ibin ) {
366  unsigned int isig = isam + m_FirstTick;
367  if ( isPrep ) {
368  if ( isig < sams.size() ) ph->SetBinContent(ibin, sams[isig]);
369  } else if ( isRawPed ) {
370  if ( isig < raw.size() ) ph->SetBinContent(ibin, raw[isig] - ped);
371  } else {
372  cout << myname << "Fill failed for bin " << ibin << endl;
373  }
374  }
375 */
376  return 0;
377 }
float x1() const
Definition: WireSelector.h:59
unsigned int Index
StatePtr getState() const
float x2() const
Definition: WireSelector.h:60
AdcCountVector raw
Channel channel() const
AdcSignal pedestal
float driftSign() const
Definition: WireSelector.h:65
unsigned int AdcChannel
Definition: AdcTypes.h:50
list x
Definition: train.py:276
AdcSignalVector samples
QTextStream & endl(QTextStream &s)
DataMap AdcDetectorPlotter::endEvent ( const DuneEventInfo evi) const
overridevirtual

Reimplemented from AdcChannelTool.

Definition at line 277 of file AdcDetectorPlotter_tool.cc.

277  {
278  const string myname = "AdcDetectorPlotter::endEvent: ";
279  DataMap ret;
280  State& state = *getState();
281  if ( state.reportCount == 0 ) {
282  cout << myname << "WARNING: No data recorded." << endl;
283  return ret;
284  }
285  if ( evi.run != state.run ) {
286  cout << myname << "ERROR: Received request for unexpected run: " << evi.run << endl;
287  return ret.setStatus(1);
288  }
289  if ( evi.event != state.event ) {
290  cout << myname << "ERROR: Received request for unexpected event: " << evi.event << endl;
291  return ret.setStatus(2);
292  }
293  state.ppad->print(state.ofname);
294  state.reportCount = 0;
295  return ret;
296 }
DataMap & setStatus(int stat)
Definition: DataMap.h:130
void print(std::ostream *pout) const
Definition: DataMap.h:245
StatePtr getState() const
QTextStream & endl(QTextStream &s)
StatePtr AdcDetectorPlotter::getState ( ) const
inline

Definition at line 107 of file AdcDetectorPlotter.h.

107 { return m_state; }
void AdcDetectorPlotter::initialize ( )

Definition at line 143 of file AdcDetectorPlotter_tool.cc.

143  {
144 }
bool AdcDetectorPlotter::updateWithView ( ) const
inlineoverridevirtual

Reimplemented from AdcChannelTool.

Definition at line 100 of file AdcDetectorPlotter.h.

100 { return true; }
DataMap AdcDetectorPlotter::viewMap ( const AdcChannelDataMap acds) const
overridevirtual

Reimplemented from AdcChannelTool.

Definition at line 148 of file AdcDetectorPlotter_tool.cc.

148  {
149  const string myname = "AdcDetectorPlotter::view: ";
150  DataMap ret;
151  State& state = *getState();
152  if ( m_LogLevel >= 2 ) cout << myname << "Begin call " << state.reportCount
153  << "/" << state.jobCount << "." << endl;
154  if ( acds.size() == 0 ) {
155  cout << myname << "WARNING: Channel map is empty. No data extracted." << endl;
156  return ret.setStatus(1);
157  }
158  const AdcChannelData& acdFirst = acds.begin()->second;
159  const AdcChannelData& acdLast = acds.rbegin()->second;
160  string hname = "hdet";
161  int npadx = 1200;
162  int npady = 1000;
163  double xmin = m_XMin;
164  double xmax = m_XMax;
165  string sttlx = "Drift coordinate [cm]";
166  double xsign = 1.0;
167  if ( xmax < xmin ) {
168  xmin = m_XMax;
169  xmax = m_XMin;
170  sttlx = "-" + sttlx;
171  xsign = -1.0;
172  }
173  string sttly = "Wire coordinate [cm]";
174  if ( state.reportCount ) {
175  if ( acdFirst.run() != state.run ||
176  acdFirst.subRun() != state.subrun ||
177  acdFirst.event() != state.event ) {
178  cout << myname << "ERROR: Received unexpected event ID. Clearing data." << endl;
179  cout << myname << "State: " << state.event << "-" << state.subrun << "-" << state.event << endl;
180  cout << myname << " Data: " << acdFirst.event() << "-" << acdFirst.subRun() << "-" << acdFirst.event() << endl;
181  state.reportCount = 0;
182  }
183  }
184  if ( state.reportCount == 0 ) {
185  if ( m_LogLevel >= 2 ) cout << myname << " Starting new event." << endl;
186  initializeState(state, acdFirst);
187  string sttl = AdcChannelStringTool::build(m_adcStringBuilder, acdFirst, m_Title);
189  state.ofname = AdcChannelStringTool::build(m_adcStringBuilder, acdFirst, m_FileName);
190  // Create graph.
191  state.ppad.reset(new TPadManipulator(npadx, npady));
192  TGraph* pg = new TGraph;
193  pg->SetTitle(sttl.c_str());
194  pg->GetXaxis()->SetTitle(sttlx.c_str());
195  pg->GetYaxis()->SetTitle(sttly.c_str());
196  state.ppad->add(pg, "P");
197  state.ppad->graph()->Expand(512); // Allocate 1024 points.
198  state.ppad->setRangeX(xmin, xmax);
199  state.ppad->setRangeY(m_ZMin, m_ZMax);
200  if ( m_ShowGrid ) state.ppad->setGrid();
201  LineColors cols;
202  const WireSelector::WireInfoVector& wins = state.sel.fillData();
203  if ( m_ShowWires ) {
204  TGraph* pgw = new TGraph;
205  pgw->SetMarkerColor(cols.red());
206  pgw->Expand(wins.size());
207  for ( Index iwin=0; iwin<wins.size(); ++iwin ) {
208  const WireSelector::WireInfo& win = wins[iwin];
209  pgw->SetPoint(iwin, xsign*win.x, win.z);
210  }
211  state.ppad->add(pgw, "P");
212  }
213  if ( m_ShowCathode ) {
214  TGraph* pgc = new TGraph;
215  pgc->SetMarkerColor(cols.green());
216  pgc->Expand(wins.size());
217  for ( Index iwin=0; iwin<wins.size(); ++iwin ) {
218  const WireSelector::WireInfo& win = wins[iwin];
219  pgc->SetPoint(iwin, xsign*(win.x + win.driftMax), win.z);
220  }
221  state.ppad->add(pgc, "P");
222  }
223  // Add lower left label.
224  if ( spttl.size() ) {
225  state.pttl.reset(new TLatex(0.01, 0.015, spttl.c_str()));
226  state.pttl->SetNDC();
227  state.pttl->SetTextFont(42);
228  state.pttl->SetTextSize(0.030);
229  state.ppad->add(state.pttl.get());
230  }
231  ++state.jobCount;
232  } else {
233  TGraph* pgr = state.ppad->graph();
234  if ( pgr == nullptr ) {
235  cout << "ERROR: Graph not found." << endl;
236  return ret;
237  }
238  if ( m_LogLevel >= 2 ) {
239  cout << myname << " Adding to existing event. Graph point count is " << pgr->GetN() << endl;
240  }
241  }
242  ++state.reportCount;
243  Tick maxtick = 0;
244  for ( const AdcChannelDataMap::value_type& iacd : acds ) {
245  if ( iacd.first == AdcChannelData::badChannel() ) {
246  cout << myname << "WARNING: Channel map has invalid channels. No plot is created." << endl;
247  }
248  Tick ntick = iacd.second.samples.size();
249  if ( ntick > maxtick ) maxtick = ntick;
250  }
251  AdcIndex chanFirst = acdFirst.channel();
252  AdcIndex chanLast = acdLast.channel();
253  AdcIndex nchan = chanLast + 1 - chanFirst;
254  if ( m_LogLevel >= 2 ) cout << myname << " Input channel count is " << nchan << endl;
255  // Fill graph.
256  for ( const AdcChannelDataMap::value_type& iacd : acds ) {
257  if ( m_LogLevel >= 3 ) cout << myname << " Filling with channel " << iacd.first << endl;
258  const AdcChannelData& acd = iacd.second;
259  if ( m_SkipBadChannels && m_pChannelStatusProvider != nullptr &&
261  if ( m_LogLevel >= 3 ) cout << myname << " Skipping bad channel " << acd.channel() << endl;
262  } else {
263  if ( m_LogLevel >= 3 ) cout << myname << " Adding channel " << acd.channel() << endl;
264  addChannel(acd, xsign);
265  }
266  }
267  if ( state.ppad->graph()->GetN() == 0 ) {
268  cout << myname << "Graph has no points. Adding one to avoid root exception." << endl;
269  state.ppad->graph()->SetPoint(0, m_XMin, m_ZMin);
270  }
271  if ( m_LogLevel >= 2 ) cout << myname << " Graph point count: " << state.ppad->graph()->GetN() << endl;
272  return ret;
273 }
virtual bool IsBad(raw::ChannelID_t channel) const =0
Returns whether the specified channel is bad in the current run.
AdcIndex subRun() const
const lariov::ChannelStatusProvider * m_pChannelStatusProvider
DataMap & setStatus(int stat)
Definition: DataMap.h:130
static ColorType red()
Definition: LineColors.h:27
unsigned int Index
static ColorType green()
Definition: LineColors.h:28
StatePtr getState() const
int addChannel(const AdcChannelData &acd, double xfac) const
const AdcChannelStringTool * m_adcStringBuilder
static std::string build(const AdcChannelStringTool *ptool, const AdcChannelData &acd, const DataMap &dm, std::string spat)
std::vector< WireInfo > WireInfoVector
Definition: WireSelector.h:97
AdcIndex run() const
AdcIndex event() const
AdcSignalVector::size_type Tick
unsigned int AdcIndex
Definition: AdcTypes.h:15
Channel channel() const
static Index badChannel()
QTextStream & endl(QTextStream &s)

Member Data Documentation

const AdcChannelStringTool* AdcDetectorPlotter::m_adcStringBuilder
private

Definition at line 144 of file AdcDetectorPlotter.h.

int AdcDetectorPlotter::m_DataType
private

Definition at line 118 of file AdcDetectorPlotter.h.

float AdcDetectorPlotter::m_DriftSpeed
private

Definition at line 120 of file AdcDetectorPlotter.h.

std::string AdcDetectorPlotter::m_FileName
private

Definition at line 136 of file AdcDetectorPlotter.h.

Index AdcDetectorPlotter::m_FirstTick
private

Definition at line 128 of file AdcDetectorPlotter.h.

Index AdcDetectorPlotter::m_LastTick
private

Definition at line 129 of file AdcDetectorPlotter.h.

int AdcDetectorPlotter::m_LogLevel
private

Definition at line 116 of file AdcDetectorPlotter.h.

const lariov::ChannelStatusProvider* AdcDetectorPlotter::m_pChannelStatusProvider
private

Definition at line 139 of file AdcDetectorPlotter.h.

std::string AdcDetectorPlotter::m_PlotTitle
private

Definition at line 135 of file AdcDetectorPlotter.h.

float AdcDetectorPlotter::m_ShowAllTicks
private

Definition at line 127 of file AdcDetectorPlotter.h.

bool AdcDetectorPlotter::m_ShowCathode
private

Definition at line 131 of file AdcDetectorPlotter.h.

bool AdcDetectorPlotter::m_ShowGrid
private

Definition at line 133 of file AdcDetectorPlotter.h.

IndexVector AdcDetectorPlotter::m_ShowTpcSets
private

Definition at line 132 of file AdcDetectorPlotter.h.

bool AdcDetectorPlotter::m_ShowWires
private

Definition at line 130 of file AdcDetectorPlotter.h.

float AdcDetectorPlotter::m_SignalThreshold
private

Definition at line 125 of file AdcDetectorPlotter.h.

bool AdcDetectorPlotter::m_SkipBadChannels
private

Definition at line 126 of file AdcDetectorPlotter.h.

StatePtr AdcDetectorPlotter::m_state
private

Definition at line 141 of file AdcDetectorPlotter.h.

float AdcDetectorPlotter::m_Tick0
private

Definition at line 119 of file AdcDetectorPlotter.h.

std::string AdcDetectorPlotter::m_Title
private

Definition at line 134 of file AdcDetectorPlotter.h.

float AdcDetectorPlotter::m_WireAngle
private

Definition at line 117 of file AdcDetectorPlotter.h.

float AdcDetectorPlotter::m_XMax
private

Definition at line 122 of file AdcDetectorPlotter.h.

float AdcDetectorPlotter::m_XMin
private

Definition at line 121 of file AdcDetectorPlotter.h.

float AdcDetectorPlotter::m_ZMax
private

Definition at line 124 of file AdcDetectorPlotter.h.

float AdcDetectorPlotter::m_ZMin
private

Definition at line 123 of file AdcDetectorPlotter.h.


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