ATLAS Offline Software
Loading...
Searching...
No Matches
JpsiPlusV0Cascade.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4#ifndef JPSIPLUSV0CASCADE_H
5#define JPSIPLUSV0CASCADE_H
6//*********************
7// JpsiPlusV0Cascade header file
8//
9// Eva Bouhova <e.bouhova@cern.ch>
10// Adam Barton <abarton@cern.ch>
11
13#include "GaudiKernel/ToolHandle.h"
14#include "GaudiKernel/IPartPropSvc.h"
15
18#include <vector>
22// dummy EventContext for AnalysisBase
24
25namespace Trk {
26 class IVertexFitter;
27 class TrkVKalVrtFitter;
29 class VxCascadeInfo;
30 class V0Tools;
31}
32
33namespace DerivationFramework {
34 class CascadeTools;
35}
36
37
38namespace DerivationFramework {
39
40 class JpsiPlusV0Cascade : public extends<AthAlgTool, IAugmentationTool>
41 {
42 public:
43 JpsiPlusV0Cascade(const std::string& t, const std::string& n, const IInterface* p);
45 virtual StatusCode initialize() override;
46 virtual StatusCode addBranches(const EventContext & ctx) const override;
47 private:
48 StatusCode performSearch(std::vector<Trk::VxCascadeInfo*>& cascadeinfoContainer, const EventContext& ctx ) const;
49
50 SG::ReadHandleKey<xAOD::EventInfo> m_eventInfo_key{this, "EventInfo", "EventInfo", "Input event information"};
53
54 SG::ReadHandleKey<xAOD::VertexContainer> m_VxPrimaryCandidateName{this, "VxPrimaryCandidateName", "PrimaryVertices"};
55 SG::ReadHandleKeyArray<xAOD::TrackParticleContainer> m_RelinkContainers{this, "RelinkTracks", {}, "Track Containers if they need to be relinked through indirect use" };
56
57 SG::WriteHandleKeyArray<xAOD::VertexContainer> m_cascadeOutputsKeys{this, "CascadeVertexCollections", {"JpsiPlusV0CascadeVtx1", "JpsiPlusV0CascadeVtx2"} };
58
59 Gaudi::Property<double> m_jpsiMassLower{this, "JpsiMassLowerCut", 0.0};
60 Gaudi::Property<double> m_jpsiMassUpper{this, "JpsiMassUpperCut", 10000.0};
61 Gaudi::Property<double> m_V0MassLower{this, "V0MassLowerCut", 0.0};
62 Gaudi::Property<double> m_V0MassUpper{this, "V0MassUpperCut", 10000.0};
63 Gaudi::Property<double> m_MassLower{this, "MassLowerCut", 0.0};
64 Gaudi::Property<double> m_MassUpper{this, "MassUpperCut", 20000.0};
65 Gaudi::Property<int> m_v0_pid{this, "V0Hypothesis", 310};
66 Gaudi::Property<bool> m_constrV0{this, "ApplyV0MassConstraint", true};
67 Gaudi::Property<bool> m_constrJpsi{this, "ApplyJpsiMassConstraint", true};
68
69 PublicToolHandle < Trk::TrkVKalVrtFitter > m_iVertexFitter{this, "TrkVertexFitterTool", "Trk::TrkVKalVrtFitter"};
70 ToolHandle < Analysis::PrimaryVertexRefitter > m_pvRefitter{this, "PVRefitter", "Analysis::PrimaryVertexRefitter"}; // private tool
71 PublicToolHandle < Trk::V0Tools > m_V0Tools{this, "V0Tools", "Trk::V0Tools"};
72 PublicToolHandle < DerivationFramework::CascadeTools > m_CascadeTools{this, "CascadeTools", "DerivationFramework::CascadeTools"};
73 ServiceHandle<IPartPropSvc> m_partPropSvc{this, "PartPropSvc", "PartPropSvc"};
74
75 Gaudi::Property<int> m_jpsi_trk_pdg{this, "JpsiTrackPDGID", 13}; // PDG ID for J/psi tracks, can be either 11 or 13
76 Gaudi::Property<bool> m_refitPV{this, "RefitPV", true};
77 SG::WriteHandleKey<xAOD::VertexContainer> m_refPVContainerName{this, "RefPVContainerName", "RefittedPrimaryVertices"};
78 SG::ReadHandleKey<xAOD::TrackParticleContainer> m_jpsiTrackContainerName{this, "JpsiTrackContainerName", "InDetTrackParticles"};
79 SG::ReadHandleKey<xAOD::TrackParticleContainer> m_v0TrackContainerName{this, "V0TrackContainerName", "InDetTrackParticles"};
80 Gaudi::Property<std::string> m_hypoName{this, "HypothesisName", "Bd"};
81 //This parameter will allow us to optimize the number of PVs under consideration as the probability
82 //of a useful primary vertex drops significantly the higher you go
83 Gaudi::Property<int> m_PV_max{this, "MaxnPV", 999};
84 Gaudi::Property<int> m_DoVertexType{this, "DoVertexType", 7};
85 Gaudi::Property<size_t> m_PV_minNTracks{this, "MinNTracksInPV", 0};
86
87 // Locally cached particle mass constants
88 double m_mass_electron{0.};
89 double m_mass_muon{0.};
90 double m_mass_pion{0.};
91 double m_mass_proton{0.};
92 double m_mass_lambda{0.};
93 double m_mass_ks{0.};
94 double m_mass_jpsi{0.};
95 double m_mass_b0{0.};
96 double m_mass_lambdaB{0.};
97 };
98}
99
100
101#endif
PublicToolHandle< Trk::TrkVKalVrtFitter > m_iVertexFitter
Gaudi::Property< double > m_V0MassUpper
SG::ReadHandleKey< xAOD::VertexContainer > m_vertexContainerKey
SG::ReadHandleKey< xAOD::VertexContainer > m_VxPrimaryCandidateName
Name of primary vertex container.
ToolHandle< Analysis::PrimaryVertexRefitter > m_pvRefitter
PublicToolHandle< DerivationFramework::CascadeTools > m_CascadeTools
JpsiPlusV0Cascade(const std::string &t, const std::string &n, const IInterface *p)
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_jpsiTrackContainerName
virtual StatusCode addBranches(const EventContext &ctx) const override
Gaudi::Property< double > m_V0MassLower
SG::ReadHandleKeyArray< xAOD::TrackParticleContainer > m_RelinkContainers
PublicToolHandle< Trk::V0Tools > m_V0Tools
StatusCode performSearch(std::vector< Trk::VxCascadeInfo * > &cascadeinfoContainer, const EventContext &ctx) const
SG::ReadHandleKey< xAOD::VertexContainer > m_vertexV0ContainerKey
SG::ReadHandleKey< xAOD::EventInfo > m_eventInfo_key
ServiceHandle< IPartPropSvc > m_partPropSvc
SG::WriteHandleKey< xAOD::VertexContainer > m_refPVContainerName
virtual StatusCode initialize() override
Gaudi::Property< size_t > m_PV_minNTracks
Gaudi::Property< double > m_jpsiMassUpper
Gaudi::Property< std::string > m_hypoName
name of the mass hypothesis.
Gaudi::Property< double > m_jpsiMassLower
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_v0TrackContainerName
SG::WriteHandleKeyArray< xAOD::VertexContainer > m_cascadeOutputsKeys
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.
Interface class for vertex fitting AlgTools, for more detailed information, take a look at the header...
THE reconstruction tool.
HandleKeyArray< ReadHandle< T >, ReadHandleKey< T >, Gaudi::DataHandle::Reader > ReadHandleKeyArray
HandleKeyArray< WriteHandle< T >, WriteHandleKey< T >, Gaudi::DataHandle::Writer > WriteHandleKeyArray
Ensure that the ATLAS eigen extensions are properly loaded.