LArSoft  v07_13_02
Liquid Argon Software toolkit - http://larsoft.org/
evd::HitSelector Class Reference

#include "HitSelector.h"

Public Member Functions

 HitSelector ()
 
 ~HitSelector ()
 
void SaveHits (const art::Event &evt, evdb::View2D *view, unsigned int plane, double x, double y, double x1, double y1, double distance, bool good_plane=true)
 
double SaveSeedLines (const art::Event &evt, evdb::View2D *view, std::vector< util::PxLine > seedline, double distance)
 
void ChangeHit (const art::Event &evt, evdb::View2D *view, unsigned int plane, double x, double y)
 
std::vector< const recob::Hit * > GetSelectedHits (unsigned int plane)
 
trkf::HitPtrVec GetSelectedHitPtrs (unsigned int plane)
 
void ClearHitList (unsigned int plane)
 
std::vector< recob::Seed > & SeedVector ()
 

Private Attributes

std::vector< recob::SeedfSeedVector
 
std::vector< std::vector< double > > starthitout
 
std::vector< std::vector< double > > endhitout
 

Detailed Description

Definition at line 47 of file HitSelector.h.

Constructor & Destructor Documentation

evd::HitSelector::HitSelector ( )

Definition at line 34 of file HitSelector.cxx.

References endhitout, and starthitout.

35  {
36  starthitout.resize(3);
37  endhitout.resize(3);
38  }
std::vector< std::vector< double > > endhitout
Definition: HitSelector.h:86
std::vector< std::vector< double > > starthitout
Definition: HitSelector.h:85
evd::HitSelector::~HitSelector ( )

Definition at line 41 of file HitSelector.cxx.

42  {
43 
44  }

Member Function Documentation

void evd::HitSelector::ChangeHit ( const art::Event evt,
evdb::View2D view,
unsigned int  plane,
double  xin,
double  yin 
)

Save HitList to infoTransfer service

Parameters
evt: Event handle to get data objects from
view: Pointer to view to draw on
plane: plane number of view

Definition at line 303 of file HitSelector.cxx.

References art::EventID::event(), evd::RecoDrawingOptions::fHitLabels, util::GeometryUtilities::FindClosestHitIndex(), util::PxHitConverter::GeneratePxHit(), art::DataViewImpl::getByLabel(), evd::InfoTransfer::GetSelectedHitList(), art::Event::id(), geo::PlaneID::Plane, evd::InfoTransfer::SetEvtNumber(), evd::InfoTransfer::SetHitList(), evd::InfoTransfer::SetTestFlag(), util::GeometryUtilities::TimeToCm(), recob::Hit::WireID(), util::GeometryUtilities::WireToCm(), x, and y.

Referenced by evd::TWireProjPad::SelectOneHit().

308  {
312 
313 
314  //get hits from info transfer, see if our selected hit is in it
315  std::vector < art::Ptr<recob::Hit> > hits_saved;
316  std::vector < art::Ptr<recob::Hit> > hitlist;
317  // std::vector < art::Ptr < recob::Hit> > hits_to_save;
318  hitlist.clear();
319 
320  double x = xin*gser.WireToCm();
321  double y = yin*gser.TimeToCm();
322 
323  art::Handle< std::vector<recob::Hit> > HitListHandle;
324 
325  //preprocess event - load up all the hits with std::vector, as in BackTracker
326  for (size_t imod = 0; imod < recoOpt->fHitLabels.size(); ++imod) {
327  art::InputTag const which = recoOpt->fHitLabels[imod];
328  evt.getByLabel(which,HitListHandle);
329 
330  for(unsigned int ii = 0; ii < HitListHandle->size(); ++ii){
331  art::Ptr<recob::Hit> hit(HitListHandle, ii);
332  if(hit->WireID().Plane==plane)
333  hitlist.push_back(hit);
334  }
335 
337  std::vector <util::PxHit> pxhitlist;
338  PxC.GeneratePxHit(hitlist,pxhitlist);
339 
340 // art::Ptr < recob::Hit > selected_hit= hitlist[gser.FindClosestHitIndex(pxhitlist,x,y)];
341  unsigned int hitindex=gser.FindClosestHitIndex(pxhitlist,x,y);
342  //FindClosestHitPtr(hitlist, x, y);
343 
344  // find selected hit in evD
345  //art::Ptr<recob::Hit> selected_hit;
346 // for(unsigned int ii = 0; ii < HitListHandle->size(); ++ii){
347 // art::Ptr<recob::Hit> hit(HitListHandle, ii);
348 // double time=hit->PeakTime();
349 // if(hit->WireID().Plane != plane)
350 // continue;
351 // if(hit->WireID().Wire < (x+1) &&
352 // hit->WireID().Wire > (x-1) ){
353 // if(y>(time-5) && y<(time+5)){
354 // selected_hit=hit;
355 // }
356 // }
357 
358  //}
359  // for c2: unsigned int hitindex cannot be < 0
360  //if(hitlist[hitindex].isNull() || (hitindex<0 || hitindex > hitlist.size())){
361  if(hitlist[hitindex].isNull() || ( hitindex > hitlist.size())){
362  WriteMsg("no luck finding hit in evd, please try again");
363  break;
364  }
365 
366 
368  hits_saved=infot->GetSelectedHitList(plane);
369  int found_it=0;
370  for(unsigned int jj=0; jj<hits_saved.size(); ++jj){
371  if(hitlist[hitindex]->PeakTime() == hits_saved[jj]->PeakTime()){
372  if(hitlist[hitindex]->Channel() == hits_saved[jj]->Channel()){
373  found_it=1;
374  hits_saved.erase(hits_saved.begin()+jj);
375  }
376  }
377  }
378 
379  //if didn't find it, add it
380  if(found_it!=1){
381  hits_saved.push_back(hitlist[hitindex]);
382  }
383 
384  //update the info transfer list
385  infot->SetHitList(plane,hits_saved);
386  infot->SetTestFlag(1);
387  infot->SetEvtNumber(evt.id().event());
388  }
389  }
Float_t x
Definition: compare.C:6
void SetTestFlag(int value)
Definition: InfoTransfer.h:50
Float_t y
Definition: compare.C:6
Double_t TimeToCm() const
Double_t WireToCm() const
void GeneratePxHit(const std::vector< unsigned int > &hit_index, const std::vector< art::Ptr< recob::Hit >> hits, std::vector< util::PxHit > &pxhits) const
Generate: from 1 set of hits => 1 set of PxHits using indexes (association)
void SetHitList(unsigned int p, std::vector< art::Ptr< recob::Hit > > hits_to_save)
Definition: InfoTransfer.h:60
Detector simulation of raw signals on wires.
void SetEvtNumber(int value)
Definition: InfoTransfer.h:56
std::vector< art::Ptr< recob::Hit > > GetSelectedHitList(unsigned int plane)
Definition: InfoTransfer.h:66
bool getByLabel(std::string const &label, std::string const &productInstanceName, Handle< PROD > &result) const
Definition: DataViewImpl.h:344
EventNumber_t event() const
Definition: EventID.h:117
std::vector< art::InputTag > fHitLabels
module labels that produced hits
Namespace collecting geometry-related classes utilities.
EventID id() const
Definition: Event.h:56
unsigned int FindClosestHitIndex(std::vector< util::PxHit > hitlist, unsigned int wirein, double timein) const
void evd::HitSelector::ClearHitList ( unsigned int  plane)

Definition at line 432 of file HitSelector.cxx.

References evd::InfoTransfer::ClearSelectedHitList().

Referenced by evd::TWireProjPad::ClearHitList().

433  {
435  infot->ClearSelectedHitList(plane);
436  }
void ClearSelectedHitList(int plane)
Definition: InfoTransfer.h:69
trkf::HitPtrVec evd::HitSelector::GetSelectedHitPtrs ( unsigned int  plane)

Save HitList to infoTransfer service

Parameters
evt: Event handle to get data objects from
view: Pointer to view to draw on
plane: plane number of view

Definition at line 402 of file HitSelector.cxx.

References evd::InfoTransfer::GetSelectedHitList(), and trkf::HitPtrVec::Hits.

Referenced by evd::CalorPad::Draw().

403  {
405  trkf::HitPtrVec ToReturn;
406  ToReturn.Hits = infot->GetSelectedHitList(plane);
407  return ToReturn;
408  }
std::vector< art::Ptr< recob::Hit > > Hits
Definition: BezierTrack.h:127
std::vector< art::Ptr< recob::Hit > > GetSelectedHitList(unsigned int plane)
Definition: InfoTransfer.h:66
std::vector< const recob::Hit * > evd::HitSelector::GetSelectedHits ( unsigned int  plane)

Definition at line 410 of file HitSelector.cxx.

References evd::InfoTransfer::GetSelectedHitList().

411  {
412  std::vector < art::Ptr<recob::Hit> > hits_saved;
413  //std::vector < art::Ptr < recob::Hit> > hits_to_save;
414 
415  //std::vector < recob::Hit> hits_to_point; //needed to convert art::Ptr<recob:: Hit> to Hit* to pass to Hit2D
416  std::vector< const recob::Hit*> hits_to_draw; //draw selected hits in a different color
417 
419  hits_saved=infot->GetSelectedHitList(plane);
420 
421  // if(hits_saved.size()!=0){
422  for(unsigned int i=0;i<hits_saved.size();i++)
423  hits_to_draw.push_back(hits_saved[i].get());
424  //}
425 
426  return hits_to_draw;
427 
428  }
std::vector< art::Ptr< recob::Hit > > GetSelectedHitList(unsigned int plane)
Definition: InfoTransfer.h:66
void evd::HitSelector::SaveHits ( const art::Event evt,
evdb::View2D view,
unsigned int  plane,
double  xin,
double  yin,
double  x1in,
double  y1in,
double  distance,
bool  good_plane = true 
)

Save HitList to infoTransfer service

Parameters
evt: Event handle to get data objects from
view: Pointer to view to draw on
plane: plane number of view

Definition at line 170 of file HitSelector.cxx.

References endhitout, art::EventID::event(), evd::RecoDrawingOptions::fHitLabels, util::GeometryUtilities::FindClosestHitIndex(), util::PxHitConverter::GeneratePxHit(), art::DataViewImpl::getByLabel(), art::Event::id(), recob::Hit::PeakTime(), util::PxPoint::plane, geo::PlaneID::Plane, util::GeometryUtilities::SelectLocalHitlistIndex(), evd::InfoTransfer::SetEndHitCoords(), evd::InfoTransfer::SetEvtNumber(), evd::InfoTransfer::SetHitList(), evd::InfoTransfer::SetStartHitCoords(), evd::InfoTransfer::SetTestFlag(), starthitout, util::PxPoint::t, util::GeometryUtilities::TimeToCm(), util::PxPoint::w, geo::WireID::Wire, recob::Hit::WireID(), util::GeometryUtilities::WireToCm(), x, x1, y, and y1.

Referenced by evd::TWireProjPad::SaveHitList().

178  {
179  // unsigned int w = 0;
183  std::vector < art::Ptr < recob::Hit> > hits_to_save; //std::vector < azart::Ptr >
184 
185 
186  //std::vector < recob::Hit> hits_to_point; //needed to convert art::Ptr<recob:: Hit> to Hit* to pass to Hit2D
187  // std::vector< const recob::Hit*> hits_to_draw; //draw selected hits in a different color
188 
189  art::Handle< std::vector<recob::Hit> > HitListHandle;
190  // recob::Hit * startHit;
191  // recob::Hit * endHit;
192  //preprocess event - load up all the hits with std::vector, as in BackTracker
193 
194 
195 
196  starthitout[plane].clear();
197  endhitout[plane].clear();
198 
199  starthitout[plane].resize(2);
200  endhitout[plane].resize(2);
201 
202  //convert input variables to cm-cm space required by GeometryUtilities
203  double x=xin*gser.WireToCm();
204  double x1=x1in*gser.WireToCm();
205  double y=yin*gser.TimeToCm();
206  double y1=y1in*gser.TimeToCm();
207 
208 
209  double lslope=0;
210 
211  if((x-x1)!=0)
212  lslope=(y-y1)/(x-x1);
213 
214  for (size_t imod = 0; imod < recoOpt->fHitLabels.size(); ++imod) {
215  art::InputTag const which = recoOpt->fHitLabels[imod];
216 
217  std::vector<art::Ptr<recob::Hit>> hitlist;
218  hitlist.clear();
219  evt.getByLabel(which,HitListHandle);
220 
221  for(unsigned int ii = 0; ii < HitListHandle->size(); ++ii){
222  art::Ptr<recob::Hit> hit(HitListHandle, ii);
223  if(hit->WireID().Plane==plane)
224  hitlist.push_back(hit);
225  }
226 
227 
228  // Select Local Hit List
230  std::vector <util::PxHit> pxhitlist;
231  PxC.GeneratePxHit(hitlist,pxhitlist);
232  std::vector< unsigned int > pxhitlist_local_index;
233  std::vector< util::PxHit > pxhitlist_local;
234  pxhitlist_local.clear();
235 
236  util::PxPoint startHit;
237  startHit.plane=pxhitlist.at(0).plane;
238  startHit.w=(x+x1)/2;
239  startHit.t=(y+y1)/2;
240 
241 
242 // double orttemp=TMath::Sqrt((y1-y)*(y1-y)*gser.TimeToCm()*gser.TimeToCm() + (x1-x)*(x1-x)*gser.WireToCm()*gser.WireToCm())/2;
243  double orttemp=TMath::Sqrt((y1-y)*(y1-y) + (x1-x)*(x1-x))/2;
244 
245 
246  gser.SelectLocalHitlistIndex(pxhitlist, pxhitlist_local_index, startHit,
247  orttemp,
248  distance, lslope);
249 
250 
251  for(unsigned int idx=0;idx<pxhitlist_local_index.size();idx++)
252  {
253  hits_to_save.push_back(hitlist.at(pxhitlist_local_index.at(idx)));
254  pxhitlist_local.push_back(pxhitlist.at(pxhitlist_local_index.at(idx)));
255  }
256 
257 
258  /* gser.SelectLocalHitlist( hitlist,
259  hits_to_save,
260  (x+x1)/2,
261  (y+y1)/2,
262  TMath::Sqrt((y1-y)*(y1-y)*gser.TimeToCm()*gser.TimeToCm() + (x1-x)*(x1-x)*gser.WireToCm()*gser.WireToCm())/2,
263  distance,
264  lslope);*/
265  //const_cast<recob::Hit *> (nearHit.get())
266 
267  recob::Hit * hit= const_cast<recob::Hit *> ((hits_to_save[gser.FindClosestHitIndex(pxhitlist_local,x,y)]).get());
268  //gser.FindClosestHit(hits_to_save,
269  // x, y);
270 
271  starthitout[plane][1] = hit->PeakTime() ;
272  starthitout[plane][0] = hit->WireID().Wire;
273 
274 // // this obviously not correct, the fact that x,y are used for both start and end point, A.S. -> to debug
275  recob::Hit * endhit= const_cast<recob::Hit *> ((hits_to_save[gser.FindClosestHitIndex(pxhitlist_local,x,y)]).get());
276  //FindClosestHit(hits_to_save,
277  // x, y);
278 
279  endhitout[plane][1] = endhit->PeakTime() ;
280  endhitout[plane][0] = endhit->WireID().Wire;
281 
282  }
283 
285  infot->SetHitList(plane,hits_to_save);
286  infot->SetTestFlag(1);
287  if(good_plane)
288  {
289  infot->SetStartHitCoords(plane,starthitout[plane]);
290  infot->SetEndHitCoords(plane,endhitout[plane]);
291  }
292  infot->SetEvtNumber(evt.id().event());
293  }
Float_t x
Definition: compare.C:6
void SetTestFlag(int value)
Definition: InfoTransfer.h:50
Float_t y1[n_points_granero]
Definition: compare.C:5
std::vector< std::vector< double > > endhitout
Definition: HitSelector.h:86
geo::WireID WireID() const
Initial tdc tick for hit.
Definition: Hit.h:234
Float_t x1[n_points_granero]
Definition: compare.C:5
Float_t y
Definition: compare.C:6
Double_t TimeToCm() const
Double_t WireToCm() const
WireID_t Wire
Index of the wire within its plane.
Definition: geo_types.h:313
std::vector< std::vector< double > > starthitout
Definition: HitSelector.h:85
void SetStartHitCoords(unsigned int plane, std::vector< double > starthitin)
Definition: InfoTransfer.h:97
void GeneratePxHit(const std::vector< unsigned int > &hit_index, const std::vector< art::Ptr< recob::Hit >> hits, std::vector< util::PxHit > &pxhits) const
Generate: from 1 set of hits => 1 set of PxHits using indexes (association)
double t
Definition: PxUtils.h:11
void SetHitList(unsigned int p, std::vector< art::Ptr< recob::Hit > > hits_to_save)
Definition: InfoTransfer.h:60
Detector simulation of raw signals on wires.
double w
Definition: PxUtils.h:10
void SelectLocalHitlistIndex(const std::vector< util::PxHit > &hitlist, std::vector< unsigned int > &hitlistlocal_index, util::PxPoint &startHit, Double_t &linearlimit, Double_t &ortlimit, Double_t &lineslopetest)
void SetEvtNumber(int value)
Definition: InfoTransfer.h:56
float PeakTime() const
Time of the signal peak, in tick units.
Definition: Hit.h:219
bool getByLabel(std::string const &label, std::string const &productInstanceName, Handle< PROD > &result) const
Definition: DataViewImpl.h:344
EventNumber_t event() const
Definition: EventID.h:117
void SetEndHitCoords(unsigned int plane, std::vector< double > endhitin)
Definition: InfoTransfer.h:101
2D representation of charge deposited in the TDC/wire plane
Definition: Hit.h:49
std::vector< art::InputTag > fHitLabels
module labels that produced hits
Namespace collecting geometry-related classes utilities.
EventID id() const
Definition: Event.h:56
unsigned int plane
Definition: PxUtils.h:12
unsigned int FindClosestHitIndex(std::vector< util::PxHit > hitlist, unsigned int wirein, double timein) const
double evd::HitSelector::SaveSeedLines ( const art::Event evt,
evdb::View2D view,
std::vector< util::PxLine seedlines,
double  distance 
)

Save SeedLineList to infoTransfer service

Parameters
evt: Event handle to get data objects from
view: Pointer to view to draw on

Return value is the kinetic enegry of the track

Definition at line 56 of file HitSelector.cxx.

References art::PtrVector< T >::at(), d, art::EventID::event(), evd::RecoDrawingOptions::fCaloPSet, evd::RecoDrawingOptions::fHitLabels, evd::EvdLayoutOptions::fMakeSeeds, art::DataViewImpl::getByLabel(), trkf::BezierTrack::GetCalorimetryObject(), trkf::BezierTrack::GetClosestApproaches(), art::Event::id(), geo::kCollection, anab::Calorimetry::KineticEnergy(), art::PtrVector< T >::push_back(), s, SeedVector(), evd::InfoTransfer::SetEvtNumber(), evd::InfoTransfer::SetHitList(), evd::InfoTransfer::SetSeedList(), evd::InfoTransfer::SetTestFlag(), art::PtrVector< T >::size(), and lar::dump::vector().

Referenced by evd::TWireProjPad::SaveSeedList().

61  {
65  std::map<int, std::vector < art::Ptr < recob::Hit> > > hits_to_save;
66 
67  double KineticEnergy=0;
69 
70 
71  for (size_t imod = 0; imod < recoOpt->fHitLabels.size(); ++imod) {
72  art::InputTag const which = recoOpt->fHitLabels[imod];
73 
74  evt.getByLabel(which,HitListHandle);
75 
76 
78  if(evdlayoutoptions->fMakeSeeds)
79  {
80  // Code to collect hits around curve
81 
82  // First, put the hits into a PtrVector
84  for(unsigned int i=0; i < HitListHandle->size(); ++i)
85  {
86  art::Ptr<recob::Hit> hit(HitListHandle,i);
87  HitVec.push_back(hit);
88  }
89 
90  // Get the bezier curve which was created
91  if(SeedVector().size()>1)
92  {
93  mf::LogVerbatim("HitSelector") <<"Hit selector passing bezier track "
94  << SeedVector().size() << " seeds";
95  }
96  else if(SeedVector().size()==1)
97  {
98  mf::LogVerbatim("HitSelector") <<"One seed defined - splitting in half to make track";
99  double Pt[3], Dir[3], Err[3];
100  SeedVector().at(0).GetPoint( Pt, Err);
101  SeedVector().at(0).GetDirection( Dir, Err);
102 
103  double NewPt1[3], NewPt2[3], NewDir[3];
104  for(int i=0; i!=3; ++i)
105  {
106  NewPt1[i] = Pt[i] - Dir[i]/2;
107  NewPt2[i] = Pt[i] + Dir[i]/2;
108  NewDir[i] = Dir[i] / 2;
109  }
110  SeedVector().clear();
111 
112  recob::Seed TheSeed1(NewPt1, NewDir, Err, Err);
113  SeedVector().push_back(TheSeed1);
114  recob::Seed TheSeed2(NewPt2, NewDir, Err, Err);
115  SeedVector().push_back(TheSeed2);
116  }
117  else
118  {
119  mf::LogWarning("HitSelector") << "Cannot select hits, no seeds selected!";
120  return 0;
121  }
122 
123  trkf::BezierTrack BTrack(SeedVector());
124 
125  // These hold output,
126  // s = fractional distance along curve of close approach
127  // d = min distance from line
128  std::vector<double> s;
129  std::vector<double> d;
130 
131  // Run through the hits, getting their distances
132  BTrack.GetClosestApproaches(HitVec, s, d);
133 
134  // Put them into the vector for output
135  for(size_t ih=0; ih!=HitVec.size(); ++ih){
136  if(d.at(ih)<distance){
137  hits_to_save[HitVec.at(ih)->WireID().Plane].push_back(HitVec.at(ih));
138  }
139  }
141  calo::CalorimetryAlg calalg(recoOpt->fCaloPSet);
142  for(std::map<int, std::vector<art::Ptr<recob::Hit> > >::iterator it=hits_to_save.begin(); it!=hits_to_save.end(); ++it){
143  KineticEnergy += BTrack.GetCalorimetryObject(it->second, geo::kCollection,calalg).KineticEnergy();
144 
145  }
146  mf::LogVerbatim("HitSelector") <<"Track kinetic energy : " << KineticEnergy;
147  }
148  }
149 
150 
151  infot->SetSeedList(seedlines);
152  for(std::map<int, std::vector<art::Ptr<recob::Hit> > >::iterator it=hits_to_save.begin(); it!=hits_to_save.end(); ++it)
153  {
154  infot->SetHitList(it->first, it->second);
155  }
156  infot->SetTestFlag(1);
157  infot->SetEvtNumber(evt.id().event());
158 
159  return KineticEnergy;
160  }
void SetTestFlag(int value)
Definition: InfoTransfer.h:50
Float_t s
Definition: plot.C:23
MaybeLogger_< ELseverityLevel::ELsev_info, true > LogVerbatim
int fMakeSeeds
Draw two lines to make clusters if clicked.
auto vector(Vector const &v)
Returns a manipulator which will print the specified array.
Definition: DumpUtils.h:265
void push_back(Ptr< U > const &p)
Definition: PtrVector.h:441
void SetHitList(unsigned int p, std::vector< art::Ptr< recob::Hit > > hits_to_save)
Definition: InfoTransfer.h:60
Float_t d
Definition: plot.C:237
reference at(size_type n)
Definition: PtrVector.h:365
size_type size() const
Definition: PtrVector.h:308
Detector simulation of raw signals on wires.
void SetEvtNumber(int value)
Definition: InfoTransfer.h:56
void SetSeedList(std::vector< util::PxLine > seedlines)
bool getByLabel(std::string const &label, std::string const &productInstanceName, Handle< PROD > &result) const
Definition: DataViewImpl.h:344
MaybeLogger_< ELseverityLevel::ELsev_warning, false > LogWarning
fhicl::ParameterSet fCaloPSet
EventNumber_t event() const
Definition: EventID.h:117
std::vector< art::InputTag > fHitLabels
module labels that produced hits
EventID id() const
Definition: Event.h:56
std::vector< recob::Seed > & SeedVector()
Signal from collection planes.
Definition: geo_types.h:93
std::vector< recob::Seed > & evd::HitSelector::SeedVector ( )

Definition at line 439 of file HitSelector.cxx.

References fSeedVector.

Referenced by SaveSeedLines(), and evd::Display3DPad::UpdateSeedCurve().

440  {
441  return fSeedVector;
442  }
std::vector< recob::Seed > fSeedVector
Definition: HitSelector.h:83

Member Data Documentation

std::vector< std::vector <double > > evd::HitSelector::endhitout
private

Definition at line 86 of file HitSelector.h.

Referenced by HitSelector(), and SaveHits().

std::vector<recob::Seed> evd::HitSelector::fSeedVector
private

Definition at line 83 of file HitSelector.h.

Referenced by SeedVector().

std::vector< std::vector <double > > evd::HitSelector::starthitout
private

Definition at line 85 of file HitSelector.h.

Referenced by HitSelector(), and SaveHits().


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