38 {
39
41 if ( !
jets.isValid() ) {
43 return StatusCode::FAILURE;
44 }
45
46
47 SG::WriteDecorHandle<xAOD::JetContainer, std::vector<float>> dec_vtxmass(
m_dec_vtxmass, ctx);
48 SG::WriteDecorHandle<xAOD::JetContainer, std::vector<float>> dec_vtxpt(
m_dec_vtxpt, ctx);
49 SG::WriteDecorHandle<xAOD::JetContainer, std::vector<float>> dec_vtxeta(
m_dec_vtxeta, ctx);
50 SG::WriteDecorHandle<xAOD::JetContainer, std::vector<float>> dec_vtxphi(
m_dec_vtxphi, ctx);
51 SG::WriteDecorHandle<xAOD::JetContainer, std::vector<float>> dec_vtxefrac(
m_dec_vtxefrac, ctx);
52
53 SG::WriteDecorHandle<xAOD::JetContainer, std::vector<float>> dec_vtxx(
m_dec_vtxx, ctx);
54 SG::WriteDecorHandle<xAOD::JetContainer, std::vector<float>> dec_vtxy(
m_dec_vtxy, ctx);
55 SG::WriteDecorHandle<xAOD::JetContainer, std::vector<float>> dec_vtxz(
m_dec_vtxz, ctx);
56
57 SG::WriteDecorHandle<xAOD::JetContainer, std::vector<int>> dec_vtxntrk(
m_dec_vtxntrk, ctx);
58 SG::WriteDecorHandle<xAOD::JetContainer, std::vector<float>> dec_vtxdls(
m_dec_vtxdls, ctx);
59
60
61 for (auto jet : *jets) {
63 if (!bjet) {
65 continue;
66 }
67
68 std::vector< ElementLink< xAOD::VertexContainer > > msvVertices;
69 bjet->variable<std::vector<ElementLink<xAOD::VertexContainer> > >(
m_vtxAlgName,
"vertices", msvVertices);
70
71 std::vector<float> vtx_mass;
72 std::vector<float> vtx_pt;
73 std::vector<float> vtx_eta;
74 std::vector<float> vtx_phi;
75 std::vector<float> vtx_efrac;
76 std::vector<float> vtx_x;
77 std::vector<float> vtx_y;
78 std::vector<float> vtx_z;
79 std::vector<int> vtx_ntrk;
80 std::vector<float> vtx_dls;
81
82
83 for (auto vtx : msvVertices) {
84
92 float xp = (*vtx)->x();
93 float yp = (*vtx)->y();
94 float zp = (*vtx)->z();
95
96
97
99 p.SetPtEtaPhiM(pt,
eta,
phi,mass);
100
101 vtx_mass.push_back(mass);
102 vtx_pt.push_back(pt);
103 vtx_eta.push_back(
eta);
104 vtx_phi.push_back(
phi);
105 vtx_efrac.push_back(efrc);
106 vtx_x.push_back(xp);
107 vtx_y.push_back(yp);
108 vtx_z.push_back(zp);
109 vtx_ntrk.push_back(ntrk);
110 vtx_dls.push_back(dls);
111 }
112
113 dec_vtxmass(*bjet)=vtx_mass;
114 dec_vtxpt(*bjet)=vtx_pt;
115 dec_vtxeta(*bjet)=vtx_eta;
116 dec_vtxphi(*bjet)=vtx_phi;
117 dec_vtxefrac(*bjet)=vtx_efrac;
118 dec_vtxx(*bjet)=vtx_x;
119 dec_vtxy(*bjet)=vtx_y;
120 dec_vtxz(*bjet)=vtx_z;
121 dec_vtxdls(*bjet)=vtx_dls;
122 dec_vtxntrk(*bjet)=vtx_ntrk;
123
124 }
125
126 return StatusCode::SUCCESS;
127
128}
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
#define ATH_MSG_WARNING(x)
SG::WriteDecorHandleKey< xAOD::JetContainer > m_dec_vtxpt
SG::ReadHandleKey< xAOD::JetContainer > m_jetCollectionName
Gaudi::Property< std::string > m_vtxAlgName
SG::WriteDecorHandleKey< xAOD::JetContainer > m_dec_vtxmass
SG::WriteDecorHandleKey< xAOD::JetContainer > m_dec_vtxx
SG::WriteDecorHandleKey< xAOD::JetContainer > m_dec_vtxntrk
SG::WriteDecorHandleKey< xAOD::JetContainer > m_dec_vtxz
SG::WriteDecorHandleKey< xAOD::JetContainer > m_dec_vtxy
SG::WriteDecorHandleKey< xAOD::JetContainer > m_dec_vtxeta
SG::WriteDecorHandleKey< xAOD::JetContainer > m_dec_vtxphi
SG::WriteDecorHandleKey< xAOD::JetContainer > m_dec_vtxefrac
SG::WriteDecorHandleKey< xAOD::JetContainer > m_dec_vtxdls
AthConfigFlags bjet(AthConfigFlags flags, str instanceName, str recoMode)
const BTagging * getBTagging(const SG::AuxElement &part)
Access the default xAOD::BTagging object associated to an object.
int VtxNtrk(const xAOD::Vertex *)
float Vtxpt(const xAOD::Vertex *)
float Vtxeta(const xAOD::Vertex *)
float EnergyFraction(const xAOD::Vertex *)
float VertexMass(const xAOD::Vertex *)
float Vtxphi(const xAOD::Vertex *)
float VtxnormDist(const xAOD::Vertex *)
BTagging_v1 BTagging
Definition of the current "BTagging version".