Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Static Protected Attributes | List of all members
pma::Element3D Class Referenceabstract

#include <PmaElement3D.h>

Inheritance diagram for pma::Element3D:
pma::Node3D pma::Segment3D

Public Member Functions

int TPC (void) const
 TPC index or -1 if out of any TPC. More...
 
int Cryo (void) const
 Cryostat index or -1 if out of any cryostat. More...
 
virtual double GetDistance2To (const TVector3 &p3d) const =0
 Distance [cm] from the 3D point to the object 3D. More...
 
virtual double GetDistance2To (const TVector2 &p2d, unsigned int view) const =0
 Distance [cm] from the 2D point to the object's 2D projection in one of wire views. More...
 
virtual pma::Vector3D GetDirection3D (void) const =0
 Get 3D direction cosines corresponding to this element. More...
 
virtual TVector3 GetUnconstrainedProj3D (const TVector2 &p2d, unsigned int view) const =0
 
virtual void SetProjection (pma::Hit3D &h) const =0
 
virtual double Length2 (void) const =0
 
double Length (void) const
 
const std::vector< pma::Hit3D * > & Hits (void) const
 
bool HasHit (const pma::Hit3D *h) const
 
pma::Hit3DHit (size_t index)
 
void RemoveHitAt (size_t index)
 
void AddHit (pma::Hit3D *h)
 
size_t NHits (void) const
 
size_t NEnabledHits (unsigned int view=geo::kUnknown) const
 
size_t NPrecalcEnabledHits (void) const
 
TVector3 const & ReferencePoint (size_t index) const
 
size_t NPoints (void) const
 
void AddPoint (TVector3 *p)
 
virtual void ClearAssigned (pma::Track3D *trk=0)
 
void UpdateHitParams (void)
 
void UpdateProjection (void)
 
void SortHits (void)
 
double SumDist2 (void) const
 
double SumDist2 (unsigned int view) const
 
double SumHitsQ (unsigned int view) const
 
unsigned int NHits (unsigned int view) const
 
unsigned int NThisHits (unsigned int view) const
 
double HitsRadius3D (unsigned int view) const
 
bool IsFrozen (void) const
 Check if the vertex 3D position is fixed. More...
 
void SetFrozen (bool state)
 Fix / relese vertex 3D position. More...
 
bool SelectRndHits (size_t nmax_per_view)
 
bool SelectAllHits (void)
 

Static Public Member Functions

static float OptFactor (unsigned int view)
 
static void SetOptFactor (unsigned int view, float value)
 

Protected Member Functions

 Element3D (void)
 
virtual double SumDist2Hits (void) const =0
 

Protected Attributes

int fTPC
 
int fCryo
 
bool fFrozen
 
std::vector< pma::Hit3D * > fAssignedHits
 
std::vector< TVector3 * > fAssignedPoints
 
size_t fNThisHits [3]
 
size_t fNThisHitsEnabledAll
 
size_t fNHits [3]
 
double fSumHitsQ [3]
 
double fHitsRadius
 

Static Protected Attributes

static float fOptFactors [3] = { 0.2F, 0.8F, 1.0F }
 

Detailed Description

Definition at line 30 of file PmaElement3D.h.

Constructor & Destructor Documentation

pma::Element3D::Element3D ( void  )
protected

Definition at line 22 of file PmaElement3D.cxx.

22  :
23  fTPC(-1), fCryo(-1),
24  fFrozen(false),
25  fHitsRadius(0)
26 {
28  for (unsigned int i = 0; i < 3; i++)
29  {
30  fNHits[i] = 0;
31  fNThisHits[i] = 0;
32  fSumHitsQ[i] = 0.0;
33  }
34 }
double fSumHitsQ[3]
Definition: PmaElement3D.h:121
size_t fNThisHits[3]
Definition: PmaElement3D.h:118
size_t fNHits[3]
Definition: PmaElement3D.h:120
size_t fNThisHitsEnabledAll
Definition: PmaElement3D.h:119
double fHitsRadius
Definition: PmaElement3D.h:122

Member Function Documentation

void pma::Element3D::AddHit ( pma::Hit3D h)
inline

Definition at line 68 of file PmaElement3D.h.

69  {
70  fAssignedHits.push_back(h);
71  SetProjection(*h);
72  }
virtual void SetProjection(pma::Hit3D &h) const =0
std::vector< pma::Hit3D * > fAssignedHits
Definition: PmaElement3D.h:116
void pma::Element3D::AddPoint ( TVector3 *  p)
inline

Definition at line 80 of file PmaElement3D.h.

80 { fAssignedPoints.push_back(p); }
std::vector< TVector3 * > fAssignedPoints
Definition: PmaElement3D.h:117
p
Definition: test.py:223
void pma::Element3D::ClearAssigned ( pma::Track3D trk = 0)
virtual

Clear hits/points vectors of this element, optionally only those which are owned by given track.

Reimplemented in pma::Node3D.

Definition at line 50 of file PmaElement3D.cxx.

51 {
52  fAssignedPoints.clear();
53  fAssignedHits.clear();
54  fHitsRadius = 0.0;
55 }
std::vector< TVector3 * > fAssignedPoints
Definition: PmaElement3D.h:117
std::vector< pma::Hit3D * > fAssignedHits
Definition: PmaElement3D.h:116
double fHitsRadius
Definition: PmaElement3D.h:122
int pma::Element3D::Cryo ( void  ) const
inline

Cryostat index or -1 if out of any cryostat.

Definition at line 36 of file PmaElement3D.h.

36 { return fCryo; }
virtual pma::Vector3D pma::Element3D::GetDirection3D ( void  ) const
pure virtual

Get 3D direction cosines corresponding to this element.

Implemented in pma::Node3D, and pma::Segment3D.

virtual double pma::Element3D::GetDistance2To ( const TVector3 &  p3d) const
pure virtual

Distance [cm] from the 3D point to the object 3D.

Implemented in pma::Node3D, and pma::Segment3D.

virtual double pma::Element3D::GetDistance2To ( const TVector2 &  p2d,
unsigned int  view 
) const
pure virtual

Distance [cm] from the 2D point to the object's 2D projection in one of wire views.

Implemented in pma::Node3D, and pma::Segment3D.

virtual TVector3 pma::Element3D::GetUnconstrainedProj3D ( const TVector2 &  p2d,
unsigned int  view 
) const
pure virtual

Implemented in pma::Node3D, and pma::Segment3D.

bool pma::Element3D::HasHit ( const pma::Hit3D h) const
inline

Definition at line 56 of file PmaElement3D.h.

57  {
58  for (const auto a : fAssignedHits) { if (h == a) return true; }
59  return false;
60  }
const double a
std::vector< pma::Hit3D * > fAssignedHits
Definition: PmaElement3D.h:116
pma::Hit3D& pma::Element3D::Hit ( size_t  index)
inline

Definition at line 62 of file PmaElement3D.h.

62 { return *(fAssignedHits[index]); }
std::vector< pma::Hit3D * > fAssignedHits
Definition: PmaElement3D.h:116
const std::vector< pma::Hit3D* >& pma::Element3D::Hits ( void  ) const
inline

Definition at line 54 of file PmaElement3D.h.

54 { return fAssignedHits; }
std::vector< pma::Hit3D * > fAssignedHits
Definition: PmaElement3D.h:116
double pma::Element3D::HitsRadius3D ( unsigned int  view) const

Definition at line 225 of file PmaElement3D.cxx.

226 {
227  if (fTPC < 0)
228  {
229  if (!fAssignedHits.empty()) mf::LogWarning("pma::Element3D") << "Hits assigned to TPC-crossing element.";
230  return 0.0F;
231  }
232 
233  TVector3 mean3D(0, 0, 0);
234  size_t nHits = 0;
235  for (auto h : fAssignedHits)
236  if (h->View2D() == view)
237  { mean3D += h->Point3D(); nHits++; }
238  if (!nHits) return 0.0;
239  mean3D *= (1.0 / nHits);
240 
241  double r2, maxR2 = 0.0;
242  for (auto h : fAssignedHits)
243  if (h->View2D() == view)
244  {
245  r2 = pma::Dist2(h->Point3D(), mean3D);
246  if (r2 > maxR2) maxR2 = r2;
247  }
248  return sqrt(maxR2);
249 }
double Dist2(const TVector2 &v1, const TVector2 &v2)
Definition: Utilities.cxx:37
std::vector< pma::Hit3D * > fAssignedHits
Definition: PmaElement3D.h:116
bool pma::Element3D::IsFrozen ( void  ) const
inline

Check if the vertex 3D position is fixed.

Definition at line 99 of file PmaElement3D.h.

99 { return fFrozen; }
double pma::Element3D::Length ( void  ) const
inline

Definition at line 52 of file PmaElement3D.h.

52 { return sqrt(Length2()); }
virtual double Length2(void) const =0
virtual double pma::Element3D::Length2 ( void  ) const
pure virtual

Implemented in pma::Node3D, and pma::Segment3D.

size_t pma::Element3D::NEnabledHits ( unsigned int  view = geo::kUnknown) const

Definition at line 36 of file PmaElement3D.cxx.

37 {
38  size_t n = 0;
39  for (size_t i = 0; i < fAssignedHits.size(); i++)
40  if (fAssignedHits[i]->IsEnabled() &&
41  ((view == geo::kUnknown) || (view == fAssignedHits[i]->View2D()))) n++;
42  return n;
43 }
Unknown view.
Definition: geo_types.h:136
std::void_t< T > n
std::vector< pma::Hit3D * > fAssignedHits
Definition: PmaElement3D.h:116
size_t pma::Element3D::NHits ( void  ) const
inline

Definition at line 74 of file PmaElement3D.h.

74 { return fAssignedHits.size(); }
std::vector< pma::Hit3D * > fAssignedHits
Definition: PmaElement3D.h:116
unsigned int pma::Element3D::NHits ( unsigned int  view) const
inline

Definition at line 93 of file PmaElement3D.h.

93 { return fNHits[view]; }
size_t fNHits[3]
Definition: PmaElement3D.h:120
size_t pma::Element3D::NPoints ( void  ) const
inline

Definition at line 79 of file PmaElement3D.h.

79 { return fAssignedPoints.size(); }
std::vector< TVector3 * > fAssignedPoints
Definition: PmaElement3D.h:117
size_t pma::Element3D::NPrecalcEnabledHits ( void  ) const
inline

Definition at line 76 of file PmaElement3D.h.

76 { return fNThisHitsEnabledAll; }
size_t fNThisHitsEnabledAll
Definition: PmaElement3D.h:119
unsigned int pma::Element3D::NThisHits ( unsigned int  view) const
inline

Definition at line 94 of file PmaElement3D.h.

94 { return fNThisHits[view]; }
size_t fNThisHits[3]
Definition: PmaElement3D.h:118
static float pma::Element3D::OptFactor ( unsigned int  view)
inlinestatic

Definition at line 106 of file PmaElement3D.h.

106 { return fOptFactors[view]; }
static float fOptFactors[3]
Definition: PmaElement3D.h:124
TVector3 const& pma::Element3D::ReferencePoint ( size_t  index) const
inline

Definition at line 78 of file PmaElement3D.h.

78 { return *(fAssignedPoints[index]); }
std::vector< TVector3 * > fAssignedPoints
Definition: PmaElement3D.h:117
void pma::Element3D::RemoveHitAt ( size_t  index)
inline

Definition at line 63 of file PmaElement3D.h.

64  {
65  if (index < fAssignedHits.size())
66  fAssignedHits.erase(fAssignedHits.begin() + index);
67  }
std::vector< pma::Hit3D * > fAssignedHits
Definition: PmaElement3D.h:116
bool pma::Element3D::SelectAllHits ( void  )

Definition at line 297 of file PmaElement3D.cxx.

298 {
299  bool changed = false;
300  for (auto h : fAssignedHits)
301  {
302  changed |= !(h->IsEnabled());
303  h->SetEnabled(true);
304  }
305  return changed;
306 }
std::vector< pma::Hit3D * > fAssignedHits
Definition: PmaElement3D.h:116
bool pma::Element3D::SelectRndHits ( size_t  nmax_per_view)

Definition at line 251 of file PmaElement3D.cxx.

252 {
253  if (!nmax_per_view) { return SelectAllHits(); }
254 
255  size_t nhits[3];
256  for (size_t i = 0; i < 3; ++i) nhits[i] = NHits(i);
257 
258  int m[3], count[3];
259  bool state[3];
260  for (size_t i = 0; i < 3; ++i)
261  {
262  if (nhits[i] >= 2 * nmax_per_view)
263  {
264  m[i] = nhits[i] / nmax_per_view;
265  state[i] = true;
266  }
267  else if (nhits[i] > nmax_per_view)
268  {
269  m[i] = nhits[i] / (nhits[i] - nmax_per_view);
270  state[i] = false;
271  }
272  else { m[i] = 0; state[i] = false; }
273 
274  count[i] = 0;
275  }
276 
277  bool b, changed = false;
278  for (auto h : fAssignedHits)
279  {
280  b = h->IsEnabled();
281 
282  size_t view = h->View2D();
283  if (m[view])
284  {
285  if (count[view] % m[view] == 0) h->SetEnabled(state[view]);
286  else h->SetEnabled(!(state[view]));
287 
288  ++count[view];
289  }
290  else h->SetEnabled(true);
291 
292  changed |= (b != h->IsEnabled());
293  }
294  return changed;
295 }
std::vector< pma::Hit3D * > fAssignedHits
Definition: PmaElement3D.h:116
static bool * b
Definition: config.cpp:1043
bool SelectAllHits(void)
size_t NHits(void) const
Definition: PmaElement3D.h:74
void pma::Element3D::SetFrozen ( bool  state)
inline

Fix / relese vertex 3D position.

Definition at line 101 of file PmaElement3D.h.

101 { fFrozen = state; }
static void pma::Element3D::SetOptFactor ( unsigned int  view,
float  value 
)
inlinestatic

Definition at line 107 of file PmaElement3D.h.

107 { fOptFactors[view] = value; }
static float fOptFactors[3]
Definition: PmaElement3D.h:124
virtual void pma::Element3D::SetProjection ( pma::Hit3D h) const
pure virtual

Implemented in pma::Node3D, and pma::Segment3D.

void pma::Element3D::SortHits ( void  )

Definition at line 45 of file PmaElement3D.cxx.

46 {
47  std::sort(fAssignedHits.begin(), fAssignedHits.end(), pma::bTrajectory3DOrderLess());
48 }
std::vector< pma::Hit3D * > fAssignedHits
Definition: PmaElement3D.h:116
double pma::Element3D::SumDist2 ( void  ) const

Definition at line 172 of file PmaElement3D.cxx.

173 {
174  if (fTPC < 0)
175  {
176  if (!fAssignedHits.empty()) mf::LogWarning("pma::Element3D") << "Hits assigned to TPC-crossing element.";
177  return 0.0F;
178  }
179 
180  double hit_sum = SumDist2Hits();
181 
182  if (fAssignedPoints.size())
183  {
184  double d, ref_sum = 0.0F;
185  for (auto p : fAssignedPoints)
186  {
187  d = sqrt( GetDistance2To(*p) ) - 0.5; // guide by ref points up to ~ 3D resolution
188  if (d > 0.0) ref_sum += d * d;
189  }
190  if (fAssignedHits.size())
191  {
192  ref_sum *= 0.2 * fAssignedHits.size() / fAssignedPoints.size();
193  }
194  hit_sum += ref_sum;
195  }
196 
197  return hit_sum;
198 }
std::vector< TVector3 * > fAssignedPoints
Definition: PmaElement3D.h:117
p
Definition: test.py:223
std::vector< pma::Hit3D * > fAssignedHits
Definition: PmaElement3D.h:116
virtual double GetDistance2To(const TVector3 &p3d) const =0
Distance [cm] from the 3D point to the object 3D.
virtual double SumDist2Hits(void) const =0
double pma::Element3D::SumDist2 ( unsigned int  view) const

Definition at line 200 of file PmaElement3D.cxx.

201 {
202  if (fTPC < 0)
203  {
204  if (!fAssignedHits.empty()) mf::LogWarning("pma::Element3D") << "Hits assigned to TPC-crossing element.";
205  return 0.0F;
206  }
207 
208  double hit_sum = 0.0F;
209  for (auto h : fAssignedHits)
210  {
211  if (h->IsEnabled())
212  {
213  unsigned int hitView = h->View2D();
214  if ((view == geo::kUnknown) || (view == hitView))
215  {
216  hit_sum += OptFactor(hitView) * // alpha_i
217  h->GetSigmaFactor() * // hit_amp / hit_max_amp
218  GetDistance2To(h->Point2D(), hitView); // hit_to_fit_dist^2
219  }
220  }
221  }
222  return hit_sum;
223 }
Unknown view.
Definition: geo_types.h:136
std::vector< pma::Hit3D * > fAssignedHits
Definition: PmaElement3D.h:116
virtual double GetDistance2To(const TVector3 &p3d) const =0
Distance [cm] from the 3D point to the object 3D.
static float OptFactor(unsigned int view)
Definition: PmaElement3D.h:106
virtual double pma::Element3D::SumDist2Hits ( void  ) const
protectedpure virtual

Implemented in pma::Node3D, and pma::Segment3D.

double pma::Element3D::SumHitsQ ( unsigned int  view) const
inline

Definition at line 92 of file PmaElement3D.h.

92 { return fSumHitsQ[view]; }
double fSumHitsQ[3]
Definition: PmaElement3D.h:121
int pma::Element3D::TPC ( void  ) const
inline

TPC index or -1 if out of any TPC.

Definition at line 34 of file PmaElement3D.h.

34 { return fTPC; }
void pma::Element3D::UpdateHitParams ( void  )

Definition at line 57 of file PmaElement3D.cxx.

58 {
59  std::vector< pma::Hit3D* > hitsColl, hitsInd1, hitsInd2;
60  for (size_t i = 0; i < 3; ++i) fNThisHitsEnabledAll = 0;
61  for (auto h : fAssignedHits)
62  {
63  if (h->IsEnabled()) fNThisHitsEnabledAll++;
64  switch (h->View2D())
65  {
66  case geo::kZ: hitsColl.push_back(h); break;
67  case geo::kV: hitsInd2.push_back(h); break;
68  case geo::kU: hitsInd1.push_back(h); break;
69  }
70  }
71  fNThisHits[0] = hitsInd1.size();
72  fNThisHits[1] = hitsInd2.size();
73  fNThisHits[2] = hitsColl.size();
74 
75  pma::SortedObjectBase const * chain = dynamic_cast< pma::SortedObjectBase* >(this);
76  pma::Element3D* el = 0;
77  for (size_t b = 0; b < chain->NextCount(); b++)
78  {
79  el = dynamic_cast< pma::Element3D* >(chain->Next(b));
80  if (el)
81  for (auto h : el->fAssignedHits)
82  {
83  switch (h->View2D())
84  {
85  case geo::kZ: hitsColl.push_back(h); break;
86  case geo::kV: hitsInd2.push_back(h); break;
87  case geo::kU: hitsInd1.push_back(h); break;
88  }
89  }
90  }
91  el = dynamic_cast< pma::Element3D* >(chain->Prev());
92  if (el)
93  {
94  for (auto h : el->fAssignedHits)
95  {
96  switch (h->View2D())
97  {
98  case geo::kZ: hitsColl.push_back(h); break;
99  case geo::kV: hitsInd2.push_back(h); break;
100  case geo::kU: hitsInd1.push_back(h); break;
101  }
102  }
103  }
104 
105  fHitsRadius = GetHitsRadius2D(hitsColl);
106  double r = GetHitsRadius2D(hitsInd2);
107  if (r > fHitsRadius) fHitsRadius = r;
108  r = GetHitsRadius2D(hitsInd1);
109  if (r > fHitsRadius) fHitsRadius = r;
110 
111  float amp, sigmaMax = 0.0F;
112  fSumHitsQ[0] = 0.0; fNHits[0] = hitsInd1.size();
113  for (size_t i = 0; i < hitsInd1.size(); i++)
114  {
115  amp = hitsInd1[i]->GetAmplitude();
116  if (amp > sigmaMax) sigmaMax = amp;
117  fSumHitsQ[0] += amp;
118  }
119  for (size_t i = 0; i < hitsInd1.size(); i++)
120  {
121  if (sigmaMax > 0.0F)
122  {
123  amp = hitsInd1[i]->GetAmplitude();
124  if (amp > 0.0F)
125  hitsInd1[i]->SetSigmaFactor((float)sqrt(amp / sigmaMax));
126  else hitsInd1[i]->SetSigmaFactor(0.01F);
127  }
128  else hitsInd1[i]->SetSigmaFactor(1.0F);
129  }
130 
131  sigmaMax = 0.0F;
132  fSumHitsQ[1] = 0.0; fNHits[1] = hitsInd2.size();
133  for (size_t i = 0; i < hitsInd2.size(); i++)
134  {
135  amp = hitsInd2[i]->GetAmplitude();
136  if (amp > sigmaMax) sigmaMax = amp;
137  fSumHitsQ[1] += amp;
138  }
139  for (size_t i = 0; i < hitsInd2.size(); i++)
140  {
141  if (sigmaMax > 0.0F)
142  {
143  amp = hitsInd2[i]->GetAmplitude();
144  if (amp > 0.0F)
145  hitsInd2[i]->SetSigmaFactor((float)sqrt(amp / sigmaMax));
146  else hitsInd2[i]->SetSigmaFactor(0.01F);
147  }
148  else hitsInd2[i]->SetSigmaFactor(1.0F);
149  }
150 
151  sigmaMax = 0.0F;
152  fSumHitsQ[2] = 0.0; fNHits[2] = hitsColl.size();
153  for (size_t i = 0; i < hitsColl.size(); i++)
154  {
155  amp = hitsColl[i]->SummedADC();
156  if (amp > sigmaMax) sigmaMax = amp;
157  fSumHitsQ[2] += amp;
158  }
159  for (size_t i = 0; i < hitsColl.size(); i++)
160  {
161  if (sigmaMax > 0.0F)
162  {
163  amp = hitsColl[i]->SummedADC();
164  if (amp > 0.0F)
165  hitsColl[i]->SetSigmaFactor((float)sqrt(amp / sigmaMax));
166  else hitsColl[i]->SetSigmaFactor(0.01F);
167  }
168  else hitsColl[i]->SetSigmaFactor(1.0F);
169  }
170 }
double fSumHitsQ[3]
Definition: PmaElement3D.h:121
double GetHitsRadius2D(const std::vector< pma::Hit3D * > &hits, bool exact=false)
Definition: Utilities.cxx:98
Planes which measure V.
Definition: geo_types.h:130
Planes which measure Z direction.
Definition: geo_types.h:132
size_t fNThisHits[3]
Definition: PmaElement3D.h:118
Planes which measure U.
Definition: geo_types.h:129
virtual unsigned int NextCount(void) const
Definition: SortedObjects.h:46
size_t fNHits[3]
Definition: PmaElement3D.h:120
std::vector< pma::Hit3D * > fAssignedHits
Definition: PmaElement3D.h:116
size_t fNThisHitsEnabledAll
Definition: PmaElement3D.h:119
double fHitsRadius
Definition: PmaElement3D.h:122
static bool * b
Definition: config.cpp:1043
virtual pma::SortedObjectBase * Prev(void) const
Definition: SortedObjects.h:44
virtual pma::SortedObjectBase * Next(unsigned int index=0) const
Definition: SortedObjects.h:45
void pma::Element3D::UpdateProjection ( void  )
inline

Definition at line 87 of file PmaElement3D.h.

87 { for (auto h : fAssignedHits) SetProjection(*h); }
virtual void SetProjection(pma::Hit3D &h) const =0
std::vector< pma::Hit3D * > fAssignedHits
Definition: PmaElement3D.h:116

Member Data Documentation

std::vector< pma::Hit3D* > pma::Element3D::fAssignedHits
protected

Definition at line 116 of file PmaElement3D.h.

std::vector< TVector3* > pma::Element3D::fAssignedPoints
protected

Definition at line 117 of file PmaElement3D.h.

int pma::Element3D::fCryo
protected

Definition at line 111 of file PmaElement3D.h.

bool pma::Element3D::fFrozen
protected

Definition at line 115 of file PmaElement3D.h.

double pma::Element3D::fHitsRadius
protected

Definition at line 122 of file PmaElement3D.h.

size_t pma::Element3D::fNHits[3]
protected

Definition at line 120 of file PmaElement3D.h.

size_t pma::Element3D::fNThisHits[3]
protected

Definition at line 118 of file PmaElement3D.h.

size_t pma::Element3D::fNThisHitsEnabledAll
protected

Definition at line 119 of file PmaElement3D.h.

float pma::Element3D::fOptFactors = { 0.2F, 0.8F, 1.0F }
staticprotected

Definition at line 124 of file PmaElement3D.h.

double pma::Element3D::fSumHitsQ[3]
protected

Definition at line 121 of file PmaElement3D.h.

int pma::Element3D::fTPC
protected

Definition at line 111 of file PmaElement3D.h.


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