32 ATH_MSG_INFO(
"No overlap collection when enabled for pixel space points! Check your configuration if needed.");
43 const PixelID *pixelID =
nullptr;
44 const SCT_ID *stripID =
nullptr;
52 if (!inputSpacePointContainer.
isValid()){
54 return StatusCode::FAILURE;
58 if (inputSpacePointCollection->
size() == 0) {
59 return StatusCode::SUCCESS;
62 ATH_MSG_DEBUG(
"Reading decoration to space point collection: bare pointers to clusters");
64 using decoration_type = std::vector<const xAOD::UncalibratedMeasurement*>;
68 if ( not barePointersToClusters.isAvailable() and
70 ATH_MSG_ERROR(
"Space Point Collection does not have decoration 'measurements', which should contain a vector of bare pointes to clusters");
71 return StatusCode::FAILURE;
79 const auto& els = sp->measurements();
80 for (
const auto*
el : els) {
81 [[maybe_unused]]
const auto idHash =
el->identifierHash();
86 [
this, &pixelID, &stripID] (
const auto* spacePoint) ->
int
88 const auto idHash = spacePoint->elementIdList()[0];
94 [
this, &pixelID, &stripID] (
const auto* spacePoint) ->
int
96 const auto idHash = spacePoint->elementIdList()[0];
103 [
this, &pixelID, &stripID] (
const auto* spacePoint) ->
int
105 const auto idHash = spacePoint->elementIdList()[0];
111 [
this, &pixelID, &stripID] (
const auto* spacePoint) ->
int
113 const auto idHash = spacePoint->elementIdList()[0];
119 [
this, &stripID] (
const auto* spacePoint) ->
int
123 const auto idHash = spacePoint->elementIdList()[0];
125 return stripID->
side(
id);
129 [
this, &pixelID] (
const auto* spacePoint) ->
int
133 const auto idHash = spacePoint->elementIdList()[0];
135 const int layerDisk = pixelID->
layer_disk(
id);
136 return int(layerDisk==0);
138 auto monitor_isNextToInnermost =
Monitored::Collection(
"isNextToInnermost", *inputSpacePointCollection,
139 [
this, &pixelID] (
const auto* spacePoint) ->
int
143 const auto idHash = spacePoint->elementIdList()[0];
147 const int layerDisk = pixelID->
layer_disk(
id);
148 return int((layerDisk==1) or (brlEc!=0 and layerDisk==2));
151 [
this] (
const auto*) ->
int
157 [] (
const auto* spacePoint) ->
double
159 Amg::Vector3D globalPosition(spacePoint->x(), spacePoint->y(), spacePoint->z());
160 return globalPosition.eta();
163 [] (
const auto* spacePoint) ->
double
165 Amg::Vector3D globalPosition(spacePoint->x(), spacePoint->y(), spacePoint->z());
166 return globalPosition.perp();
170 [] (
const auto* spacePoint) ->
double
171 {
return spacePoint->x(); });
173 [] (
const auto* spacePoint) ->
double
174 {
return spacePoint->y(); });
176 [] (
const auto* spacePoint) ->
double
177 {
return spacePoint->z(); });
180 [] (
const auto* spacePoint) ->
double
181 {
return spacePoint->varianceR(); });
183 [] (
const auto* spacePoint) ->
double
184 {
return spacePoint->varianceZ(); });
187 monitor_barrelEndcap, monitor_layerDisk,
188 monitor_phiModule, monitor_etaModule, monitor_sideModule,
189 monitor_isInnermost, monitor_isNextToInnermost,
191 monitor_eta, monitor_perp,
192 monitor_globalX, monitor_globalY, monitor_globalZ,
193 monitor_cov_r, monitor_cov_z);
195 return StatusCode::SUCCESS;