ATLAS Offline Software
Loading...
Searching...
No Matches
InDet::NnPixelClusterSplitProbTool Class Referencefinal

#include <NnPixelClusterSplitProbTool.h>

Inheritance diagram for InDet::NnPixelClusterSplitProbTool:
Collaboration diagram for InDet::NnPixelClusterSplitProbTool:

Public Member Functions

 NnPixelClusterSplitProbTool (const std::string &t, const std::string &n, const IInterface *p)
virtual ~NnPixelClusterSplitProbTool ()=default
StatusCode initialize () override
virtual InDet::PixelClusterSplitProb splitProbability (const InDet::PixelCluster &origCluster) const override
virtual InDet::PixelClusterSplitProb splitProbability (const InDet::PixelCluster &origCluster, const Trk::TrackParameters &trackParameters) const override

Private Member Functions

InDet::PixelClusterSplitProb compileSplitProbability (std::vector< double > &vectorOfProbs) const

Private Attributes

ToolHandle< NnClusterizationFactorym_NnClusterizationFactory { this, "NnClusterizationFactory", "InDet::NnClusterizationFactory/NnClusterizationFactory" }
SG::ReadCondHandleKey< InDet::BeamSpotDatam_beamSpotKey { this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" }
DoubleArrayProperty m_priorMultiplicityContent { this, "PriorMultiplicityContent", {2793337, 82056, 19944} }
BooleanProperty m_useBeamSpotInfo { this, "useBeamSpotInfo", true }

Detailed Description

Definition at line 34 of file NnPixelClusterSplitProbTool.h.

Constructor & Destructor Documentation

◆ NnPixelClusterSplitProbTool()

InDet::NnPixelClusterSplitProbTool::NnPixelClusterSplitProbTool ( const std::string & t,
const std::string & n,
const IInterface * p )

Definition at line 29 of file NnPixelClusterSplitProbTool.cxx.

30 :base_class(t,n,p)
31 {
32 }

◆ ~NnPixelClusterSplitProbTool()

virtual InDet::NnPixelClusterSplitProbTool::~NnPixelClusterSplitProbTool ( )
virtualdefault

Member Function Documentation

◆ compileSplitProbability()

InDet::PixelClusterSplitProb InDet::NnPixelClusterSplitProbTool::compileSplitProbability ( std::vector< double > & vectorOfProbs) const
private

Definition at line 118 of file NnPixelClusterSplitProbTool.cxx.

119 {
120 const std::vector<double>::iterator begin=vectorOfProbs.begin();
121 const std::vector<double>::iterator end=vectorOfProbs.end();
122
123 double sum=std::accumulate(begin, end, 0.);
124
125 ATH_MSG_VERBOSE(" Sum of cluster probabilities is: "<<sum);
126 if (sum ==0.)[[unlikely]]{
127 ATH_MSG_ERROR("Sum of cluster probabilities is zero.");
128 return InDet::PixelClusterSplitProb(std::vector<double>());
129 }
130 std::vector<double> vectorOfSplitProbs;
131
132 for (std::vector<double>::iterator iter=begin;iter!=end;++iter)
133 {
134 (*iter)/=sum;
135 }
136
137 if (m_priorMultiplicityContent.value().size()<vectorOfProbs.size())
138 {
139 ATH_MSG_ERROR("Prior compatibilities count " << m_priorMultiplicityContent.value().size() << " is too small: please correct through job properties.");
140 return InDet::PixelClusterSplitProb(std::vector<double>());
141 }
142
143 double psum=0;
144 int count=0;
145 for (std::vector<double>::iterator iter=begin;iter!=end;++iter,++count)
146 {
147 psum+=(*iter)/m_priorMultiplicityContent.value()[count];
148 }
149
150 if (psum ==0.)[[unlikely]]{
151 ATH_MSG_ERROR("Sum of Probabilities (psum) is zero.");
152 return InDet::PixelClusterSplitProb(std::vector<double>());
153 }
154
155 count=0;
156 for (std::vector<double>::iterator iter=begin;iter!=end;++iter,++count)
157 {
158 (*iter)/=m_priorMultiplicityContent.value()[count];
159 (*iter)/=psum;
160 }
161
162 double sumTest=0;
163
164 for (std::vector<double>::iterator iter=begin;iter!=end;++iter)
165 {
166 ATH_MSG_VERBOSE("After update prob is: " << *iter);
167 sumTest+=*iter;
168 }
169
170 ATH_MSG_VERBOSE(" Sum of cluster probabilities is: "<<sumTest);
171 for (std::vector<double>::iterator iter=begin;iter!=end;++iter)
172 {
173 if (iter!=begin)
174 {
175 vectorOfSplitProbs.push_back(*iter);
176 }
177 }
178
179 ATH_MSG_VERBOSE(" normalized P(1->2): " << vectorOfSplitProbs[0] << " P(2->3): " << vectorOfSplitProbs[1] );
180
181 PixelClusterSplitProb clusterSplitProb(vectorOfSplitProbs);
182
183 ATH_MSG_VERBOSE("SplitProb: " << clusterSplitProb.splitProbability(2) << " -->3 " << clusterSplitProb.splitProbability(3) );
184
185 return clusterSplitProb;
186 }
#define ATH_MSG_ERROR(x)
#define ATH_MSG_VERBOSE(x)
int count(std::string s, const std::string &regx)
count how many occurances of a regx are in a string
Definition hcg.cxx:148
#define unlikely(x)

◆ initialize()

StatusCode InDet::NnPixelClusterSplitProbTool::initialize ( )
override

Definition at line 35 of file NnPixelClusterSplitProbTool.cxx.

36 {
37
38
39 if (m_NnClusterizationFactory.retrieve().isFailure())
40 {
41 ATH_MSG_ERROR(" Unable to retrieve "<< m_NnClusterizationFactory );
42 return StatusCode::FAILURE;
43 }
44
45 ATH_CHECK(m_beamSpotKey.initialize());
46
47 ATH_MSG_DEBUG(" Cluster split prob tool initialized successfully "<< m_NnClusterizationFactory );
48 return StatusCode::SUCCESS;
49 }
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_DEBUG(x)
ToolHandle< NnClusterizationFactory > m_NnClusterizationFactory
SG::ReadCondHandleKey< InDet::BeamSpotData > m_beamSpotKey

◆ splitProbability() [1/2]

InDet::PixelClusterSplitProb InDet::NnPixelClusterSplitProbTool::splitProbability ( const InDet::PixelCluster & origCluster) const
overridevirtual

Definition at line 52 of file NnPixelClusterSplitProbTool.cxx.

53 {
54
55 Amg::Vector3D beamSpotPosition(0,0,0);
57 SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle { m_beamSpotKey };
58 beamSpotPosition = beamSpotHandle->beamPos();
59 }
60
61 std::vector<double> vectorOfProbs=m_NnClusterizationFactory->estimateNumberOfParticles(origCluster,beamSpotPosition);
62
63 ATH_MSG_VERBOSE(" Got splitProbability, size of vector: " << vectorOfProbs.size() );
64
65 if (vectorOfProbs.empty())
66 {
67 std::vector<double> vectorOfSplitProbs;
68 vectorOfSplitProbs.push_back(-100);
69 PixelClusterSplitProb clusterSplitProb(vectorOfSplitProbs);
70 ATH_MSG_VERBOSE(" Returning single split prob equal to -100 " );
71 return clusterSplitProb;
72 }
73
74
76 " P(1): " << vectorOfProbs[0] <<
77 " P(2): " << vectorOfProbs[1] <<
78 " P(>=3): " << vectorOfProbs[2] );
79
80
81 return compileSplitProbability(vectorOfProbs);
82 }
InDet::PixelClusterSplitProb compileSplitProbability(std::vector< double > &vectorOfProbs) const
Eigen::Matrix< double, 3, 1 > Vector3D

◆ splitProbability() [2/2]

InDet::PixelClusterSplitProb InDet::NnPixelClusterSplitProbTool::splitProbability ( const InDet::PixelCluster & origCluster,
const Trk::TrackParameters & trackParameters ) const
overridevirtual

Definition at line 84 of file NnPixelClusterSplitProbTool.cxx.

85 {
86
87 Amg::Vector3D beamSpotPosition(0,0,0);
89 SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle { m_beamSpotKey };
90 beamSpotPosition = beamSpotHandle->beamPos();
91 }
92
93 std::vector<double> vectorOfProbs=m_NnClusterizationFactory->estimateNumberOfParticles(origCluster, trackParameters.associatedSurface(), trackParameters);
94
95 ATH_MSG_VERBOSE(" Got splitProbability, size of vector: " << vectorOfProbs.size() );
96
97 if (vectorOfProbs.empty())
98 {
99 std::vector<double> vectorOfSplitProbs;
100 vectorOfSplitProbs.push_back(-100);
101 PixelClusterSplitProb clusterSplitProb(vectorOfSplitProbs);
102 ATH_MSG_VERBOSE(" Returning single split prob equal to -100 " );
103 return clusterSplitProb;
104 }
105
106
108 " P(1): " << vectorOfProbs[0] <<
109 " P(2): " << vectorOfProbs[1] <<
110 " P(>=3): " << vectorOfProbs[2] );
111
112
113 return compileSplitProbability(vectorOfProbs);
114 }
virtual const Surface & associatedSurface() const override=0
Access to the Surface associated to the Parameters.

Member Data Documentation

◆ m_beamSpotKey

SG::ReadCondHandleKey<InDet::BeamSpotData> InDet::NnPixelClusterSplitProbTool::m_beamSpotKey { this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" }
private

Definition at line 56 of file NnPixelClusterSplitProbTool.h.

56{ this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" };

◆ m_NnClusterizationFactory

ToolHandle<NnClusterizationFactory> InDet::NnPixelClusterSplitProbTool::m_NnClusterizationFactory { this, "NnClusterizationFactory", "InDet::NnClusterizationFactory/NnClusterizationFactory" }
private

Definition at line 55 of file NnPixelClusterSplitProbTool.h.

55{ this, "NnClusterizationFactory", "InDet::NnClusterizationFactory/NnClusterizationFactory" };

◆ m_priorMultiplicityContent

DoubleArrayProperty InDet::NnPixelClusterSplitProbTool::m_priorMultiplicityContent { this, "PriorMultiplicityContent", {2793337, 82056, 19944} }
private

Definition at line 58 of file NnPixelClusterSplitProbTool.h.

58{ this, "PriorMultiplicityContent", {2793337, 82056, 19944} };

◆ m_useBeamSpotInfo

BooleanProperty InDet::NnPixelClusterSplitProbTool::m_useBeamSpotInfo { this, "useBeamSpotInfo", true }
private

Definition at line 60 of file NnPixelClusterSplitProbTool.h.

60{ this, "useBeamSpotInfo", true };

The documentation for this class was generated from the following files: