29 #ifndef TRACKCLUSTERASSOCIATIONMVAALGORITHM_H
30 #define TRACKCLUSTERASSOCIATIONMVAALGORITHM_H
32 #include "Pandora/Algorithm.h"
34 #include "TMVA/Reader.h"
35 #include "TMVA/MethodCuts.h"
37 namespace april_content
49 class Factory :
public pandora::AlgorithmFactory
52 pandora::Algorithm *CreateAlgorithm()
const;
56 pandora::StatusCode Run();
57 pandora::StatusCode ReadSettings(
const pandora::TiXmlHandle xmlHandle);
64 const pandora::Cluster *m_pCluster;
66 float m_trackClusterAngle;
67 float m_distanceToHelix;
68 float m_compatibility;
71 typedef std::vector<AssociationConstraints> AssociationConstraintsVector;
72 typedef std::map<const pandora::Track*, AssociationConstraintsVector> AssociationConstraintsMap;
73 typedef std::map<const pandora::Track*, const pandora::Cluster*> AssociationMap;
74 typedef std::map<const pandora::Cluster*, const pandora::Track*> MultiAssociationMap;
91 pandora::StatusCode
BuildPossibleAssociations(
const pandora::ClusterList &clusterList,
const pandora::TrackList &trackList,
92 AssociationMap &associationMap);
104 pandora::StatusCode ComputeInnerCentroid(
const pandora::Cluster *
const pCluster,
const pandora::Track *
const pTrack, pandora::CartesianVector &innerCentroid)
const;
112 bool PassesInitialCuts(
const pandora::Cluster *
const pCluster,
const pandora::Track *
const pTrack)
const;
114 float MVADeteriminAssociation(
const pandora::Cluster*
const pCluster,
const pandora::Track*
const pTrack)
const;
147 bool m_usePhotonClusters;
149 static TMVA::Reader* m_reader;
154 inline pandora::Algorithm *TrackClusterAssociationMVAAlgorithm::Factory::CreateAlgorithm()
const
161 #endif // TRACKCLUSTERASSOCIATIONMVAALGORITHM_H
AssociationConstraints struct.
Definition: TrackClusterAssociationMVAAlgorithm.h:62
float m_maxDistanceToHelix
The maximum distance between a track helix and the cluster inner centroid.
Definition: TrackClusterAssociationMVAAlgorithm.h:141
bool m_allowMultiAssociations
Whether to allow multi track associations for a single cluster.
Definition: TrackClusterAssociationMVAAlgorithm.h:144
bool PassesInitialCuts(const pandora::Cluster *const pCluster, const pandora::Track *const pTrack) const
Whether the track-cluster pair passes simple cuts for a possible association.
Definition: TrackClusterAssociationMVAAlgorithm.cc:529
pandora::StatusCode BuildPossibleAssociations(const pandora::ClusterList &clusterList, const pandora::TrackList &trackList, AssociationMap &associationMap)
Build the possible track-cluster associations.
Definition: TrackClusterAssociationMVAAlgorithm.cc:310
TrackClusterAssociationMVAAlgorithm class.
Definition: TrackClusterAssociationMVAAlgorithm.h:43
Factory class for instantiating algorithm.
Definition: TrackClusterAssociationMVAAlgorithm.h:49
pandora::StatusCode CalculateAssociationConstraints(const pandora::Cluster *const pCluster, const pandora::Track *const pTrack, AssociationConstraints &constraints)
Calculate the track-cluster association constraints for a possible association.
Definition: TrackClusterAssociationMVAAlgorithm.cc:634
bool m_useEnergyCompatibility
Whether to use energy information for association.
Definition: TrackClusterAssociationMVAAlgorithm.h:145
unsigned int m_nFirstClusterPseudoLayer
The number of cluster pseudo layers for the inner centroid evaluation.
Definition: TrackClusterAssociationMVAAlgorithm.h:139
unsigned int m_maxClusterInnerPseudoLayer
The maximum cluster inner pseudo layer cut.
Definition: TrackClusterAssociationMVAAlgorithm.h:138
static bool SortByBestCompatibility(const AssociationConstraints &lhs, const AssociationConstraints &rhs)
Sort association constraints by compatibility (std::sort)
Definition: TrackClusterAssociationMVAAlgorithm.cc:698
pandora::StatusCode PerformAssociations(const AssociationMap &associationMap)
Perform the track-cluster association.
Definition: TrackClusterAssociationMVAAlgorithm.cc:443
bool FitConstraints(const AssociationConstraints &constraints) const
Whether the set of constraints passes the final cuts for an association.
Definition: TrackClusterAssociationMVAAlgorithm.cc:685
float m_maxTrackClusterAngle
The maximum angle between the track projection and the cluster inner centroid.
Definition: TrackClusterAssociationMVAAlgorithm.h:142
pandora::StatusCode ExtractAssociationLists(pandora::ClusterList &clusterList, pandora::TrackList &trackList)
Extract the cluster and track lists eligible for track-cluster associations.
Definition: TrackClusterAssociationMVAAlgorithm.cc:147