ATLAS Offline Software
Loading...
Searching...
No Matches
TrigBphysMonitorAlgorithm.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef TRIGBPHYSMONITORING_TRIGBPHYSMONITORALGORITHM_H
6#define TRIGBPHYSMONITORING_TRIGBPHYSMONITORALGORITHM_H
7
10
13
19
21public:
22 TrigBphysMonitorAlgorithm( const std::string& name, ISvcLocator* pSvcLocator );
24 virtual StatusCode initialize() override;
25 virtual StatusCode fillHistograms( const EventContext& ctx ) const override;
26
27
28private:
30
31 SG::ReadHandleKey<xAOD::MuonContainer> m_offlineMuonCollectionKey{this, "offlineMuonCollectionKey", "Muons"};
32 SG::ReadHandleKey<xAOD::TrackParticleContainer> m_offlineIDTrackCollectionKey{this, "offlineIDTrackCollectionKey", "InDetTrackParticles"};
33 SG::ReadHandleKey<xAOD::VertexContainer> m_offlinePvCollectionKey {this,"offlinePvCollectionKey","PrimaryVertices"};
34
35 Gaudi::Property<std::vector<std::string>> m_ChainNames_MuMu{this, "ChainNames_MuMu", {}};
36 Gaudi::Property<std::vector<std::string>> m_ChainNames_MuMuX{this, "ChainNames_MuMuX", {}};
37 Gaudi::Property<std::vector<std::string>> m_ChainNames_ElEl{this, "ChainNames_ElEl", {}};
38
39 Gaudi::Property<bool> m_requireExplicitESDecision{this, "requireExplicitESDecision", false};
40
41 Gaudi::Property<double> m_dimuMassLower_prefit{this, "dimuMassLower_prefit", 0.};
42 Gaudi::Property<double> m_dimuMassUpper_prefit{this, "dimuMassUpper_prefit", 16000.};
43 Gaudi::Property<double> m_dimuMassLower_postfit{this, "dimuMassLower_postfit", 0.};
44 Gaudi::Property<double> m_dimuMassUpper_postfit{this, "dimuMassUpper_postfit", 15000.};
45 Gaudi::Property<double> m_dimuChi2Cut{this, "dimuChi2Cut", 20.};
46
47 Gaudi::Property<double> m_deltaRMatchingThreshold{this, "deltaRMatchingThreshold", 0.05};
48
49 ToolHandle<InDet::VertexPointEstimator> m_vertexPointEstimator {this, "VertexPointEstimator", "", "tool to find starting point for the vertex fitter"};
50 ToolHandle<Trk::TrkVKalVrtFitter> m_vertexFitter {this, "VertexFitter", "", "VKalVrtFitter tool to fit tracks into the common vertex"};
51 ToolHandle<Trk::V0Tools> m_v0Tools {this, "V0Tools", "", "V0 tools to calculate things like Lxy"};
52
53 StatusCode fillContainers(const EventContext& ctx) const;
54 StatusCode fillContainerHists(const EventContext& ctx, const SG::ReadHandleKey<xAOD::TrigBphysContainer>& trigBphysContainerKey) const;
55
56 StatusCode fillChains(const EventContext& ctx) const;
57 StatusCode fillDimuonChainHists(const EventContext& ctx, const std::string& chainName) const;
58 StatusCode fillBmumuxChainHists(const EventContext& ctx, const std::string& chainName) const;
59 StatusCode fillDielectronChainHists(const EventContext& ctx, const std::string& chainName) const;
60 StatusCode fillChainGenericHists(const EventContext& /*ctx*/, const ToolHandle<GenericMonitoringTool>& currentMonGroup, const std::string& chainName) const;
61 StatusCode fillBphysObjectHists(const ToolHandle<GenericMonitoringTool>& currentMonGroup, const ElementLink<xAOD::TrigBphysContainer>& bphysLink, const std::string& objStr) const;
62 StatusCode fillTrigLeptonHists(const ToolHandle<GenericMonitoringTool>& currentMonGroup, const ElementLink<xAOD::TrigBphysContainer>& bphysLink, const std::string& name_prefix) const;
63 StatusCode fillTrigBmumuxTrkHists(const ToolHandle<GenericMonitoringTool>& currentMonGroup, const ElementLink<xAOD::TrigBphysContainer>& bphysLink, UInt_t tracksStartFrom = 2) const;
64 StatusCode fillDiTracksHists(const ToolHandle<GenericMonitoringTool>& currentMonGroup,
65 const std::vector<ElementLink<xAOD::TrackParticleContainer> >& tpLinkVector,
66 const std::string& name_prefix) const;
67 StatusCode fillTracksHists(const ToolHandle<GenericMonitoringTool>& currentMonGroup,
68 const std::vector<ElementLink<xAOD::TrackParticleContainer> >& tpLinkVector,
69 const std::string& prefix,
70 bool separateHists = false,
71 UInt_t offsetIndex = 0) const;
72 StatusCode fillTrkHists(const ToolHandle<GenericMonitoringTool>& currentMonGroup, const xAOD::TrackParticle* trk, const std::string& name_prefix) const;
73
74 StatusCode fillOfflineDimuons(const EventContext& ctx, const std::vector<std::unique_ptr<xAOD::Vertex>>& dimuonContainer) const;
75 StatusCode fillOfflineDimuonHists(const EventContext& /*ctx*/, const std::string& dimuonMonGroupName, const std::vector<std::unique_ptr<xAOD::Vertex>>& dimuonContainer) const;
76 StatusCode fillVertexHists(const ToolHandle<GenericMonitoringTool>& currentMonGroup, const xAOD::Vertex* vertex, const std::string& objStr) const;
77
78 bool isChainPassed(const std::string& chain) const;
79
80 StatusCode buildDimuons(const EventContext& ctx, std::vector<std::unique_ptr<xAOD::Vertex>>& vxContainer) const;
81 std::unique_ptr<xAOD::Vertex> dimuonFit(const xAOD::TrackParticle* mu1, const xAOD::TrackParticle* mu2) const;
82 double dimuonMass(const xAOD::TrackParticle* mu1, const xAOD::TrackParticle* mu2) const;
83 std::vector<const xAOD::Vertex*> GetGoodPVs(const xAOD::VertexContainer* pvContainer) const;
84 const xAOD::Vertex* getPvForDimuon_lowestA0(const xAOD::Vertex* vtx, const std::vector<const xAOD::Vertex*>& PVs) const;
85
86 bool matchDimuon(const xAOD::Vertex* dimuonVertex, const std::string& chainName) const;
87 bool matchDimuon(const xAOD::Vertex* dimuonVertex, const ElementLink<xAOD::TrigBphysContainer>& bphysLink) const;
88 bool matchTrackParticles(const xAOD::TrackParticle* trk1, const xAOD::TrackParticle* trk2) const;
89
90};
91#endif
Header file to be included by clients of the Monitored infrastructure.
AthMonitorAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor.
Property holding a SG store/key/clid from which a ReadHandle is made.
virtual StatusCode fillHistograms(const EventContext &ctx) const override
adds event to the monitoring histograms
Gaudi::Property< double > m_deltaRMatchingThreshold
SG::ReadHandleKey< xAOD::MuonContainer > m_offlineMuonCollectionKey
Gaudi::Property< double > m_dimuMassUpper_postfit
Gaudi::Property< double > m_dimuMassLower_prefit
Gaudi::Property< double > m_dimuMassLower_postfit
Gaudi::Property< std::vector< std::string > > m_ChainNames_MuMu
ToolHandle< Trk::V0Tools > m_v0Tools
Gaudi::Property< double > m_dimuMassUpper_prefit
Gaudi::Property< double > m_dimuChi2Cut
SG::ReadHandleKey< xAOD::VertexContainer > m_offlinePvCollectionKey
Gaudi::Property< std::vector< std::string > > m_ChainNames_MuMuX
ToolHandle< InDet::VertexPointEstimator > m_vertexPointEstimator
Gaudi::Property< bool > m_requireExplicitESDecision
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_offlineIDTrackCollectionKey
SG::ReadHandleKeyArray< xAOD::TrigBphysContainer > m_TrigBphysContainerKeys
Gaudi::Property< std::vector< std::string > > m_ChainNames_ElEl
ToolHandle< Trk::TrkVKalVrtFitter > m_vertexFitter
HandleKeyArray< ReadHandle< T >, ReadHandleKey< T >, Gaudi::DataHandle::Reader > ReadHandleKeyArray
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.
void initialize()