APRILContent
Algorithm of Particle Reconstruction for ILC - implementation with PandoraSDK
|
APRILShowerProfilePlugin class. More...
#include <ShowerProfilePlugin.h>
Classes | |
class | ShowerPeakObject |
ShowerPeakObject class. More... | |
class | ShowerProfileEntry |
ShowerProfileEntry class. More... | |
Public Member Functions | |
APRILShowerProfilePlugin () | |
Default constructor. | |
void | CalculateShowerStartLayer (const pandora::Cluster *const pCluster, unsigned int &showerStartLayer) const |
void | CalculateLongitudinalProfile (const pandora::Cluster *const pCluster, float &profileStart, float &profileDiscrepancy) const |
void | CalculateTransverseProfile (const pandora::Cluster *const pCluster, const unsigned int maxPseudoLayer, ShowerPeakList &showerPeakList) const |
void | CalculateTransverseProfile (const pandora::Cluster *const pCluster, const unsigned int maxPseudoLayer, ShowerPeakList &showerPeakList, const bool inclusiveMode) const |
void | CalculateTrackBasedTransverseProfile (const pandora::Cluster *const pCluster, const unsigned int maxPseudoLayer, const pandora::Track *const pMinTrack, const pandora::TrackVector &trackVector, ShowerPeakList &showerPeakListPhoton, ShowerPeakList &showerPeakListNonPhoton) const |
Private Types | |
typedef std::pair< int, int > | TwoDBin |
The two dimensional bin typedef. | |
typedef std::vector< TwoDBin > | TwoDBinVector |
The two dimensional bin vector typedef. | |
typedef std::vector < ShowerProfileEntry > | ShowerProfile |
The shower profile typedef. | |
typedef std::vector < ShowerProfile > | TwoDShowerProfile |
The two dimensional shower profile typedef. | |
typedef std::vector < ShowerPeakObject > | ShowerPeakObjectVector |
The shower peak object vector. | |
Private Member Functions | |
void | CalculateTracklessTransverseShowers (const pandora::Cluster *const pCluster, const unsigned int maxPseudoLayer, TwoDShowerProfile &showerProfile, ShowerPeakObjectVector &showerPeakObjectVector) const |
Calculate transverse shower peak objects for a cluster and get the list of peaks identified in the profile, for clusters without tracks. More... | |
void | CalculateTrackNearbyTransverseShowers (const pandora::Cluster *const pCluster, const unsigned int maxPseudoLayer, const pandora::Track *const pMinTrack, const pandora::TrackVector &trackVector, TwoDShowerProfile &showerProfile, ShowerPeakObjectVector &showerPeakObjectVector, TwoDBinVector &trackProjectionVector) const |
Calculate transverse shower peak objects for a cluster and get the list of peaks identified in the profile, for clusters close to tracks. More... | |
void | CreateEmptyTwoDShowerProfile (TwoDShowerProfile &showerProfile) const |
Calculate empty 2D shower profile. More... | |
void | InitialiseTransverseProfile (const pandora::Cluster *const pCluster, const unsigned int maxPseudoLayer, TwoDShowerProfile &showerProfile) const |
Initialise 2D shower profile for clusters not close to tracks. More... | |
void | InitialiseTransverseProfileWithTracks (const pandora::Cluster *const pCluster, const unsigned int maxPseudoLayer, const pandora::Track *const pMinTrack, const pandora::TrackVector &trackVector, TwoDShowerProfile &showerProfile, TwoDBinVector &trackProjectionVector) const |
Initialise 2D shower profile for clusters close to tracks. More... | |
void | CalculateProjectionAxes (const pandora::Cluster *const pCluster, pandora::CartesianVector &innerLayerCentroid, pandora::CartesianVector &uAxis, pandora::CartesianVector &vAxis, const pandora::Track *const pMinTrack=NULL) const |
Find axes of projection. More... | |
void | InitialiseTwoDShowerProfile (const pandora::Cluster *const pCluster, const unsigned int maxPseudoLayer, const pandora::CartesianVector &innerLayerCentroid, const pandora::CartesianVector &uAxis, const pandora::CartesianVector &vAxis, TwoDShowerProfile &showerProfile) const |
Initialise 2D shower profile implementation given porject axes. More... | |
void | FindTracksProjection (const pandora::Cluster *const pCluster, const pandora::TrackVector &trackVector, const pandora::CartesianVector &innerLayerCentroid, const pandora::CartesianVector &uAxis, const pandora::CartesianVector &vAxis, TwoDBinVector &trackProjectionVector) const |
Find all tracks projections on 2D shower profile. More... | |
float | GetCellLengthScale (const pandora::Cluster *const pCluster) const |
Get cell length scale. More... | |
void | MaskLowHeightRegions (TwoDShowerProfile &showerProfile) const |
Mark region with low height unavailable. More... | |
void | FindRawPeaksInTwoDShowerProfile (TwoDShowerProfile &showerProfile, ShowerPeakObjectVector &showerPeakObjectVector) const |
Find raw peaks in 2D profile, based on local maxima. More... | |
void | AssociateUnavailableBinsToPeaks (const TwoDShowerProfile &showerProfile, ShowerPeakObjectVector &showerPeakObjectVector) const |
Associate unavailable bins to peaks, using TwoDShowerProfile, for inclusive modes. More... | |
void | AssociateBinsToPeaks (const TwoDShowerProfile &showerProfile, ShowerPeakObjectVector &showerPeakObjectVector) const |
Associate bins to peaks, using TwoDShowerProfile. More... | |
void | AssociateBinsToPeaks (const TwoDBinVector &twoDBinVector, ShowerPeakObjectVector &showerPeakObjectVector) const |
Associate bins to peaks, using TwoDBinVector. More... | |
void | ApplyQualityCutPeakNBin (ShowerPeakObjectVector &showerPeakObjectVector, TwoDBinVector &twoDBinVector) const |
Apply quality cuts to peaks. More... | |
bool | PassQualityCutPeakNBin (const ShowerPeakObject &showerPeakObject) const |
True for passing the quality cuts for minimum number of bins. More... | |
void | MarkPeaksCloseToTracks (const TwoDBinVector &trackProjectionVector, ShowerPeakObjectVector &showerPeakObjectVector) const |
Mark bins close to tracks not photon candidate. More... | |
void | MatchPeaksInTwoSlices (const ShowerPeakObjectVector &showerPeakObjectVectorFirst, ShowerPeakObjectVector &showerPeakObjectVectorNext) const |
Mark bins shifted too much between slices not photon candidate. More... | |
void | ProcessShowerProfile (TwoDShowerProfile &showerProfile, ShowerPeakObjectVector &showerPeakObjectVector) const |
Process the quality cuts and association of bins to peaks. More... | |
void | ConvertBinsToShowerLists (const TwoDShowerProfile &showerProfile, const ShowerPeakObjectVector &showerPeakObjectVector, ShowerPeakList &showerPeakListPhoton, ShowerPeakList &showerPeakListNonPhoton, const bool inclusiveMode) const |
Convert 2D bins to shower lists. More... | |
void | FindHitPositionProjection (const pandora::CartesianVector &hitPosition, const pandora::CartesianVector &innerLayerCentroid, const pandora::CartesianVector &uAxis, const pandora::CartesianVector &vAxis, const int nOffsetBins, const float cellLengthScale, int &uBin, int &vBin) const |
Find projection of a 3D point. More... | |
void | FindBoundaryBins (const int uBin, const int vBin, const int uEdgeLow, const int uEdgeHigh, const int vEdgeLow, const int vEdgeHigh, int &uEdgeBin, int &vEdgeBin) const |
Find the cloest boundary bin for a point outside the square. More... | |
bool | IsPeak (TwoDShowerProfile &showerProfile, const int uBin, const int vBin) const |
True if the peak is a local maxima. More... | |
bool | Check8NeighbourFull (TwoDShowerProfile &showerProfile, const int uBin, const int vBin) const |
True if the peak is a local maxima implementaion. More... | |
bool | Check8NeighbourFast (TwoDShowerProfile &showerProfile, const int uBin, const int vBin) const |
True if the peak is a local maxima implementaion, fast. More... | |
float | CalculatePeakFindingMetric (const float distance, const float energy) const |
Calculate the metric for peak association. More... | |
void | CalculateBestPeakUsingMetric (ShowerPeakObjectVector &showerPeakObjectVector, const int uBin, const int vBin, ShowerPeakObject *&bestShowerPeakObject) const |
Find the best shower peak to associate bins. More... | |
bool | HasPhotonCandidate (const ShowerPeakObjectVector &showerPeakObjectVector) const |
True for showerPeakObjectVector contains photon candiates. More... | |
pandora::StatusCode | ReadSettings (const pandora::TiXmlHandle xmlHandle) |
Static Private Member Functions | |
static bool | SortShowerPeakListByEnergy (const ShowerPeak &lhs, const ShowerPeak &rhs) |
Sort shower peak list by desending energy. More... | |
Private Attributes | |
float | m_showerStartMipFraction |
Max layer mip-fraction to declare layer as shower-like. | |
unsigned int | m_showerStartNonMipLayers |
Number of successive shower-like layers to identify shower start. | |
float | m_longProfileBinWidth |
Bin width used to construct longitudinal profile, units radiation lengths. | |
unsigned int | m_longProfileNBins |
Number of bins used to construct longitudinal profile. | |
float | m_longProfileMinCosAngle |
Min angular correction used to adjust radiation length measures. | |
float | m_longProfileCriticalEnergy |
Critical energy, used to calculate argument for gamma function. | |
float | m_longProfileParameter0 |
Parameter0, used to calculate argument for gamma function. | |
float | m_longProfileParameter1 |
Parameter1, used to calculate argument for gamma function. | |
float | m_longProfileMaxDifference |
Max difference between current and best longitudinal profile comparisons. | |
int | m_transProfileNBins |
Number of bins used to construct transverse profile. | |
float | m_transProfilePeakThreshold |
Minimum energy for a bin to consider. | |
unsigned int | m_transProfilePeakFindingMetric |
The metric for peak association. | |
unsigned int | m_transProfileMinNBinsCut |
The minimum number for bins of a substantial peak. | |
unsigned int | m_transProfileTrackNearbyNSlices |
The number of slices to analyse the EM shower. | |
float | m_transProfileMinTrackToPeakCut |
The minimum 2D distance of a track to the peak postion. | |
float | m_transProfileMinDisTrackMatch |
The maximum allowed shift of 2D distance of the peak position through the slices. | |
APRILShowerProfilePlugin class.
|
private |
Apply quality cuts to peaks.
showerPeakObjectVector | the 2D peak object to modify |
twoDBinVector | the discared two dimensional bins to receive |
|
private |
Associate bins to peaks, using TwoDShowerProfile.
showerProfile | two dimensional shower profile to consider |
showerPeakObjectVector | the 2D peak object to receive |
|
private |
Associate bins to peaks, using TwoDBinVector.
twoDBinVector | two dimensional bins |
showerPeakObjectVector | the 2D peak object to receive |
|
private |
Associate unavailable bins to peaks, using TwoDShowerProfile, for inclusive modes.
showerProfile | two dimensional shower profile to consider |
showerPeakObjectVector | the 2D peak object to receive |
|
private |
Find the best shower peak to associate bins.
showerPeakObjectVector | shower peak obejct vectors for all peaks |
uBin | position of bin |
vBin | position of bin |
bestShowerPeakObject | address of best peak object to receive |
|
private |
Calculate the metric for peak association.
distance | the distance to the peak |
energy | energy of the peak |
|
private |
Find axes of projection.
pCluster | the address of the cluster |
innerLayerCentroid | the inner layer centroid to receive |
uAxis | u axis to receive |
vAxis | v axis to receive |
pMinTrack | the closest track to the shower profile to speed up calculation |
|
private |
Calculate transverse shower peak objects for a cluster and get the list of peaks identified in the profile, for clusters without tracks.
pCluster | the address of the cluster |
maxPseudoLayer | the maximum pseudo layer to consider |
showerProfile | two dimensional shower profile to consider |
showerPeakObjectVector | to receive the shower peak objects |
|
private |
Calculate transverse shower peak objects for a cluster and get the list of peaks identified in the profile, for clusters close to tracks.
pCluster | the address of the cluster |
maxPseudoLayer | the maximum pseudo layer to consider |
pMinTrack | the closest track to the shower profile to speed up calculation |
trackVector | the vector of tracks to speed up calculation |
showerProfile | two dimensional shower profile to consider |
showerPeakObjectVector | to receive the shower peak objects |
trackProjectionVector | the 2D positions of track projections to receive and speed up subsequent calculation |
|
private |
True if the peak is a local maxima implementaion, fast.
showerProfile | the 2D shower profile to modify |
uBin | projection in u direction |
vBin | projection in v direction |
|
private |
True if the peak is a local maxima implementaion.
showerProfile | the 2D shower profile to modify |
uBin | projection in u direction |
vBin | projection in v direction |
|
private |
Convert 2D bins to shower lists.
showerProfile | the 2D shower profile to consider |
showerPeakObjectVector | the 2D peak object vector to consider |
showerPeakListPhoton | shower peak list of photon candidates |
showerPeakListNonPhoton | shower peak list of non photon candidates |
inclusiveMode | inclusive mode to add all calo hits to peaks |
|
private |
Calculate empty 2D shower profile.
showerProfile | two dimensional shower profile to receive |
|
private |
Find the cloest boundary bin for a point outside the square.
uBin | u bin |
vBin | v bin |
uEdgeLow | u bin low edge |
uEdgeHigh | u bin high edge |
vEdgeLow | v bin low edge |
vEdgeHigh | v bin high edge |
uEdgeBin | cloest edge u bin |
vEdgeBin | cloest edge v bin |
|
private |
Find projection of a 3D point.
hitPosition | the 3D position |
innerLayerCentroid | the inner layer centroid to consider |
uAxis | u axis to consider |
vAxis | v axis to consider |
nOffsetBins | the number of offset bins |
cellLengthScale | cell length scale |
uBin | projection in u direction |
vBin | projection in v direction |
|
private |
Find raw peaks in 2D profile, based on local maxima.
showerProfile | two dimensional shower profile to consider |
showerPeakObjectVector | the 2D peak object to receive |
|
private |
Find all tracks projections on 2D shower profile.
pCluster | the address of the cluster |
trackVector | the vector of address of all tracks |
innerLayerCentroid | the inner layer centroid to consider |
uAxis | u axis to consider |
vAxis | v axis to consider |
trackProjectionVector | the 2D positions of track projections to receive and speed up subsequent calculation |
|
private |
Get cell length scale.
pCluster | the address of the cluster |
|
private |
True for showerPeakObjectVector contains photon candiates.
showerPeakObjectVector | shower peak obejct vectors for all peaks |
|
private |
Initialise 2D shower profile for clusters not close to tracks.
pCluster | the address of the cluster |
maxPseudoLayer | the maximum pseudo layer to consider |
showerProfile | two dimensional shower profile to consider |
|
private |
Initialise 2D shower profile for clusters close to tracks.
pCluster | the address of the cluster |
maxPseudoLayer | the maximum pseudo layer to consider |
pMinTrack | the closest track to the shower profile to speed up calculation |
trackVector | the vector of tracks to speed up calculation |
showerProfile | two dimensional shower profile to consider |
trackProjectionVector | the 2D positions of track projections to receive and speed up subsequent calculation |
|
private |
Initialise 2D shower profile implementation given porject axes.
pCluster | the address of the cluster |
maxPseudoLayer | the maximum pseudo layer to consider |
innerLayerCentroid | the inner layer centroid to consider |
uAxis | u axis to consider |
vAxis | v axis to consider |
showerProfile | two dimensional shower profile to receive |
|
private |
True if the peak is a local maxima.
showerProfile | the 2D shower profile to modify |
uBin | projection in u direction |
vBin | projection in v direction |
|
private |
Mark bins close to tracks not photon candidate.
trackProjectionVector | the all track projections in the 2D plane |
showerPeakObjectVector | the 2D peak object vector to modify |
|
private |
Mark region with low height unavailable.
showerProfile | two dimensional shower profile to consider |
|
private |
Mark bins shifted too much between slices not photon candidate.
showerPeakObjectVectorFirst | the 2D peak object vector from previous slice |
showerPeakObjectVectorNext | the 2D peak object vector from next slice to modify |
|
private |
True for passing the quality cuts for minimum number of bins.
showerPeakObject | the 2D peak object to consider |
|
private |
Process the quality cuts and association of bins to peaks.
showerProfile | the 2D shower profile to modify |
showerPeakObjectVector | the 2D peak object vector to modify |
|
staticprivate |
Sort shower peak list by desending energy.
lhs | first shower peak for comparison |
rhs | second shower peak for comparison |