8 #ifndef LAR_BDT_BEAM_PARTICLE_ID_TOOL_H 9 #define LAR_BDT_BEAM_PARTICLE_ID_TOOL_H 1 52 const SliceHypotheses &crSliceHypotheses, pandora::PfoList &selectedPfos);
67 Plane(
const pandora::CartesianVector &normal,
const pandora::CartesianVector &point);
75 pandora::CartesianVector
GetLineIntersection(
const pandora::CartesianVector &point,
const pandora::CartesianVector &direction)
const;
106 void Initialize(
const float larTPCMinX,
const float larTPCMaxX,
const float larTPCMinY,
const float larTPCMaxY,
107 const float larTPCMinZ,
const float larTPCMaxZ);
114 void SetBeamLArTPCIntersection(
const pandora::CartesianVector &beamLArTPCIntersection);
121 void SetBeamDirection(
const pandora::CartesianVector &beamDirection);
128 void SetSelectedFraction(
const float selectedFraction);
135 void SetNSelectedHits(
const unsigned int nSelectedHits);
142 void SetContainmentLimit(
const float containmentLimit);
147 float GetLArTPCMinX()
const;
152 float GetLArTPCMaxX()
const;
157 float GetLArTPCMinY()
const;
162 float GetLArTPCMaxY()
const;
167 float GetLArTPCMinZ()
const;
172 float GetLArTPCMaxZ()
const;
177 const PlaneVector &GetPlanes()
const;
182 const pandora::CartesianVector &GetBeamLArTPCIntersection()
const;
187 const pandora::CartesianVector &GetBeamDirection()
const;
192 float GetSelectedFraction()
const;
197 unsigned int GetNSelectedHits()
const;
202 float GetContainmentLimit()
const;
251 bool IsFeatureVectorAvailable()
const;
277 void GetLeadingCaloHits(
278 const pandora::CaloHitList &inputCaloHitList, pandora::CaloHitList &outputCaloHitList,
double &closestHitToFaceDistance)
const;
288 void GetLArTPCIntercepts(
const pandora::CartesianVector &
a0,
const pandora::CartesianVector &majorAxis,
289 pandora::CartesianVector &interceptOne, pandora::CartesianVector &interceptTwo)
const;
296 bool IsContained(
const pandora::CartesianVector &spacePoint,
const float limit)
const;
326 void SelectAllPfos(
const pandora::Algorithm *
const pAlgorithm,
const SliceHypotheses &hypotheses, pandora::PfoList &selectedPfos)
const;
334 void SelectPfos(
const pandora::PfoList &pfos, pandora::PfoList &selectedPfos)
const;
362 void Collect2DHits(
const pandora::PfoList &pfos, pandora::CaloHitList &caloHitList,
const pandora::CaloHitSet &reconstructableCaloHitSet)
const;
384 const SliceHypotheses &crSliceHypotheses,
const SliceFeaturesVector &sliceFeaturesVector, pandora::PfoList &selectedPfos)
const;
386 pandora::StatusCode
ReadSettings(
const pandora::TiXmlHandle xmlHandle);
408 m_beamLArTPCIntersection = beamLArTPCIntersection;
415 m_beamDirection = beamDirection;
422 m_selectedFraction = selectedFraction;
429 m_nSelectedHits = nSelectedHits;
436 m_containmentLimit = containmentLimit;
485 return m_larTPCPlanes;
492 return m_beamLArTPCIntersection;
499 return m_beamDirection;
506 return m_selectedFraction;
513 return m_nSelectedHits;
520 return m_containmentLimit;
527 return m_isAvailable;
532 #endif // #ifndef LAR_BDT_BEAM_PARTICLE_ID_TOOL_H void SetBeamLArTPCIntersection(const pandora::CartesianVector &beamLArTPCIntersection)
Set m_beamLArTPCIntersection.
double m_d
Parameter defining a plane.
std::vector< pandora::PfoList > SliceHypotheses
float GetLArTPCMinZ() const
Get m_larTPCMinZ.
const SliceFeatureParameters m_sliceFeatureParameters
Geometry information block.
MvaTypes::MvaFeatureVector MvaFeatureVector
pandora::StatusCode Initialize()
std::string m_filePathEnvironmentVariable
The environment variable providing a list of paths to bdt files.
std::string m_mcParticleListName
Name of input MC particle list.
float m_larTPCMinY
Global LArTPC volume minimum y extent.
Plane(const pandora::CartesianVector &normal, const pandora::CartesianVector &point)
Constructor, using equation of plane: m_a*x + m_b*y + m_c*z + m_d = 0.
float m_minAdaBDTScore
Minimum score required to classify a slice as a beam particle.
float m_larTPCMaxX
Global LArTPC volume maximum x extent.
float GetSelectedFraction() const
Get m_selectedFraction.
unsigned int GetNSelectedHits() const
Get m_nSelectedHits.
pandora::CartesianVector GetLineIntersection(const pandora::CartesianVector &point, const pandora::CartesianVector &direction) const
Return the intersection between the plane and a line.
float GetLArTPCMaxZ() const
Get m_larTPCMaxZ.
PlaneVector m_larTPCPlanes
Vector of all planes making up global LArTPC volume.
unsigned int m_nSelectedHits
Minimum number of hits to use in 3D cluster fits.
bool m_useTrainingMode
Should use training mode. If true, training examples will be written to the output file...
void SelectPfosByAdaBDTScore(const pandora::Algorithm *const pAlgorithm, const SliceHypotheses &nuSliceHypotheses, const SliceHypotheses &crSliceHypotheses, const SliceFeaturesVector &sliceFeaturesVector, pandora::PfoList &selectedPfos) const
Select pfos based on the AdaBDT score that the slice contains a beam particle interaction.
float m_selectedFraction
Fraction of hits to use in 3D cluster fits.
float GetLArTPCMaxY() const
Get m_larTPCMaxY.
std::vector< SliceFeatures > SliceFeaturesVector
void SelectAllPfos(const pandora::Algorithm *const pAlgorithm, const SliceHypotheses &hypotheses, pandora::PfoList &selectedPfos) const
Select all pfos under the same hypothesis.
pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
std::vector< int > IntVector
bool IsFeatureVectorAvailable() const
Check if all features were calculable.
float m_larTPCMaxY
Global LArTPC volume maximum y extent.
bool m_isAvailable
Is the feature vector available.
void SelectPfos(const pandora::PfoList &pfos, pandora::PfoList &selectedPfos) const
Add the given pfos to the selected Pfo list.
AdaBoostDecisionTree class.
bool PassesQualityCuts(const float purity, const float completeness) const
Determine if the event passes the selection cuts for training.
float GetLArTPCMaxX() const
Get m_larTPCMaxX.
void SetBeamDirection(const pandora::CartesianVector &beamDirection)
Set m_beamDirection.
void SetNSelectedHits(const unsigned int nSelectedHits)
Set m_nSelectedHits.
const pandora::CartesianVector & GetBeamDirection() const
Get the beam direction.
Header file for the master algorithm class.
float GetContainmentLimit() const
Get m_containmentLimit.
Header file for the lar adaptive boosted decision tree class.
std::string m_trainingOutputFile
Output file name for training examples.
SliceFeatureParameters class.
void SetSelectedFraction(const float selectedFraction)
Set m_selectedFraction.
pandora::CartesianVector m_beamDirection
Beam direction.
BdtBeamParticleIdTool()
Constructor.
float m_minPurity
Minimum purity of the best slice to use event for training.
void Collect2DHits(const pandora::PfoList &pfos, pandora::CaloHitList &caloHitList, const pandora::CaloHitSet &reconstructableCaloHitSet) const
Collect all 2D hits in a supplied list of Pfos and push them on to an existing hit list...
void GetBestMCSliceIndices(const pandora::Algorithm *const pAlgorithm, const SliceHypotheses &nuSliceHypotheses, const SliceHypotheses &crSliceHypotheses, pandora::IntVector &bestSliceIndices) const
Get the slice with the most neutrino induced hits using Monte-Carlo information.
LArMvaHelper::MvaFeatureVector m_featureVector
The MVA feature vector.
float m_minCompleteness
Minimum completeness of the best slice to use event for training.
void PopulateMCParticleToHitsMap(MCParticleToIntMap &mcParticleToIntMap, const pandora::CaloHitList &caloHitList) const
Fill mc particle to nHits map from calo hit list.
BdtBeamParticleIdTool & operator=(const BdtBeamParticleIdTool &)=default
Assignment operator.
const pandora::CartesianVector & GetBeamLArTPCIntersection() const
Get the beam LArTPC intersection.
pandora::CartesianVector m_unitNormal
Unit normal to plane.
~BdtBeamParticleIdTool()=default
Destructor.
float m_containmentLimit
Limit applied in is contained definition.
void SetContainmentLimit(const float containmentLimit)
Set m_containmentLimit.
const PlaneVector & GetPlanes() const
Get vector of planes.
float GetLArTPCMinX() const
Get m_larTPCMinX.
void GetSliceFeatures(const SliceHypotheses &nuSliceHypotheses, const SliceHypotheses &crSliceHypotheses, SliceFeaturesVector &sliceFeaturesVector) const
Get the features of each slice.
float m_larTPCMinX
Global LArTPC volume minimum x extent.
float m_larTPCMaxZ
Global LArTPC volume maximum z extent.
std::vector< Plane > PlaneVector
pandora::CartesianVector m_point
A point on the plane.
std::unordered_map< const pandora::MCParticle *, int > MCParticleToIntMap
void SelectOutputPfos(const pandora::Algorithm *const pAlgorithm, const SliceHypotheses &beamSliceHypotheses, const SliceHypotheses &crSliceHypotheses, pandora::PfoList &selectedPfos)
Select which reconstruction hypotheses to use; neutrino outcomes or cosmic-ray muon outcomes for each...
BdtBeamParticleIdTool class.
Header file for the stitching tool base class.
unsigned int m_maxNeutrinos
The maximum number of neutrinos to select in any one event.
std::string m_caloHitListName
Name of input calo hit list.
std::pair< unsigned int, float > UintFloatPair
pandora::CartesianVector m_beamLArTPCIntersection
Intersection of beam and global LArTPC volume.
float m_larTPCMinZ
Global LArTPC volume minimum z extent.
AdaBoostDecisionTree m_adaBoostDecisionTree
The adaptive boost decision tree.
float GetLArTPCMinY() const
Get m_larTPCMinY.
SliceFeatureParameters m_sliceFeatureParameters
Geometry information block.