|
ATLAS Offline Software
|
This class uses primary vertex reconstruction to measure and monitor the LHC beam as seen by the ATLAS detector.
More...
#include <T2VertexBeamSpotTool.h>
|
| T2VertexBeamSpotTool (const std::string &type, const std::string &name, const IInterface *parent) |
|
virtual StatusCode | initialize () override final |
|
void | updateBS (const TrackCollection &tracks, const EventContext &ctx) const |
| Update beam spot data with new track information. More...
|
|
ServiceHandle< StoreGateSvc > & | evtStore () |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | evtStore () const |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | detStore () const |
| The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
virtual StatusCode | 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 |
|
|
unsigned | numHighPTTrack (const TrackVector &tracks) const |
| Return count of high pT track in the track list, the total number of these high pT tracks is checked in the selectTracks function and the threshold can be set via TrackSeedPt (by default 1 GeV) More...
|
|
unsigned int | reconstructVertices (TrackVector &tracks, TrigVertexCollection &myVertexCollection, DataVector< TrigVertexCollection > &mySplitVertexCollections, const EventContext &) const |
|
bool | isGoodVertex (const T2Vertex &vertex) const |
|
bool | isGoodVertexBCID (const T2Vertex &vertex) const |
|
void | reconstructSplitVertices (TrackVector &tracks, DataVector< TrigVertexCollection > &mySplitVertexCollections, T2TrackClusterer &trackClusterer, const InDet::BeamSpotData *indetBeamSpot, const EventContext &) const |
|
void | monitor_cluster (const T2TrackClusterer &clusterer) const |
|
void | monitor_cluster_tracks (T2TrackClusterer &clusterer, const Trk::Track &track) const |
|
void | monitor_vertex (const std::string &prefix, const std::string &suffix, const T2Vertex &vertex, int bcid=-1) const |
|
void | monitor_split_vertex (const std::string &prefix, const std::string &suffix, const T2SplitVertex &vertex) const |
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKey> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &) |
| specialization for handling Gaudi::Property<SG::VarHandleBase> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &) |
| specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
|
|
|
double | m_trackClusDZ |
|
bool | m_weightSeed |
|
bool | m_splitWholeCluster |
|
bool | m_reclusterSplit |
|
double | m_trackSeedPt |
|
std::string | m_clusterPerigee = "original" |
|
T2TrackClusterer::TrackPerigee | m_clusterTrackPerigee = T2TrackClusterer::perigee_original |
|
unsigned | m_totalNTrkMin |
|
unsigned int | m_vtxNTrkMin |
|
unsigned int | m_vtxNTrkMax |
|
double | m_vtxQualMin |
|
double | m_vtxQualMax |
|
double | m_vtxChi2ProbMin |
|
double | m_vtxMassMin |
|
double | m_vtxSumPtMin |
|
double | m_vtxXposMax |
|
double | m_vtxXerrMax |
|
double | m_vtxYposMax |
|
double | m_vtxYerrMax |
|
double | m_vtxZposMax |
|
double | m_vtxZerrMax |
|
unsigned int | m_vtxBCIDNTrkMin |
| Additional vertex selection criteria for BCID measurements. More...
|
|
unsigned | m_nSplitVertices |
|
bool | m_filterBS |
|
SG::ReadCondHandleKey< InDet::BeamSpotData > | m_beamSpotKey {this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot"} |
|
SG::WriteHandleKey< TrigVertexCollection > | m_outputVertexCollectionKey {this, "OutputVertexCollection", "myVertices", "SG key for output vertex collection"} |
|
ToolHandle< ITrigPrimaryVertexFitter > | m_primaryVertexFitterTool |
| Primary Vertex Fitter Tool. More...
|
|
ToolHandle< T2BSTrackFilterTool > | m_trackFilterTool {this, "TrackFilter", "PESA::T2BSTrackFilterTool/T2BSTrackFilterTool" } |
|
ToolHandle< GenericMonitoringTool > | m_monTool {this,"MonTool","","Monitoring tool"} |
|
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 |
|
◆ StoreGateSvc_t
◆ TrackVector
◆ T2VertexBeamSpotTool()
PESA::T2VertexBeamSpotTool::T2VertexBeamSpotTool |
( |
const std::string & |
type, |
|
|
const std::string & |
name, |
|
|
const IInterface * |
parent |
|
) |
| |
◆ declareGaudiProperty() [1/4]
specialization for handling Gaudi::Property<SG::VarHandleKeyArray>
Definition at line 170 of file AthCommonDataStore.h.
175 hndl.documentation());
◆ declareGaudiProperty() [2/4]
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition at line 156 of file AthCommonDataStore.h.
161 hndl.documentation());
◆ declareGaudiProperty() [3/4]
specialization for handling Gaudi::Property<SG::VarHandleBase>
Definition at line 184 of file AthCommonDataStore.h.
189 hndl.documentation());
◆ declareGaudiProperty() [4/4]
◆ declareProperty() [1/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleBase
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 245 of file AthCommonDataStore.h.
250 this->declare(hndl.
vhKey());
251 hndl.
vhKey().setOwner(
this);
253 return PBASE::declareProperty(
name,hndl,
doc);
◆ declareProperty() [2/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleKey
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 221 of file AthCommonDataStore.h.
229 return PBASE::declareProperty(
name,hndl,
doc);
◆ declareProperty() [3/6]
◆ declareProperty() [4/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This is the generic version, for types that do not derive from SG::VarHandleKey
. It just forwards to the base class version of declareProperty
.
Definition at line 333 of file AthCommonDataStore.h.
338 return PBASE::declareProperty(
name, property,
doc);
◆ declareProperty() [5/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This dispatches to either the generic declareProperty
or the one for VarHandle/Key/KeyArray.
Definition at line 352 of file AthCommonDataStore.h.
◆ declareProperty() [6/6]
◆ detStore()
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ 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
◆ initialize()
StatusCode T2VertexBeamSpotTool::initialize |
( |
| ) |
|
|
finaloverridevirtual |
◆ 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.
◆ isGoodVertex()
bool T2VertexBeamSpotTool::isGoodVertex |
( |
const T2Vertex & |
vertex | ) |
const |
|
private |
◆ isGoodVertexBCID()
bool T2VertexBeamSpotTool::isGoodVertexBCID |
( |
const T2Vertex & |
vertex | ) |
const |
|
private |
◆ monitor_cluster()
◆ monitor_cluster_tracks()
◆ monitor_split_vertex()
void T2VertexBeamSpotTool::monitor_split_vertex |
( |
const std::string & |
prefix, |
|
|
const std::string & |
suffix, |
|
|
const T2SplitVertex & |
vertex |
|
) |
| const |
|
private |
Definition at line 556 of file T2VertexBeamSpotTool.cxx.
583 auto mon =
Monitored::Group(
m_monTool, ntrk1,
x1,
y1, z1, x1err, y1err, z1err, ntrk2,
x2,
y2, z2, x2err, y2err, z2err,
584 dntrk,
dx,
dy, dz, dxerr, dyerr, dzerr, dxpull, dypull, dzpull);
◆ monitor_vertex()
void T2VertexBeamSpotTool::monitor_vertex |
( |
const std::string & |
prefix, |
|
|
const std::string & |
suffix, |
|
|
const T2Vertex & |
vertex, |
|
|
int |
bcid = -1 |
|
) |
| const |
|
private |
Definition at line 526 of file T2VertexBeamSpotTool.cxx.
549 auto mon =
Monitored::Group(
m_monTool, ntrk, sumpt, sumpt2,
mass,
qual,
chi2,
x,
y,
z, xzoom, yzoom, zzoom, xerr, yerr, zerr, xy,
pull, ntrkInVtx,
BCID );
551 auto mon =
Monitored::Group(
m_monTool, ntrk, sumpt, sumpt2,
mass,
qual,
chi2,
x,
y,
z, xzoom, yzoom, zzoom, xerr, yerr, zerr, xy,
pull, ntrkInVtx );
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ numHighPTTrack()
unsigned T2VertexBeamSpotTool::numHighPTTrack |
( |
const TrackVector & |
tracks | ) |
const |
|
private |
Return count of high pT track in the track list, the total number of these high pT tracks is checked in the selectTracks function and the threshold can be set via TrackSeedPt (by default 1 GeV)
Definition at line 176 of file T2VertexBeamSpotTool.cxx.
179 for (
auto&&
track: tracks) {
◆ 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.
◆ reconstructSplitVertices()
Definition at line 379 of file T2VertexBeamSpotTool.cxx.
397 vector<TrackVector> splitTrackCollections = trackManager.split(myFullTrackCollection, ctx);
402 mySplitVertexCollections.
push_back(splitVertices);
405 for (
auto&& tracks: splitTrackCollections) {
407 ATH_MSG_DEBUG(
"split vertex # of tracks " << tracks.size());
418 trackClusterer.
cluster(tracks, indetBeamSpot);
463 const T2SplitVertex splitVertex( *(*splitVertices)[0], *(*splitVertices)[1] );
◆ reconstructVertices()
Definition at line 193 of file T2VertexBeamSpotTool.cxx.
201 unsigned bcid = ctx.eventID().bunch_crossing_id();
229 std::vector<double> clusterZ0;
232 while ( ! tracks.empty() ) {
236 ATH_MSG_DEBUG(
"Number of tracks remaining = " << tracks.size() );
244 trackClusterer.cluster(tracks, indetBeamSpot);
249 if ( trackClusterer.clusterTracks().size() + trackClusterer.unusedTracks().size()
252 <<
"cluster().size()=" << trackClusterer.clusterTracks().size()
253 <<
" + unusedTracks().size()=" << trackClusterer.unusedTracks().size()
254 <<
" != tracks.size()=" << tracks.size()
259 tracks = trackClusterer.unusedTracks();
277 for (
auto&&
track: trackClusterer.clusterTracks()) {
281 ATH_MSG_DEBUG(
"Number of tracks remaining after cluster #(" << nClusters <<
") = " << tracks.size());
282 ATH_MSG_DEBUG(
"Total number of tracks to fit = " << trackClusterer.clusterTracks().size() );
283 ATH_MSG_DEBUG(
"Average Z position (from trk Z0) = " << trackClusterer.seedZ0() );
292 if ( ! primaryVertex ) {
300 const T2Vertex myVertex(*primaryVertex, vertexTracks,
beamSpot, trackClusterer.seedZ0());
309 if ( ! passVertex ) {
315 myVertexCollection.
push_back(primaryVertex);
328 for (
double prevClusterZ0: clusterZ0) {
332 clusterZ0.push_back(trackClusterer.seedZ0());
340 ATH_MSG_DEBUG(
"Splitting the entire cluster of tracks into two");
342 mySplitTrackCollection = trackClusterer.clusterTracks();
344 ATH_MSG_DEBUG(
"Splitting only tracks succesfully fitted to a vertex");
346 mySplitTrackCollection.assign(vertexTracks.begin(), vertexTracks.end());
358 ATH_MSG_DEBUG(
"Number of tracks remaining = " << tracks.size() );
363 if ( passVertexBCID ) {
375 return static_cast<unsigned int>(nPassVtx);
◆ 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.
◆ updateBS()
Update beam spot data with new track information.
Parameter provides a lists of tracks.
Definition at line 127 of file T2VertexBeamSpotTool.cxx.
135 auto& eventID = ctx.eventID();
137 eventID.bunch_crossing_id());
144 tSelectingTracks.stop();
151 nTotalPassedTracks, nTotalHighPTTracks);
152 ATH_MSG_DEBUG(
"Number of all Tracks: " << nTotalTracks <<
" Selected Tracks: " << nTotalPassedTracks <<
153 " highPt Tracks: " << nTotalHighPTTracks );
156 if (nTotalHighPTTracks == 0) {
168 myVertexCollection = std::make_unique<TrigVertexCollection>();
◆ updateVHKA()
◆ m_beamSpotKey
◆ m_clusterPerigee
std::string PESA::T2VertexBeamSpotTool::m_clusterPerigee = "original" |
|
private |
◆ m_clusterTrackPerigee
◆ m_detStore
◆ m_evtStore
◆ m_filterBS
bool PESA::T2VertexBeamSpotTool::m_filterBS |
|
private |
◆ m_monTool
◆ m_nSplitVertices
unsigned PESA::T2VertexBeamSpotTool::m_nSplitVertices |
|
private |
◆ m_outputVertexCollectionKey
◆ m_primaryVertexFitterTool
◆ m_reclusterSplit
bool PESA::T2VertexBeamSpotTool::m_reclusterSplit |
|
private |
◆ m_splitWholeCluster
bool PESA::T2VertexBeamSpotTool::m_splitWholeCluster |
|
private |
◆ m_totalNTrkMin
unsigned PESA::T2VertexBeamSpotTool::m_totalNTrkMin |
|
private |
◆ m_trackClusDZ
double PESA::T2VertexBeamSpotTool::m_trackClusDZ |
|
private |
◆ m_trackFilterTool
◆ m_trackSeedPt
double PESA::T2VertexBeamSpotTool::m_trackSeedPt |
|
private |
◆ m_varHandleArraysDeclared
◆ m_vhka
◆ m_vtxBCIDNTrkMin
unsigned int PESA::T2VertexBeamSpotTool::m_vtxBCIDNTrkMin |
|
private |
◆ m_vtxChi2ProbMin
double PESA::T2VertexBeamSpotTool::m_vtxChi2ProbMin |
|
private |
◆ m_vtxMassMin
double PESA::T2VertexBeamSpotTool::m_vtxMassMin |
|
private |
◆ m_vtxNTrkMax
unsigned int PESA::T2VertexBeamSpotTool::m_vtxNTrkMax |
|
private |
◆ m_vtxNTrkMin
unsigned int PESA::T2VertexBeamSpotTool::m_vtxNTrkMin |
|
private |
◆ m_vtxQualMax
double PESA::T2VertexBeamSpotTool::m_vtxQualMax |
|
private |
◆ m_vtxQualMin
double PESA::T2VertexBeamSpotTool::m_vtxQualMin |
|
private |
◆ m_vtxSumPtMin
double PESA::T2VertexBeamSpotTool::m_vtxSumPtMin |
|
private |
◆ m_vtxXerrMax
double PESA::T2VertexBeamSpotTool::m_vtxXerrMax |
|
private |
◆ m_vtxXposMax
double PESA::T2VertexBeamSpotTool::m_vtxXposMax |
|
private |
◆ m_vtxYerrMax
double PESA::T2VertexBeamSpotTool::m_vtxYerrMax |
|
private |
◆ m_vtxYposMax
double PESA::T2VertexBeamSpotTool::m_vtxYposMax |
|
private |
◆ m_vtxZerrMax
double PESA::T2VertexBeamSpotTool::m_vtxZerrMax |
|
private |
◆ m_vtxZposMax
double PESA::T2VertexBeamSpotTool::m_vtxZposMax |
|
private |
◆ m_weightSeed
bool PESA::T2VertexBeamSpotTool::m_weightSeed |
|
private |
The documentation for this class was generated from the following files:
Group
Properties of a chain group.
double seedZ0() const
Z0 position of a seed track that was used for clustering.
const TrackVector & clusterTracks() const
This is the same vector as returned from clustering method, have to be called after return from a clu...
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Scalar theta() const
theta method
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
#define AmgSymMatrix(dim)
static TrackPerigee trackPerigeeFromString(const std::string &perigeeStr)
virtual void setOwner(IDataHandleHolder *o)=0
const TrackVector & cluster(const TrackVector &tracks, const InDet::BeamSpotData *beamspot=nullptr)
Find one cluster in a set of tracks.
DataVector< Trk::Track > TrackCollection
This typedef represents a collection of Trk::Track objects.
double chi2(TH1 *h0, TH1 *h1)
Athena::TPCnvVers::Old Athena::TPCnvVers::Current Athena::TPCnvVers::Current Athena::TPCnvVers::Old Athena::TPCnvVers::Old Athena::TPCnvVers::Old Athena::TPCnvVers::Current Athena::TPCnvVers::Current Athena::TPCnvVers::Current Athena::TPCnvVers::Current Athena::TPCnvVers::Current Athena::TPCnvVers::Current Athena::TPCnvVers::Old TrigVertexCollection
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
value_type push_back(value_type pElem)
Add an element to the end of the collection.
StatusCode initialize(bool used=true)
setEventNumber setTimeStamp bcid
void sort(typename std::reverse_iterator< DataModel_detail::iterator< DVL > > beg, typename std::reverse_iterator< DataModel_detail::iterator< DVL > > end, const Compare &comp)
Specialization of sort for DataVector/List.
DataVector adapter that acts like it holds const pointers.
const TrackVector & unusedTracks() const
Tracks that were not included into cluster, have to be called after return from a clustering method.
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
AthConfigFlags beamSpot(AthConfigFlags flags, str instanceName, str recoMode)
Declare a monitored scalar variable.
size_type size() const noexcept
Returns the number of elements in the collection.
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>