70 const PfoList *pPfoList{
nullptr};
78 if (!primaries.empty())
85 pTrueNeutrino = parents.front();
103 if (pRecoNeutrino && pTrueNeutrino)
110 const CartesianVector tu(trueVertex.GetX(), 0.f,
static_cast<float>(transform->YZtoU(trueVertex.GetY(), trueVertex.GetZ())));
111 const CartesianVector tv(trueVertex.GetX(), 0.f,
static_cast<float>(transform->YZtoV(trueVertex.GetY(), trueVertex.GetZ())));
112 const CartesianVector tw(trueVertex.GetX(), 0.f,
static_cast<float>(transform->YZtoW(trueVertex.GetY(), trueVertex.GetZ())));
114 const CartesianVector ru(recoVertex.GetX(), 0.f,
static_cast<float>(transform->YZtoU(recoVertex.GetY(), recoVertex.GetZ())));
115 const CartesianVector rv(recoVertex.GetX(), 0.f,
static_cast<float>(transform->YZtoV(recoVertex.GetY(), recoVertex.GetZ())));
116 const CartesianVector rw(recoVertex.GetX(), 0.f,
static_cast<float>(transform->YZtoW(recoVertex.GetY(), recoVertex.GetZ())));
118 const float du{(ru - tu).GetMagnitude()};
119 const float dv{(rv - tv).GetMagnitude()};
120 const float dw{(rw - tw).GetMagnitude()};
122 std::cout <<
"delta(u, v, w): (" << du <<
", " << dv <<
"," << dw <<
")" << std::endl;
135 const float dx{delta.
GetX()}, dy{delta.GetY()}, dz{delta.GetZ()}, dr{delta.GetMagnitude()};
136 const float trueNuEnergy{pTrueNeutrino->GetEnergy()};
137 const int success{1};
138 const int isCC{descriptor.IsCC()};
139 const int isQE{descriptor.IsQE()};
140 const int isRes{descriptor.IsResonant()};
141 const int isDIS{descriptor.IsDIS()};
142 const int isCoh{descriptor.IsCoherent()};
143 const int isOther{!(isCC || isQE || isRes || isDIS)};
144 const int isMu{descriptor.IsMuonNeutrino()};
145 const int isElectron{descriptor.IsElectronNeutrino()};
146 const int nPiZero{
static_cast<int>(descriptor.GetNumPiZero())};
147 const int nPiPlus{
static_cast<int>(descriptor.GetNumPiPlus())};
148 const int nPiMinus{
static_cast<int>(descriptor.GetNumPiMinus())};
149 const int nPhotons{
static_cast<int>(descriptor.GetNumPhotons())};
150 const int nProtons{
static_cast<int>(descriptor.GetNumProtons())};
173 else if (pTrueNeutrino)
179 const int success{0};
180 const float dx{-999.f}, dy{-999.f}, dz{-999.f}, dr{-999.f};
181 const float trueNuEnergy{pTrueNeutrino->GetEnergy()};
182 const int isCC{descriptor.IsCC()};
183 const int isQE{descriptor.IsQE()};
184 const int isRes{descriptor.IsResonant()};
185 const int isDIS{descriptor.IsDIS()};
186 const int isCoh{descriptor.IsCoherent()};
187 const int isOther{!(isCC || isQE || isRes || isDIS)};
188 const int isMu{descriptor.IsMuonNeutrino()};
189 const int isElectron{descriptor.IsElectronNeutrino()};
190 const int nPiZero{
static_cast<int>(descriptor.GetNumPiZero())};
191 const int nPiPlus{
static_cast<int>(descriptor.GetNumPiPlus())};
192 const int nPiMinus{
static_cast<int>(descriptor.GetNumPiMinus())};
193 const int nPhotons{
static_cast<int>(descriptor.GetNumPhotons())};
194 const int nProtons{
static_cast<int>(descriptor.GetNumProtons())};
219 return STATUS_CODE_SUCCESS;
240 return STATUS_CODE_SUCCESS;
Header file for the lar monte carlo particle helper helper class.
static pandora::StatusCode GetCurrentList(const pandora::Algorithm &algorithm, const T *&pT)
Get the current list.
static InteractionDescriptor GetInteractionDescriptor(const pandora::MCParticleList &mcPrimaryList)
Get the interaction descriptor of an event.
static void GetPrimaryMCParticleList(const pandora::MCParticleList *const pMCParticleList, pandora::MCParticleVector &mcPrimaryVector)
Get vector of primary MC particles from an input list of MC particles.
static bool IsNeutrino(const pandora::MCParticle *const pMCParticle)
Whether a mc particle is a neutrino or antineutrino.
std::unordered_map< const pandora::MCParticle *, pandora::CaloHitList > MCContributionMap
static bool IsNeutrino(const pandora::ParticleFlowObject *const pPfo)
Whether a pfo is a neutrino or (antineutrino)
static const pandora::Vertex * GetVertex(const pandora::ParticleFlowObject *const pPfo)
Get the pfo vertex.
static bool IsInFiducialVolume(const pandora::Pandora &pandora, const pandora::CartesianVector &vertex, const std::string &detector)
Determine if a vertex is within a detector's fiducial volume. This throws a STATUS_CODE_INVALID_PARAM...
pandora::StatusCode AssessVertices() const
float m_transparencyThresholdE
Cell energy for which transparency is saturated (0%, fully opaque)
pandora::StatusCode Run()
Run the algorithm.
pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
Read the algorithm settings.
float m_energyScaleThresholdE
Cell energy for which color is at top end of continous color palette.
float m_scalingFactor
TEve works with [cm], Pandora usually works with [mm] (but LArContent went with cm too)
ParticleFlowObject class.