ATLAS Offline Software
Loading...
Searching...
No Matches
Prompt::NonPromptLeptonVertexingAlg Class Reference

#include <NonPromptLeptonVertexingAlg.h>

Inheritance diagram for Prompt::NonPromptLeptonVertexingAlg:
Collaboration diagram for Prompt::NonPromptLeptonVertexingAlg:

Public Member Functions

 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.
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies.
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed.

Private Types

typedef SG::AuxElement::Decorator< std::vector< int > > decoratorVecInt_t
typedef SG::AuxElement::Decorator< std::vector< ElementLink< xAOD::VertexContainer > > > decoratorVecElemVtx_t
typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

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 EventContext &ctx, const FittingInput &input, const xAOD::TrackParticle *tracklep, const std::vector< const xAOD::TrackParticle * > &tracks)
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, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

ToolHandle< Prompt::IVertexMergingToolm_vertexMerger
ToolHandle< Prompt::VertexFittingToolm_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_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::TrackParticleContainerm_inDetTracksKey
SG::ReadHandleKey< xAOD::IParticleContainerm_leptonContainerKey
SG::ReadHandleKey< xAOD::VertexContainerm_primaryVertexContainerName
SG::ReadHandleKey< xAOD::VertexContainerm_refittedPriVtxContainerName
SG::WriteHandleKey< xAOD::VertexContainerm_svContainerName
TStopwatch m_timerAll
TStopwatch m_timerExec
unsigned m_countEvents
SG::WriteDecorHandleKey< xAOD::IParticleContainerm_decoratorNameSecVtxLinks { this, "SecVtxLinksName", m_leptonContainerKey, "default", }
SG::WriteDecorHandleKey< xAOD::IParticleContainerm_decoratorNameDeepMergedSecVtxLinks { this, "DeepMergedSecVtxLinksName", m_leptonContainerKey, "default", }
SG::WriteDecorHandleKey< xAOD::IParticleContainerm_decoratorNameIndexVector { this, "IndexVectorName", m_leptonContainerKey, "", }
SG::WriteDecorHandleKey< xAOD::IParticleContainerm_decoratorNameIndexVectorDeepMerge { this, "IndexVectorNameDeepMerge", m_leptonContainerKey, "", }
DataObjIDColl m_extendedExtraObjects
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default).
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default).
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Detailed Description

Definition at line 45 of file NonPromptLeptonVertexingAlg.h.

Member Typedef Documentation

◆ decoratorVecElemVtx_t

typedef SG::AuxElement::Decorator<std::vector<ElementLink<xAOD::VertexContainer> > > Prompt::NonPromptLeptonVertexingAlg::decoratorVecElemVtx_t
private

Definition at line 90 of file NonPromptLeptonVertexingAlg.h.

◆ decoratorVecInt_t

typedef SG::AuxElement::Decorator<std::vector<int> > Prompt::NonPromptLeptonVertexingAlg::decoratorVecInt_t
private

Definition at line 89 of file NonPromptLeptonVertexingAlg.h.

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< Algorithm > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ NonPromptLeptonVertexingAlg()

Prompt::NonPromptLeptonVertexingAlg::NonPromptLeptonVertexingAlg ( const std::string & name,
ISvcLocator * pSvcLocator )

Definition at line 24 of file NonPromptLeptonVertexingAlg.cxx.

24 :
25 AthAlgorithm (name, pSvcLocator),
27{}
AthAlgorithm()
Default constructor:

Member Function Documentation

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Algorithm > >::declareGaudiProperty ( Gaudi::Property< T, V, H > & hndl,
const SG::VarHandleKeyType &  )
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty ( Gaudi::Property< T, V, H > & t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ detStore()

const ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Algorithm > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

◆ evtStore()

ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Algorithm > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

◆ execute()

StatusCode Prompt::NonPromptLeptonVertexingAlg::execute ( )
overridevirtual

Definition at line 107 of file NonPromptLeptonVertexingAlg.cxx.

108{
109 //
110 // Start execute timer for new event
111 //
112 TimerScopeHelper timer(m_timerExec);
113
114 const EventContext& ctx = Gaudi::Hive::currentContext();
115
117
118 //
119 // Find Inner Detector tracks save them class member variable for convenience.
120 //
121 SG::ReadHandle<xAOD::TrackParticleContainer> h_inDetTracks(m_inDetTracksKey, ctx);
122 if (!h_inDetTracks.isValid()){
123 ATH_MSG_FATAL("execute - failed to find the InDetTrackParticles");
124 return StatusCode::FAILURE;
125 }
126
127 const xAOD::TrackParticleContainer inDetTracks = *h_inDetTracks;
128
129 //
130 // Create vertex containers and record them in StoreGate
131 //
132 std::set< xAOD::Vertex* > svSet;
133
134 SG::WriteHandle<xAOD::VertexContainer> h_SVContainer (m_svContainerName, ctx);
135 ATH_CHECK(h_SVContainer.record(
136 std::make_unique< xAOD::VertexContainer>(), std::make_unique< xAOD::VertexAuxContainer>()
137 ));
138 xAOD::VertexContainer &SVContainerRef = *(h_SVContainer.ptr());
139
140 //
141 // Retrieve containers from evtStore
142 //
143 SG::ReadHandle<xAOD::IParticleContainer> leptonContainer (m_leptonContainerKey, ctx);
144 SG::ReadHandle<xAOD::VertexContainer> vertices (m_primaryVertexContainerName, ctx);
145 SG::ReadHandle<xAOD::VertexContainer> refittedVertices(m_refittedPriVtxContainerName, ctx);
146
147 ATH_MSG_DEBUG ("NonPromptLeptonVertexingAlg::execute - Read " << vertices->size() << " primary vertices");
148 ATH_MSG_DEBUG ("NonPromptLeptonVertexingAlg::execute - Read " << refittedVertices->size() << " refitted primary vertices");
149
150 //
151 // Find default Primary Vertex
152 //
153 Prompt::FittingInput fittingInput(&inDetTracks, 0, 0);
154
155 for(const xAOD::Vertex *vertex: *vertices) {
156 if(vertex->vertexType() == xAOD::VxType::PriVtx) {
157 fittingInput.priVtx = vertex;
158 break;
159 }
160 }
161
162 if(!fittingInput.priVtx) {
163 ATH_MSG_INFO("Failed to find primary vertex - skip this event");
164
165 return StatusCode::SUCCESS;
166 }
167
168 //
169 // Find the refitted Primary Vertex
170 //
171 for(const xAOD::Vertex *vertex: *refittedVertices) {
172 short refittedVertexType = 0;
173
174 if(getVar(vertex, refittedVertexType, m_refittedVertexTypeName) && refittedVertexType == xAOD::VxType::PriVtx) {
175 fittingInput.refittedPriVtx = vertex;
176 }
177
178 if(fittingInput.refittedPriVtx) {
179 break;
180 }
181 }
182
183 //
184 // Dynamic cast IParticle container to electron or muon container
185 //
186 ATH_MSG_DEBUG("\n\t\t\t Size of lepton container: " << leptonContainer ->size());
187
188 SG::AuxElement::ConstAccessor<ElementLink<xAOD::VertexContainer> > priVtxWithoutLepAcc(m_linkNameRefittedPriVtxWithoutLepton);
189
190 using VecElemVtx_t = std::vector<ElementLink<xAOD::VertexContainer> >;
191 SG::WriteDecorHandle<xAOD::IParticleContainer, std::vector<int> >
192 indexVectorDec (m_decoratorNameIndexVector, ctx);
193 SG::WriteDecorHandle<xAOD::IParticleContainer, std::vector<int> >
194 indexVectorDecDeepMerge (m_decoratorNameIndexVectorDeepMerge, ctx);
195 SG::WriteDecorHandle<xAOD::IParticleContainer, VecElemVtx_t>
196 lepSVElementLinksDec (m_decoratorNameSecVtxLinks, ctx);
197 SG::WriteDecorHandle<xAOD::IParticleContainer, VecElemVtx_t>
198 lepDeepMergedSVElementLinksDec (m_decoratorNameDeepMergedSecVtxLinks, ctx);
199
200 for(const xAOD::IParticle *lepton: *leptonContainer) {
201 const xAOD::TrackParticle *tracklep = 0;
202 const xAOD::Electron *elec = dynamic_cast<const xAOD::Electron*>(lepton);
203 const xAOD::Muon *muon = dynamic_cast<const xAOD::Muon *>(lepton);
204
205 if(elec) {
206 //
207 // Get GSF track
208 //
209 const xAOD::TrackParticle *bestmatchedGSFElTrack = elec->trackParticle(0);
210
211 //
212 // Get original ID track for vertex fitting
213 //
214 if(passElecCand(*elec) && bestmatchedGSFElTrack) {
215 tracklep = xAOD::EgammaHelpers::getOriginalTrackParticleFromGSF(bestmatchedGSFElTrack);
216 }
217 }
218 else if(muon) {
219 if(passMuonCand(*muon) && muon->inDetTrackParticleLink().isValid()) {
220 tracklep = *(muon->inDetTrackParticleLink());
221 }
222 }
223 else {
224 ATH_MSG_WARNING("NonPromptLeptonVertexingAlg::execute - failed to find electron or muon: should never happen!");
225 }
226
227 if(!tracklep) {
228 lepSVElementLinksDec (*lepton).clear();
229 lepDeepMergedSVElementLinksDec(*lepton).clear();
230 indexVectorDec (*lepton).clear();
231 indexVectorDecDeepMerge (*lepton).clear();
232
233 ATH_MSG_DEBUG("NonPromptLeptonVertexingAlg::execute - cannot find muon->inDetTrackParticleLink() nor electron->trackParticle()");
234 continue;
235 }
236
237 ATH_MSG_DEBUG("NonPromptLeptonVertexingAlg::execute - process new lepton track " << tracklep);
238
239 //
240 // Find refitted primary vertex with lepton track excluded
241 //
242 fittingInput.refittedPriVtxWithoutLep = 0;
243
244 if(priVtxWithoutLepAcc.isAvailable(*lepton)) {
245 ElementLink<xAOD::VertexContainer> vtxLink = priVtxWithoutLepAcc(*lepton);
246
247 if(vtxLink.isValid()) {
248 fittingInput.refittedPriVtxWithoutLep = *vtxLink;
249
250 ATH_MSG_DEBUG("DecorateSecondaryVertex - found refitted primary vertex without lepton: "
251 << m_linkNameRefittedPriVtxWithoutLepton << " with Ntrack =" << fittingInput.refittedPriVtxWithoutLep->nTrackParticles());
252 }
253 }
254
255 //
256 // Collect tracks around the lepton track
257 //
258 std::vector<const xAOD::TrackParticle* > ifitTracks = findNearbyTracks(*tracklep, inDetTracks, *fittingInput.priVtx);
259
260 //
261 // Fit 2-track vertices
262 //
263 std::vector<std::unique_ptr<xAOD::Vertex>> twoTrkVertices = prepLepWithTwoTrkSVVec(
264 ctx, fittingInput, tracklep, ifitTracks
265 );
266
267 // We make a copy so we can store the list of original
268 // two-track vertices
269 std::vector<std::unique_ptr<xAOD::Vertex>> twoTrkVerticesCopy;
270 for (std::unique_ptr<xAOD::Vertex> &vtx : twoTrkVertices) {
271 std::unique_ptr<xAOD::Vertex> newVtx = std::make_unique<xAOD::Vertex>(*vtx);
272 twoTrkVerticesCopy.push_back(std::move(newVtx));
273 }
274
275 // Deep merge 2-track vertices.
276 ATH_MSG_DEBUG("Getting deep merged vertices");
277 ATH_MSG_DEBUG("Starting with " << twoTrkVertices.size() << " 2-track vertices");
278 Prompt::MergeResultNotOwner deep_merged_result = m_vertexMerger->mergeInitVertices(
279 ctx, fittingInput, tracklep, twoTrkVertices, ifitTracks);
280
281 //
282 // Save secondary vertices
283 //
284 std::vector<ElementLink<xAOD::VertexContainer> > svLinks;
285 std::vector<ElementLink<xAOD::VertexContainer> > deepmergeSVLinks;
286
287 std::vector<int> indexVectorTwoTrk;
288 std::vector<int> indexVectorDeepMerged;
289
290 //
291 // Record 2-track vertexes and simple merged vertexes
292 //
293 ATH_MSG_DEBUG("NonPromptLeptonVertexingAlg::execute --- recording " << twoTrkVerticesCopy.size() << " 2-track and simple merged vertices");
294 saveSecondaryVertices(twoTrkVerticesCopy, indexVectorTwoTrk, svLinks, SVContainerRef, svSet);
295
296 //
297 // Record both merged multi-track vertices and also unmerged 2-track vertices
298 //
299 ATH_MSG_DEBUG("NonPromptLeptonVertexingAlg::execute --- recording " << deep_merged_result.vtxsNewMerged.size() << " merged multi-track vertices");
300 saveSecondaryVertices(deep_merged_result.vtxsNewMerged, indexVectorDeepMerged, deepmergeSVLinks, SVContainerRef, svSet);
301
302 ATH_MSG_DEBUG("NonPromptLeptonVertexingAlg::execute --- recording " << deep_merged_result.vtxsInitPassedNotMerged.size() << " unmerged 2-track vertices");
303 saveSecondaryVertices(deep_merged_result.vtxsInitPassedNotMerged, indexVectorDeepMerged, deepmergeSVLinks, SVContainerRef, svSet);
304
305 ATH_MSG_DEBUG ("NonPromptLeptonVertexingAlg::execute -- number of two-track SV = " << twoTrkVertices.size());
306 ATH_MSG_DEBUG ("NonPromptLeptonVertexingAlg::execute -- number of deep merged SV = " << deep_merged_result.vtxsNewMerged.size());
307
308 lepSVElementLinksDec (*lepton) = std::move(svLinks);
309 lepDeepMergedSVElementLinksDec(*lepton) = std::move(deepmergeSVLinks);
310 indexVectorDec (*lepton) = std::move(indexVectorTwoTrk);
311 indexVectorDecDeepMerge (*lepton) = std::move(indexVectorDeepMerged);
312
313 ATH_MSG_DEBUG("NonPromptLeptonVertexingAlg - done with lepton pT=" << tracklep->pt() << ", " << truthAsStr(*lepton) << endl
314 << "___________________________________________________________________________");
315 }
316
317 ATH_MSG_DEBUG("SV Vertex container " << m_svContainerName << " recorded in store");
318
319 ATH_MSG_DEBUG(" NonPromptLeptonVertexingAlg::execute - done with this event" << endl
320 << "___________________________________________________________________________");
321
322 return StatusCode::SUCCESS;
323}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_FATAL(x)
#define ATH_MSG_INFO(x)
#define ATH_MSG_WARNING(x)
#define ATH_MSG_DEBUG(x)
size_t size() const
Number of registered mappings.
Gaudi::Property< std::string > m_linkNameRefittedPriVtxWithoutLepton
SG::WriteDecorHandleKey< xAOD::IParticleContainer > m_decoratorNameIndexVector
SG::WriteHandleKey< xAOD::VertexContainer > m_svContainerName
SG::WriteDecorHandleKey< xAOD::IParticleContainer > m_decoratorNameIndexVectorDeepMerge
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)
ToolHandle< Prompt::IVertexMergingTool > m_vertexMerger
SG::WriteDecorHandleKey< xAOD::IParticleContainer > m_decoratorNameSecVtxLinks
SG::ReadHandleKey< xAOD::VertexContainer > m_primaryVertexContainerName
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_inDetTracksKey
bool passMuonCand(const xAOD::Muon &muon) const
SG::ReadHandleKey< xAOD::IParticleContainer > m_leptonContainerKey
SG::WriteDecorHandleKey< xAOD::IParticleContainer > m_decoratorNameDeepMergedSecVtxLinks
bool passElecCand(const xAOD::Electron &elec) const
std::vector< const xAOD::TrackParticle * > findNearbyTracks(const xAOD::TrackParticle &tracklep, const xAOD::TrackParticleContainer &inDetTracks, const xAOD::Vertex &priVtx) const
Gaudi::Property< std::string > m_refittedVertexTypeName
std::vector< std::unique_ptr< xAOD::Vertex > > prepLepWithTwoTrkSVVec(const EventContext &ctx, const FittingInput &input, const xAOD::TrackParticle *tracklep, const std::vector< const xAOD::TrackParticle * > &tracks)
SG::ReadHandleKey< xAOD::VertexContainer > m_refittedPriVtxContainerName
const xAOD::TrackParticle * trackParticle(size_t index=0) const
Pointer to the xAOD::TrackParticle/s that match the electron candidate.
virtual double pt() const override final
The transverse momentum ( ) of the particle.
std::string truthAsStr(const xAOD::IParticle &particle)
bool getVar(T1 &obj, T2 &value, const std::string &var_name)
Definition PromptUtils.h:62
timer(name, disabled=False)
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...
@ PriVtx
Primary vertex.
TrackParticle_v1 TrackParticle
Reference the current persistent version:
VertexContainer_v1 VertexContainer
Definition of the current "Vertex container version".
Vertex_v1 Vertex
Define the latest version of the vertex class.
TrackParticleContainer_v1 TrackParticleContainer
Definition of the current "TrackParticle container version".
Muon_v1 Muon
Reference the current persistent version:
Electron_v1 Electron
Definition of the current "egamma version".

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Algorithm > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase & ExtraDeps)
protectedinherited

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.

51{
52 // If we didn't find any symlinks to add, just return the collection
53 // from the base class. Otherwise, return the extended collection.
54 if (!m_extendedExtraObjects.empty()) {
56 }
57 return Algorithm::extraOutputDeps();
58}
DataObjIDColl m_extendedExtraObjects

◆ finalize()

StatusCode Prompt::NonPromptLeptonVertexingAlg::finalize ( )
overridevirtual

Definition at line 91 of file NonPromptLeptonVertexingAlg.cxx.

92{
93 if(m_printTime) {
94 //
95 // Print full time stopwatch
96 //
97 m_timerAll.Stop();
98
99 ATH_MSG_INFO("NonPromptLeptonVertexingAlg - total time: " << PrintResetStopWatch(m_timerAll));
100 ATH_MSG_INFO("NonPromptLeptonVertexingAlg - execute time: " << PrintResetStopWatch(m_timerExec));
101 }
102
103 return StatusCode::SUCCESS;
104}
std::string PrintResetStopWatch(TStopwatch &watch)

◆ findNearbyTracks()

std::vector< const xAOD::TrackParticle * > Prompt::NonPromptLeptonVertexingAlg::findNearbyTracks ( const xAOD::TrackParticle & tracklep,
const xAOD::TrackParticleContainer & inDetTracks,
const xAOD::Vertex & priVtx ) const
private

Definition at line 365 of file NonPromptLeptonVertexingAlg.cxx.

369 {
370 //
371 // Select tracks -- avoid using track selection tool since z0 definition is different
372 //
373 std::vector<const xAOD::TrackParticle *> mytracks;
374
375 for(const xAOD::TrackParticle *track: inDetTracks) {
376 if(!track) {
377 ATH_MSG_WARNING("skip null track pointer - should never happen");
378 continue;
379 }
380
381 //
382 // Check minimum track and lepton DR: skip the track that is probably the lepton track
383 //
384 if(tracklep.p4().DeltaR(track->p4()) < m_minTrackLeptonDR) {
385 ATH_MSG_DEBUG("skip the track very close to the lepton ");
386 continue;
387 }
388
389 //
390 // Check track and lepton maximum DR
391 //
392 if(tracklep.p4().DeltaR(track->p4()) > m_maxTrackLeptonDR) {
393 continue;
394 }
395
396 const double delta_z0 = track->z0() + track->vz() - priVtx.z();
397 const double Z0Sin = std::abs(delta_z0*std::sin(track->theta()));
398 const double abs_eta = std::abs(track->eta());
399
406
407 if(!(track->summaryValue(numberOfPixelHits, xAOD::numberOfPixelHits))) continue;
408 if(!(track->summaryValue(numberOfSCTHits, xAOD::numberOfSCTHits))) continue;
409 if(!(track->summaryValue(numberOfPixelHoles, xAOD::numberOfPixelHoles))) continue;
410 if(!(track->summaryValue(numberOfSCTHoles, xAOD::numberOfSCTHoles))) continue;
411 if(!(track->summaryValue(numberOfPixelSharedHits, xAOD::numberOfPixelSharedHits))) continue;
412 if(!(track->summaryValue(numberOfSCTSharedHits, xAOD::numberOfSCTSharedHits))) continue;
413
414 const uint8_t NSiHits = numberOfPixelHits + numberOfSCTHits;
416 const float NSiShHits = float(numberOfPixelSharedHits) + float(numberOfSCTSharedHits)/2.0;
417
418 if(m_selectTracks) {
419 //
420 // Kinematic track selection
421 //
422 if(track->pt() < m_minTrackpT) continue;
423 if(abs_eta > m_maxTrackEta) continue;
424 if(Z0Sin > m_maxTrackZ0Sin) continue;
425
426 //
427 // Hit quality track selection
428 //
429 if(NSiHits < m_minTrackSiHits) continue;
430 if(NSiShHits > m_maxTrackSharedSiHits) continue;
431 if(NSiHoles > m_maxTrackSiHoles ) continue;
432 if(numberOfPixelHoles > m_maxTrackPixHoles ) continue;
433 }
434
435 mytracks.push_back(track);
436 }
437
438 return mytracks;
439}
virtual FourMom_t p4() const override final
The full 4-momentum of the particle.
float z() const
Returns the z position.
@ numberOfPixelHoles
number of pixel layers on track with absence of hits [unit8_t].
@ numberOfSCTHits
number of hits in SCT [unit8_t].
@ numberOfPixelHits
these are the pixel hits, including the b-layer [unit8_t].
@ numberOfPixelSharedHits
number of Pixel all-layer hits shared by several tracks [unit8_t].
@ numberOfSCTSharedHits
number of SCT hits shared by several tracks [unit8_t].
@ numberOfSCTHoles
number of SCT holes [unit8_t].

◆ initialize()

StatusCode Prompt::NonPromptLeptonVertexingAlg::initialize ( )
overridevirtual

Definition at line 30 of file NonPromptLeptonVertexingAlg.cxx.

31{
32 if(m_printTime) {
33 //
34 // Reset timers
35 //
36 m_timerAll .Reset();
37 m_timerExec.Reset();
38
39 //
40 // Start full timer
41 //
42 m_timerAll.Start();
43 }
44
45 if(m_svContainerName.empty()) {
46 ATH_MSG_ERROR("NonPromptLeptonVertexingAlg::initialize - empty SV container name: \"" << m_svContainerName << "\"");
47 return StatusCode::FAILURE;
48 }
49
50 ATH_CHECK(m_vertexMerger.retrieve());
51 ATH_CHECK(m_vertexFitterTool.retrieve());
52
53 ATH_CHECK(m_inDetTracksKey.initialize());
54 ATH_CHECK(m_leptonContainerKey.initialize());
57
58 ATH_CHECK(m_svContainerName.initialize());
59
65
66 ATH_MSG_DEBUG("LeptonContainerName = " << m_leptonContainerKey);
67 ATH_MSG_DEBUG("ReFitPriVtxContainerName = " << m_refittedPriVtxContainerName);
68 ATH_MSG_DEBUG("SVContainerName = " << m_svContainerName);
69 ATH_MSG_DEBUG("IndexVectorName = " << m_decoratorNameIndexVector.key());
70
71 ATH_MSG_DEBUG("mergeMinVtxDist = " << m_mergeMinVtxDist);
72 ATH_MSG_DEBUG("mergeChi2OverDoF = " << m_mergeChi2OverDoF);
73
74 ATH_MSG_DEBUG("minTrackLeptonDR = " << m_minTrackLeptonDR);
75 ATH_MSG_DEBUG("maxTrackLeptonDR = " << m_maxTrackLeptonDR);
76
77 ATH_MSG_DEBUG("selectTracks = " << m_selectTracks);
78 ATH_MSG_DEBUG("minTrackpT = " << m_minTrackpT);
79 ATH_MSG_DEBUG("maxTrackEta = " << m_maxTrackEta);
80 ATH_MSG_DEBUG("maxTrackZ0Sin = " << m_maxTrackZ0Sin);
81
82 ATH_MSG_DEBUG("minTrackSiHits = " << m_minTrackSiHits);
83 ATH_MSG_DEBUG("maxTrackSharedSiHits = " << m_maxTrackSharedSiHits);
84 ATH_MSG_DEBUG("maxTrackSiHoles = " << m_maxTrackSiHoles);
85 ATH_MSG_DEBUG("maxTrackPixHoles = " << m_maxTrackPixHoles);
86
87 return StatusCode::SUCCESS;
88}
#define ATH_MSG_ERROR(x)
ToolHandle< Prompt::VertexFittingTool > m_vertexFitterTool
std::string decorKeyFromKey(const std::string &key, const std::string &deflt)
Extract the decoration part of key.

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Algorithm > >::inputHandles ( ) const
overridevirtualinherited

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 482 of file NonPromptLeptonVertexingAlg.cxx.

486{
487 ATH_MSG_DEBUG("makeVertexCluster - before: clusterVtxs.size()=" << clusterVtxs.size() << ", inputVtxs.size()=" << inputVtxs.size());
488
489 std::vector<std::unique_ptr<xAOD::Vertex>>::iterator vit = inputVtxs.begin();
490
491 while(vit != inputVtxs.end()) {
492 bool pass = false;
493
494 for(std::vector<std::unique_ptr<xAOD::Vertex>>::const_iterator cit = clusterVtxs.begin(); cit != clusterVtxs.end(); ++cit) {
495 if(vit->get() == cit->get()) {
496 ATH_MSG_DEBUG("makeVertexCluster - logic error - found the same vertex twice: " << ((*vit).get()));
497 continue;
498 }
499
500 const double vdist = getDistance((*vit)->position(), (*cit)->position());
501
502 ATH_MSG_DEBUG("makeVertexCluster - vdist=" << vdist );
503
504 if(vdist < m_mergeMinVtxDist) {
505 pass = true;
506 break;
507 }
508 }
509
510 if(pass) {
511 clusterVtxs.push_back(std::move(*vit));
512 inputVtxs.erase(vit);
513
514 vit = inputVtxs.begin();
515 }
516 else {
517 ++vit;
518 }
519 }
520
521 ATH_MSG_DEBUG("makeVertexCluster - after: clusterVtxs.size()=" << clusterVtxs.size() << ", inputVtxs.size()=" << inputVtxs.size());
522}
double getDistance(const xAOD::Vertex *vtx1, const xAOD::Vertex *vtx2)

◆ msg()

MsgStream & AthCommonMsg< Algorithm >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24 {
25 return this->msgStream();
26 }

◆ msgLvl()

bool AthCommonMsg< Algorithm >::msgLvl ( const MSG::Level lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30 {
31 return this->msgLevel(lvl);
32 }

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Algorithm > >::outputHandles ( ) const
overridevirtualinherited

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()

bool Prompt::NonPromptLeptonVertexingAlg::passElecCand ( const xAOD::Electron & elec) const
private

Definition at line 326 of file NonPromptLeptonVertexingAlg.cxx.

327{
328 //
329 // Check whether electron candidate passes loose selection
330 //
331 char lh_loose = -1;
332
333 Prompt::GetAuxVar(elec, lh_loose, "DFCommonElectronsLHLoose");
334
335 ATH_MSG_DEBUG("NonPromptLeptonVertexingAlg::passElecCand - "
336 << "pT=" << elec.pt() << ", eta=" << elec.eta() << ", phi=" << elec.phi() << std::endl
337 << " DFCommonElectronsLHLoose = " << int(lh_loose) << std::endl
338 << " " << truthAsStr(elec));
339
340 if(!lh_loose) {
341 return false;
342 }
343
344 return true;
345}
virtual double pt() const override final
The transverse momentum ( ) of the particle.
Definition Egamma_v1.cxx:66
virtual double eta() const override final
The pseudorapidity ( ) of the particle.
Definition Egamma_v1.cxx:71
virtual double phi() const override final
The azimuthal angle ( ) of the particle.
Definition Egamma_v1.cxx:76
bool GetAuxVar(const T1 &obj, T2 &value, const std::string &var_name)
Definition PromptUtils.h:83

◆ passMuonCand()

bool Prompt::NonPromptLeptonVertexingAlg::passMuonCand ( const xAOD::Muon & muon) const
private

Definition at line 348 of file NonPromptLeptonVertexingAlg.cxx.

349{
350 //
351 // Check whether muon candidate is a combined muon
352 //
353 const bool combined = (muon.muonType() == xAOD::Muon::Combined);
354
355 ATH_MSG_DEBUG("NonPromptLeptonVertexingAlg::passMuonCand - "
356 << "pT=" << muon.pt() << ", eta=" << muon.eta() << ", phi=" << muon.phi() << std::endl
357 << " Type = " << muon.muonType() << std::endl
358 << " Combined = " << combined << std::endl
359 << " " << truthAsStr(muon));
360
361 return combined;
362}

◆ prepLepWithTwoTrkSVVec()

std::vector< std::unique_ptr< xAOD::Vertex > > Prompt::NonPromptLeptonVertexingAlg::prepLepWithTwoTrkSVVec ( const EventContext & ctx,
const FittingInput & input,
const xAOD::TrackParticle * tracklep,
const std::vector< const xAOD::TrackParticle * > & tracks )
private

Definition at line 442 of file NonPromptLeptonVertexingAlg.cxx.

448{
449 //
450 // Decorate lepton with vector of two-track vertices.
451 // Return vector of finding vertices
452 //
453 std::vector<std::unique_ptr<xAOD::Vertex>> twoTrkVertices;
454 std::vector<const xAOD::TrackParticle*> tracksForFit;
455
456 if(!input.priVtx) {
457 ATH_MSG_WARNING("prepLepWithTwoTrkSVVec -- invalid primary vertex: nothing to do");
458 return twoTrkVertices;
459 }
460
461 for(const xAOD::TrackParticle *selectedtrack: tracks) {
462 tracksForFit.clear();
463 tracksForFit.push_back(tracklep);
464 tracksForFit.push_back(selectedtrack);
465
466 std::unique_ptr<xAOD::Vertex> newSecondaryVertex = m_vertexFitterTool->fitVertexWithPrimarySeed(
467 ctx, input, tracksForFit, kTwoTrackVtx
468 );
469
470 if(!newSecondaryVertex) {
471 ATH_MSG_DEBUG("prepLepWithTwoTrkSVVec -- failed to fit 2-track vertex");
472 continue;
473 }
474
475 twoTrkVertices.push_back(std::move(newSecondaryVertex));
476 }
477
478 return twoTrkVertices;
479}

◆ renounce()

std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > AthCommonDataStore< AthCommonMsg< Algorithm > >::renounce ( T & h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381 {
382 h.renounce();
384 }
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< Algorithm > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ saveSecondaryVertices()

void Prompt::NonPromptLeptonVertexingAlg::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 )
private

Definition at line 525 of file NonPromptLeptonVertexingAlg.cxx.

532{
533 //
534 // Record created xAOD::Vertex in output vertex container
535 //
536 ATH_MSG_DEBUG("saveSecondaryVertices - will save " << vtxs.size() << " vertexes");
537
538 for(std::unique_ptr<xAOD::Vertex> &vtx: vtxs) {
539 int index = -99;
540 if(getVar(vtx, index, "SecondaryVertexIndex")) {
541 indexVector.push_back(index);
542 }
543 else {
544 ATH_MSG_WARNING("saveSecondaryVertices - missing \"SecondaryVertexIndex\" variable");
545 }
546
547 if(svSet.insert(vtx.get()).second) {
548 //
549 // First time seeing this this vertex - record it in output container
550 //
551 SVContainer.push_back(std::move(vtx));
552 ElementLink<xAOD::VertexContainer> svLink(SVContainer,SVContainer.size()-1);
553 svLinks.push_back(svLink);
554 } else {
555 ATH_MSG_ERROR("saveSecondaryVertices --- the same vertex has been encountered more than once! Is this a logic error?");
556 }
557 }
558
559 ATH_MSG_DEBUG("saveSecondaryVertices - all done");
560}
value_type push_back(value_type pElem)
Add an element to the end of the collection.
size_type size() const noexcept
Returns the number of elements in the collection.
str index
Definition DeMoScan.py:362

◆ sysInitialize()

StatusCode AthAlgorithm::sysInitialize ( )
overridevirtualinherited

Override sysInitialize.

Override sysInitialize from the base class.

Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc

Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc

Reimplemented from AthCommonDataStore< AthCommonMsg< Algorithm > >.

Reimplemented in AthAnalysisAlgorithm, AthFilterAlgorithm, AthHistogramAlgorithm, and PyAthena::Alg.

Definition at line 66 of file AthAlgorithm.cxx.

66 {
68
69 if (sc.isFailure()) {
70 return sc;
71 }
72 ServiceHandle<ICondSvc> cs("CondSvc",name());
73 for (auto h : outputHandles()) {
74 if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
75 // do this inside the loop so we don't create the CondSvc until needed
76 if ( cs.retrieve().isFailure() ) {
77 ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
78 return StatusCode::SUCCESS;
79 }
80 if (cs->regHandle(this,*h).isFailure()) {
81 sc = StatusCode::FAILURE;
82 ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
83 << " with CondSvc");
84 }
85 }
86 }
87 return sc;
88}
static Double_t sc
virtual StatusCode sysInitialize() override
Override sysInitialize.
AthCommonDataStore(const std::string &name, T... args)
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
::StatusCode StatusCode
StatusCode definition for legacy code.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Algorithm > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< Algorithm > >::updateVHKA ( Gaudi::Details::PropertyBase & )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308 {
309 // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310 // << " size: " << m_vhka.size() << endmsg;
311 for (auto &a : m_vhka) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }
std::vector< SG::VarHandleKeyArray * > m_vhka

Member Data Documentation

◆ m_countEvents

unsigned Prompt::NonPromptLeptonVertexingAlg::m_countEvents
private

Definition at line 156 of file NonPromptLeptonVertexingAlg.h.

◆ m_decoratorNameDeepMergedSecVtxLinks

SG::WriteDecorHandleKey<xAOD::IParticleContainer> Prompt::NonPromptLeptonVertexingAlg::m_decoratorNameDeepMergedSecVtxLinks { this, "DeepMergedSecVtxLinksName", m_leptonContainerKey, "default", }
private

Definition at line 164 of file NonPromptLeptonVertexingAlg.h.

165{ this, "DeepMergedSecVtxLinksName", m_leptonContainerKey, "default", };

◆ m_decoratorNameIndexVector

SG::WriteDecorHandleKey<xAOD::IParticleContainer> Prompt::NonPromptLeptonVertexingAlg::m_decoratorNameIndexVector { this, "IndexVectorName", m_leptonContainerKey, "", }
private

Definition at line 166 of file NonPromptLeptonVertexingAlg.h.

167{ this, "IndexVectorName", m_leptonContainerKey, "", };

◆ m_decoratorNameIndexVectorDeepMerge

SG::WriteDecorHandleKey<xAOD::IParticleContainer> Prompt::NonPromptLeptonVertexingAlg::m_decoratorNameIndexVectorDeepMerge { this, "IndexVectorNameDeepMerge", m_leptonContainerKey, "", }
private

Definition at line 168 of file NonPromptLeptonVertexingAlg.h.

169{ this, "IndexVectorNameDeepMerge", m_leptonContainerKey, "", };

◆ m_decoratorNameSecVtxLinks

SG::WriteDecorHandleKey<xAOD::IParticleContainer> Prompt::NonPromptLeptonVertexingAlg::m_decoratorNameSecVtxLinks { this, "SecVtxLinksName", m_leptonContainerKey, "default", }
private

Definition at line 162 of file NonPromptLeptonVertexingAlg.h.

163{ this, "SecVtxLinksName", m_leptonContainerKey, "default", };

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Algorithm > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default).

Definition at line 393 of file AthCommonDataStore.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Algorithm > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default).

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthAlgorithm::m_extendedExtraObjects
privateinherited

Definition at line 79 of file AthAlgorithm.h.

◆ m_inDetTracksKey

SG::ReadHandleKey<xAOD::TrackParticleContainer> Prompt::NonPromptLeptonVertexingAlg::m_inDetTracksKey
private
Initial value:
{
this, "InDetTrackParticlesKey", "InDetTrackParticles"
}

Definition at line 133 of file NonPromptLeptonVertexingAlg.h.

133 {
134 this, "InDetTrackParticlesKey", "InDetTrackParticles"
135 };

◆ m_leptonContainerKey

SG::ReadHandleKey<xAOD::IParticleContainer> Prompt::NonPromptLeptonVertexingAlg::m_leptonContainerKey
private
Initial value:
{
this, "LeptonContainerName", "default"
}

Definition at line 136 of file NonPromptLeptonVertexingAlg.h.

136 {
137 this, "LeptonContainerName", "default"
138 };

◆ m_linkNameRefittedPriVtxWithoutLepton

Gaudi::Property<std::string> Prompt::NonPromptLeptonVertexingAlg::m_linkNameRefittedPriVtxWithoutLepton {this, "NoLeptonPriVtxLinkName"}
private

Definition at line 114 of file NonPromptLeptonVertexingAlg.h.

114{this, "NoLeptonPriVtxLinkName"};

◆ m_maxTrackEta

Gaudi::Property<float> Prompt::NonPromptLeptonVertexingAlg::m_maxTrackEta {this, "maxTrackEta", 2.5}
private

Definition at line 121 of file NonPromptLeptonVertexingAlg.h.

121{this, "maxTrackEta", 2.5};

◆ m_maxTrackLeptonDR

Gaudi::Property<float> Prompt::NonPromptLeptonVertexingAlg::m_maxTrackLeptonDR {this, "maxTrackLeptonDR", 0.4}
private

Definition at line 125 of file NonPromptLeptonVertexingAlg.h.

125{this, "maxTrackLeptonDR", 0.4};

◆ m_maxTrackPixHoles

Gaudi::Property<unsigned> Prompt::NonPromptLeptonVertexingAlg::m_maxTrackPixHoles {this, "maxTrackPixHoles", 1}
private

Definition at line 130 of file NonPromptLeptonVertexingAlg.h.

130{this, "maxTrackPixHoles", 1};

◆ m_maxTrackSharedSiHits

Gaudi::Property<float> Prompt::NonPromptLeptonVertexingAlg::m_maxTrackSharedSiHits {this, "maxTrackSharedSiHits", 1.0}
private

Definition at line 128 of file NonPromptLeptonVertexingAlg.h.

128{this, "maxTrackSharedSiHits", 1.0};

◆ m_maxTrackSiHoles

Gaudi::Property<unsigned> Prompt::NonPromptLeptonVertexingAlg::m_maxTrackSiHoles {this, "maxTrackSiHoles", 2}
private

Definition at line 129 of file NonPromptLeptonVertexingAlg.h.

129{this, "maxTrackSiHoles", 2};

◆ m_maxTrackZ0Sin

Gaudi::Property<float> Prompt::NonPromptLeptonVertexingAlg::m_maxTrackZ0Sin {this, "maxTrackZ0Sin", 1.0}
private

Definition at line 122 of file NonPromptLeptonVertexingAlg.h.

122{this, "maxTrackZ0Sin", 1.0};

◆ m_mergeChi2OverDoF

Gaudi::Property<double> Prompt::NonPromptLeptonVertexingAlg::m_mergeChi2OverDoF {this, "MergeChi2OverDoF", 5.0}
private

Definition at line 112 of file NonPromptLeptonVertexingAlg.h.

112{this, "MergeChi2OverDoF", 5.0};

◆ m_mergeMinVtxDist

Gaudi::Property<double> Prompt::NonPromptLeptonVertexingAlg::m_mergeMinVtxDist {this, "MergeMinVtxDist", 1.0}
private

Definition at line 111 of file NonPromptLeptonVertexingAlg.h.

111{this, "MergeMinVtxDist", 1.0};

◆ m_minTrackLeptonDR

Gaudi::Property<float> Prompt::NonPromptLeptonVertexingAlg::m_minTrackLeptonDR {this, "minTrackLeptonDR", 1.0e-6}
private

Definition at line 124 of file NonPromptLeptonVertexingAlg.h.

124{this, "minTrackLeptonDR", 1.0e-6};

◆ m_minTrackpT

Gaudi::Property<float> Prompt::NonPromptLeptonVertexingAlg::m_minTrackpT {this, "minTrackpT", 500.0}
private

Definition at line 120 of file NonPromptLeptonVertexingAlg.h.

120{this, "minTrackpT", 500.0};

◆ m_minTrackSiHits

Gaudi::Property<unsigned> Prompt::NonPromptLeptonVertexingAlg::m_minTrackSiHits {this, "minTrackSiHits", 7}
private

Definition at line 127 of file NonPromptLeptonVertexingAlg.h.

127{this, "minTrackSiHits", 7};

◆ m_primaryVertexContainerName

SG::ReadHandleKey<xAOD::VertexContainer> Prompt::NonPromptLeptonVertexingAlg::m_primaryVertexContainerName
private
Initial value:
{
this, "PriVertexContainerName", "PrimaryVertices"
}

Definition at line 139 of file NonPromptLeptonVertexingAlg.h.

139 {
140 this, "PriVertexContainerName", "PrimaryVertices"
141 };

◆ m_printTime

Gaudi::Property<bool> Prompt::NonPromptLeptonVertexingAlg::m_printTime {this, "PrintTime", false}
private

Definition at line 108 of file NonPromptLeptonVertexingAlg.h.

108{this, "PrintTime", false};

◆ m_refittedPriVtxContainerName

SG::ReadHandleKey<xAOD::VertexContainer> Prompt::NonPromptLeptonVertexingAlg::m_refittedPriVtxContainerName
private
Initial value:
{
this, "ReFitPriVtxContainerName", "default"
}

Definition at line 142 of file NonPromptLeptonVertexingAlg.h.

142 {
143 this, "ReFitPriVtxContainerName", "default"
144 };

◆ m_refittedVertexTypeName

Gaudi::Property<std::string> Prompt::NonPromptLeptonVertexingAlg::m_refittedVertexTypeName
private
Initial value:
{
this, "ReFitPriVtxTypeName", "refittedVertexType"
}

Definition at line 116 of file NonPromptLeptonVertexingAlg.h.

116 {
117 this, "ReFitPriVtxTypeName", "refittedVertexType"
118 };

◆ m_selectTracks

Gaudi::Property<bool> Prompt::NonPromptLeptonVertexingAlg::m_selectTracks {this, "SelectTracks", true}
private

Definition at line 109 of file NonPromptLeptonVertexingAlg.h.

109{this, "SelectTracks", true};

◆ m_svContainerName

SG::WriteHandleKey<xAOD::VertexContainer> Prompt::NonPromptLeptonVertexingAlg::m_svContainerName
private
Initial value:
{
this, "SVContainerName", "default"
}

Definition at line 145 of file NonPromptLeptonVertexingAlg.h.

145 {
146 this, "SVContainerName", "default"
147 };

◆ m_timerAll

TStopwatch Prompt::NonPromptLeptonVertexingAlg::m_timerAll
private

Definition at line 153 of file NonPromptLeptonVertexingAlg.h.

◆ m_timerExec

TStopwatch Prompt::NonPromptLeptonVertexingAlg::m_timerExec
private

Definition at line 154 of file NonPromptLeptonVertexingAlg.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< Algorithm > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vertexFitterTool

ToolHandle<Prompt::VertexFittingTool> Prompt::NonPromptLeptonVertexingAlg::m_vertexFitterTool
private
Initial value:
{
this, "VertexFittingTool", "Prompt::VertexFittingTool/VertexFittingTool"
}

Definition at line 101 of file NonPromptLeptonVertexingAlg.h.

101 {
102 this, "VertexFittingTool", "Prompt::VertexFittingTool/VertexFittingTool"
103 };

◆ m_vertexMerger

ToolHandle<Prompt::IVertexMergingTool> Prompt::NonPromptLeptonVertexingAlg::m_vertexMerger
private
Initial value:
{
this, "VertexMergingTool",
"Prompt::VertexMergingTool/PromptVertexMergingTool"
}

Definition at line 97 of file NonPromptLeptonVertexingAlg.h.

97 {
98 this, "VertexMergingTool",
99 "Prompt::VertexMergingTool/PromptVertexMergingTool"
100 };

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< Algorithm > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files: