28 ATH_MSG_INFO(
"No overlap collection when enabled for pixel space points! Check your configuration if needed.");
39 const PixelID *pixelID =
nullptr;
40 const SCT_ID *stripID =
nullptr;
48 if (!inputSpacePointContainer.
isValid()){
50 return StatusCode::FAILURE;
54 if ( inputSpacePointCollection->
empty() ) {
55 return StatusCode::SUCCESS;
58 ATH_MSG_DEBUG(
"Reading decoration to space point collection: bare pointers to clusters");
59 using decoration_type = std::vector<const xAOD::UncalibratedMeasurement*>;
61 if ( not measurementsAcc.
isAvailable (*inputSpacePointCollection->
front()) ) {
62 ATH_MSG_ERROR(
"Space Point Collection does not have decoration 'measurements', which should contain a vector of bare pointes to clusters");
63 return StatusCode::FAILURE;
71 const auto& els = sp->measurements();
72 for (
const auto*
el : els) {
73 [[maybe_unused]]
const auto idHash =
el->identifierHash();
78 [
this, &pixelID, &stripID] (
const auto* spacePoint) ->
int
80 const auto idHash = spacePoint->elementIdList()[0];
86 [
this, &pixelID, &stripID] (
const auto* spacePoint) ->
int
88 const auto idHash = spacePoint->elementIdList()[0];
95 [
this, &pixelID, &stripID] (
const auto* spacePoint) ->
int
97 const auto idHash = spacePoint->elementIdList()[0];
103 [
this, &pixelID, &stripID] (
const auto* spacePoint) ->
int
105 const auto idHash = spacePoint->elementIdList()[0];
111 [
this, &stripID] (
const auto* spacePoint) ->
int
115 const auto idHash = spacePoint->elementIdList()[0];
117 return stripID->
side(
id);
121 [
this, &pixelID] (
const auto* spacePoint) ->
int
125 const auto idHash = spacePoint->elementIdList()[0];
127 const int layerDisk = pixelID->
layer_disk(
id);
128 return int(layerDisk==0);
130 auto monitor_isNextToInnermost =
Monitored::Collection(
"isNextToInnermost", *inputSpacePointCollection,
131 [
this, &pixelID] (
const auto* spacePoint) ->
int
135 const auto idHash = spacePoint->elementIdList()[0];
139 const int layerDisk = pixelID->
layer_disk(
id);
140 return int((layerDisk==1) or (brlEc!=0 and layerDisk==2));
143 [
this] (
const auto*) ->
int
149 [] (
const auto* spacePoint) ->
double
151 Amg::Vector3D globalPosition(spacePoint->x(), spacePoint->y(), spacePoint->z());
152 return globalPosition.eta();
155 [] (
const auto* spacePoint) ->
double
157 Amg::Vector3D globalPosition(spacePoint->x(), spacePoint->y(), spacePoint->z());
158 return globalPosition.perp();
162 [] (
const auto* spacePoint) ->
double
163 {
return spacePoint->x(); });
165 [] (
const auto* spacePoint) ->
double
166 {
return spacePoint->y(); });
168 [] (
const auto* spacePoint) ->
double
169 {
return spacePoint->z(); });
172 [] (
const auto* spacePoint) ->
double
173 {
return spacePoint->varianceR(); });
175 [] (
const auto* spacePoint) ->
double
176 {
return spacePoint->varianceZ(); });
179 monitor_barrelEndcap, monitor_layerDisk,
180 monitor_phiModule, monitor_etaModule, monitor_sideModule,
181 monitor_isInnermost, monitor_isNextToInnermost,
183 monitor_eta, monitor_perp,
184 monitor_globalX, monitor_globalY, monitor_globalZ,
185 monitor_cov_r, monitor_cov_z);
187 return StatusCode::SUCCESS;