ATLAS Offline Software
Loading...
Searching...
No Matches
JpsiPlus2Tracks.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4
5// ****************************************************************************
6// ----------------------------------------------------------------------------
7// JpsiPlus2Tracks header file
8//
9// James Catmore <James.Catmore@cern.ch>
10
11// ----------------------------------------------------------------------------
12// ****************************************************************************
13#ifndef JPSIPLUS2TRACKS_H
14#define JPSIPLUS2TRACKS_H
16#include "GaudiKernel/ToolHandle.h"
21#include <bitset>
22#include <vector>
23#include <string>
27
28namespace Trk {
29 class IVertexFitter;
31 class TrkVKalVrtFitter;
32}
33namespace InDet { class VertexPointEstimator; }
34
35namespace xAOD{
36 class BPhysHelper;
37}
38
39namespace Analysis {
40
41 static const InterfaceID IID_JpsiPlus2Tracks("JpsiPlus2Tracks", 1, 0);
42
44 {
45 public:
46 JpsiPlus2Tracks(const std::string& t, const std::string& n, const IInterface* p);
48 virtual StatusCode initialize() override;
49
50 static const InterfaceID& interfaceID() { return IID_JpsiPlus2Tracks;};
51
52 //-------------------------------------------------------------------------------------
53 //Doing Calculation and inline functions
54 virtual StatusCode performSearch(const EventContext& ctx, xAOD::VertexContainer&) const override;
55
57
58 bool passCuts(xAOD::BPhysHelper &bHelper, std::span<const double> masses, std::string_view str) const;
59 bool vertexCuts(xAOD::BPhysHelper &bHelper) const;
60 xAOD::Vertex* fit(const std::vector<const xAOD::TrackParticle*>&,
62 //-------------------------------------------------------------------------------------
63
64 private:
72 double m_trkMaxEta{};
74 double m_BMassUpper{};
75 double m_BMassLower{};
82 bool m_excludeJpsiMuonsOnly{}; //Add by Matt Klein
83 bool m_excludeCrossJpsiTracks{}; //Added by Matteo Bedognetti
84 ToolHandle < Trk::IVertexFitter > m_iVertexFitter;
85 ToolHandle < Trk::ITrackSelectorTool > m_trkSelector;
91
92 // additional cuts (Daniel Scheirich)
93 double m_chi2cut{}; // chi2/Ndof of the final veretx
94 double m_diTrackPt{}; // pT of the hadronic track pair before fit
95 double m_trkQuadrupletMassUpper{}; // invariant mass of all the 4 tracks before fit
97 double m_trkQuadrupletPt{}; // combined pT of all 4 tracks before fit
98 double m_finalDiTrackMassUpper{}; // inveriant mass of the hadronic track pair after the fit
100 double m_finalDiTrackPt{}; // pT of the hadronic track after fit
101 double m_trkDeltaZ{}; // DeltaZ between the JPsi vertex and hadronic tracks Z0
102 // (to reduce the pileup contribution before vertexing)
103 std::vector<double> m_manualMassHypo;
105 std::vector<double> m_altMassMuonTracks;
106 std::vector<double> m_mumukkMasses;
107 std::vector<double> m_mumupipiMasses;
108 std::vector<double> m_mumukpiMasses;
109 std::vector<double> m_mumupikMasses;
110 std::vector<double> m_mumukpMasses;
111 std::vector<double> m_mumupkMasses;
112 std::vector<int> m_useGSFTrackIndices;
113 std::bitset<4> m_useGSFTrack;
115
116 };
117} // end of namespace
118#endif
Property holding a SG store/key/clid from which a ReadHandle is made.
static bool oppositeCharges(const xAOD::TrackParticle *, const xAOD::TrackParticle *)
ToolHandle< Trk::ITrackSelectorTool > m_trkSelector
std::vector< double > m_mumupkMasses
Trk::TrkVKalVrtFitter * m_VKVFitter
xAOD::Vertex * fit(const std::vector< const xAOD::TrackParticle * > &, const xAOD::TrackParticleContainer *, const xAOD::TrackParticleContainer *GSL) const
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_TrkParticleGSFCollection
static const InterfaceID & interfaceID()
std::vector< int > m_useGSFTrackIndices
virtual StatusCode initialize() override
std::vector< double > m_mumukpMasses
virtual StatusCode performSearch(const EventContext &ctx, xAOD::VertexContainer &) const override
JpsiPlus2Tracks(const std::string &t, const std::string &n, const IInterface *p)
std::vector< double > m_manualMassHypo
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_TrkParticleCollection
bool vertexCuts(xAOD::BPhysHelper &bHelper) const
bool passCuts(xAOD::BPhysHelper &bHelper, std::span< const double > masses, std::string_view str) const
std::vector< double > m_mumupipiMasses
ToolHandle< Trk::IVertexFitter > m_iVertexFitter
SG::ReadHandleKey< xAOD::VertexContainer > m_jpsiCollectionKey
SG::ReadHandleKey< xAOD::MuonContainer > m_MuonsUsedInJpsi
std::vector< double > m_altMassMuonTracks
std::vector< double > m_mumukkMasses
std::vector< double > m_mumukpiMasses
std::vector< double > m_mumupikMasses
std::bitset< 4 > m_useGSFTrack
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
Some helper tools like: hits counter.
Property holding a SG store/key/clid from which a ReadHandle is made.
The abstract interface base class for track selector tools.
Interface class for vertex fitting AlgTools, for more detailed information, take a look at the header...
The namespace of all packages in PhysicsAnalysis/JetTagging.
static const InterfaceID IID_JpsiPlus2Tracks("JpsiPlus2Tracks", 1, 0)
Primary Vertex Finder.
Ensure that the ATLAS eigen extensions are properly loaded.
ICaloAffectedTool is abstract interface for tools checking if 4 mom is in calo affected region.
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".