Retrieve basic parameters, mainly four-vectors, for each collection.
84 {
85
87
89 const auto nElectrons = elCont->
size();
98
99 DataVect eOverp; eOverp.reserve(nElectrons);
100 DataVect isEM; isEM.reserve(nElectrons);
101 DataVect isEMString; isEMString.reserve(nElectrons);
102 DataVect hasTrack; hasTrack.reserve(nElectrons);
105
108 DataVect hitsBLayer; hitsBLayer.reserve(nElectrons);
109 DataVect hitsPixel; hitsPixel.reserve(nElectrons);
110 DataVect hitsSCT; hitsSCT.reserve(nElectrons);
111 DataVect hitsTRT; hitsTRT.reserve(nElectrons);
112
113
114 DataVect clusterKeyVec; clusterKeyVec.reserve(nElectrons);
115 DataVect clusterIndexVec; clusterIndexVec.reserve(nElectrons);
116 DataVect trackKeyVec; trackKeyVec.reserve(nElectrons);
117 DataVect trackIndexVec; trackIndexVec.reserve(nElectrons);
118
121
122 int MCdataType = 1;
123
124
125
126
127 double ep = 0.,
p=0.,
e=0.;
128
129 std::string electronAuthor = "";
130 std::string electronIsEMString = "none";
131 std::string electronLabel = "";
132
133 for (; elItr != elItrE; ++elItr) {
134 electronIsEMString = "none";
135 phi.emplace_back((*elItr)->phi());
136 eta.emplace_back((*elItr)->eta());
137 pt.emplace_back((*elItr)->pt()/CLHEP::GeV);
138
139 mass.emplace_back((*elItr)->m()/CLHEP::GeV);
140 energy.emplace_back( (*elItr)->e()/CLHEP::GeV );
141 px.emplace_back( (*elItr)->px()/CLHEP::GeV );
142 py.emplace_back( (*elItr)->py()/CLHEP::GeV );
143 pz.emplace_back( (*elItr)->pz()/CLHEP::GeV );
144
145 pdgId.emplace_back( (*elItr)->pdgId() );
146
147 electronAuthor =
"author"+
DataType( (*elItr)->author() ).toString();
148 electronLabel = electronAuthor;
149 if (( (*elItr)->author()) == 0){ electronAuthor = "unknown"; electronLabel += "_unknown"; }
150 if (( (*elItr)->author()) == 8){ electronAuthor = "forward"; electronLabel += "_forward"; }
151 if (( (*elItr)->author()) == 2){ electronAuthor = "softe"; electronLabel += "_softe"; }
152 if (( (*elItr)->author()) == 1){ electronAuthor = "egamma"; electronLabel += "_egamma"; }
153
154
155
156
157
159 electronLabel += "_Loose";
160 electronIsEMString = "Loose";
161 }
163 electronLabel += "_Medium";
164 electronIsEMString = "Medium";
165 }
167 electronLabel += "_Tight";
168 electronIsEMString = "Tight";
169 }
171 electronLabel += "_TightPP";
172 electronIsEMString = "TightPP";
173 }
175 electronLabel += "_MediumPP";
176
177 }
178
180 electronLabel += "_MediumNoIso";
181
182 }
184 electronLabel += "_TightTRTNoIso";
185
186 }
187
189 electronLabel += "_TightNoIsolation";
190
191 }
192 MCdataType = (*elItr)->dataType();
193 dataType.emplace_back( MCdataType );
194
195
196
197
198
199 if (MCdataType != 3){
200
201 isEM.emplace_back( (**elItr).isem() );
202
203 const Trk::TrackSummary *
summary;
204 bool elecTrack = (*elItr)->trackParticle();
205 if ( elecTrack ){
206
207
208
209
210
211 ep = 0.;
212 p = (*elItr)->trackParticle()->p();
214 ep =
p>0. ?
e/
p : 0.;
215 eOverp.emplace_back( ep );
216
217 summary = (*elItr)->trackParticle()->trackSummary();
218 hasTrack.emplace_back( 1 );
223 } else {
224 eOverp.emplace_back(
DataType(
"0." ));
225 hasTrack.emplace_back( 0 );
226 hitsBLayer.emplace_back( -1 );
227 hitsPixel.emplace_back( -1 );
228 hitsSCT.emplace_back( -1 );
229 hitsTRT.emplace_back( -1 );
230 }
231
232
233
234
235
236
237 const ElementLink<CaloClusterContainer> clusterLink = (*elItr)->clusterElementLink();
239 std::string clusterKey = clusterLink.
dataID();
240 int clusterIndex = clusterLink.
index();
241
242
243 clusterKeyVec.emplace_back( clusterKey );
244 clusterIndexVec.emplace_back( clusterIndex );
245 } else {
246 clusterKeyVec.emplace_back( "none" );
247 clusterIndexVec.emplace_back( -1 );
248 }
249
250 const ElementLink<Rec::TrackParticleContainer> trackLink = (*elItr)->trackParticleElementLink();
252 std::string trackKey = trackLink.
dataID();
253 int trackIndex = trackLink.
index();
254
255
256 trackKeyVec.emplace_back( trackKey );
257 trackIndexVec.emplace_back( trackIndex);
258 } else {
259 trackKeyVec.emplace_back( "none" );
260 trackIndexVec.emplace_back( -1 );
261 }
262
263
264
265
266
267 } else {
268 hasTrack.emplace_back( 1 );
269 eOverp.emplace_back( 1. );
270 isEM.emplace_back( 0 );
271 electronIsEMString += "fastSim";
272 electronLabel += "fastSim" ;
273 hitsBLayer.emplace_back( 0 );
274 hitsPixel.emplace_back( 0 );
275 hitsSCT.emplace_back( 0 );
276 hitsTRT.emplace_back( 0 );
277
278 clusterKeyVec.emplace_back( "none" );
279 clusterIndexVec.emplace_back( -1 );
280 trackKeyVec.emplace_back( "none" );
281 trackIndexVec.emplace_back( -1 );
282 }
283
284 author.emplace_back( electronAuthor );
285 label.emplace_back( electronLabel );
286 isEMString.emplace_back( electronIsEMString );
287 }
288
289
294 DataMap[
"energy"] = std::move(energy);
295 DataMap[
"mass"] = std::move(mass);
299
300
301 DataMap[
"eOverp"] = std::move(eOverp);
302 DataMap[
"isEM"] = std::move(isEM);
303 DataMap[
"isEMString"] = std::move(isEMString);
305 DataMap[
"hasTrack"] = std::move(hasTrack);
306 DataMap[
"author"] = std::move(author);
307 DataMap[
"pdgId"] = std::move(pdgId);
308 DataMap[
"dataType"] = std::move(dataType);
309 DataMap[
"hitsBLayer"] = std::move(hitsBLayer);
310 DataMap[
"hitsPixel"] = std::move(hitsPixel);
311 DataMap[
"hitsSCT"] = std::move(hitsSCT);
312 DataMap[
"hitsTRT"] = std::move(hitsTRT);
313
314
315 DataMap[
"clusterKey"] = std::move(clusterKeyVec);
316 DataMap[
"clusterIndex"] = std::move(clusterIndexVec);
317 DataMap[
"trackKey"] = std::move(trackKeyVec);
318 DataMap[
"trackIndex"] = std::move(trackIndexVec);
319
321
322
324
325 }
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
bool msgLvl(const MSG::Level lvl) const
DataModel_detail::const_iterator< DataVector > const_iterator
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
size_type size() const noexcept
Returns the number of elements in the collection.
const ID_type & dataID() const
Get the key that we reference, as a string.
index_type index() const
Get the index of the element inside of its container.
bool isValid() const
Test to see if the link can be dereferenced.
virtual std::string dataTypeName() const
Return the name of the data type.
std::string label(const std::string &format, int i)
std::map< std::string, DataVect > DataMap
std::vector< DataType > DataVect
Defines a map with a key and a vector of DataType objects e.g.
@ numberOfSCTHits
number of SCT holes
@ numberOfPixelHits
number of pixel layers on track with absence of hits
@ numberOfTRTHits
number of TRT outliers
@ numberOfInnermostPixelLayerHits
these are the hits in the 1st pixel layer
const unsigned int ElectronLoose
Loose electron selection.
const unsigned int ElectronMediumNoIso
obsolete - kept not crash clients
const unsigned int ElectronMedium
Medium electron selecton.
const unsigned int ElectronMediumPP
Medium++ electron selecton.
const unsigned int ElectronTightNoIsolation
obsolete - kept not to crash clients
const unsigned int ElectronTightPP
Tight++ electron selecton.
const unsigned int ElectronTight
Tight electron selection.
const unsigned int ElectronTightTRTNoIso
obsolete - kept not to crash clients