Pandora
Pandora source code navigator
Loading...
Searching...
No Matches
TrackShowerIdFeatureTool.h
Go to the documentation of this file.
1
8#ifndef LAR_TRACK_SHOWER_ID_FEATURE_TOOLS_H
9#define LAR_TRACK_SHOWER_ID_FEATURE_TOOLS_H 1
10
12
14
15namespace lar_content
16{
17
20
21//------------------------------------------------------------------------------------------------------------------------------------------
22
27{
28public:
33
34 void Run(LArMvaHelper::MvaFeatureVector &featureVector, const pandora::Algorithm *const pAlgorithm, const pandora::Cluster *const pCluster);
35 void Run(LArMvaHelper::MvaFeatureMap &featureMap, pandora::StringVector &featureOrder, const std::string &featureToolName,
36 const pandora::Algorithm *const pAlgorithm, const pandora::Cluster *const pCluster);
37
38private:
40
49 float CalculateShowerFitWidth(const pandora::Algorithm *const pAlgorithm, const pandora::Cluster *const pCluster) const;
50
53};
54
55//------------------------------------------------------------------------------------------------------------------------------------------
56
61{
62public:
67
68 void Run(LArMvaHelper::MvaFeatureVector &featureVector, const pandora::Algorithm *const pAlgorithm, const pandora::Cluster *const pCluster);
69 void Run(LArMvaHelper::MvaFeatureMap &featureMap, pandora::StringVector &featureOrder, const std::string &featureToolName,
70 const pandora::Algorithm *const pAlgorithm, const pandora::Cluster *const pCluster);
71
72private:
74
86 void CalculateVariablesSlidingLinearFit(const pandora::Cluster *const pCluster, float &straightLineLengthLarge, float &diffWithStraigthLineMean,
87 float &diffWithStraightLineSigma, float &dTdLWidth, float &maxFitGapLength, float &rmsSlidingLinearFit) const;
88
91};
92
93//------------------------------------------------------------------------------------------------------------------------------------------
94
99{
100public:
105
106 void Run(LArMvaHelper::MvaFeatureVector &featureVector, const pandora::Algorithm *const pAlgorithm, const pandora::Cluster *const pCluster);
107 void Run(LArMvaHelper::MvaFeatureMap &featureMap, pandora::StringVector &featureOrder, const std::string &featureToolName,
108 const pandora::Algorithm *const pAlgorithm, const pandora::Cluster *const pCluster);
109
110private:
112
120 float CalculateVertexDistance(const pandora::Algorithm *const pAlgorithm, const pandora::Cluster *const pCluster) const;
121
123};
124
125//------------------------------------------------------------------------------------------------------------------------------------------
126
131{
132public:
137
138 void Run(LArMvaHelper::MvaFeatureVector &featureVector, const pandora::Algorithm *const pAlgorithm, const pandora::ParticleFlowObject *const pInputPfo);
139 void Run(LArMvaHelper::MvaFeatureMap &featureMap, pandora::StringVector &featureOrder, const std::string &featureToolName,
140 const pandora::Algorithm *const pAlgorithm, const pandora::ParticleFlowObject *const pInputPfo);
141
142private:
144};
145
146//------------------------------------------------------------------------------------------------------------------------------------------
147
152{
153public:
158
159 void Run(LArMvaHelper::MvaFeatureVector &featureVector, const pandora::Algorithm *const pAlgorithm, const pandora::ParticleFlowObject *const pInputPfo);
160 void Run(LArMvaHelper::MvaFeatureMap &featureMap, pandora::StringVector &featureOrder, const std::string &featureToolName,
161 const pandora::Algorithm *const pAlgorithm, const pandora::ParticleFlowObject *const pInputPfo);
162
163private:
165
177 void CalculateVariablesSlidingLinearFit(const pandora::Cluster *const pCluster, float &straightLineLengthLarge,
178 float &diffWithStraigthLineMean, float &maxFitGapLength, float &rmsSlidingLinearFit) const;
179
182};
183
184//------------------------------------------------------------------------------------------------------------------------------------------
185
190{
191public:
196
197 void Run(LArMvaHelper::MvaFeatureVector &featureVector, const pandora::Algorithm *const pAlgorithm, const pandora::ParticleFlowObject *const pInputPfo);
198 void Run(LArMvaHelper::MvaFeatureMap &featureMap, pandora::StringVector &featureOrder, const std::string &featureToolName,
199 const pandora::Algorithm *const pAlgorithm, const pandora::ParticleFlowObject *const pInputPfo);
200
201private:
203};
204
205//------------------------------------------------------------------------------------------------------------------------------------------
206
211{
212public:
217
218 void Run(LArMvaHelper::MvaFeatureVector &featureVector, const pandora::Algorithm *const pAlgorithm, const pandora::ParticleFlowObject *const pInputPfo);
219 void Run(LArMvaHelper::MvaFeatureMap &featureMap, pandora::StringVector &featureOrder, const std::string &featureToolName,
220 const pandora::Algorithm *const pAlgorithm, const pandora::ParticleFlowObject *const pInputPfo);
221
222private:
224
234 unsigned int m_conMinHits;
239
250 void CalculateChargeDistribution(const pandora::CaloHitList &caloHitList, const pandora::CartesianVector &pfoStart,
251 const pandora::CartesianVector &pfoDir, float &chargeCore, float &chargeHalo, float &chargeCon);
252
262 float CalculateConicalness(const pandora::CaloHitList &caloHitList, const pandora::CartesianVector &pfoStart,
263 const pandora::CartesianVector &pfoDir, const float pfoLength);
264};
265
266//------------------------------------------------------------------------------------------------------------------------------------------
267
272{
273public:
278
279 void Run(LArMvaHelper::MvaFeatureVector &featureVector, const pandora::Algorithm *const pAlgorithm, const pandora::ParticleFlowObject *const pInputPfo);
280 void Run(LArMvaHelper::MvaFeatureMap &featureMap, pandora::StringVector &featureOrder, const std::string &featureToolName,
281 const pandora::Algorithm *const pAlgorithm, const pandora::ParticleFlowObject *const pInputPfo);
282
283private:
285
293 void Divide3DCaloHitList(const pandora::Algorithm *const pAlgorithm, const pandora::CaloHitList &threeDCaloHitList,
294 pandora::CartesianPointVector &pointVectorStart, pandora::CartesianPointVector &pointVectorEnd);
295
305 float OpeningAngle(const pandora::CartesianVector &principal, const pandora::CartesianVector &secondary,
306 const pandora::CartesianVector &eigenValues) const;
307
310};
311
312//------------------------------------------------------------------------------------------------------------------------------------------
313
318{
319public:
324
325 void Run(LArMvaHelper::MvaFeatureVector &featureVector, const pandora::Algorithm *const pAlgorithm, const pandora::ParticleFlowObject *const pInputPfo);
326 void Run(LArMvaHelper::MvaFeatureMap &featureMap, pandora::StringVector &featureOrder, const std::string &featureToolName,
327 const pandora::Algorithm *const pAlgorithm, const pandora::ParticleFlowObject *const pInputPfo);
328
329private:
331};
332
333//------------------------------------------------------------------------------------------------------------------------------------------
334
339{
340public:
345
350 {
351 public:
355 VertexComparator(const pandora::CartesianVector vertexPosition2D);
356
364 bool operator()(const pandora::CaloHit *const left, const pandora::CaloHit *const right) const;
365
366 pandora::CartesianVector m_neutrinoVertex; //The neutrino vertex used to sort
367 };
368
369 void Run(LArMvaHelper::MvaFeatureVector &featureVector, const pandora::Algorithm *const pAlgorithm, const pandora::ParticleFlowObject *const pInputPfo);
370 void Run(LArMvaHelper::MvaFeatureMap &featureMap, pandora::StringVector &featureOrder, const std::string &featureToolName,
371 const pandora::Algorithm *const pAlgorithm, const pandora::ParticleFlowObject *const pInputPfo);
372
373private:
385 void CalculateChargeVariables(const pandora::Algorithm *const pAlgorithm, const pandora::Cluster *const pCluster, float &totalCharge,
386 float &chargeSigma, float &chargeMean, float &endCharge);
387
397 const pandora::Algorithm *const pAlgorithm, const pandora::Cluster *const pCluster, pandora::CaloHitList &caloHitList);
398
400
402};
403
404} // namespace lar_content
405
406#endif // #ifndef LAR_TRACK_SHOWER_ID_FEATURE_TOOLS_H
Header file defining relevant internal typedefs, sort and string conversion functions.
ConeChargeFeatureTool class for the calculation of charge distribution and conicalness.
unsigned int m_conMinHits
Configurable parameters to calculate cone charge variables.
void Run(LArMvaHelper::MvaFeatureVector &featureVector, const pandora::Algorithm *const pAlgorithm, const pandora::ParticleFlowObject *const pInputPfo)
void CalculateChargeDistribution(const pandora::CaloHitList &caloHitList, const pandora::CartesianVector &pfoStart, const pandora::CartesianVector &pfoDir, float &chargeCore, float &chargeHalo, float &chargeCon)
Calculate charge distribution in relation to the Moeliere radius.
pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
Read the algorithm settings.
float CalculateConicalness(const pandora::CaloHitList &caloHitList, const pandora::CartesianVector &pfoStart, const pandora::CartesianVector &pfoDir, const float pfoLength)
Calculate conicalness as a ratio of charge distribution at the end and start of pfo.
MvaTypes::MvaFeatureVector MvaFeatureVector
MvaTypes::MvaFeatureMap MvaFeatureMap
MvaFeatureTool class template.
PfoHierarchyFeatureTool for calculation of features relating to reconstructed particle hierarchy.
pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
Read the algorithm settings.
void Run(LArMvaHelper::MvaFeatureVector &featureVector, const pandora::Algorithm *const pAlgorithm, const pandora::ParticleFlowObject *const pInputPfo)
VertexComparator class for comparison of two points wrt neutrino vertex position.
bool operator()(const pandora::CaloHit *const left, const pandora::CaloHit *const right) const
operator <
ThreeDChargeFeatureTool class for the calculation of charge-related features.
void CalculateChargeVariables(const pandora::Algorithm *const pAlgorithm, const pandora::Cluster *const pCluster, float &totalCharge, float &chargeSigma, float &chargeMean, float &endCharge)
Calculation of the charge variables.
float m_endChargeFraction
Fraction of hits that will be considered to calculate end charge (default 10%)
void OrderCaloHitsByDistanceToVertex(const pandora::Algorithm *const pAlgorithm, const pandora::Cluster *const pCluster, pandora::CaloHitList &caloHitList)
Function to order the calo hit list by distance to neutrino vertex.
pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
Read the algorithm settings.
void Run(LArMvaHelper::MvaFeatureVector &featureVector, const pandora::Algorithm *const pAlgorithm, const pandora::ParticleFlowObject *const pInputPfo)
ThreeDLinearFitFeatureTool class for the calculation of variables related to 3d sliding linear fit.
unsigned int m_slidingLinearFitWindow
The sliding linear fit window.
pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
Read the algorithm settings.
unsigned int m_slidingLinearFitWindowLarge
The sliding linear fit window - should be large, providing a simple linear fit.
void CalculateVariablesSlidingLinearFit(const pandora::Cluster *const pCluster, float &straightLineLengthLarge, float &diffWithStraigthLineMean, float &maxFitGapLength, float &rmsSlidingLinearFit) const
Calculation of several variables related to sliding linear fit.
void Run(LArMvaHelper::MvaFeatureVector &featureVector, const pandora::Algorithm *const pAlgorithm, const pandora::ParticleFlowObject *const pInputPfo)
ThreeDOpeningAngleFeatureTool class for the calculation of distance to neutrino vertex.
float m_defaultValue
Default value to return, in case calculation not feasible.
void Divide3DCaloHitList(const pandora::Algorithm *const pAlgorithm, const pandora::CaloHitList &threeDCaloHitList, pandora::CartesianPointVector &pointVectorStart, pandora::CartesianPointVector &pointVectorEnd)
Obtain positions at the vertex and non-vertex end of a list of three dimensional calo hits.
float OpeningAngle(const pandora::CartesianVector &principal, const pandora::CartesianVector &secondary, const pandora::CartesianVector &eigenValues) const
Use the results of principal component analysis to calculate an opening angle.
void Run(LArMvaHelper::MvaFeatureVector &featureVector, const pandora::Algorithm *const pAlgorithm, const pandora::ParticleFlowObject *const pInputPfo)
float m_hitFraction
Fraction of hits in start and end of pfo.
pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
Read the algorithm settings.
ThreeDPCAFeatureTool class for the calculation of PCA-related variables.
pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
Read the algorithm settings.
void Run(LArMvaHelper::MvaFeatureVector &featureVector, const pandora::Algorithm *const pAlgorithm, const pandora::ParticleFlowObject *const pInputPfo)
ThreeDVertexDistanceFeatureTool class for the calculation of 3d distance to neutrino vertex.
pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
Read the algorithm settings.
void Run(LArMvaHelper::MvaFeatureVector &featureVector, const pandora::Algorithm *const pAlgorithm, const pandora::ParticleFlowObject *const pInputPfo)
TwoDLinearFitFeatureTool class for the calculation of variables related to 2d sliding linear fit.
void Run(LArMvaHelper::MvaFeatureVector &featureVector, const pandora::Algorithm *const pAlgorithm, const pandora::Cluster *const pCluster)
void CalculateVariablesSlidingLinearFit(const pandora::Cluster *const pCluster, float &straightLineLengthLarge, float &diffWithStraigthLineMean, float &diffWithStraightLineSigma, float &dTdLWidth, float &maxFitGapLength, float &rmsSlidingLinearFit) const
Calculation of several variables related to sliding linear fit.
unsigned int m_slidingLinearFitWindowLarge
The sliding linear fit window - should be large, providing a simple linear fit.
unsigned int m_slidingLinearFitWindow
The sliding linear fit window.
pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
Read the algorithm settings.
TwoDShowerFitFeatureTool to calculate variables related to sliding shower fit.
pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
Read the algorithm settings.
float CalculateShowerFitWidth(const pandora::Algorithm *const pAlgorithm, const pandora::Cluster *const pCluster) const
Calculation of the shower fit width variable.
void Run(LArMvaHelper::MvaFeatureVector &featureVector, const pandora::Algorithm *const pAlgorithm, const pandora::Cluster *const pCluster)
unsigned int m_slidingShowerFitWindow
The sliding shower fit window.
unsigned int m_slidingLinearFitWindow
The sliding linear fit window.
TwoDVertexDistanceFeatureTool class for the calculation of 2d distance to neutrino vertex.
pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
Read the algorithm settings.
void Run(LArMvaHelper::MvaFeatureVector &featureVector, const pandora::Algorithm *const pAlgorithm, const pandora::Cluster *const pCluster)
unsigned int m_slidingLinearFitWindow
The sliding linear fit window.
float CalculateVertexDistance(const pandora::Algorithm *const pAlgorithm, const pandora::Cluster *const pCluster) const
Calculation of vertex distance.
Algorithm class. Algorithm addresses are held only by the algorithm manager. They have a fully define...
Definition Algorithm.h:21
CaloHit class.
Definition CaloHit.h:26
CartesianVector class.
Cluster class.
Definition Cluster.h:31
ParticleFlowObject class.
MvaFeatureTool< const pandora::Algorithm *const, const pandora::ParticleFlowObject *const > PfoCharacterisationFeatureTool
MvaFeatureTool< const pandora::Algorithm *const, const pandora::Cluster *const > ClusterCharacterisationFeatureTool
std::vector< std::string > StringVector
std::vector< CartesianVector > CartesianPointVector
MANAGED_CONTAINER< const CaloHit * > CaloHitList
StatusCode
The StatusCode enum.