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

◆ decoratorVecInt_t

◆ 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
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 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 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)
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
std::vector< std::unique_ptr< xAOD::Vertex > > prepLepWithTwoTrkSVVec(const FittingInput &input, const xAOD::TrackParticle *tracklep, const std::vector< const xAOD::TrackParticle * > &tracks)
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
SG::ReadHandleKey< xAOD::VertexContainer > m_refittedPriVtxContainerName
SG::ConstAccessor< T, ALLOC > ConstAccessor
Definition AuxElement.h:569
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 481 of file NonPromptLeptonVertexingAlg.cxx.

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

Definition at line 442 of file NonPromptLeptonVertexingAlg.cxx.

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

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

531{
532 //
533 // Record created xAOD::Vertex in output vertex container
534 //
535 ATH_MSG_DEBUG("saveSecondaryVertices - will save " << vtxs.size() << " vertexes");
536
537 for(std::unique_ptr<xAOD::Vertex> &vtx: vtxs) {
538 int index = -99;
539 if(getVar(vtx, index, "SecondaryVertexIndex")) {
540 indexVector.push_back(index);
541 }
542 else {
543 ATH_MSG_WARNING("saveSecondaryVertices - missing \"SecondaryVertexIndex\" variable");
544 }
545
546 if(svSet.insert(vtx.get()).second) {
547 //
548 // First time seeing this this vertex - record it in output container
549 //
550 SVContainer.push_back(std::move(vtx));
551 ElementLink<xAOD::VertexContainer> svLink(SVContainer,SVContainer.size()-1);
552 svLinks.push_back(svLink);
553 } else {
554 ATH_MSG_ERROR("saveSecondaryVertices --- the same vertex has been encountered more than once! Is this a logic error?");
555 }
556 }
557
558 ATH_MSG_DEBUG("saveSecondaryVertices - all done");
559}
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 155 of file NonPromptLeptonVertexingAlg.h.

◆ m_decoratorNameDeepMergedSecVtxLinks

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

Definition at line 163 of file NonPromptLeptonVertexingAlg.h.

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

◆ m_decoratorNameIndexVector

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

Definition at line 165 of file NonPromptLeptonVertexingAlg.h.

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

◆ m_decoratorNameIndexVectorDeepMerge

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

Definition at line 167 of file NonPromptLeptonVertexingAlg.h.

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

◆ m_decoratorNameSecVtxLinks

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

Definition at line 161 of file NonPromptLeptonVertexingAlg.h.

162{ 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 132 of file NonPromptLeptonVertexingAlg.h.

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

◆ m_leptonContainerKey

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

Definition at line 135 of file NonPromptLeptonVertexingAlg.h.

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

◆ m_linkNameRefittedPriVtxWithoutLepton

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

Definition at line 113 of file NonPromptLeptonVertexingAlg.h.

113{this, "NoLeptonPriVtxLinkName"};

◆ m_maxTrackEta

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

Definition at line 120 of file NonPromptLeptonVertexingAlg.h.

120{this, "maxTrackEta", 2.5};

◆ m_maxTrackLeptonDR

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

Definition at line 124 of file NonPromptLeptonVertexingAlg.h.

124{this, "maxTrackLeptonDR", 0.4};

◆ m_maxTrackPixHoles

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

Definition at line 129 of file NonPromptLeptonVertexingAlg.h.

129{this, "maxTrackPixHoles", 1};

◆ m_maxTrackSharedSiHits

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

Definition at line 127 of file NonPromptLeptonVertexingAlg.h.

127{this, "maxTrackSharedSiHits", 1.0};

◆ m_maxTrackSiHoles

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

Definition at line 128 of file NonPromptLeptonVertexingAlg.h.

128{this, "maxTrackSiHoles", 2};

◆ m_maxTrackZ0Sin

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

Definition at line 121 of file NonPromptLeptonVertexingAlg.h.

121{this, "maxTrackZ0Sin", 1.0};

◆ m_mergeChi2OverDoF

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

Definition at line 111 of file NonPromptLeptonVertexingAlg.h.

111{this, "MergeChi2OverDoF", 5.0};

◆ m_mergeMinVtxDist

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

Definition at line 110 of file NonPromptLeptonVertexingAlg.h.

110{this, "MergeMinVtxDist", 1.0};

◆ m_minTrackLeptonDR

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

Definition at line 123 of file NonPromptLeptonVertexingAlg.h.

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

◆ m_minTrackpT

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

Definition at line 119 of file NonPromptLeptonVertexingAlg.h.

119{this, "minTrackpT", 500.0};

◆ m_minTrackSiHits

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

Definition at line 126 of file NonPromptLeptonVertexingAlg.h.

126{this, "minTrackSiHits", 7};

◆ m_primaryVertexContainerName

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

Definition at line 138 of file NonPromptLeptonVertexingAlg.h.

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

◆ m_printTime

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

Definition at line 107 of file NonPromptLeptonVertexingAlg.h.

107{this, "PrintTime", false};

◆ m_refittedPriVtxContainerName

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

Definition at line 141 of file NonPromptLeptonVertexingAlg.h.

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

◆ m_refittedVertexTypeName

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

Definition at line 115 of file NonPromptLeptonVertexingAlg.h.

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

◆ m_selectTracks

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

Definition at line 108 of file NonPromptLeptonVertexingAlg.h.

108{this, "SelectTracks", true};

◆ m_svContainerName

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

Definition at line 144 of file NonPromptLeptonVertexingAlg.h.

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

◆ m_timerAll

TStopwatch Prompt::NonPromptLeptonVertexingAlg::m_timerAll
private

Definition at line 152 of file NonPromptLeptonVertexingAlg.h.

◆ m_timerExec

TStopwatch Prompt::NonPromptLeptonVertexingAlg::m_timerExec
private

Definition at line 153 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 100 of file NonPromptLeptonVertexingAlg.h.

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

◆ m_vertexMerger

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

Definition at line 96 of file NonPromptLeptonVertexingAlg.h.

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

◆ 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: