|
ATLAS Offline Software
|
#include <NonPromptLeptonVertexingAlg.h>
|
| NonPromptLeptonVertexingAlg (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 |
|
|
std::vector< const xAOD::TrackParticle * > | findNearbyTracks (const xAOD::TrackParticle &tracklep, const xAOD::TrackParticleContainer &inDetTracks, const xAOD::Vertex &priVtx) const |
|
bool | passElecCand (const xAOD::Electron &elec) const |
|
bool | passMuonCand (const xAOD::Muon &muon) const |
|
std::vector< std::unique_ptr< xAOD::Vertex > > | prepLepWithTwoTrkSVVec (const FittingInput &input, const xAOD::TrackParticle *tracklep, const std::vector< const xAOD::TrackParticle * > &tracks) |
|
std::vector< std::unique_ptr< xAOD::Vertex > > | prepLepWithMergedSVVec (const FittingInput &input, const xAOD::TrackParticle *tracklep, std::vector< std::unique_ptr< xAOD::Vertex >> &twoTrkVertices) |
|
void | makeVertexCluster (std::vector< std::unique_ptr< xAOD::Vertex >> &clusterVtxs, std::vector< std::unique_ptr< xAOD::Vertex >> &inputVtxs) |
|
void | saveSecondaryVertices (std::vector< std::unique_ptr< xAOD::Vertex >> &vtxs, std::vector< int > &indexVector, std::vector< ElementLink< xAOD::VertexContainer > > &svLinks, xAOD::VertexContainer &SVContainer, std::set< xAOD::Vertex * > &svSet) |
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKey> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &) |
| specialization for handling Gaudi::Property<SG::VarHandleBase> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &) |
| specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
|
|
|
ToolHandle< Prompt::IVertexMergingTool > | m_vertexMerger |
|
ToolHandle< Prompt::VertexFittingTool > | m_vertexFitterTool |
|
Gaudi::Property< bool > | m_printTime {this, "PrintTime", false} |
|
Gaudi::Property< bool > | m_selectTracks {this, "SelectTracks", true} |
|
Gaudi::Property< double > | m_mergeMinVtxDist {this, "MergeMinVtxDist", 1.0} |
|
Gaudi::Property< double > | m_mergeChi2OverDoF {this, "MergeChi2OverDoF", 5.0} |
|
Gaudi::Property< std::string > | m_decoratorNameSecVtxLinks {this, "SecVtxLinksName", "default"} |
|
Gaudi::Property< std::string > | m_decoratorNameDeepMergedSecVtxLinks {this, "DeepMergedSecVtxLinksName", "default"} |
|
Gaudi::Property< std::string > | m_decoratorNameIndexVector {this, "IndexVectorName"} |
|
Gaudi::Property< std::string > | m_linkNameRefittedPriVtxWithoutLepton {this, "NoLeptonPriVtxLinkName"} |
|
Gaudi::Property< std::string > | m_refittedVertexTypeName |
|
Gaudi::Property< float > | m_minTrackpT {this, "minTrackpT", 500.0} |
|
Gaudi::Property< float > | m_maxTrackEta {this, "maxTrackEta", 2.5} |
|
Gaudi::Property< float > | m_maxTrackZ0Sin {this, "maxTrackZ0Sin", 1.0} |
|
Gaudi::Property< float > | m_minTrackLeptonDR {this, "minTrackLeptonDR", 1.0e-6} |
|
Gaudi::Property< float > | m_maxTrackLeptonDR {this, "maxTrackLeptonDR", 0.4} |
|
Gaudi::Property< unsigned > | m_minTrackSiHits {this, "minTrackSiHits", 7} |
|
Gaudi::Property< float > | m_maxTrackSharedSiHits {this, "maxTrackSharedSiHits", 1.0} |
|
Gaudi::Property< unsigned > | m_maxTrackSiHoles {this, "maxTrackSiHoles", 2} |
|
Gaudi::Property< unsigned > | m_maxTrackPixHoles {this, "maxTrackPixHoles", 1} |
|
SG::ReadHandleKey< xAOD::TrackParticleContainer > | m_inDetTracksKey |
|
SG::ReadHandleKey< xAOD::IParticleContainer > | m_leptonContainerKey |
|
SG::ReadHandleKey< xAOD::VertexContainer > | m_primaryVertexContainerName |
|
SG::ReadHandleKey< xAOD::VertexContainer > | m_refittedPriVtxContainerName |
|
SG::WriteHandleKey< xAOD::VertexContainer > | m_svContainerName |
|
TStopwatch | m_timerAll |
|
TStopwatch | m_timerExec |
|
unsigned | m_countEvents |
|
std::unique_ptr< decoratorVecInt_t > | m_indexVectorDec |
|
std::unique_ptr< decoratorVecInt_t > | m_indexVectorDecDeepMerge |
|
std::unique_ptr< decoratorVecElemVtx_t > | m_lepSVElementLinksDec |
|
std::unique_ptr< decoratorVecElemVtx_t > | m_lepDeepMergedSVElementLinksDec |
|
DataObjIDColl | m_extendedExtraObjects |
|
StoreGateSvc_t | m_evtStore |
| Pointer to StoreGate (event store by default) More...
|
|
StoreGateSvc_t | m_detStore |
| Pointer to StoreGate (detector store by default) More...
|
|
std::vector< SG::VarHandleKeyArray * > | m_vhka |
|
bool | m_varHandleArraysDeclared |
|
◆ decoratorVecElemVtx_t
◆ decoratorVecInt_t
◆ StoreGateSvc_t
◆ NonPromptLeptonVertexingAlg()
Prompt::NonPromptLeptonVertexingAlg::NonPromptLeptonVertexingAlg |
( |
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]
◆ detStore()
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ execute()
StatusCode Prompt::NonPromptLeptonVertexingAlg::execute |
( |
| ) |
|
|
overridevirtual |
Definition at line 104 of file NonPromptLeptonVertexingAlg.cxx.
117 if (!h_inDetTracks.isValid()){
118 ATH_MSG_FATAL(
"execute - failed to find the InDetTrackParticles");
119 return StatusCode::FAILURE;
127 std::set< xAOD::Vertex* > svSet;
131 std::make_unique< xAOD::VertexContainer>(), std::make_unique< xAOD::VertexAuxContainer>()
142 ATH_MSG_DEBUG (
"NonPromptLeptonVertexingAlg::execute - Read " << vertices->size() <<
" primary vertices");
143 ATH_MSG_DEBUG (
"NonPromptLeptonVertexingAlg::execute - Read " << refittedVertices->size() <<
" refitted primary vertices");
152 fittingInput.priVtx =
vertex;
157 if(!fittingInput.priVtx) {
158 ATH_MSG_INFO(
"Failed to find primary vertex - skip this event");
160 return StatusCode::SUCCESS;
167 short refittedVertexType = 0;
170 fittingInput.refittedPriVtx =
vertex;
173 if(fittingInput.refittedPriVtx) {
181 ATH_MSG_DEBUG(
"\n\t\t\t Size of lepton container: " << leptonContainer ->
size());
205 tracklep = *(
muon->inDetTrackParticleLink());
209 ATH_MSG_WARNING(
"NonPromptLeptonVertexingAlg::execute - failed to find electron or muon: should never happen!");
213 (*m_lepSVElementLinksDec) (*lepton) = std::vector<ElementLink<xAOD::VertexContainer> >();
214 (*m_lepDeepMergedSVElementLinksDec)(*lepton) = std::vector<ElementLink<xAOD::VertexContainer> >();
215 (*m_indexVectorDec) (*lepton) = std::vector<int>();
216 (*m_indexVectorDecDeepMerge) (*lepton) = std::vector<int>();
218 ATH_MSG_DEBUG(
"NonPromptLeptonVertexingAlg::execute - cannot find muon->inDetTrackParticleLink() nor electron->trackParticle()");
222 ATH_MSG_DEBUG(
"NonPromptLeptonVertexingAlg::execute - process new lepton track " << tracklep);
227 fittingInput.refittedPriVtxWithoutLep = 0;
229 if(priVtxWithoutLepAcc.isAvailable(*lepton)) {
233 fittingInput.refittedPriVtxWithoutLep = *vtxLink;
235 ATH_MSG_DEBUG(
"DecorateSecondaryVertex - found refitted primary vertex without lepton: "
243 std::vector<const xAOD::TrackParticle* > ifitTracks =
findNearbyTracks(*tracklep, inDetTracks, *fittingInput.priVtx);
249 fittingInput, tracklep, ifitTracks
254 std::vector<std::unique_ptr<xAOD::Vertex>> twoTrkVerticesCopy;
255 for (std::unique_ptr<xAOD::Vertex> &vtx : twoTrkVertices) {
256 std::unique_ptr<xAOD::Vertex> newVtx = std::make_unique<xAOD::Vertex>(*vtx);
257 twoTrkVerticesCopy.push_back(std::move(newVtx));
262 ATH_MSG_DEBUG(
"Starting with " << twoTrkVertices.size() <<
" 2-track vertices");
264 fittingInput, tracklep, twoTrkVertices, ifitTracks);
269 std::vector<ElementLink<xAOD::VertexContainer> > svLinks;
270 std::vector<ElementLink<xAOD::VertexContainer> > deepmergeSVLinks;
272 std::vector<int> indexVectorTwoTrk;
273 std::vector<int> indexVectorDeepMerged;
278 ATH_MSG_DEBUG(
"NonPromptLeptonVertexingAlg::execute --- recording " << twoTrkVerticesCopy.size() <<
" 2-track and simple merged vertices");
284 ATH_MSG_DEBUG(
"NonPromptLeptonVertexingAlg::execute --- recording " << deep_merged_result.
vtxsNewMerged.size() <<
" merged multi-track vertices");
290 ATH_MSG_DEBUG (
"NonPromptLeptonVertexingAlg::execute -- number of two-track SV = " << twoTrkVertices.size());
291 ATH_MSG_DEBUG (
"NonPromptLeptonVertexingAlg::execute -- number of deep merged SV = " << deep_merged_result.
vtxsNewMerged.size());
293 (*m_lepSVElementLinksDec) (*lepton) = svLinks;
294 (*m_lepDeepMergedSVElementLinksDec)(*lepton) = deepmergeSVLinks;
295 (*m_indexVectorDec) (*lepton) = indexVectorTwoTrk;
296 (*m_indexVectorDecDeepMerge) (*lepton) = indexVectorDeepMerged;
298 ATH_MSG_DEBUG(
"NonPromptLeptonVertexingAlg - done with lepton pT=" << tracklep->
pt() <<
", " <<
truthAsStr(*lepton) << endl
299 <<
"___________________________________________________________________________");
304 ATH_MSG_DEBUG(
" NonPromptLeptonVertexingAlg::execute - done with this event" << endl
305 <<
"___________________________________________________________________________");
307 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::NonPromptLeptonVertexingAlg::finalize |
( |
| ) |
|
|
overridevirtual |
◆ findNearbyTracks()
◆ initialize()
StatusCode Prompt::NonPromptLeptonVertexingAlg::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.
◆ makeVertexCluster()
void Prompt::NonPromptLeptonVertexingAlg::makeVertexCluster |
( |
std::vector< std::unique_ptr< xAOD::Vertex >> & |
clusterVtxs, |
|
|
std::vector< std::unique_ptr< xAOD::Vertex >> & |
inputVtxs |
|
) |
| |
|
private |
Definition at line 575 of file NonPromptLeptonVertexingAlg.cxx.
580 ATH_MSG_DEBUG(
"makeVertexCluster - before: clusterVtxs.size()=" << clusterVtxs.size() <<
", inputVtxs.size()=" << inputVtxs.size());
582 std::vector<std::unique_ptr<xAOD::Vertex>>
::iterator vit = inputVtxs.begin();
584 while(vit != inputVtxs.end()) {
587 for(std::vector<std::unique_ptr<xAOD::Vertex>>::const_iterator cit = clusterVtxs.begin(); cit != clusterVtxs.end(); ++cit) {
588 if(vit->get() == cit->get()) {
589 ATH_MSG_DEBUG(
"makeVertexCluster - logic error - found the same vertex twice: " << ((*vit).get()));
593 const double vdist =
getDistance((*vit)->position(), (*cit)->position());
604 clusterVtxs.push_back(std::move(*vit));
605 inputVtxs.erase(vit);
607 vit = inputVtxs.begin();
614 ATH_MSG_DEBUG(
"makeVertexCluster - after: clusterVtxs.size()=" << clusterVtxs.size() <<
", inputVtxs.size()=" << inputVtxs.size());
◆ 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.
◆ passElecCand()
Definition at line 311 of file NonPromptLeptonVertexingAlg.cxx.
321 <<
"pT=" << elec.
pt() <<
", eta=" << elec.
eta() <<
", phi=" << elec.
phi() << std::endl
322 <<
" DFCommonElectronsLHLoose = " <<
int(lh_loose) << std::endl
◆ passMuonCand()
bool Prompt::NonPromptLeptonVertexingAlg::passMuonCand |
( |
const xAOD::Muon & |
muon | ) |
const |
|
private |
Definition at line 333 of file NonPromptLeptonVertexingAlg.cxx.
341 <<
"pT=" <<
muon.pt() <<
", eta=" <<
muon.eta() <<
", phi=" <<
muon.phi() << std::endl
342 <<
" Type = " <<
muon.muonType() << std::endl
343 <<
" Combined = " << combined << std::endl
◆ prepLepWithMergedSVVec()
Definition at line 466 of file NonPromptLeptonVertexingAlg.cxx.
476 std::vector<std::unique_ptr<xAOD::Vertex>> twoTrkVerticesPass;
477 std::vector<std::unique_ptr<xAOD::Vertex>> twoTrkVerticesPassFixed;
478 std::vector<std::unique_ptr<xAOD::Vertex>> twoTrkVerticesMerged;
479 std::vector<std::unique_ptr<xAOD::Vertex>> resultVertices;
482 ATH_MSG_WARNING(
"prepLepWithMergedSVVec -- invalid primary vertex: nothing to do");
483 return resultVertices;
486 for(std::unique_ptr<xAOD::Vertex> &vtx: twoTrkVertices) {
487 double chi2OverDoF = -99.;
489 if(vtx->numberDoF() > 0 && vtx->chiSquared() > 0) {
490 chi2OverDoF = vtx->chiSquared()/
double(vtx->numberDoF());
494 twoTrkVerticesPass .push_back(std::move(vtx));
495 twoTrkVerticesPassFixed.push_back(std::move(vtx));
499 std::vector<std::unique_ptr<xAOD::Vertex>>
::iterator curr_iter = twoTrkVerticesPass.begin();
501 while(curr_iter != twoTrkVerticesPass.end()) {
502 std::vector<std::unique_ptr<xAOD::Vertex>> clusterVtxs;
503 clusterVtxs.push_back(std::move(*curr_iter));
505 twoTrkVerticesPass.erase(curr_iter);
509 curr_iter = twoTrkVerticesPass.begin();
514 std::vector<const xAOD::TrackParticle*> tracksForFit;
516 for(std::unique_ptr<xAOD::Vertex> &vtx: clusterVtxs) {
517 for(
unsigned k = 0;
k < vtx->nTrackParticles(); ++
k) {
521 tracksForFit.push_back(
track);
529 if(clusterVtxs.size() < 2) {
536 tracksForFit.push_back(tracklep);
538 std::unique_ptr<xAOD::Vertex> newSecondaryVertex =
m_vertexFitterTool->fitVertexWithPrimarySeed(
542 if(!newSecondaryVertex) {
543 ATH_MSG_DEBUG(
"DecorateLepWithMergedSVVec -- failed to fit merged vertex");
547 resultVertices.push_back(std::move(newSecondaryVertex));
549 for(std::unique_ptr<xAOD::Vertex> &vtx: clusterVtxs) {
550 twoTrkVerticesMerged.push_back(std::move(vtx));
559 for(std::unique_ptr<xAOD::Vertex> &vtx: twoTrkVerticesPassFixed) {
560 const std::vector<std::unique_ptr<xAOD::Vertex>>::const_iterator
fit =
std::find(
561 twoTrkVerticesMerged.begin(),
562 twoTrkVerticesMerged.end(),
566 if(
fit == twoTrkVerticesMerged.end()) {
567 resultVertices.push_back(std::move(vtx));
571 return resultVertices;
◆ prepLepWithTwoTrkSVVec()
Definition at line 427 of file NonPromptLeptonVertexingAlg.cxx.
437 std::vector<std::unique_ptr<xAOD::Vertex>> twoTrkVertices;
438 std::vector<const xAOD::TrackParticle*> tracksForFit;
441 ATH_MSG_WARNING(
"prepLepWithTwoTrkSVVec -- invalid primary vertex: nothing to do");
442 return twoTrkVertices;
446 tracksForFit.clear();
447 tracksForFit.push_back(tracklep);
448 tracksForFit.push_back(selectedtrack);
450 std::unique_ptr<xAOD::Vertex> newSecondaryVertex =
m_vertexFitterTool->fitVertexWithPrimarySeed(
454 if(!newSecondaryVertex) {
455 ATH_MSG_DEBUG(
"prepLepWithTwoTrkSVVec -- failed to fit 2-track vertex");
459 twoTrkVertices.push_back(std::move(newSecondaryVertex));
462 return twoTrkVertices;
◆ renounce()
◆ renounceArray()
◆ saveSecondaryVertices()
Definition at line 618 of file NonPromptLeptonVertexingAlg.cxx.
629 ATH_MSG_DEBUG(
"saveSecondaryVertices - will save " << vtxs.size() <<
" vertexes");
631 for(std::unique_ptr<xAOD::Vertex> &vtx: vtxs) {
634 indexVector.push_back(
index);
637 ATH_MSG_WARNING(
"saveSecondaryVertices - missing \"SecondaryVertexIndex\" variable");
640 if(svSet.insert(vtx.get()).second) {
646 svLinks.push_back(svLink);
648 ATH_MSG_ERROR(
"saveSecondaryVertices --- the same vertex has been encountered more than once! Is this a logic error?");
◆ 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_countEvents
unsigned Prompt::NonPromptLeptonVertexingAlg::m_countEvents |
|
private |
◆ m_decoratorNameDeepMergedSecVtxLinks
Gaudi::Property<std::string> Prompt::NonPromptLeptonVertexingAlg::m_decoratorNameDeepMergedSecVtxLinks {this, "DeepMergedSecVtxLinksName", "default"} |
|
private |
◆ m_decoratorNameIndexVector
Gaudi::Property<std::string> Prompt::NonPromptLeptonVertexingAlg::m_decoratorNameIndexVector {this, "IndexVectorName"} |
|
private |
◆ m_decoratorNameSecVtxLinks
Gaudi::Property<std::string> Prompt::NonPromptLeptonVertexingAlg::m_decoratorNameSecVtxLinks {this, "SecVtxLinksName", "default"} |
|
private |
◆ m_detStore
◆ m_evtStore
◆ m_extendedExtraObjects
DataObjIDColl AthAlgorithm::m_extendedExtraObjects |
|
privateinherited |
◆ m_inDetTracksKey
◆ m_indexVectorDec
std::unique_ptr<decoratorVecInt_t> Prompt::NonPromptLeptonVertexingAlg::m_indexVectorDec |
|
private |
◆ m_indexVectorDecDeepMerge
std::unique_ptr<decoratorVecInt_t> Prompt::NonPromptLeptonVertexingAlg::m_indexVectorDecDeepMerge |
|
private |
◆ m_lepDeepMergedSVElementLinksDec
std::unique_ptr<decoratorVecElemVtx_t> Prompt::NonPromptLeptonVertexingAlg::m_lepDeepMergedSVElementLinksDec |
|
private |
◆ m_lepSVElementLinksDec
◆ m_leptonContainerKey
◆ m_linkNameRefittedPriVtxWithoutLepton
Gaudi::Property<std::string> Prompt::NonPromptLeptonVertexingAlg::m_linkNameRefittedPriVtxWithoutLepton {this, "NoLeptonPriVtxLinkName"} |
|
private |
◆ m_maxTrackEta
Gaudi::Property<float> Prompt::NonPromptLeptonVertexingAlg::m_maxTrackEta {this, "maxTrackEta", 2.5} |
|
private |
◆ m_maxTrackLeptonDR
Gaudi::Property<float> Prompt::NonPromptLeptonVertexingAlg::m_maxTrackLeptonDR {this, "maxTrackLeptonDR", 0.4} |
|
private |
◆ m_maxTrackPixHoles
Gaudi::Property<unsigned> Prompt::NonPromptLeptonVertexingAlg::m_maxTrackPixHoles {this, "maxTrackPixHoles", 1} |
|
private |
◆ m_maxTrackSharedSiHits
Gaudi::Property<float> Prompt::NonPromptLeptonVertexingAlg::m_maxTrackSharedSiHits {this, "maxTrackSharedSiHits", 1.0} |
|
private |
◆ m_maxTrackSiHoles
Gaudi::Property<unsigned> Prompt::NonPromptLeptonVertexingAlg::m_maxTrackSiHoles {this, "maxTrackSiHoles", 2} |
|
private |
◆ m_maxTrackZ0Sin
Gaudi::Property<float> Prompt::NonPromptLeptonVertexingAlg::m_maxTrackZ0Sin {this, "maxTrackZ0Sin", 1.0} |
|
private |
◆ m_mergeChi2OverDoF
Gaudi::Property<double> Prompt::NonPromptLeptonVertexingAlg::m_mergeChi2OverDoF {this, "MergeChi2OverDoF", 5.0} |
|
private |
◆ m_mergeMinVtxDist
Gaudi::Property<double> Prompt::NonPromptLeptonVertexingAlg::m_mergeMinVtxDist {this, "MergeMinVtxDist", 1.0} |
|
private |
◆ m_minTrackLeptonDR
Gaudi::Property<float> Prompt::NonPromptLeptonVertexingAlg::m_minTrackLeptonDR {this, "minTrackLeptonDR", 1.0e-6} |
|
private |
◆ m_minTrackpT
Gaudi::Property<float> Prompt::NonPromptLeptonVertexingAlg::m_minTrackpT {this, "minTrackpT", 500.0} |
|
private |
◆ m_minTrackSiHits
Gaudi::Property<unsigned> Prompt::NonPromptLeptonVertexingAlg::m_minTrackSiHits {this, "minTrackSiHits", 7} |
|
private |
◆ m_primaryVertexContainerName
◆ m_printTime
Gaudi::Property<bool> Prompt::NonPromptLeptonVertexingAlg::m_printTime {this, "PrintTime", false} |
|
private |
◆ m_refittedPriVtxContainerName
◆ m_refittedVertexTypeName
Gaudi::Property<std::string> Prompt::NonPromptLeptonVertexingAlg::m_refittedVertexTypeName |
|
private |
◆ m_selectTracks
Gaudi::Property<bool> Prompt::NonPromptLeptonVertexingAlg::m_selectTracks {this, "SelectTracks", true} |
|
private |
◆ m_svContainerName
◆ m_timerAll
TStopwatch Prompt::NonPromptLeptonVertexingAlg::m_timerAll |
|
private |
◆ m_timerExec
TStopwatch Prompt::NonPromptLeptonVertexingAlg::m_timerExec |
|
private |
◆ m_varHandleArraysDeclared
◆ m_vertexFitterTool
◆ m_vertexMerger
◆ m_vhka
The documentation for this class was generated from the following files:
Gaudi::Property< float > m_minTrackpT
JetConstituentVector::iterator iterator
virtual double pt() const override final
The transverse momentum ( ) of the particle.
@ numberOfPixelHoles
number of pixel layers on track with absence of hits [unit8_t].
Gaudi::Property< unsigned > m_minTrackSiHits
Gaudi::Property< std::string > m_decoratorNameSecVtxLinks
Gaudi::Property< float > m_maxTrackZ0Sin
Gaudi::Property< bool > m_selectTracks
size_t nTrackParticles() const
Get the number of tracks associated with this vertex.
@ numberOfSCTSharedHits
number of SCT hits shared by several tracks [unit8_t].
std::string find(const std::string &s)
return a remapped string
bool GetAuxVar(const T1 &obj, T2 &value, const std::string &var_name)
Gaudi::Property< double > m_mergeMinVtxDist
Gaudi::Property< std::string > m_decoratorNameDeepMergedSecVtxLinks
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Gaudi::Property< float > m_maxTrackSharedSiHits
bool getVar(T1 &obj, T2 &value, const std::string &var_name)
std::unique_ptr< decoratorVecInt_t > m_indexVectorDec
ToolHandle< Prompt::VertexFittingTool > m_vertexFitterTool
Gaudi::Property< std::string > m_linkNameRefittedPriVtxWithoutLepton
std::unique_ptr< decoratorVecInt_t > m_indexVectorDecDeepMerge
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
std::unique_ptr< decoratorVecElemVtx_t > m_lepSVElementLinksDec
@ numberOfPixelHits
these are the pixel hits, including the b-layer [unit8_t].
const xAOD::TrackParticle * trackParticle(size_t index=0) const
Pointer to the xAOD::TrackParticle/s that match the electron candidate.
SG::ReadHandleKey< xAOD::IParticleContainer > m_leptonContainerKey
Helper class to provide constant type-safe access to aux data.
Gaudi::Property< unsigned > m_maxTrackSiHoles
Class providing the definition of the 4-vector interface.
std::vector< std::unique_ptr< xAOD::Vertex > > prepLepWithTwoTrkSVVec(const FittingInput &input, const xAOD::TrackParticle *tracklep, const std::vector< const xAOD::TrackParticle * > &tracks)
std::string PrintResetStopWatch(TStopwatch &watch)
Gaudi::Property< float > m_maxTrackEta
bool isValid() const
Test to see if the link can be dereferenced.
def timer(name, disabled=False)
SG::ReadHandleKey< xAOD::VertexContainer > m_refittedPriVtxContainerName
virtual void setOwner(IDataHandleHolder *o)=0
SG::ReadHandleKey< xAOD::VertexContainer > m_primaryVertexContainerName
Gaudi::Property< bool > m_printTime
std::vector< std::unique_ptr< xAOD::Vertex > > vtxsInitPassedNotMerged
virtual FourMom_t p4() const override final
The full 4-momentum of the particle.
std::unique_ptr< decoratorVecElemVtx_t > m_lepDeepMergedSVElementLinksDec
@ numberOfPixelSharedHits
number of Pixel all-layer hits shared by several tracks [unit8_t].
Gaudi::Property< double > m_mergeChi2OverDoF
virtual StatusCode sysInitialize() override
Override sysInitialize.
ToolHandle< Prompt::IVertexMergingTool > m_vertexMerger
double getDistance(const xAOD::Vertex *vtx1, const xAOD::Vertex *vtx2)
bool passElecCand(const xAOD::Electron &elec) const
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
void saveSecondaryVertices(std::vector< std::unique_ptr< xAOD::Vertex >> &vtxs, std::vector< int > &indexVector, std::vector< ElementLink< xAOD::VertexContainer > > &svLinks, xAOD::VertexContainer &SVContainer, std::set< xAOD::Vertex * > &svSet)
::StatusCode StatusCode
StatusCode definition for legacy code.
Gaudi::Property< unsigned > m_maxTrackPixHoles
SG::WriteHandleKey< xAOD::VertexContainer > m_svContainerName
Gaudi::Property< float > m_maxTrackLeptonDR
virtual double phi() const override final
The azimuthal angle ( ) of the particle.
Gaudi::Property< std::string > m_refittedVertexTypeName
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
float z() const
Returns the z position.
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
@ numberOfSCTHoles
number of SCT holes [unit8_t].
std::vector< const xAOD::TrackParticle * > findNearbyTracks(const xAOD::TrackParticle &tracklep, const xAOD::TrackParticleContainer &inDetTracks, const xAOD::Vertex &priVtx) const
Gaudi::Property< float > m_minTrackLeptonDR
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
ElementLink implementation for ROOT usage.
std::string truthAsStr(const xAOD::IParticle &particle)
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_inDetTracksKey
bool passMuonCand(const xAOD::Muon &muon) const
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
std::vector< std::unique_ptr< xAOD::Vertex > > vtxsNewMerged
Class describing a Vertex.
#define ATH_MSG_WARNING(x)
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
virtual double pt() const override final
The transverse momentum ( ) of the particle.
@ numberOfSCTHits
number of hits in SCT [unit8_t].
AthAlgorithm()
Default constructor:
virtual double eta() const override final
The pseudorapidity ( ) of the particle.
void makeVertexCluster(std::vector< std::unique_ptr< xAOD::Vertex >> &clusterVtxs, std::vector< std::unique_ptr< xAOD::Vertex >> &inputVtxs)
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>
Gaudi::Property< std::string > m_decoratorNameIndexVector