4#ifndef DERIVATIONFRAMEWORK_FourLeptonVertexingAlgorithm_H
5#define DERIVATIONFRAMEWORK_FourLeptonVertexingAlgorithm_H
30 StatusCode
execute(
const EventContext& ctx)
const override;
49 "Location of the input muon container in the StoreGate"};
51 "Location of the electron container in the store gate"};
54 ToolHandle<CP::IMuonSelectionTool>
m_muonSelTool{
this,
"MuonSelectionTool",
"",
55 "Applied preselection on the muons. Will be ignored if empty"};
56 ToolHandle<IAsgElectronLikelihoodTool>
m_elecSelTool{
this,
"ElectronSelectionTool",
"",
57 "Applied preselection on the electrons. Will be ignored if empty"};
59 ToolHandle<Trk::IVertexFitter>
m_fitter{
this,
"VertexFitter",
"",
"Vertex fitter tool"};
61 Gaudi::Property<float>
m_minMuonPt{
this,
"MinMuonPt", 3. * Gaudi::Units::GeV,
62 "Minimum pt cut applied on the muon -- Unfortunately not handled by the MST"};
63 Gaudi::Property<float>
m_minElecPt{
this,
"MinElecPt", 4.5 * Gaudi::Units::GeV,
" Minimum pt cut applied on the electron"};
65 using MuonTrk = xAOD::Muon::TrackParticleType;
66 Gaudi::Property<int>
m_muonTrkProp{
this,
"PickMuonTrk", MuonTrk::InnerDetectorTrackParticle,
67 "Pick the proper track particle from the muon"};
71 "If this property is set to true it will pick up the electron GSF track"};
73 Gaudi::Property<float>
m_z0Cut{
this,
"DeltaZ0Cut", 7.5 * Gaudi::Units::mm,
74 "All leptons in the quadruplet have to be seperated from each other by maximum"};
77 Gaudi::Property<float>
m_lowSFOS_Cut{
this,
"LowSFOSMass", 3.5 * Gaudi::Units::GeV,
"Minimal mass for the lower SFOS pair"};
78 Gaudi::Property<float>
m_highPair_Cut{
this,
"HighMassPair", 40.*Gaudi::Units::GeV,
"Minimum mass for the largest lepton pair"};
80 Gaudi::Property<float>
m_LeadPtCut{
this,
"LeadingLeptonPt", 15. *Gaudi::Units::GeV,
"Minimal momentum of the leading lepton in the quad "};
81 Gaudi::Property<float>
m_SubLeadPtCut{
this,
"SubLeadingLeptonPt", 10. *Gaudi::Units::GeV,
"Minimal momentum of the leading lepton in the quad "};
83 Gaudi::Property<float>
m_VtxChi2Cut{
this,
"VertexChi2Cut", 20,
"Maximal chii n.D.o.F cut on the reconstructed vertex" };
87 Gaudi::Property<bool>
m_pruneCov{
this,
"PruneCovariance",
true,
"Clears the covariance vector"};
88 Gaudi::Property<bool>
m_pruneWeight{
this,
"PruneTrackWeights",
true,
"Clears the track weight vector"};
Property holding a SG store/key/clid from which a ReadHandle is made.
Property holding a SG store/key/clid from which a WriteHandle is made.
Define macros for attributes used to control the static checker.
An algorithm that can be simultaneously executed in multiple threads.
const xAOD::TrackParticle * trackParticle(const xAOD::IParticle *part) const
Gaudi::Property< bool > m_pruneCov
SG::WriteHandleKey< xAOD::VertexContainer > m_vtxKey
xAOD::Muon::TrackParticleType MuonTrk
std::array< std::atomic< unsigned int >, 8 > m_num_lep ATLAS_THREAD_SAFE
Simple counter to evaluate the number of leptons per event.
StatusCode initialize() override
ToolHandle< IAsgElectronLikelihoodTool > m_elecSelTool
Gaudi::Property< bool > m_elecUseGSF
SG::ReadHandleKey< xAOD::ElectronContainer > m_elecKey
bool passSelection(const xAOD::Electron *elec) const
std::atomic< unsigned int > m_good_fits
How many vertex fits were actually successful.
std::array< const xAOD::IParticle *, 4 > LeptonQuadruplet
ToolHandle< Trk::IVertexFitter > m_fitter
Gaudi::Property< float > m_minMuonPt
FourLeptonVertexingAlgorithm(const std::string &n, ISvcLocator *p)
SG::ReadHandleKey< xAOD::MuonContainer > m_muonKey
Input containers.
Gaudi::Property< int > m_muonTrkProp
std::vector< LeptonQuadruplet > buildAllQuadruplets(const EventContext &ctx) const
Gaudi::Property< bool > m_pruneWeight
std::atomic< unsigned int > m_tried_fits
How many vertex fits were attempted.
SG::ReadHandleKey< xAOD::EventInfo > m_evtKey
Gaudi::Property< float > m_LeadPtCut
Gaudi::Property< float > m_highPair_Cut
Gaudi::Property< float > m_minElecPt
int charge(const xAOD::IParticle *part) const
std::unique_ptr< xAOD::Vertex > fitQuadruplet(const EventContext &ctx, const LeptonQuadruplet &quad) const
StatusCode finalize() override
Gaudi::Property< float > m_lowSFOS_Cut
StatusCode execute(const EventContext &ctx) const override
Gaudi::Property< float > m_z0Cut
Gaudi::Property< float > m_VtxChi2Cut
ToolHandle< CP::IMuonSelectionTool > m_muonSelTool
Gaudi::Property< float > m_SubLeadPtCut
Property holding a SG store/key/clid from which a ReadHandle is made.
Property holding a SG store/key/clid from which a WriteHandle is made.
Class providing the definition of the 4-vector interface.
TrackParticle_v1 TrackParticle
Reference the current persistent version:
Muon_v1 Muon
Reference the current persistent version:
Electron_v1 Electron
Definition of the current "egamma version".