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
56 static double getInvariantMass(const xAOD::TrackParticle*, double, const xAOD::TrackParticle*, double);
57 static double getInvariantMass(const std::vector<const xAOD::TrackParticle*> &trk, const std::vector<double>&);
59
60 bool passCuts(xAOD::BPhysHelper &bHelper, std::span<const double> masses, std::string_view str) const;
61 bool vertexCuts(xAOD::BPhysHelper &bHelper) const;
62 xAOD::Vertex* fit(const std::vector<const xAOD::TrackParticle*>&,
64 //-------------------------------------------------------------------------------------
65
66 private:
74 double m_trkMaxEta{};
76 double m_BMassUpper{};
77 double m_BMassLower{};
84 bool m_excludeJpsiMuonsOnly{}; //Add by Matt Klein
85 bool m_excludeCrossJpsiTracks{}; //Added by Matteo Bedognetti
86 ToolHandle < Trk::IVertexFitter > m_iVertexFitter;
87 ToolHandle < Trk::ITrackSelectorTool > m_trkSelector;
93
94 // additional cuts (Daniel Scheirich)
95 double m_chi2cut{}; // chi2/Ndof of the final veretx
96 double m_diTrackPt{}; // pT of the hadronic track pair before fit
97 double m_trkQuadrupletMassUpper{}; // invariant mass of all the 4 tracks before fit
99 double m_trkQuadrupletPt{}; // combined pT of all 4 tracks before fit
100 double m_finalDiTrackMassUpper{}; // inveriant mass of the hadronic track pair after the fit
102 double m_finalDiTrackPt{}; // pT of the hadronic track after fit
103 double m_trkDeltaZ{}; // DeltaZ between the JPsi vertex and hadronic tracks Z0
104 // (to reduce the pileup contribution before vertexing)
105 std::vector<double> m_manualMassHypo;
107 std::vector<double> m_altMassMuonTracks;
108 std::vector<double> m_mumukkMasses;
109 std::vector<double> m_mumupipiMasses;
110 std::vector<double> m_mumukpiMasses;
111 std::vector<double> m_mumupikMasses;
112 std::vector<double> m_mumukpMasses;
113 std::vector<double> m_mumupkMasses;
114 std::vector<int> m_useGSFTrackIndices;
115 std::bitset<4> m_useGSFTrack;
117
118 };
119} // end of namespace
120#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
static double getInvariantMass(const xAOD::TrackParticle *, double, const xAOD::TrackParticle *, double)
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".