33 const std::string &
name,
34 const IInterface *
parent) :
44 return StatusCode::FAILURE;
50 return StatusCode::SUCCESS;
54 return StatusCode::SUCCESS;
64 const std::vector<Identifier>& rdos = origCluster.
rdoList();
65 const std::vector<int>& totList = origCluster.
totList();
68 std::vector<int> lvl1group(rdos.size(),origCluster.
LVL1A());
72 std::vector<Amg::Vector2D> allLocalPositions;
73 std::vector<Amg::MatrixX> allErrorMatrix;
76 std::vector<Amg::MatrixX> errorMatrix;
81 beamSpotPosition = beamSpotHandle->beamPos();
91 if (errorMatrix.size()!=2 || localPosition.size()!=2)
93 ATH_MSG_WARNING(
"Error matrix or local position vector size is not 2, it is:" << errorMatrix.size() <<
" or " << localPosition.size() <<
".");
96 std::vector<InDet::PixelClusterParts> allMultiPClusters;
99 allMultiPClusters.emplace_back(rdos,totList,lvl1group,localPosition[0],errorMatrix[0]);
100 allMultiPClusters.emplace_back(rdos,totList,lvl1group,localPosition[1],errorMatrix[1]);
103 return allMultiPClusters;
115 if (element==
nullptr) {
137 ATH_MSG_VERBOSE(
" Cluster not on b-layer. Return empty object-->back to default clustering." );
145 const std::vector<Identifier>& rdos = origCluster.
rdoList();
146 const std::vector<int>& totList = origCluster.
totList();
149 std::vector<int> lvl1group(rdos.size(), origCluster.
LVL1A());
158 double splitProb3=splitProb3rel/(splitProb3rel+splitProb2);
160 ATH_MSG_VERBOSE(
" SplitProb -->2 " << splitProb2 <<
" SplitProb -->3 " << splitProb3 );
179 std::vector<Amg::Vector2D> allLocalPositions;
180 std::vector<Amg::MatrixX> allErrorMatrix;
185 beamSpotPosition = beamSpotHandle->beamPos();
188 std::vector<InDet::PixelClusterParts> allMultiPClusters;
192 std::vector<Amg::MatrixX> errorMatrix;
198 if (errorMatrix.size()!=1 || localPosition.size()!=1)
200 ATH_MSG_ERROR(
"Error matrix or local position vector size is not 1, it is:" << errorMatrix.size() <<
" or " << localPosition.size() <<
".");
203 allMultiPClusters.emplace_back(rdos,totList,lvl1group,localPosition[0],errorMatrix[0]);
205 else if (nParticles==2)
208 std::vector<Amg::MatrixX> errorMatrix;
214 if (errorMatrix.size()!=2 || localPosition.size()!=2)
216 ATH_MSG_ERROR(
"Error matrix or local position vector size is not 2, it is:" << errorMatrix.size() <<
" or " << localPosition.size() <<
".");
219 allMultiPClusters.emplace_back(rdos,totList,lvl1group,localPosition[0],errorMatrix[0]);
220 allMultiPClusters.emplace_back(rdos,totList,lvl1group,localPosition[1],errorMatrix[1]);
222 else if (nParticles==3)
225 std::vector<Amg::MatrixX> errorMatrix;
231 if (errorMatrix.size()!=3 || localPosition.size()!=3)
233 ATH_MSG_ERROR(
"Error matrix or local position vector size is not 2, it is:" << errorMatrix.size() <<
" or " << localPosition.size() <<
".");
237 allMultiPClusters.emplace_back(rdos,totList,lvl1group,localPosition[0],errorMatrix[0]);
238 allMultiPClusters.emplace_back(rdos,totList,lvl1group,localPosition[1],errorMatrix[1]);
239 allMultiPClusters.emplace_back(rdos,totList,lvl1group,localPosition[2],errorMatrix[2]);
242 return allMultiPClusters;