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

#include <TruthPixelClusterSplitProbTool.h>

Inheritance diagram for InDet::TruthPixelClusterSplitProbTool:
Collaboration diagram for InDet::TruthPixelClusterSplitProbTool:

Public Member Functions

 TruthPixelClusterSplitProbTool (const std::string &t, const std::string &n, const IInterface *p)
virtual ~TruthPixelClusterSplitProbTool ()=default
virtual 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< TruthClusterizationFactorym_truthClusterizationFactory {this, "NnClusterizationFactory", "InDet::NnClusterizationFactory/TruthClusterizationFactory"}
DoubleArrayProperty m_priorMultiplicityContent {this, "PriorMultiplicityContent", {2793337, 82056, 19944}}

Detailed Description

Definition at line 32 of file TruthPixelClusterSplitProbTool.h.

Constructor & Destructor Documentation

◆ TruthPixelClusterSplitProbTool()

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

Definition at line 28 of file TruthPixelClusterSplitProbTool.cxx.

29 :base_class(t,n,p)
30 {
31 declareInterface<IPixelClusterSplitProbTool>(this);
32 }

◆ ~TruthPixelClusterSplitProbTool()

virtual InDet::TruthPixelClusterSplitProbTool::~TruthPixelClusterSplitProbTool ( )
virtualdefault

Member Function Documentation

◆ compileSplitProbability()

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

Definition at line 101 of file TruthPixelClusterSplitProbTool.cxx.

102 {
103 const std::vector<double>::iterator begin=vectorOfProbs.begin();
104 const std::vector<double>::iterator end=vectorOfProbs.end();
105 double sum = std::accumulate(begin, end, 0.);
106 if (sum == 0.)[[unlikely]]{
107 ATH_MSG_ERROR("Sum of probabilities is zero.");
108 return InDet::PixelClusterSplitProb(std::vector<double>());
109 }
110
111 ATH_MSG_VERBOSE(" Sum of cluster probabilities is: "<<sum);
112
113 std::vector<double> vectorOfSplitProbs;
114
115 for (std::vector<double>::iterator iter=begin;iter!=end;++iter)
116 {
117 (*iter)/=sum;
118 }
119
120 if (m_priorMultiplicityContent.size()<vectorOfProbs.size())
121 {
122 ATH_MSG_ERROR("Prior compatibilities count " << m_priorMultiplicityContent.size() << " is too small: please correct through job properties.");
123 return InDet::PixelClusterSplitProb(std::vector<double>());
124 }
125
126 double psum=0;
127 int count=0;
128 for (std::vector<double>::iterator iter=begin;iter!=end;++iter,++count)
129 {
130 psum+=(*iter)/m_priorMultiplicityContent[count];
131 }
132 if (psum == 0.)[[unlikely]]{
133 ATH_MSG_ERROR("Sum of probabilities (psum) is zero.");
134 return InDet::PixelClusterSplitProb(std::vector<double>());
135 }
136
137 count=0;
138 for (std::vector<double>::iterator iter=begin;iter!=end;++iter,++count)
139 {
141 (*iter)/=psum;
142 }
143
144 double sumTest=0;
145
146 for (std::vector<double>::iterator iter=begin;iter!=end;++iter)
147 {
148 ATH_MSG_VERBOSE("After update prob is: " << *iter);
149 sumTest+=*iter;
150 }
151
152 ATH_MSG_VERBOSE(" Sum of cluster probabilities is: "<<sumTest);
153 for (std::vector<double>::iterator iter=begin;iter!=end;++iter)
154 {
155 if (iter!=begin)
156 {
157 vectorOfSplitProbs.push_back(*iter);
158 }
159 }
160
161 ATH_MSG_VERBOSE(" normalized P(1->2): " << vectorOfSplitProbs[0] << " P(2->3): " << vectorOfSplitProbs[1] );
162
163 PixelClusterSplitProb clusterSplitProb(vectorOfSplitProbs);
164
165 ATH_MSG_VERBOSE("SplitProb: " << clusterSplitProb.splitProbability(2) << " -->3 " << clusterSplitProb.splitProbability(3) );
166
167 return clusterSplitProb;
168 }
#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::TruthPixelClusterSplitProbTool::initialize ( )
overridevirtual

Definition at line 35 of file TruthPixelClusterSplitProbTool.cxx.

36 {
37
38 if (m_truthClusterizationFactory.retrieve().isFailure())
39 {
40 ATH_MSG_ERROR(" Unable to retrieve "<< m_truthClusterizationFactory );
41 return StatusCode::FAILURE;
42 }
43
44 ATH_MSG_DEBUG(" Cluster split prob tool initialized successfully "<< m_truthClusterizationFactory );
45 return StatusCode::SUCCESS;
46 }
#define ATH_MSG_DEBUG(x)
ToolHandle< TruthClusterizationFactory > m_truthClusterizationFactory

◆ splitProbability() [1/2]

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

Definition at line 49 of file TruthPixelClusterSplitProbTool.cxx.

50 {
51 std::vector<double> vectorOfProbs=m_truthClusterizationFactory->estimateNumberOfParticles(origCluster);
52
53 ATH_MSG_VERBOSE(" Got splitProbability, size of vector: " << vectorOfProbs.size() );
54
55 if (vectorOfProbs.empty())
56 {
57 std::vector<double> vectorOfSplitProbs;
58 vectorOfSplitProbs.push_back(-100);
59 PixelClusterSplitProb clusterSplitProb(vectorOfSplitProbs);
60 ATH_MSG_VERBOSE(" Returning single split prob equal to -100 " );
61 return clusterSplitProb;
62 }
63
64
66 " P(1): " << vectorOfProbs[0] <<
67 " P(2): " << vectorOfProbs[1] <<
68 " P(>=3): " << vectorOfProbs[2] );
69
70
71 return compileSplitProbability(vectorOfProbs);
72 }
InDet::PixelClusterSplitProb compileSplitProbability(std::vector< double > &vectorOfProbs) const

◆ splitProbability() [2/2]

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

Definition at line 74 of file TruthPixelClusterSplitProbTool.cxx.

75 {
76 std::vector<double> vectorOfProbs=m_truthClusterizationFactory->estimateNumberOfParticles(origCluster);
77
78 ATH_MSG_VERBOSE(" Got splitProbability, size of vector: " << vectorOfProbs.size() );
79
80 if (vectorOfProbs.empty())
81 {
82 std::vector<double> vectorOfSplitProbs;
83 vectorOfSplitProbs.push_back(-100);
84 PixelClusterSplitProb clusterSplitProb(vectorOfSplitProbs);
85 ATH_MSG_VERBOSE(" Returning single split prob equal to -100 " );
86 return clusterSplitProb;
87 }
88
89
91 " P(1): " << vectorOfProbs[0] <<
92 " P(2): " << vectorOfProbs[1] <<
93 " P(>=3): " << vectorOfProbs[2] );
94
95
96 return compileSplitProbability(vectorOfProbs);
97 }

Member Data Documentation

◆ m_priorMultiplicityContent

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

Definition at line 55 of file TruthPixelClusterSplitProbTool.h.

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

◆ m_truthClusterizationFactory

ToolHandle<TruthClusterizationFactory> InDet::TruthPixelClusterSplitProbTool::m_truthClusterizationFactory {this, "NnClusterizationFactory", "InDet::NnClusterizationFactory/TruthClusterizationFactory"}
private

Definition at line 53 of file TruthPixelClusterSplitProbTool.h.

53{this, "NnClusterizationFactory", "InDet::NnClusterizationFactory/TruthClusterizationFactory"};

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