LArSoft  v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
lar_content::NeutrinoIdTool< T >::SliceFeatures Class Reference

Slice features class. More...

Public Member Functions

 SliceFeatures (const pandora::PfoList &nuPfos, const pandora::PfoList &crPfos, const NeutrinoIdTool *const pTool)
 Constructor. More...
 
bool IsFeatureVectorAvailable () const
 Check if all features were calculable. More...
 
void GetFeatureVector (LArMvaHelper::MvaFeatureVector &featureVector) const
 Get the feature vector for the MVA. More...
 
void GetFeatureMap (LArMvaHelper::DoubleMap &featureMap) const
 Get the feature map for the MVA. More...
 
float GetNeutrinoProbability (const T &t, const float defaultProbability) const
 Get the probability that this slice contains a neutrino interaction. More...
 

Private Member Functions

const pandora::ParticleFlowObject * GetNeutrino (const pandora::PfoList &nuPfos) const
 Get the recontructed neutrino the input list of neutrino Pfos. More...
 
void GetSpacePoints (const pandora::ParticleFlowObject *const pPfo, pandora::CartesianPointVector &spacePoints) const
 Get the 3D space points in a given pfo. More...
 
pandora::CartesianVector GetDirection (const pandora::CartesianPointVector &spacePoints, std::function< bool(const pandora::CartesianVector &pointA, const pandora::CartesianVector &pointB)> fShouldChooseA) const
 Use a sliding fit to get the direction of a collection of spacepoints. More...
 
pandora::CartesianVector GetDirectionFromVertex (const pandora::CartesianPointVector &spacePoints, const pandora::CartesianVector &vertex) const
 Use a sliding fit to get the direction of a collection of spacepoint near a vertex position. More...
 
pandora::CartesianVector GetUpperDirection (const pandora::CartesianPointVector &spacePoints) const
 Use a sliding fit to get the upper direction of a collection of spacepoints. More...
 
pandora::CartesianVector GetLowerDirection (const pandora::CartesianPointVector &spacePoints) const
 Use a sliding fit to get the lower direction of a collection of spacepoints. More...
 
void GetPointsInSphere (const pandora::CartesianPointVector &spacePoints, const pandora::CartesianVector &vertex, const float radius, pandora::CartesianPointVector &spacePointsInSphere) const
 Get a vector of spacepoints within a given radius of a vertex point. More...
 

Private Attributes

bool m_isAvailable
 Is the feature vector available. More...
 
LArMvaHelper::MvaFeatureVector m_featureVector
 The MVA feature vector. More...
 
LArMvaHelper::DoubleMap m_featureMap
 A map between MVA features and their names. More...
 
const NeutrinoIdTool *const m_pTool
 The tool that owns this. More...
 

Detailed Description

template<typename T>
class lar_content::NeutrinoIdTool< T >::SliceFeatures

Slice features class.

Definition at line 48 of file NeutrinoIdTool.h.

Constructor & Destructor Documentation

template<typename T>
lar_content::NeutrinoIdTool< T >::SliceFeatures::SliceFeatures ( const pandora::PfoList &  nuPfos,
const pandora::PfoList &  crPfos,
const NeutrinoIdTool *const  pTool 
)

Constructor.

Parameters
nuPfosinput list of Pfos reconstructed under the neutrino hypothesis
crPfosinput list of Pfos reconstructed under the cosmic ray hypothesis
pTooladdress of the tool using this class

Definition at line 331 of file NeutrinoIdTool.cc.

References dir, f, lar_content::NeutrinoIdTool< T >::SliceFeatures::GetDirectionFromVertex(), lar_content::NeutrinoIdTool< T >::SliceFeatures::GetLowerDirection(), lar_content::NeutrinoIdTool< T >::SliceFeatures::GetNeutrino(), lar_content::NeutrinoIdTool< T >::SliceFeatures::GetPointsInSphere(), lar_content::NeutrinoIdTool< T >::SliceFeatures::GetSpacePoints(), lar_content::NeutrinoIdTool< T >::SliceFeatures::GetUpperDirection(), lar_content::LArPfoHelper::GetVertex(), lar_content::NeutrinoIdTool< T >::SliceFeatures::m_featureMap, lar_content::NeutrinoIdTool< T >::SliceFeatures::m_featureVector, lar_content::NeutrinoIdTool< T >::SliceFeatures::m_isAvailable, and lar_content::LArPcaHelper::RunPca().

331  :
332  m_isAvailable(false),
333  m_pTool(pTool)
334 {
335  try
336  {
337  const ParticleFlowObject *const pNeutrino(this->GetNeutrino(nuPfos));
338  const CartesianVector &nuVertex(LArPfoHelper::GetVertex(pNeutrino)->GetPosition());
339  const PfoList &nuFinalStates(pNeutrino->GetDaughterPfoList());
340 
341  // Neutrino features
342  CartesianVector nuWeightedDirTotal(0.f, 0.f, 0.f);
343  unsigned int nuNHitsUsedTotal(0);
344  unsigned int nuNHitsTotal(0);
345  CartesianPointVector nuAllSpacePoints;
346  for (const ParticleFlowObject *const pPfo : nuFinalStates)
347  {
348  CartesianPointVector spacePoints;
349  this->GetSpacePoints(pPfo, spacePoints);
350 
351  nuAllSpacePoints.insert(nuAllSpacePoints.end(), spacePoints.begin(), spacePoints.end());
352  nuNHitsTotal += spacePoints.size();
353 
354  if (spacePoints.size() < 5)
355  continue;
356 
357  const CartesianVector dir(this->GetDirectionFromVertex(spacePoints, nuVertex));
358  nuWeightedDirTotal += dir * static_cast<float>(spacePoints.size());
359  nuNHitsUsedTotal += spacePoints.size();
360  }
361 
362  if (nuNHitsUsedTotal == 0)
363  return;
364  const CartesianVector nuWeightedDir(nuWeightedDirTotal * (1.f / static_cast<float>(nuNHitsUsedTotal)));
365 
366  CartesianPointVector pointsInSphere;
367  this->GetPointsInSphere(nuAllSpacePoints, nuVertex, 10, pointsInSphere);
368 
369  CartesianVector centroid(std::numeric_limits<float>::max(), std::numeric_limits<float>::max(), std::numeric_limits<float>::max());
370  LArPcaHelper::EigenValues eigenValues(std::numeric_limits<float>::max(), std::numeric_limits<float>::max(), std::numeric_limits<float>::max());
371  LArPcaHelper::EigenVectors eigenVectors;
372  LArPcaHelper::RunPca(pointsInSphere, centroid, eigenValues, eigenVectors);
373 
374  const float nuNFinalStatePfos(static_cast<float>(nuFinalStates.size()));
375  const float nuVertexY(nuVertex.GetY());
376  const float nuWeightedDirZ(nuWeightedDir.GetZ());
377  const float nuNSpacePointsInSphere(static_cast<float>(pointsInSphere.size()));
378 
379  if (eigenValues.GetX() <= std::numeric_limits<float>::epsilon())
380  return;
381  const float nuEigenRatioInSphere(eigenValues.GetY() / eigenValues.GetX());
382 
383  // Cosmic-ray features
384  unsigned int nCRHitsMax(0);
385  unsigned int nCRHitsTotal(0);
386  float crLongestTrackDirY(std::numeric_limits<float>::max());
387  float crLongestTrackDeflection(-std::numeric_limits<float>::max());
388 
389  for (const ParticleFlowObject *const pPfo : crPfos)
390  {
391  CartesianPointVector spacePoints;
392  this->GetSpacePoints(pPfo, spacePoints);
393 
394  nCRHitsTotal += spacePoints.size();
395 
396  if (spacePoints.size() < 5)
397  continue;
398 
399  if (spacePoints.size() > nCRHitsMax)
400  {
401  nCRHitsMax = spacePoints.size();
402  const CartesianVector upperDir(this->GetUpperDirection(spacePoints));
403  const CartesianVector lowerDir(this->GetLowerDirection(spacePoints));
404 
405  crLongestTrackDirY = upperDir.GetY();
406  crLongestTrackDeflection = 1.f - upperDir.GetDotProduct(lowerDir * (-1.f));
407  }
408  }
409 
410  if (nCRHitsMax == 0)
411  return;
412  if (nCRHitsTotal == 0)
413  return;
414 
415  const float crFracHitsInLongestTrack = static_cast<float>(nCRHitsMax) / static_cast<float>(nCRHitsTotal);
416 
417  // Push the features to the feature vector
418  m_featureVector.push_back(nuNFinalStatePfos);
419  m_featureVector.push_back(nuNHitsTotal);
420  m_featureVector.push_back(nuVertexY);
421  m_featureVector.push_back(nuWeightedDirZ);
422  m_featureVector.push_back(nuNSpacePointsInSphere);
423  m_featureVector.push_back(nuEigenRatioInSphere);
424  m_featureVector.push_back(crLongestTrackDirY);
425  m_featureVector.push_back(crLongestTrackDeflection);
426  m_featureVector.push_back(crFracHitsInLongestTrack);
427  m_featureVector.push_back(nCRHitsMax);
428 
429  m_featureMap["NuNFinalStatePfos"] = nuNFinalStatePfos;
430  m_featureMap["NuNHitsTotal"] = nuNHitsTotal;
431  m_featureMap["NuVertexY"] = nuVertexY;
432  m_featureMap["NuWeightedDirZ"] = nuWeightedDirZ;
433  m_featureMap["NuNSpacePointsInSphere"] = nuNSpacePointsInSphere;
434  m_featureMap["NuEigenRatioInSphere"] = nuEigenRatioInSphere;
435  m_featureMap["CRLongestTrackDirY"] = crLongestTrackDirY;
436  m_featureMap["CRLongestTrackDeflection"] = crLongestTrackDeflection;
437  m_featureMap["CRFracHitsInLongestTrack"] = crFracHitsInLongestTrack;
438  m_featureMap["CRNHitsMax"] = nCRHitsMax;
439 
440  m_isAvailable = true;
441  }
442  catch (StatusCodeException &)
443  {
444  return;
445  }
446 }
pandora::CartesianVector EigenValues
Definition: LArPcaHelper.h:24
const NeutrinoIdTool *const m_pTool
The tool that owns this.
static const pandora::Vertex * GetVertex(const pandora::ParticleFlowObject *const pPfo)
Get the pfo vertex.
LArMvaHelper::DoubleMap m_featureMap
A map between MVA features and their names.
TFile f
Definition: plotHisto.C:6
pandora::CartesianVector GetLowerDirection(const pandora::CartesianPointVector &spacePoints) const
Use a sliding fit to get the lower direction of a collection of spacepoints.
bool m_isAvailable
Is the feature vector available.
LArMvaHelper::MvaFeatureVector m_featureVector
The MVA feature vector.
const pandora::ParticleFlowObject * GetNeutrino(const pandora::PfoList &nuPfos) const
Get the recontructed neutrino the input list of neutrino Pfos.
pandora::CartesianVector GetDirectionFromVertex(const pandora::CartesianPointVector &spacePoints, const pandora::CartesianVector &vertex) const
Use a sliding fit to get the direction of a collection of spacepoint near a vertex position...
pandora::CartesianVector GetUpperDirection(const pandora::CartesianPointVector &spacePoints) const
Use a sliding fit to get the upper direction of a collection of spacepoints.
static void RunPca(const T &t, pandora::CartesianVector &centroid, EigenValues &outputEigenValues, EigenVectors &outputEigenVectors)
Run principal component analysis using input calo hits (TPC_VIEW_U,V,W or TPC_3D; all treated as 3D p...
TDirectory * dir
Definition: macro.C:5
std::vector< pandora::CartesianVector > EigenVectors
Definition: LArPcaHelper.h:25
void GetPointsInSphere(const pandora::CartesianPointVector &spacePoints, const pandora::CartesianVector &vertex, const float radius, pandora::CartesianPointVector &spacePointsInSphere) const
Get a vector of spacepoints within a given radius of a vertex point.
void GetSpacePoints(const pandora::ParticleFlowObject *const pPfo, pandora::CartesianPointVector &spacePoints) const
Get the 3D space points in a given pfo.

Member Function Documentation

template<typename T>
CartesianVector lar_content::NeutrinoIdTool< T >::SliceFeatures::GetDirection ( const pandora::CartesianPointVector &  spacePoints,
std::function< bool(const pandora::CartesianVector &pointA, const pandora::CartesianVector &pointB)>  fShouldChooseA 
) const
private

Use a sliding fit to get the direction of a collection of spacepoints.

Parameters
spacePointsthe input spacepoints to fit
fShouldChooseAa function that when given two fitted endpoints A and B, will return true if A is the endpoint at which to calculate the direction
Returns
the direction of the input spacepoints

Definition at line 556 of file NeutrinoIdTool.cc.

References f, and lar_content::NeutrinoIdTool< T >::SliceFeatures::m_pTool.

Referenced by lar_content::NeutrinoIdTool< T >::SliceFeatures::GetDirectionFromVertex(), lar_content::NeutrinoIdTool< T >::SliceFeatures::GetLowerDirection(), and lar_content::NeutrinoIdTool< T >::SliceFeatures::GetUpperDirection().

558 {
559  // ATTN If wire w pitches vary between TPCs, exception will be raised in initialisation of lar pseudolayer plugin
560  const LArTPC *const pFirstLArTPC(m_pTool->GetPandora().GetGeometry()->GetLArTPCMap().begin()->second);
561  const float layerPitch(pFirstLArTPC->GetWirePitchW());
562 
563  const ThreeDSlidingFitResult fit(&spacePoints, 5, layerPitch);
564  const CartesianVector endMin(fit.GetGlobalMinLayerPosition());
565  const CartesianVector endMax(fit.GetGlobalMaxLayerPosition());
566  const CartesianVector dirMin(fit.GetGlobalMinLayerDirection());
567  const CartesianVector dirMax(fit.GetGlobalMaxLayerDirection());
568 
569  const bool isMinStart(fShouldChooseA(endMin, endMax));
570  const CartesianVector startPoint(isMinStart ? endMin : endMax);
571  const CartesianVector endPoint(isMinStart ? endMax : endMin);
572  const CartesianVector startDir(isMinStart ? dirMin : dirMax);
573 
574  const bool shouldFlip((endPoint - startPoint).GetUnitVector().GetDotProduct(startDir) < 0.f);
575  return (shouldFlip ? startDir * (-1.f) : startDir);
576 }
const NeutrinoIdTool *const m_pTool
The tool that owns this.
TFile f
Definition: plotHisto.C:6
template<typename T>
CartesianVector lar_content::NeutrinoIdTool< T >::SliceFeatures::GetDirectionFromVertex ( const pandora::CartesianPointVector &  spacePoints,
const pandora::CartesianVector &  vertex 
) const
private

Use a sliding fit to get the direction of a collection of spacepoint near a vertex position.

Parameters
spacePointsthe input spacepoints to fit
vertexthe position from which the fitted direction should be calculated
Returns
the direction of the input space points from the vertex supplied

Definition at line 528 of file NeutrinoIdTool.cc.

References lar_content::NeutrinoIdTool< T >::SliceFeatures::GetDirection().

Referenced by lar_content::NeutrinoIdTool< T >::SliceFeatures::SliceFeatures().

529 {
530  return this->GetDirection(spacePoints,
531  [&](const CartesianVector &pointA, const CartesianVector &pointB)
532  { return ((pointA - vertex).GetMagnitude() < (pointB - vertex).GetMagnitude()); });
533 }
pandora::CartesianVector GetDirection(const pandora::CartesianPointVector &spacePoints, std::function< bool(const pandora::CartesianVector &pointA, const pandora::CartesianVector &pointB)> fShouldChooseA) const
Use a sliding fit to get the direction of a collection of spacepoints.
vertex reconstruction
template<typename T >
void lar_content::NeutrinoIdTool< T >::SliceFeatures::GetFeatureMap ( LArMvaHelper::DoubleMap featureMap) const

Get the feature map for the MVA.

Parameters
featuresMapempty feature map to populate

Definition at line 470 of file NeutrinoIdTool.cc.

References lar_content::NeutrinoIdTool< T >::SliceFeatures::m_featureMap, and lar_content::NeutrinoIdTool< T >::SliceFeatures::m_isAvailable.

471 {
472  if (!m_isAvailable)
473  throw StatusCodeException(STATUS_CODE_NOT_FOUND);
474 
475  featureMap.insert(m_featureMap.begin(), m_featureMap.end());
476 }
LArMvaHelper::DoubleMap m_featureMap
A map between MVA features and their names.
bool m_isAvailable
Is the feature vector available.
template<typename T >
void lar_content::NeutrinoIdTool< T >::SliceFeatures::GetFeatureVector ( LArMvaHelper::MvaFeatureVector featureVector) const

Get the feature vector for the MVA.

Parameters
featuresVectorempty feature vector to populate

Definition at line 459 of file NeutrinoIdTool.cc.

References lar_content::NeutrinoIdTool< T >::SliceFeatures::m_featureVector, and lar_content::NeutrinoIdTool< T >::SliceFeatures::m_isAvailable.

Referenced by lar_content::NeutrinoIdTool< T >::SliceFeatures::GetNeutrinoProbability(), and lar_content::NeutrinoIdTool< T >::SelectOutputPfos().

460 {
461  if (!m_isAvailable)
462  throw StatusCodeException(STATUS_CODE_NOT_FOUND);
463 
464  featureVector.insert(featureVector.end(), m_featureVector.begin(), m_featureVector.end());
465 }
bool m_isAvailable
Is the feature vector available.
LArMvaHelper::MvaFeatureVector m_featureVector
The MVA feature vector.
template<typename T>
CartesianVector lar_content::NeutrinoIdTool< T >::SliceFeatures::GetLowerDirection ( const pandora::CartesianPointVector &  spacePoints) const
private

Use a sliding fit to get the lower direction of a collection of spacepoints.

Parameters
spacePointsthe input spacepoints to fit
Returns
the direction of the lower input space points

Definition at line 547 of file NeutrinoIdTool.cc.

References lar_content::NeutrinoIdTool< T >::SliceFeatures::GetDirection().

Referenced by lar_content::NeutrinoIdTool< T >::SliceFeatures::SliceFeatures().

548 {
549  return this->GetDirection(
550  spacePoints, [&](const CartesianVector &pointA, const CartesianVector &pointB) { return (pointA.GetY() < pointB.GetY()); });
551 }
pandora::CartesianVector GetDirection(const pandora::CartesianPointVector &spacePoints, std::function< bool(const pandora::CartesianVector &pointA, const pandora::CartesianVector &pointB)> fShouldChooseA) const
Use a sliding fit to get the direction of a collection of spacepoints.
template<typename T>
const ParticleFlowObject * lar_content::NeutrinoIdTool< T >::SliceFeatures::GetNeutrino ( const pandora::PfoList &  nuPfos) const
private

Get the recontructed neutrino the input list of neutrino Pfos.

Parameters
nuPfosinput list of neutrino pfos

Definition at line 495 of file NeutrinoIdTool.cc.

Referenced by lar_content::NeutrinoIdTool< T >::SliceFeatures::SliceFeatures().

496 {
497  // ATTN we should only ever have one neutrino reconstructed per slice
498  if (nuPfos.size() != 1)
499  throw StatusCodeException(STATUS_CODE_OUT_OF_RANGE);
500 
501  return nuPfos.front();
502 }
template<typename T >
float lar_content::NeutrinoIdTool< T >::SliceFeatures::GetNeutrinoProbability ( const T &  t,
const float  defaultProbability 
) const

Get the probability that this slice contains a neutrino interaction.

Parameters
tthe MVA used to calculate the probability
Returns
the probability that the slice contains a neutrino interaction

Definition at line 481 of file NeutrinoIdTool.cc.

References lar_content::LArMvaHelper::CalculateProbability(), lar_content::NeutrinoIdTool< T >::SliceFeatures::GetFeatureVector(), and lar_content::NeutrinoIdTool< T >::SliceFeatures::IsFeatureVectorAvailable().

482 {
483  // ATTN if one or more of the features can not be calculated, then give the slice a default score
484  if (!this->IsFeatureVectorAvailable())
485  return defaultProbability;
486 
487  LArMvaHelper::MvaFeatureVector featureVector;
488  this->GetFeatureVector(featureVector);
489  return LArMvaHelper::CalculateProbability(t, featureVector);
490 }
MvaTypes::MvaFeatureVector MvaFeatureVector
Definition: LArMvaHelper.h:75
bool IsFeatureVectorAvailable() const
Check if all features were calculable.
void GetFeatureVector(LArMvaHelper::MvaFeatureVector &featureVector) const
Get the feature vector for the MVA.
static double CalculateProbability(const MvaInterface &classifier, TCONTAINER &&featureContainer)
Use the trained mva to calculate a classification probability for an example.
Definition: LArMvaHelper.h:369
template<typename T>
void lar_content::NeutrinoIdTool< T >::SliceFeatures::GetPointsInSphere ( const pandora::CartesianPointVector &  spacePoints,
const pandora::CartesianVector &  vertex,
const float  radius,
pandora::CartesianPointVector &  spacePointsInSphere 
) const
private

Get a vector of spacepoints within a given radius of a vertex point.

Parameters
spacePointsthe input spacepoints
vertexthe center of the sphere
radiusthe radius of the sphere
spacePointsInSpherethe vector to hold the spacepoint in the sphere

Definition at line 581 of file NeutrinoIdTool.cc.

Referenced by lar_content::NeutrinoIdTool< T >::SliceFeatures::SliceFeatures().

583 {
584  for (const CartesianVector &point : spacePoints)
585  {
586  if ((point - vertex).GetMagnitudeSquared() <= radius * radius)
587  spacePointsInSphere.push_back(point);
588  }
589 }
Float_t radius
Definition: plot.C:23
vertex reconstruction
template<typename T>
void lar_content::NeutrinoIdTool< T >::SliceFeatures::GetSpacePoints ( const pandora::ParticleFlowObject *const  pPfo,
pandora::CartesianPointVector &  spacePoints 
) const
private

Get the 3D space points in a given pfo.

Parameters
pPfoinput pfo
spacePointsvector to hold the 3D space points associated with the input pfo

Definition at line 507 of file NeutrinoIdTool.cc.

References lar_content::LArPfoHelper::GetThreeDClusterList().

Referenced by lar_content::NeutrinoIdTool< T >::SliceFeatures::SliceFeatures().

508 {
509  ClusterList clusters3D;
510  LArPfoHelper::GetThreeDClusterList(pPfo, clusters3D);
511 
512  if (clusters3D.size() > 1)
513  throw StatusCodeException(STATUS_CODE_OUT_OF_RANGE);
514 
515  if (clusters3D.empty())
516  return;
517 
518  CaloHitList caloHits;
519  clusters3D.front()->GetOrderedCaloHitList().FillCaloHitList(caloHits);
520 
521  for (const CaloHit *const pCaloHit : caloHits)
522  spacePoints.push_back(pCaloHit->GetPositionVector());
523 }
static void GetThreeDClusterList(const pandora::ParticleFlowObject *const pPfo, pandora::ClusterList &clusterList)
Get the list of 3D clusters from an input pfo.
template<typename T>
CartesianVector lar_content::NeutrinoIdTool< T >::SliceFeatures::GetUpperDirection ( const pandora::CartesianPointVector &  spacePoints) const
private

Use a sliding fit to get the upper direction of a collection of spacepoints.

Parameters
spacePointsthe input spacepoints to fit
Returns
the direction of the upper input space points

Definition at line 538 of file NeutrinoIdTool.cc.

References lar_content::NeutrinoIdTool< T >::SliceFeatures::GetDirection().

Referenced by lar_content::NeutrinoIdTool< T >::SliceFeatures::SliceFeatures().

539 {
540  return this->GetDirection(
541  spacePoints, [&](const CartesianVector &pointA, const CartesianVector &pointB) { return (pointA.GetY() > pointB.GetY()); });
542 }
pandora::CartesianVector GetDirection(const pandora::CartesianPointVector &spacePoints, std::function< bool(const pandora::CartesianVector &pointA, const pandora::CartesianVector &pointB)> fShouldChooseA) const
Use a sliding fit to get the direction of a collection of spacepoints.
template<typename T >
bool lar_content::NeutrinoIdTool< T >::SliceFeatures::IsFeatureVectorAvailable ( ) const

Check if all features were calculable.

Returns
true if the feature vector is available

Definition at line 451 of file NeutrinoIdTool.cc.

References lar_content::NeutrinoIdTool< T >::SliceFeatures::m_isAvailable.

Referenced by lar_content::NeutrinoIdTool< T >::SliceFeatures::GetNeutrinoProbability().

452 {
453  return m_isAvailable;
454 }
bool m_isAvailable
Is the feature vector available.

Member Data Documentation

template<typename T>
LArMvaHelper::DoubleMap lar_content::NeutrinoIdTool< T >::SliceFeatures::m_featureMap
private
template<typename T>
LArMvaHelper::MvaFeatureVector lar_content::NeutrinoIdTool< T >::SliceFeatures::m_featureVector
private
template<typename T>
const NeutrinoIdTool* const lar_content::NeutrinoIdTool< T >::SliceFeatures::m_pTool
private

The tool that owns this.

Definition at line 159 of file NeutrinoIdTool.h.

Referenced by lar_content::NeutrinoIdTool< T >::SliceFeatures::GetDirection().


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