|
ATLAS Offline Software
|
#include <InDetJetFitterVxFinder.h>
|
virtual StatusCode | initialize () override |
|
| InDetJetFitterVxFinder (const std::string &t, const std::string &n, const IInterface *p) |
|
| ~InDetJetFitterVxFinder () |
|
virtual Trk::VxSecVertexInfo * | findSecVertex (const xAOD::Vertex &, const TLorentzVector &, const std::vector< const xAOD::IParticle * > &) const override |
|
const Trk::VxSecVertexInfo * | findSecVertex (const Trk::RecVertex &primaryVertex, const TLorentzVector &jetMomentum, const std::vector< const Trk::TrackParticleBase * > &inputTracks) const |
|
const Trk::VxSecVertexInfo * | findSecVertex (const Trk::RecVertex &primaryVertex, const TLorentzVector &jetMomentum, const std::vector< const Trk::TrackParticleBase * > &firstInputTracks, const std::vector< const Trk::TrackParticleBase * > &secondInputTracks, const Amg::Vector3D &vtxSeedDirection) const |
|
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 | sysInitialize () override |
| Perform system initialization for an algorithm. 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 |
|
virtual std::vector< std::string > | trackDecorationNames () const |
| Return a list of the names of track decorations created by this tool, in order to allow them to be locked when the calling algorithm completes. More...
|
|
|
ToolHandle< Trk::JetFitterInitializationHelper > | m_initializationHelper {this,"JetFitterInitializationHelper","Trk::JetFitterInitializationHelper",""} |
|
ToolHandle< Trk::JetFitterHelper > | m_helper {this,"JetFitterHelper","Trk::JetFitterHelper",""} |
|
ToolHandle< Trk::JetFitterRoutines > | m_routines {this,"JetFitterRoutines","Trk::JetFitterRoutines",""} |
|
ToolHandle< Trk::ITrackSelectorTool > | m_trkFilter {this,"TrackSelector","InDet::InDetDetailedTrackSelectorTool",""} |
|
Gaudi::Property< int > | m_maxNumDeleteIterations {this,"MaxNumDeleteIterations",30,""} |
|
Gaudi::Property< float > | m_vertexProbCut {this,"VertexProbCut",0.01,""} |
|
Gaudi::Property< int > | m_maxClusteringIterations {this,"MaxClusteringIterations",30,""} |
|
Gaudi::Property< float > | m_vertexClusteringProbabilityCut {this,"VertexClusteringProbabilityCut",0.01,""} |
|
Gaudi::Property< bool > | m_useFastClustering {this,"UseFastClustering",false,""} |
|
Gaudi::Property< int > | m_maxTracksToFitAtOnce {this,"MaxTracksToFitAtOnce",15,""} |
|
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 |
|
Definition at line 53 of file InDetJetFitterVxFinder.h.
◆ StoreGateSvc_t
◆ InDetJetFitterVxFinder()
InDet::InDetJetFitterVxFinder::InDetJetFitterVxFinder |
( |
const std::string & |
t, |
|
|
const std::string & |
n, |
|
|
const IInterface * |
p |
|
) |
| |
◆ ~InDetJetFitterVxFinder()
InDet::InDetJetFitterVxFinder::~InDetJetFitterVxFinder |
( |
| ) |
|
|
default |
◆ 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()
◆ doTheFit()
void InDet::InDetJetFitterVxFinder::doTheFit |
( |
Trk::VxJetCandidate * |
myJetCandidate, |
|
|
bool |
performClustering = true |
|
) |
| const |
|
private |
Definition at line 284 of file InDetJetFitterVxFinder.cxx.
297 if (*verticesIter==
nullptr) {
298 if (
msgLvl(MSG::WARNING))
msg() <<
"One vertex is empy. Problem when trying to delete incompatible vertices. No further vertices deleted." <<
endmsg;
303 worseVertex=*verticesIter;
308 if (
msgLvl(
MSG::DEBUG))
msg() <<
"Deleted vertex " << worseVertex->getNumVertex() <<
" with probability " << max_prob <<
endmsg;
311 if (
msgLvl(MSG::INFO))
msg() <<
" The most incompatible vertex is the primary vertex. Please check..." <<
endmsg;
314 m_routines->deleteVertexFromJetCandidate(worseVertex,myJetCandidate);
317 noMoreTracksToDelete=
true;
324 if (!performClustering)
break;
327 m_routines->fillTableWithFullProbOfMerging(myJetCandidate,5,
false,10,0.01);
329 m_routines->fillTableWithFastProbOfMerging(myJetCandidate);
336 if (clusteringTablePtr==
nullptr) {
337 if (
msgLvl(MSG::WARNING))
msg() <<
" No Clustering Table while it should have been calculated... no more clustering performed during vertexing " <<
endmsg;
338 noMoreVerticesToCluster=
true;
344 float probVertex(0.);
349 if (
msgLvl(
MSG::VERBOSE))
msg() <<
" merging vtx number " << (*pairOfVxVertexOnJetAxis.first).getNumVertex() <<
350 " and " << (*pairOfVxVertexOnJetAxis.second).getNumVertex() <<
endmsg;
352 m_helper->mergeVerticesInJetCandidate(*pairOfVxVertexOnJetAxis.first,
353 *pairOfVxVertexOnJetAxis.second,
359 noMoreVerticesToCluster=
true;
362 numClusteringLoops+=1;
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ 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
◆ findSecVertex() [1/3]
Definition at line 187 of file InDetJetFitterVxFinder.cxx.
190 tracksToAdd.push_back(*tracks2Iter);
193 bunchesOfTracks.push_back(tracksToAdd);
196 std::vector<const Trk::TrackParticleBase*>::const_iterator tracks3Begin=secondInputTracks.begin();
197 std::vector<const Trk::TrackParticleBase*>::const_iterator tracks3End=secondInputTracks.end();
198 for (std::vector<const Trk::TrackParticleBase*>::const_iterator tracks3Iter=tracks3Begin;
199 tracks3Iter!=tracks3End;++tracks3Iter) {
201 tracksToAdd.push_back(*tracks3Iter);
204 if (!tracksToAdd.empty())
206 bunchesOfTracks.push_back(tracksToAdd);
216 std::vector<std::vector<const Trk::TrackParticleBase*> >::const_iterator BunchesBegin=bunchesOfTracks.begin();
217 std::vector<std::vector<const Trk::TrackParticleBase*> >::const_iterator BunchesEnd=bunchesOfTracks.end();
219 std::vector<const Trk::TrackParticleBase*>::const_iterator tracksToAddBegin;
220 std::vector<const Trk::TrackParticleBase*>::const_iterator tracksToAddEnd;
221 std::vector<const Trk::TrackParticleBase*>::const_iterator tracksToAddIter;
226 for (std::vector<std::vector<const Trk::TrackParticleBase*> >::const_iterator BunchesIter=BunchesBegin;
227 BunchesIter!=BunchesEnd;++BunchesIter) {
229 if (BunchesIter==BunchesBegin) {
231 myJetCandidate=
m_initializationHelper->initializeJetCandidate(*BunchesIter,&primaryVertex,&myDirection,&vtxSeedDirection);
232 m_routines->initializeToMinDistancesToJetAxis(myJetCandidate);
233 if (!(*BunchesIter).empty())
240 std::vector<Trk::VxTrackAtVertex*>* setOfTracks=myJetCandidate->
vxTrackAtVertex();
241 tracksToAddBegin=(*BunchesIter).begin();
242 tracksToAddEnd=(*BunchesIter).end();
243 for (tracksToAddIter=tracksToAddBegin;tracksToAddIter!=tracksToAddEnd;++tracksToAddIter) {
244 std::vector<Trk::VxTrackAtVertex*> temp_vector_tracksAtVertex;
249 temp_vector_tracksAtVertex.push_back(newVxTrack);
250 setOfTracks->push_back(newVxTrack);
256 m_routines->initializeToMinDistancesToJetAxis(myJetCandidate);
261 std::vector<Trk::VxCandidate*> myCandidates;
262 myCandidates.push_back(myJetCandidate);
270 bool performClustering)
const {
273 int numClusteringLoops=0;
274 bool noMoreVerticesToCluster(
false);
281 bool noMoreTracksToDelete(
false);
◆ findSecVertex() [2/3]
Definition at line 100 of file InDetJetFitterVxFinder.cxx.
113 tracksToAdd.push_back((*tracks2Iter).second);
116 bunchesOfTracks.push_back(tracksToAdd);
121 bunchesOfTracks.push_back(tracksToAdd);
123 std::vector<std::vector<const Trk::TrackParticleBase*> >::const_iterator BunchesBegin=bunchesOfTracks.begin();
124 std::vector<std::vector<const Trk::TrackParticleBase*> >::const_iterator BunchesEnd=bunchesOfTracks.end();
126 std::vector<const Trk::TrackParticleBase*>::const_iterator tracksToAddBegin;
127 std::vector<const Trk::TrackParticleBase*>::const_iterator tracksToAddEnd;
128 std::vector<const Trk::TrackParticleBase*>::const_iterator tracksToAddIter;
133 for (std::vector<std::vector<const Trk::TrackParticleBase*> >::const_iterator BunchesIter=BunchesBegin;
134 BunchesIter!=BunchesEnd;++BunchesIter) {
136 if (BunchesIter==BunchesBegin) {
139 m_routines->initializeToMinDistancesToJetAxis(myJetCandidate);
144 std::vector<Trk::VxTrackAtVertex*>* setOfTracks=myJetCandidate->
vxTrackAtVertex();
145 tracksToAddBegin=(*BunchesIter).begin();
146 tracksToAddEnd=(*BunchesIter).end();
147 for (tracksToAddIter=tracksToAddBegin;tracksToAddIter!=tracksToAddEnd;++tracksToAddIter) {
148 std::vector<Trk::VxTrackAtVertex*> temp_vector_tracksAtVertex;
153 temp_vector_tracksAtVertex.push_back(newVxTrack);
154 setOfTracks->push_back(newVxTrack);
164 std::vector<Trk::VxCandidate*> myCandidates;
165 myCandidates.push_back(myJetCandidate);
173 const TLorentzVector & jetMomentum,
174 const std::vector<const Trk::TrackParticleBase*> & firstInputTracks,
175 const std::vector<const Trk::TrackParticleBase*> & secondInputTracks,
179 Amg::Vector3D myDirection(jetMomentum.Vect().X(),jetMomentum.Vect().Y(),jetMomentum.Vect().Z());
181 std::vector<std::vector<const Trk::TrackParticleBase*> > bunchesOfTracks;
183 std::vector<const Trk::TrackParticleBase*> tracksToAdd;
185 std::vector<const Trk::TrackParticleBase*>::const_iterator tracks2Begin=firstInputTracks.begin();
◆ findSecVertex() [3/3]
◆ initialize()
StatusCode InDet::InDetJetFitterVxFinder::initialize |
( |
| ) |
|
|
overridevirtual |
Definition at line 88 of file InDetJetFitterVxFinder.cxx.
96 if (
m_trkFilter->decision(**tracksIter,&primaryVertex)) {
97 tracks.emplace_back((*tracksIter)->perigee()->momentum().perp(),*tracksIter);
◆ 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.
◆ interfaceID()
static const InterfaceID& InDet::ISecVertexInJetFinder::interfaceID |
( |
| ) |
|
|
inlinestaticinherited |
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ outputHandles()
Return this algorithm's output handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ renounce()
◆ renounceArray()
◆ sysInitialize()
◆ sysStart()
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
◆ trackDecorationNames()
virtual std::vector<std::string> InDet::ISecVertexInJetFinder::trackDecorationNames |
( |
| ) |
const |
|
inlinevirtualinherited |
Return a list of the names of track decorations created by this tool, in order to allow them to be locked when the calling algorithm completes.
Return an empty list by default.
Reimplemented in InDet::InDetImprovedJetFitterVxFinder.
Definition at line 72 of file ISecVertexInJetFinder.h.
74 return std::vector<std::string>();
◆ updateVHKA()
◆ m_detStore
◆ m_evtStore
◆ m_helper
◆ m_initializationHelper
◆ m_maxClusteringIterations
Gaudi::Property< int > InDet::InDetJetFitterVxFinder::m_maxClusteringIterations {this,"MaxClusteringIterations",30,""} |
|
private |
◆ m_maxNumDeleteIterations
Gaudi::Property< int > InDet::InDetJetFitterVxFinder::m_maxNumDeleteIterations {this,"MaxNumDeleteIterations",30,""} |
|
private |
◆ m_maxTracksToFitAtOnce
Gaudi::Property< int > InDet::InDetJetFitterVxFinder::m_maxTracksToFitAtOnce {this,"MaxTracksToFitAtOnce",15,""} |
|
private |
◆ m_routines
◆ m_trkFilter
◆ m_useFastClustering
Gaudi::Property< bool > InDet::InDetJetFitterVxFinder::m_useFastClustering {this,"UseFastClustering",false,""} |
|
private |
◆ m_varHandleArraysDeclared
◆ m_vertexClusteringProbabilityCut
Gaudi::Property< float > InDet::InDetJetFitterVxFinder::m_vertexClusteringProbabilityCut {this,"VertexClusteringProbabilityCut",0.01,""} |
|
private |
◆ m_vertexProbCut
Gaudi::Property< float > InDet::InDetJetFitterVxFinder::m_vertexProbCut {this,"VertexProbCut",0.01,""} |
|
private |
◆ m_vhka
The documentation for this class was generated from the following files:
ToolHandle< Trk::JetFitterRoutines > m_routines
const std::vector< VxVertexOnJetAxis * > & getVerticesOnJetAxis(void) const
Gaudi::Property< int > m_maxNumDeleteIterations
The VxTrackAtVertex is a common class for all present TrkVertexFitters The VxTrackAtVertex is designe...
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
ToolHandle< Trk::JetFitterInitializationHelper > m_initializationHelper
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
VxVertexOnJetAxis inherits from Vertex.
bool msgLvl(const MSG::Level lvl) const
ToolHandle< Trk::JetFitterHelper > m_helper
virtual Trk::VxSecVertexInfo * findSecVertex(const xAOD::Vertex &, const TLorentzVector &, const std::vector< const xAOD::IParticle * > &) const override
Trk::RecVertex inherits from Trk::Vertex.
virtual void setOwner(IDataHandleHolder *o)=0
Gaudi::Property< int > m_maxTracksToFitAtOnce
const VxVertexOnJetAxis * getPrimaryVertex(void) const
ToolHandle< Trk::ITrackSelectorTool > m_trkFilter
std::vector< Trk::VxTrackAtVertex * > * vxTrackAtVertex(void)
Unconst pointer to the vector of tracks Required by some of the vertex fitters.
Class to represent and store fit qualities from track reconstruction in terms of and number of degre...
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
int numberDoF() const
returns the number of degrees of freedom of the overall track or vertex fit as integer
Gaudi::Property< bool > m_useFastClustering
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
ElementLink implementation for ROOT usage.
bool setElement(ElementType element)
Set to point to an element.
Gaudi::Property< int > m_maxClusteringIterations
Eigen::Matrix< double, 3, 1 > Vector3D
FitQualityOnSurface fitQuality(const MultiComponentState &, const MeasurementBase &)
Method for determining the chi2 of the multi-component state and the number of degrees of freedom.
Trk::VxClusteringTable *& getClusteringTable(void)
void doTheFit(Trk::VxJetCandidate *myJetCandidate, bool performClustering=true) const
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
void setVerticesOnJetAxis(const std::vector< VxVertexOnJetAxis * > &)
Gaudi::Property< float > m_vertexClusteringProbabilityCut
Gaudi::Property< float > m_vertexProbCut
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
double chiSquared() const
returns the of the overall track fit