19 m_showCurrentMCParticles(false),
20 m_showCurrentCaloHits(false),
21 m_showCurrentTracks(false),
22 m_showCurrentClusters(false),
23 m_showCurrentPfos(false),
24 m_showCurrentVertices(false),
27 m_showDetector(false),
29 m_showOnlyAvailable(false),
30 m_showAssociatedTracks(false),
31 m_hitColors(
"iterate"),
32 m_thresholdEnergy(-1.f),
33 m_transparencyThresholdE(-1.f),
34 m_energyScaleThresholdE(1.f),
36 m_showPfoVertices(true),
37 m_showPfoHierarchy(true)
46 (
m_detectorView.find(
"xz") != std::string::npos) ? DETECTOR_VIEW_XZ : (
m_detectorView.find(
"xy") != std::string::npos) ? DETECTOR_VIEW_XY : DETECTOR_VIEW_DEFAULT,
132 return STATUS_CODE_SUCCESS;
141 if (listName.empty())
146 std::cout <<
"VisualMonitoringAlgorithm: mc particle list unavailable." << std::endl;
155 std::cout <<
"VisualMonitoringAlgorithm: mc particle list unavailable." << std::endl;
170 if (listName.empty())
175 std::cout <<
"VisualMonitoringAlgorithm: current calo hit list unavailable." << std::endl;
184 std::cout <<
"VisualMonitoringAlgorithm: calo hit list " << listName <<
" unavailable." << std::endl;
192 for (CaloHitList::const_iterator iter = pCaloHitList->begin(), iterEnd = pCaloHitList->end(); iter != iterEnd; ++iter)
194 const CaloHit *
const pCaloHit = *iter;
198 caloHitList.push_back(pCaloHit);
203 (
m_hitColors.find(
"energy") != std::string::npos ? AUTOENERGY : GRAY)));
212 if (listName.empty())
217 std::cout <<
"VisualMonitoringAlgorithm: current track list unavailable." << std::endl;
226 std::cout <<
"VisualMonitoringAlgorithm: track list " << listName <<
" unavailable." << std::endl;
234 for (TrackList::const_iterator iter = pTrackList->begin(), iterEnd = pTrackList->end(); iter != iterEnd; ++iter)
236 const Track *
const pTrack = *iter;
239 trackList.push_back(pTrack);
251 if (listName.empty())
256 std::cout <<
"VisualMonitoringAlgorithm: current cluster list unavailable." << std::endl;
265 std::cout <<
"VisualMonitoringAlgorithm: cluster list " << listName <<
" unavailable." << std::endl;
273 for (ClusterList::const_iterator iter = pClusterList->begin(), iterEnd = pClusterList->end(); iter != iterEnd; ++iter)
275 const Cluster *
const pCluster = *iter;
278 clusterList.push_back(pCluster);
282 (
m_hitColors.find(
"particleid") != std::string::npos)
284 : (
m_hitColors.find(
"iterate") != std::string::npos) ? AUTOITER : (
m_hitColors.find(
"energy") != std::string::npos) ? AUTOENERGY : AUTO,
292 const PfoList *pPfoList = NULL;
294 if (listName.empty())
299 std::cout <<
"VisualMonitoringAlgorithm: current pfo list unavailable." << std::endl;
308 std::cout <<
"VisualMonitoringAlgorithm: pfo list " << listName <<
" unavailable." << std::endl;
314 (
m_hitColors.find(
"particleid") != std::string::npos)
316 : (
m_hitColors.find(
"iterate") != std::string::npos ? AUTOITER : (
m_hitColors.find(
"energy") != std::string::npos ? AUTOENERGY : AUTO)),
326 if (listName.empty())
331 std::cout <<
"VisualMonitoringAlgorithm: current vertex list unavailable." << std::endl;
340 std::cout <<
"VisualMonitoringAlgorithm: vertex list " << listName <<
" unavailable." << std::endl;
348 for (VertexList::const_iterator iter = pVertexList->begin(), iterEnd = pVertexList->end(); iter != iterEnd; ++iter)
350 const Vertex *
const pVertex = *iter;
353 vertexList.push_back(pVertex);
436 const std::string pdgEnergy(*iter);
438 const std::string delimiter =
":";
441 if (pdgEnergySeparated.size() != 2)
442 return STATUS_CODE_INVALID_PARAMETER;
448 return STATUS_CODE_INVALID_PARAMETER;
453 return STATUS_CODE_SUCCESS;
#define PANDORA_RETURN_RESULT_IF_AND_IF(StatusCode1, StatusCode2, Operator, Command)
Header file for the visual monitoring algorithm class.
static bool IsAvailable(const pandora::Algorithm &algorithm, const T *const pT)
Is object, or a list of objects, available as a building block.
static pandora::StatusCode GetCurrentList(const pandora::Algorithm &algorithm, const T *&pT)
Get the current list.
static pandora::StatusCode GetList(const pandora::Algorithm &algorithm, const std::string &listName, const T *&pT)
Get a named list.
static const pandora::PandoraSettings * GetSettings(const pandora::Algorithm &algorithm)
Get the pandora settings instance.
pandora::StringVector m_trackListNames
Names of track lists to show.
pandora::StringVector m_pfoListNames
Names of pfo lists to show.
void VisualizeParticleFlowList(const std::string &listName) const
Visualize a specified pfo list.
bool m_showCurrentCaloHits
Whether to show current calohitlist.
pandora::StatusCode Run()
Run the algorithm.
pandora::StringVector m_clusterListNames
Names of cluster lists to show.
std::string m_detectorView
The detector view, default, xy or xz.
bool m_showPfoVertices
Whether to display pfo vertices.
bool m_showOnlyAvailable
Whether to show only available (i.e. non-clustered) calohits and tracks.
float m_thresholdEnergy
Cell energy threshold for display (em scale)
bool m_showCurrentClusters
Whether to show current clusters.
VisualMonitoringAlgorithm()
Default constructor.
pandora::StringVector m_vertexListNames
Names of vertex lists to show.
pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
Read the algorithm settings.
void VisualizeCaloHitList(const std::string &listName) const
Visualize a specified calo hit list.
bool m_showPfoHierarchy
Whether to display daughter pfos only under parent pfo elements.
pandora::StringVector m_caloHitListNames
Names of calo hit lists to show.
void VisualizeVertexList(const std::string &listName) const
Visualize a specified vertex list.
bool m_showAssociatedTracks
Whether to display tracks associated to clusters when viewing cluster lists.
bool m_showCurrentTracks
Whether to show current tracks.
bool m_showCurrentVertices
Whether to show current vertex list.
float m_transparencyThresholdE
Cell energy for which transparency is saturated (0%, fully opaque)
bool m_showCurrentPfos
Whether to show current particle flow object list.
pandora::StringVector m_suppressMCParticles
List of PDG numbers and energies for MC particles to be suppressed (e.g. " 22:0.1 2112:1....
std::string m_hitColors
Define the hit coloring scheme (default: pfo, choices: pfo, particleid)
bool m_displayEvent
Whether to display the event.
bool m_showDetector
Whether to display the detector geometry.
pandora::StringVector m_mcParticleListNames
Names of mc particles lists to show.
void VisualizeClusterList(const std::string &listName) const
Visualize a specified calo hit list.
float m_scalingFactor
TEve works with [cm], Pandora usually works with [mm] (but LArContent went with cm too)
void VisualizeTrackList(const std::string &listName) const
Visualize a specified track list.
PdgCodeToEnergyMap m_particleSuppressionMap
Map from pdg-codes to energy for suppression of particles types below specific energies.
float m_energyScaleThresholdE
Cell energy for which color is at top end of continous color palette.
std::string m_saveEventPath
The path to save event displays to. m_displayEvent must also be set.
bool m_showCurrentMCParticles
Whether to show current mc particles.
void VisualizeMCParticleList(const std::string &listName) const
Visualize mc particle list.
float GetElectromagneticEnergy() const
Get the calibrated electromagnetic energy measure.
bool ShouldDisplayAlgorithmInfo() const
Whether to display algorithm information during processing.
const Pandora & GetPandora() const
Get the associated pandora instance.
bool IsAvailable() const
Whether the track is available to be added to a particle flow object.
bool IsAvailable() const
Whether the vertex is available to be added to a particle flow object.
static void TokenizeString(const std::string &inputString, StringVector &tokens, const std::string &delimiter=" ")
Tokenize a string.
static StatusCode ReadVectorOfValues(const TiXmlHandle &xmlHandle, const std::string &xmlElementName, std::vector< T > &vector)
Read a vector of values from a (space separated) list in an xml element.
static StatusCode ReadValue(const TiXmlHandle &xmlHandle, const std::string &xmlElementName, T &t)
Read a value from an xml element.
MANAGED_CONTAINER< const MCParticle * > MCParticleList
bool StringToType(const std::string &s, T &t)
MANAGED_CONTAINER< const Cluster * > ClusterList
std::vector< std::string > StringVector
MANAGED_CONTAINER< const CaloHit * > CaloHitList
MANAGED_CONTAINER< const Track * > TrackList
MANAGED_CONTAINER< const Vertex * > VertexList
StatusCode
The StatusCode enum.
MANAGED_CONTAINER< const ParticleFlowObject * > PfoList