|
ATLAS Offline Software
|
#include <PrimaryVertexReFitter.h>
|
| PrimaryVertexReFitter (const std::string &name, ISvcLocator *pSvcLocator) |
|
virtual StatusCode | initialize () override |
|
virtual StatusCode | execute () override |
|
virtual StatusCode | finalize () override |
|
virtual StatusCode | sysInitialize () override |
| Override sysInitialize. More...
|
|
virtual const DataObjIDColl & | extraOutputDeps () const override |
| Return the list of extra output dependencies. More...
|
|
ServiceHandle< StoreGateSvc > & | evtStore () |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | evtStore () const |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | detStore () const |
| The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
virtual StatusCode | sysStart () override |
| Handle START transition. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | inputHandles () const override |
| Return this algorithm's input handles. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | outputHandles () const override |
| Return this algorithm's output handles. More...
|
|
Gaudi::Details::PropertyBase & | declareProperty (Gaudi::Property< T > &t) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc="none") |
| Declare a new Gaudi property. More...
|
|
void | updateVHKA (Gaudi::Details::PropertyBase &) |
|
MsgStream & | msg () const |
|
MsgStream & | msg (const MSG::Level lvl) const |
|
bool | msgLvl (const MSG::Level lvl) const |
|
Definition at line 51 of file PrimaryVertexReFitter.h.
◆ decoratorElemVtx_t
◆ decoratorFloat_t
◆ StoreGateSvc_t
◆ PrimaryVertexReFitter()
Prompt::PrimaryVertexReFitter::PrimaryVertexReFitter |
( |
const std::string & |
name, |
|
|
ISvcLocator * |
pSvcLocator |
|
) |
| |
◆ declareGaudiProperty() [1/4]
specialization for handling Gaudi::Property<SG::VarHandleKeyArray>
Definition at line 170 of file AthCommonDataStore.h.
175 hndl.documentation());
◆ declareGaudiProperty() [2/4]
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition at line 156 of file AthCommonDataStore.h.
161 hndl.documentation());
◆ declareGaudiProperty() [3/4]
specialization for handling Gaudi::Property<SG::VarHandleBase>
Definition at line 184 of file AthCommonDataStore.h.
189 hndl.documentation());
◆ declareGaudiProperty() [4/4]
◆ declareProperty() [1/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleBase
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 245 of file AthCommonDataStore.h.
250 this->declare(hndl.
vhKey());
251 hndl.
vhKey().setOwner(
this);
253 return PBASE::declareProperty(
name,hndl,
doc);
◆ declareProperty() [2/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleKey
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 221 of file AthCommonDataStore.h.
229 return PBASE::declareProperty(
name,hndl,
doc);
◆ declareProperty() [3/6]
◆ declareProperty() [4/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This is the generic version, for types that do not derive from SG::VarHandleKey
. It just forwards to the base class version of declareProperty
.
Definition at line 333 of file AthCommonDataStore.h.
338 return PBASE::declareProperty(
name, property,
doc);
◆ declareProperty() [5/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This dispatches to either the generic declareProperty
or the one for VarHandle/Key/KeyArray.
Definition at line 352 of file AthCommonDataStore.h.
◆ declareProperty() [6/6]
◆ decorateLepWithReFitPrimaryVertex()
Definition at line 243 of file PrimaryVertexReFitter.cxx.
256 ATH_MSG_WARNING(
"decorateLepWithReFitPrimaryVertex - invalid input primary vertex pointer");
264 std::vector<const xAOD::TrackParticle*> priVtx_tracks_pass;
265 bool isRefit =
false;
268 if(
track == tracklep) {
270 ATH_MSG_DEBUG(
"decorateLepWithReFitPrimaryVertex -- lepton has been used, lepton pT =" << tracklep->
pt() <<
", track pT =" <<
track->pt());
274 priVtx_tracks_pass.push_back(
track);
280 ATH_MSG_DEBUG(
"decorateLepWithReFitPrimaryVertex -- Skip the primary vertex without lepton track");
282 (*m_lepRefittedRMVtxLinkDec)(*lep) = refittedRM_pv_link;
286 if(priVtx_tracks_pass.size() < 2) {
287 ATH_MSG_DEBUG(
"decorateLepWithReFitPrimaryVertex -- Skip the primary vertex refitting: N tracks =" << priVtx_tracks_pass.size());
289 (*m_lepRefittedRMVtxLinkDec)(*lep) = refittedRM_pv_link;
297 input, priVtx_tracks_pass,
input.priVtx->position(),
301 if(refittedVtxRMLep) {
305 refitVtxContainer.
push_back(refittedVtxRMLep);
313 ATH_MSG_DEBUG(
"decorateLepWithReFitPrimaryVertex -- save refitted non-prompt primary vertex with NTrack = " << refittedVtxRMLep->
nTrackParticles());
315 if(
input.refittedPriVtx) {
316 (*m_distToRefittedPriVtx) (*refittedVtxRMLep) =
Prompt::getDistance(
input.refittedPriVtx->position(), refittedVtxRMLep->position());
318 input.refittedPriVtx->position(),
319 refittedVtxRMLep->position(),
320 refittedVtxRMLep->covariance(),
326 (*m_lepRefittedRMVtxLinkDec)(*lep) = refittedRM_pv_link;
◆ detStore()
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ execute()
StatusCode Prompt::PrimaryVertexReFitter::execute |
( |
| ) |
|
|
overridevirtual |
Definition at line 90 of file PrimaryVertexReFitter.cxx.
101 if (!h_inDetTracks.isValid()){
102 ATH_MSG_FATAL(
"execute - failed to find the InDetTrackParticles");
103 return StatusCode::FAILURE;
112 std::unique_ptr<xAOD::VertexContainer> refitVtxContainer = std::make_unique< xAOD::VertexContainer>();
113 std::unique_ptr<xAOD::VertexAuxContainer> refitVtxContainerAux = std::make_unique< xAOD::VertexAuxContainer>();
115 refitVtxContainer->setStore(refitVtxContainerAux.get());
122 std::move(refitVtxContainer), std::move(refitVtxContainerAux)
129 if (!h_leptonContainer.isValid()){
130 ATH_MSG_FATAL(
"execute - failed to find the lepton container");
131 return StatusCode::FAILURE;
135 if (!h_vertices.isValid()){
137 return StatusCode::FAILURE;
146 if(
vertex->vertexType() == 1) {
152 if(!fittingInput.priVtx) {
153 ATH_MSG_INFO(
"Failed to find primary vertices - save empty containers");
154 return StatusCode::SUCCESS;
160 std::vector<const xAOD::TrackParticle *> priVtx_tracks;
161 priVtx_tracks.reserve(fittingInput.priVtx->nTrackParticles());
163 for(
unsigned k = 0;
k < fittingInput.priVtx->nTrackParticles(); ++
k) {
167 priVtx_tracks.push_back(
track);
173 fittingInput, priVtx_tracks,
174 fittingInput.priVtx->position(),
178 if(!refittedPriVtx) {
179 ATH_MSG_WARNING(
"Failed to refit primary vertex - save empty containers");
180 return StatusCode::SUCCESS;
186 fittingInput.refittedPriVtx = refittedPriVtx.get();
188 ATH_MSG_DEBUG(
"execute -- primary vertex NTrack = " << fittingInput.priVtx ->nTrackParticles());
189 ATH_MSG_DEBUG(
"execute -- refitted primary vertex NTrack = " << fittingInput.refittedPriVtx->nTrackParticles());
195 <<
"\n\t\t\t Size of lepton container: " << leptonContainer.
size()
196 <<
"\n-----------------------------------------------------------------");
215 if(
muon->inDetTrackParticleLink().isValid()) {
216 tracklep = *(
muon->inDetTrackParticleLink());
219 ATH_MSG_DEBUG(
"PrimaryVertexReFitter::execute - skip muon without valid inDetTrackParticleLink()");
225 ATH_MSG_WARNING(
"PrimaryVertexReFitter::execute - cannot find muon->inDetTrackParticleLink() nor electron->trackParticle()");
232 h_refitVtxContainer->push_back(std::move(refittedPriVtx));
239 return StatusCode::SUCCESS;
◆ extraDeps_update_handler()
Add StoreName to extra input/output deps as needed.
use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given
◆ extraOutputDeps()
const DataObjIDColl & AthAlgorithm::extraOutputDeps |
( |
| ) |
const |
|
overridevirtualinherited |
Return the list of extra output dependencies.
This list is extended to include symlinks implied by inheritance relations.
Definition at line 50 of file AthAlgorithm.cxx.
57 return Algorithm::extraOutputDeps();
◆ finalize()
StatusCode Prompt::PrimaryVertexReFitter::finalize |
( |
| ) |
|
|
overridevirtual |
◆ initialize()
StatusCode Prompt::PrimaryVertexReFitter::initialize |
( |
| ) |
|
|
overridevirtual |
◆ inputHandles()
Return this algorithm's input handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ outputHandles()
Return this algorithm's output handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ renounce()
◆ renounceArray()
◆ sysInitialize()
StatusCode AthAlgorithm::sysInitialize |
( |
| ) |
|
|
overridevirtualinherited |
◆ sysStart()
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
◆ updateVHKA()
◆ m_detStore
◆ m_distToRefittedPriVtx
std::unique_ptr<decoratorFloat_t> Prompt::PrimaryVertexReFitter::m_distToRefittedPriVtx |
|
private |
◆ m_distToRefittedPriVtxName
Gaudi::Property<std::string> Prompt::PrimaryVertexReFitter::m_distToRefittedPriVtxName |
|
private |
◆ m_evtStore
◆ m_extendedExtraObjects
DataObjIDColl AthAlgorithm::m_extendedExtraObjects |
|
privateinherited |
◆ m_inDetTracksKey
◆ m_lepRefittedRMVtxLinkDec
std::unique_ptr<decoratorElemVtx_t> Prompt::PrimaryVertexReFitter::m_lepRefittedRMVtxLinkDec |
|
private |
◆ m_lepRefittedVtxWithoutLeptonLinkName
Gaudi::Property<std::string> Prompt::PrimaryVertexReFitter::m_lepRefittedVtxWithoutLeptonLinkName |
|
private |
◆ m_leptonContainerKey
Initial value:{
this,
"LeptonContainerName",
"lepContainerNameDefault", "Name of lepton container"
}
Definition at line 121 of file PrimaryVertexReFitter.h.
◆ m_lepVtxLinkName
Gaudi::Property<std::string> Prompt::PrimaryVertexReFitter::m_lepVtxLinkName |
|
private |
◆ m_normdistToRefittedPriVtx
std::unique_ptr<decoratorFloat_t> Prompt::PrimaryVertexReFitter::m_normdistToRefittedPriVtx |
|
private |
◆ m_normDistToRefittedPriVtxName
Gaudi::Property<std::string> Prompt::PrimaryVertexReFitter::m_normDistToRefittedPriVtxName |
|
private |
◆ m_primaryVertexContainerKey
Initial value:{
this, "PriVertexContainerName", "PrimaryVertices",
"Name of primary vertex container"
}
Definition at line 126 of file PrimaryVertexReFitter.h.
◆ m_printTime
Gaudi::Property<bool> Prompt::PrimaryVertexReFitter::m_printTime {this, "PrintTime", false} |
|
private |
◆ m_reFitPrimaryVertexKey
◆ m_timerAll
TStopwatch Prompt::PrimaryVertexReFitter::m_timerAll |
|
private |
◆ m_timerExec
TStopwatch Prompt::PrimaryVertexReFitter::m_timerExec |
|
private |
◆ m_varHandleArraysDeclared
◆ m_vertexFitterTool
Initial value:{
this, "VertexFittingTool", "Prompt::VertexFittingTool/VertexFittingTool"
}
Definition at line 91 of file PrimaryVertexReFitter.h.
◆ m_vhka
The documentation for this class was generated from the following files:
virtual double pt() const override final
The transverse momentum ( ) of the particle.
size_t nTrackParticles() const
Get the number of tracks associated with this vertex.
bool toContainedElement(BaseConstReference data, ElementType element, IProxyDict *sg=0)
Set from element pointer and a reference to the container (storable)
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
ToolHandle< Prompt::VertexFittingTool > m_vertexFitterTool
std::unique_ptr< decoratorFloat_t > m_distToRefittedPriVtx
SG::ReadHandleKey< xAOD::IParticleContainer > m_leptonContainerKey
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
SG::WriteHandleKey< xAOD::VertexContainer > m_reFitPrimaryVertexKey
const xAOD::TrackParticle * trackParticle(size_t index=0) const
Pointer to the xAOD::TrackParticle/s that match the electron candidate.
std::unique_ptr< decoratorElemVtx_t > m_lepRefittedRMVtxLinkDec
Class providing the definition of the 4-vector interface.
std::string PrintResetStopWatch(TStopwatch &watch)
std::unique_ptr< decoratorFloat_t > m_normdistToRefittedPriVtx
Gaudi::Property< std::string > m_normDistToRefittedPriVtxName
Gaudi::Property< std::string > m_lepVtxLinkName
def timer(name, disabled=False)
virtual void setOwner(IDataHandleHolder *o)=0
@ kRefittedPriVtxWithoutLep
double getNormDist(const Amg::Vector3D &PrimVtx, const Amg::Vector3D &SecVtx, const std::vector< float > &ErrorMatrix, MsgStream &msg)
bool decorateLepWithReFitPrimaryVertex(const FittingInput &input, const xAOD::TrackParticle *tracklep, const xAOD::IParticle *lep, const std::vector< const xAOD::TrackParticle * > &tracks, xAOD::VertexContainer &refitVtxContainer)
virtual StatusCode sysInitialize() override
Override sysInitialize.
double getDistance(const xAOD::Vertex *vtx1, const xAOD::Vertex *vtx2)
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
::StatusCode StatusCode
StatusCode definition for legacy code.
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Gaudi::Property< bool > m_printTime
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
ElementLink implementation for ROOT usage.
Gaudi::Property< std::string > m_lepRefittedVtxWithoutLeptonLinkName
value_type push_back(value_type pElem)
Add an element to the end of the collection.
const xAOD::TrackParticle * getOriginalTrackParticleFromGSF(const xAOD::TrackParticle *trkPar)
Helper function for getting the "Original" Track Particle (i.e before GSF) via the GSF Track Particle...
DataObjIDColl m_extendedExtraObjects
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_inDetTracksKey
SG::ReadHandleKey< xAOD::VertexContainer > m_primaryVertexContainerKey
Class describing a Vertex.
#define ATH_MSG_WARNING(x)
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
AthAlgorithm()
Default constructor:
Gaudi::Property< std::string > m_distToRefittedPriVtxName
Class describing a TrackParticle.
size_type size() const noexcept
Returns the number of elements in the collection.
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>