47 {
48
49
50
51
52
53
54
56 if(!trackCollection.isValid()) {
58 return nullptr;
59 }
60
61
62 const Trk::PRDtoTrackMap *prd_to_track_map;
63 std::unique_ptr<Trk::PRDtoTrackMap> prd_to_track_map_cleanup;
66 if (!prd_to_track_map_handle.isValid()) {
68 return nullptr;
69 }
70 prd_to_track_map=prd_to_track_map_handle.cptr();
71 }
72 else {
73 prd_to_track_map_cleanup =
m_assoTool->createPRDtoTrackMap();
74
75 for (const Trk::Track* track : *trackCollection) {
79 return nullptr;
80 }
81 }
82 prd_to_track_map = prd_to_track_map_cleanup.get();
83 }
84
85 std::unique_ptr<MinBiasPRDAssociation> PRDAssociation(std::make_unique<MinBiasPRDAssociation>());
87
89 if(!pixelClusters.isValid()) {
91 return nullptr;
92 }
93
94 InDet::PixelClusterContainer::const_iterator pixCollItr = pixelClusters->begin();
95 InDet::PixelClusterContainer::const_iterator pixCollEnd = pixelClusters->end();
96 for(; pixCollItr!=pixCollEnd; ++pixCollItr){
97
98 InDet::PixelClusterCollection::const_iterator pixItr = (*pixCollItr)->begin();
99 InDet::PixelClusterCollection::const_iterator pixEnd = (*pixCollItr)->end();
100 for(; pixItr!=pixEnd; ++pixItr){
101
102
103 if(prd_to_track_map->
isUsed(*(*pixItr)))
continue;
104
105
106 PRDAssociation->nPixelUA++;
107
108
109 const InDetDD::SiDetectorElement *
det = (*pixItr)->detectorElement();
110
111
112 if(
det->isBarrel()) PRDAssociation->nPixelBarrelUA++;
113
114
116 if((*pixItr)->globalPosition().z()<0){
117 PRDAssociation->nPixelEndCapCUA++;
118 }else{
119 PRDAssociation->nPixelEndCapAUA++;
120 }
121 }
122
123
124 if(
det->isBlayer()) PRDAssociation->nBlayerUA++;
125 }
126 }
127 }
128
129
132 if(!SCTClusters.isValid()) {
134 return nullptr;
135 }
136
137 InDet::SCT_ClusterContainer::const_iterator sctCollItr = SCTClusters->begin();
138 InDet::SCT_ClusterContainer::const_iterator sctCollEnd = SCTClusters->end();
139 for(; sctCollItr!=sctCollEnd; ++sctCollItr){
140
141 InDet::SCT_ClusterCollection::const_iterator sctItr = (*sctCollItr)->begin();
142 InDet::SCT_ClusterCollection::const_iterator sctEnd = (*sctCollItr)->end();
143 for(; sctItr!=sctEnd; ++sctItr){
144
145
146 if(prd_to_track_map->
isUsed(*(*sctItr)))
continue;
147
148
149 PRDAssociation->nSCTUA++;
150
151
152 const InDetDD::SiDetectorElement *
det = (*sctItr)->detectorElement();
153
154
155 if(
det->isBarrel()) PRDAssociation->nSCTBarrelUA++;
156
157
159 if((*sctItr)->globalPosition().z()<0){
160 PRDAssociation->nSCTEndCapCUA++;
161 }else{
162 PRDAssociation->nSCTEndCapAUA++;
163 }
164 }
165 }
166 }
167 }
168
169
172 if(!TRTDriftCircles.isValid()) {
174 return nullptr;
175 }
176
177 InDet::TRT_DriftCircleContainer::const_iterator trtCollItr = TRTDriftCircles->begin();
178 InDet::TRT_DriftCircleContainer::const_iterator trtCollEnd = TRTDriftCircles->end();
179 for(; trtCollItr!=trtCollEnd; ++trtCollItr){
180
181 InDet::TRT_DriftCircleCollection::const_iterator trtItr = (*trtCollItr)->begin();
182 InDet::TRT_DriftCircleCollection::const_iterator trtEnd = (*trtCollItr)->end();
183 for(; trtItr!=trtEnd; ++trtItr){
184
185
186 if(prd_to_track_map->
isUsed(*(*trtItr)))
continue;
187
188
189 PRDAssociation->nTRTUA++;
190
191
192 const InDetDD::TRT_BaseElement *
det = (*trtItr)->detectorElement();
193
195
196
198
199
201 if(
det->center().z()<0){
202 PRDAssociation->nTRTEndCapCUA++;
203 }else{
204 PRDAssociation->nTRTEndCapAUA++;
205 }
206 }
207 }
208 }
209 }
210
211 return PRDAssociation.release();
212}
bool isUsed(const PrepRawData &prd) const
does this PRD belong to at least one track?
::StatusCode StatusCode
StatusCode definition for legacy code.