34{
35
38
39
41 ATH_MSG_ERROR(
"Couldn't update photon calo pointing auxdata");
42 return StatusCode::FAILURE;
43 }
44
45
46 SG::WriteDecorHandle<xAOD::VertexContainer, float> vtxPt(
m_vtxPt, ctx);
47 SG::WriteDecorHandle<xAOD::VertexContainer, float> vtxEta(
m_vtxEta, ctx);
48 SG::WriteDecorHandle<xAOD::VertexContainer, float> vtxPhi(
m_vtxPhi, ctx);
49 SG::WriteDecorHandle<xAOD::VertexContainer, float> vtxSumPt(
m_vtxSumPt, ctx);
50 SG::WriteDecorHandle<xAOD::VertexContainer, float> vtxSumPt2(
m_vtxSumPt2, ctx);
51 bool isMomentum_available = vtxPt.isAvailable();
52 bool isSumPt_available = vtxSumPt.isAvailable();
53 bool isSumPt2_available = vtxSumPt2.isAvailable();
54 bool found_PV = false;
55
56
57 for (const auto *vertex : *vertices) {
58
62 float sumPt = -999.;
64
67
68 found_PV = true;
69
71 pt = sqrt(vmom.Px() * vmom.Px() + vmom.Py() * vmom.Py());
72 if(pt>0.){
74 phi = acos(vmom.Px() / pt);
75 }
76
79
80 }
81
82
83 if(!isMomentum_available){
85 vtxEta(*vertex) =
eta;
86 vtxPhi(*vertex) =
phi;
87 }
88 if(!isSumPt_available) vtxSumPt(*vertex) = sumPt;
89
90
91 if(!isSumPt2_available && found_PV) vtxSumPt2(*vertex) =
sumPt2;
92
93 }
94
95 return StatusCode::SUCCESS;
96}
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
SG::WriteDecorHandleKey< xAOD::VertexContainer > m_vtxSumPt
SG::WriteDecorHandleKey< xAOD::VertexContainer > m_vtxPhi
ToolHandle< CP::IPhotonPointingTool > m_photonPointingTool
PhotonPointingTool.
SG::WriteDecorHandleKey< xAOD::VertexContainer > m_vtxSumPt2
SG::ReadHandleKey< xAOD::PhotonContainer > m_photonContainer
Input photon container.
SG::ReadHandleKey< xAOD::VertexContainer > m_vertexContainer
Input primary vertex container.
SG::WriteDecorHandleKey< xAOD::VertexContainer > m_vtxEta
SG::WriteDecorHandleKey< xAOD::VertexContainer > m_vtxPt
static const SG::AuxElement::Decorator< float > sumPt2("sumPt2")
asinh(x)
helper methods ---------------------------------------------------------—
float getVertexSumPt(const xAOD::Vertex *vertex, int power=1, bool useAux=true)
Loop over track particles associated with vertex and return scalar sum of pT^power in GeV (from auxda...
TLorentzVector getVertexMomentum(const xAOD::Vertex *vertex, bool useAux=true, const std::string &derivationPrefix="")
Return vector sum of tracks associated with vertex (from auxdata if available and useAux = true)