Public Member Functions | Private Member Functions | Private Attributes | List of all members
lar_content::CheatingBeamParticleIdTool Class Reference

CheatingBeamParticleIdTool class. More...

#include <CheatingBeamParticleIdTool.h>

Inheritance diagram for lar_content::CheatingBeamParticleIdTool:
lar_content::CheatingSliceIdBaseTool lar_content::SliceIdBaseTool

Public Member Functions

 CheatingBeamParticleIdTool ()
 Constructor. More...
 
void SelectOutputPfos (const pandora::Algorithm *const pAlgorithm, const SliceHypotheses &nuSliceHypotheses, const SliceHypotheses &crSliceHypotheses, pandora::PfoList &selectedPfos)
 Select which reconstruction hypotheses to use; neutrino outcomes or cosmic-ray muon outcomes for each slice. More...
 

Private Member Functions

pandora::StatusCode ReadSettings (const pandora::TiXmlHandle xmlHandle)
 

Private Attributes

float m_minWeightFraction
 The minimum weight fraction for identifying a slice as a beam particle. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from lar_content::CheatingSliceIdBaseTool
static void GetTargetParticleWeight (const pandora::PfoList *const pPfoList, float &targetParticleWeight, float &totalWeight, std::function< bool(const pandora::MCParticle *const)> fCriteria)
 Get the target particle weight in a list of pfos. More...
 
static void GetTargetParticleWeight (const pandora::CaloHit *const pCaloHit, float &targetParticleWeight, float &totalWeight, std::function< bool(const pandora::MCParticle *const)> fCriteria)
 Get the target particle weight for a calo hit. More...
 

Detailed Description

CheatingBeamParticleIdTool class.

Definition at line 20 of file CheatingBeamParticleIdTool.h.

Constructor & Destructor Documentation

lar_content::CheatingBeamParticleIdTool::CheatingBeamParticleIdTool ( )

Constructor.

Definition at line 21 of file CheatingBeamParticleIdTool.cc.

22 {
23 }
float m_minWeightFraction
The minimum weight fraction for identifying a slice as a beam particle.

Member Function Documentation

StatusCode lar_content::CheatingBeamParticleIdTool::ReadSettings ( const pandora::TiXmlHandle  xmlHandle)
private

Definition at line 70 of file CheatingBeamParticleIdTool.cc.

71 {
72  PANDORA_RETURN_RESULT_IF(STATUS_CODE_SUCCESS, !=, XmlHelper::ReadValue(xmlHandle, "MinimumWeightFraction", m_minWeightFraction));
73 
74  return STATUS_CODE_SUCCESS;
75 }
float m_minWeightFraction
The minimum weight fraction for identifying a slice as a beam particle.
void lar_content::CheatingBeamParticleIdTool::SelectOutputPfos ( const pandora::Algorithm *const  pAlgorithm,
const SliceHypotheses nuSliceHypotheses,
const SliceHypotheses crSliceHypotheses,
pandora::PfoList &  selectedPfos 
)
virtual

Select which reconstruction hypotheses to use; neutrino outcomes or cosmic-ray muon outcomes for each slice.

Parameters
pAlgorithmthe address of the master instance, used to access MCParticles when in training mode
nuSliceHypothesesthe parent pfos representing the neutrino outcome for each slice
crSliceHypothesesthe parent pfos representing the cosmic-ray muon outcome for each slice
sliceNuPfosto receive the list of selected pfos

Implements lar_content::CheatingSliceIdBaseTool.

Definition at line 27 of file CheatingBeamParticleIdTool.cc.

29 {
30  if (testBeamSliceHypotheses.size() != crSliceHypotheses.size())
31  throw StatusCodeException(STATUS_CODE_INVALID_PARAMETER);
32 
33  for (unsigned int sliceIndex = 0, nSlices = testBeamSliceHypotheses.size(); sliceIndex < nSlices; ++sliceIndex)
34  {
35  float beamParticleWeight(0.f), totalWeight(0.f);
36  const PfoList &testBeamPfoList(testBeamSliceHypotheses.at(sliceIndex));
37 
38  for (const Pfo *const pTestBeamPfo : testBeamPfoList)
39  {
40  if (!LArPfoHelper::IsTestBeam(pTestBeamPfo))
41  throw StatusCodeException(STATUS_CODE_INVALID_PARAMETER);
42 
43  PfoList downstreamPfos;
44  LArPfoHelper::GetAllDownstreamPfos(pTestBeamPfo, downstreamPfos);
45 
46  float thisBeamParticleWeight(0.f), thisTotalWeight(0.f);
47  CheatingSliceIdBaseTool::GetTargetParticleWeight(&downstreamPfos, thisBeamParticleWeight, thisTotalWeight, LArMCParticleHelper::IsBeamParticle);
48 
49  beamParticleWeight += thisBeamParticleWeight;
50  totalWeight += thisTotalWeight;
51  }
52 
53  const float beamWeightFraction(totalWeight < std::numeric_limits<float>::epsilon() ? 0.f : beamParticleWeight / totalWeight);
54 
55  if (beamWeightFraction > m_minWeightFraction)
56  {
57  const PfoList &sliceOutput(testBeamSliceHypotheses.at(sliceIndex));
58  selectedPfos.insert(selectedPfos.end(), sliceOutput.begin(), sliceOutput.end());
59  }
60  else
61  {
62  const PfoList &sliceOutput(crSliceHypotheses.at(sliceIndex));
63  selectedPfos.insert(selectedPfos.end(), sliceOutput.begin(), sliceOutput.end());
64  }
65  }
66 }
static bool IsTestBeam(const pandora::ParticleFlowObject *const pPfo)
Whether a pfo is a test beam particle.
static bool IsBeamParticle(const pandora::MCParticle *const pMCParticle)
Returns true if passed a primary beam MCParticle.
float m_minWeightFraction
The minimum weight fraction for identifying a slice as a beam particle.
static void GetTargetParticleWeight(const pandora::PfoList *const pPfoList, float &targetParticleWeight, float &totalWeight, std::function< bool(const pandora::MCParticle *const)> fCriteria)
Get the target particle weight in a list of pfos.
static void GetAllDownstreamPfos(const pandora::PfoList &inputPfoList, pandora::PfoList &outputPfoList)
Get a flat list of all pfos, recursively, of all daughters associated with those pfos in an input lis...

Member Data Documentation

float lar_content::CheatingBeamParticleIdTool::m_minWeightFraction
private

The minimum weight fraction for identifying a slice as a beam particle.

Definition at line 34 of file CheatingBeamParticleIdTool.h.


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