Retrieve basic parameters, mainly four-vectors, for each collection.
84 {
85
87
89
105
107 DataVect trackContKey; trackContKey.reserve(jetCont->
size());
108 DataVect trackLinkCount; trackLinkCount.reserve(jetCont->
size());
110
113
114 int id = 0;
115
117 for (const auto jet : *jetCont) {
118 if(!jet)continue;
119 ATH_MSG_DEBUG(
" Jet #" << counter++ <<
" : eta = " << jet->eta() <<
", phi = " << jet->phi() <<
", pt = " << jet->pt() );
120
121
122 size_t numConstit = jet->numConstituents();
123 std::vector<std::string> tempCellID;
124 size_t trackcounter = 0;
125
126 if (numConstit > 0){
127 const xAOD::IParticle* constituent = jet->rawConstituent(0);
128 if (constituent){
130
132
133 for (
size_t i = 0;
i < numConstit;
i++) {
135 dynamic_cast<const xAOD::PFO *
>(jet->rawConstituent(i));
140 trackcounter++;
141 }
142 }
144
145 size_t numConstit = jet->numConstituents();
146 for (
size_t i = 0;
i < numConstit;
i++) {
148
149
153 if (thisTrack != nullptr) {
156 trackcounter++;
157 }
158 else
160 }
161 }
162 }
164
165 for (size_t j = 0; j < numConstit; ++j) {
170 if (std::find(tempCellID.begin(), tempCellID.end(), std::to_string(
cc->caloDDE()->identify().get_compact())) != tempCellID.end()) {
171 continue;
172 } else {
173 cellID.emplace_back(
DataType(
cc->caloDDE()->identify().get_compact()));
174 tempCellID.emplace_back( std::to_string(
cc->caloDDE()->identify().get_compact()));
175 }
176 }
178 }
179
180 std::vector<const xAOD::TrackParticle*> ghosttracks;
182 if (ghosttracks.empty()) {
184 } else {
185 for (
size_t i = 0;
i < ghosttracks.size();
i++) {
186
187
188
189
192
193 ATH_MSG_VERBOSE(
" Associated track: d0 = " << ghosttracks[i]->
d0() <<
", pt = " << ghosttracks[i]->
pt());
194 }
195 trackcounter = ghosttracks.size();
196 }
198 for (size_t j = 0; j < numConstit; ++j) {
201 if (!track) {
203 } else {
206 trackcounter++;
208 }
209 }
210 }
211 }
212 }
213 trackLinkCount.emplace_back(
DataType(trackcounter));
215
216
220 idVec.emplace_back(
DataType( ++
id ));
221
224
228
229
230 if (jetkey!=
"AntiKt4EMPFlowJets" || (
m_nTaggers==0)){
232 bTagName.emplace_back(
DataType(
"None"));
233 bTagValue.emplace_back(
DataType(0.));
234 }
235 }else{
236 double btagValue;
238 CP::CorrectionCode
code =
m_btagSelTools[taggerName]->getTaggerWeight(*jet, btagValue);
240 ATH_MSG_DEBUG(
"Failed to get btagging weight for tagger " << taggerName);
241 btagValue = 0;
242 }
243 bTagName.emplace_back(
DataType(taggerName));
244 bTagValue.emplace_back(
DataType(btagValue));
245 }
246 }
247
248 float chargeread;
252 }else{
254 }
255
256
257
258 std::vector<float> jvfread;
262 }else{
263 jvf.emplace_back(
DataType( jvfread[0] ));
264 }
265
266 float jvtread;
270 } else {
271 jvt.emplace_back(
DataType(jvtread));
272 }
273
274 float emfracread = 0;
277 emfrac.emplace_back(
DataType( 0. ));
278 }else{
279 emfrac.emplace_back(
DataType( emfracread ));
280 }
281
282 }
283
284
291 DataMap[
"bTagName multiple=\""+str_nTaggers+
"\""] = bTagName;
292 DataMap[
"bTagValue multiple=\""+str_nTaggers+
"\""] = bTagValue;
301
302 if ((trackKey.size()) != 0){
303 double NTracksPerVertex = trackKey.size()*1./jetCont->size();
304 std::string
tag =
"trackIndex multiple=\"" +
DataType(NTracksPerVertex).toString()+
"\"";
306 tag =
"trackKey multiple=\"" +
DataType(NTracksPerVertex).toString()+
"\"";
308 }
309
310 if ((clusterID.size())!=0){
311 std::string
tag =
"clusterIndex multiple=\"" +
DataType(clusterID.size()).toString()+
"\"";
312 double NCellsPerJet = cellID.size()*1./jetCont->size();
313 tag =
"cells multiple=\"" +
DataType(NCellsPerJet).toString()+
"\"";
315 }
316
317 DataMap[
"trackLinkCount"] = trackLinkCount;
319
321
323 }
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
#define ATH_MSG_VERBOSE(x)
#define ATH_MSG_WARNING(x)
double charge(const T &p)
float et(const xAOD::jFexSRJetRoI *j)
@ Ok
The correction was done successfully.
size_type size() const noexcept
Returns the number of elements in the collection.
virtual std::string dataTypeName() const
Return the name of the data type that is generated by this retriever.
Gaudi::Property< std::vector< std::string > > m_bTaggerNames
std::unordered_map< std::string, asg::AnaToolHandle< IBTaggingSelectionTool > > m_btagSelTools
Gaudi::Property< std::string > m_tracksName
size_t index() const
Return the index of this element within its container.
const CaloClusterCellLink * getCellLinks() const
Get a pointer to the CaloClusterCellLink object (const version)
virtual double eta() const
The pseudorapidity ( ) of the particle.
virtual double phi() const
The azimuthal angle ( ) of the particle.
signal_t signalType() const
const xAOD::IParticle * chargedObject(std::size_t i) const
bool isCharged() const
is a charged PFO
const TrackParticle * track(unsigned int index) const
Retrieve a const pointer to a Rec::TrackParticle.
std::map< std::string, DataVect > DataMap
std::vector< DataType > DataVect
Defines a map with a key and a vector of DataType objects e.g.
ObjectType
Type of objects that have a representation in the xAOD EDM.
@ TrackParticle
The object is a charged track particle.
@ ParticleFlow
The object is a particle-flow object.
@ FlowElement
The object is a track-calo-cluster.
@ CaloCluster
The object is a calorimeter cluster.
PFO_v1 PFO
Definition of the current "pfo version".
CaloCluster_v1 CaloCluster
Define the latest version of the calorimeter cluster class.
FlowElement_v1 FlowElement
Definition of the current "pfo version".
TrackParticle_v1 TrackParticle
Reference the current persistent version: