ATLAS Offline Software
Loading...
Searching...
No Matches
DerivationFramework::Select_onia2mumu Class Reference

#include <Select_onia2mumu.h>

Inheritance diagram for DerivationFramework::Select_onia2mumu:
Collaboration diagram for DerivationFramework::Select_onia2mumu:

Public Member Functions

 Select_onia2mumu (const std::string &t, const std::string &n, const IInterface *p)
StatusCode initialize () override
 inirialization and finalization
virtual StatusCode addBranches (const EventContext &ctx) const override
 : augmentation and selection Retrieved vertices are augmented with usual information.

Private Member Functions

void ProcessVertex (xAOD::BPhysHypoHelper &, xAOD::BPhysHelper::pv_type) const

Private Attributes

ToolHandle< Trk::V0Toolsm_v0Tools
 tools
std::string m_hypoName
 job options
SG::ReadHandleKey< xAOD::VertexContainerm_inputVtxContainerName
 name of the input container name
std::vector< double > m_trkMasses
 track mass hypotheses
double m_massHypo
 vertex mass hypothesis
double m_massMax
 invariant mass range
double m_massMin
 invariant mass range
double m_chi2Max
 max chi2 cut
double m_lxyMin
 min lxy cut
int m_DoVertexType
 Allows user to skip certain vertexes - bitwise test 7==all(111)
bool m_do3d

Detailed Description

Definition at line 32 of file Select_onia2mumu.h.

Constructor & Destructor Documentation

◆ Select_onia2mumu()

DerivationFramework::Select_onia2mumu::Select_onia2mumu ( const std::string & t,
const std::string & n,
const IInterface * p )

Definition at line 25 of file Select_onia2mumu.cxx.

27 :
28 base_class(t,n,p),
29 m_v0Tools("Trk::V0Tools")
30 {
31
32 // Declare tools
33 declareProperty("V0Tools", m_v0Tools);
34
35 // Declare user-defined properties
36
37 declareProperty("HypothesisName" , m_hypoName = "A");
38 declareProperty("InputVtxContainerName", m_inputVtxContainerName = "JpsiCandidates");
39 declareProperty("TrkMasses" , m_trkMasses = std::vector<double>(2, ParticleConstants::muonMassInMeV) );
40 declareProperty("VtxMassHypo" , m_massHypo = ParticleConstants::JpsiMassInMeV );
41 declareProperty("MassMax" , m_massMax = 6000);
42 declareProperty("MassMin" , m_massMin = 2000);
43 declareProperty("Chi2Max" , m_chi2Max = 200);
44 declareProperty("DoVertexType" , m_DoVertexType = 7);
45 declareProperty("LxyMin" , m_lxyMin = std::numeric_limits<double>::lowest());
46 declareProperty("Do3d" , m_do3d = false);
47
48 }
SG::ReadHandleKey< xAOD::VertexContainer > m_inputVtxContainerName
name of the input container name
double m_massMin
invariant mass range
int m_DoVertexType
Allows user to skip certain vertexes - bitwise test 7==all(111)
ToolHandle< Trk::V0Tools > m_v0Tools
tools
std::vector< double > m_trkMasses
track mass hypotheses
double m_massHypo
vertex mass hypothesis
double m_massMax
invariant mass range
constexpr double muonMassInMeV
the mass of the muon (in MeV)

Member Function Documentation

◆ addBranches()

StatusCode DerivationFramework::Select_onia2mumu::addBranches ( const EventContext & ctx) const
overridevirtual

: augmentation and selection Retrieved vertices are augmented with usual information.

Selection is performed and each candidate is decorated with the Char_t flag named "passed_"+name() to indicate whether if the candidate passed the selection. This flag is then used by the event selection tool and by the vertex thinning tool.

Definition at line 131 of file Select_onia2mumu.cxx.

132 {
133 SG::ReadHandle<xAOD::VertexContainer> oniaContainer(m_inputVtxContainerName, ctx);
134 SG::auxid_set_t decor_auxids;
135
136 bool doPt = (m_DoVertexType & 1) != 0;
137 bool doA0 = (m_DoVertexType & 2) != 0;
138 bool doZ0 = (m_DoVertexType & 4) != 0;
139 bool doZ0BA = (m_DoVertexType & 8) != 0;
140 // loop over onia candidates and perform selection and augmentation
141 xAOD::VertexContainer::const_iterator oniaItr = oniaContainer->begin();
142 for(; oniaItr!=oniaContainer->end(); ++oniaItr) {
143 // create BPhysHypoHelper
144 xAOD::BPhysHypoHelper onia(m_hypoName, *oniaItr, &decor_auxids);
145 if((*oniaItr)->nTrackParticles() != m_trkMasses.size())
146 ATH_MSG_WARNING("Vertex has " << (*oniaItr)->nTrackParticles() << " while provided masses " << m_trkMasses.size());
147 //----------------------------------------------------
148 // decorate the vertex
149 //----------------------------------------------------
150 // a) invariant mass and error
151 if( !onia.setMass(m_trkMasses) ) ATH_MSG_WARNING("Decoration onia.setMass failed");
152
153 double massErr = m_v0Tools->invariantMassError(onia.vtx(), m_trkMasses);
154 if( !onia.setMassErr(massErr) ) ATH_MSG_WARNING("Decoration onia.setMassErr failed");
155
156 // b) proper decay time and error:
157 // retrieve the refitted PV (or the original one, if the PV refitting was turned off)
162
163 //----------------------------------------------------
164 // perform the selection (i.e. flag the vertex)
165 //----------------------------------------------------
166 // flag the vertex indicating that it is selected by this selector
167 onia.setPass(true);
168
169 // now we check othe cuts. if one of them didn't pass, set the flag to 0
170 // and continue to the next candidate:
171
172 // 1) invariant mass cut
173 if( onia.mass() < m_massMin || onia.mass() > m_massMax) {
174 onia.setPass(false); // flag as failed
175 continue;
176 }
177
178 // 2) chi2 cut
179 if( onia.vtx()->chiSquared() > m_chi2Max) {
180 onia.setPass(false);; // flag as failed
181 continue;
182 }
183 // 3) lxy cut
185 onia.setPass(false);; // flag as failed
186 continue;
187 }
188
189 } // end of loop over onia candidates
190
191 // Lock the decorations we just produced.
193 const_cast<xAOD::VertexContainer*> (oniaContainer.cptr());
194 for (SG::auxid_t auxid : decor_auxids) {
195 onia_nc->lockDecoration (auxid);
196 }
197
198 // all OK
199 return StatusCode::SUCCESS;
200 }
#define ATH_MSG_WARNING(x)
#define ATLAS_THREAD_SAFE
DataModel_detail::const_iterator< DataVector > const_iterator
Definition DataVector.h:838
void ProcessVertex(xAOD::BPhysHypoHelper &, xAOD::BPhysHelper::pv_type) const
size_t auxid_t
Identifier for a particular aux data item.
Definition AuxTypes.h:27
VertexContainer_v1 VertexContainer
Definition of the current "Vertex container version".

◆ initialize()

StatusCode DerivationFramework::Select_onia2mumu::initialize ( )
override

inirialization and finalization

Definition at line 52 of file Select_onia2mumu.cxx.

53 {
54
55 ATH_MSG_DEBUG("in initialize()");
56
57 // retrieve V0 tools
58 CHECK( m_v0Tools.retrieve() );
60
61 return StatusCode::SUCCESS;
62
63 }
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_DEBUG(x)
#define CHECK(...)
Evaluate an expression and check for errors.

◆ ProcessVertex()

void DerivationFramework::Select_onia2mumu::ProcessVertex ( xAOD::BPhysHypoHelper & onia,
xAOD::BPhysHelper::pv_type pv_t ) const
private

Definition at line 67 of file Select_onia2mumu.cxx.

67 {
68 constexpr float errConst = -9999999;
69 const xAOD::Vertex* pv = onia.pv(pv_t);
70 if(pv) {
71 // decorate the vertex.
72 // Proper decay time assuming constant mass hypothesis m_massHypo
73 BPHYS_CHECK( onia.setTau( m_v0Tools->tau(onia.vtx(), pv, m_massHypo),
74 pv_t,
76 // Proper decay time assuming error constant mass hypothesis m_massHypo
77 BPHYS_CHECK( onia.setTauErr( m_v0Tools->tauError(onia.vtx(), pv, m_massHypo),
78 pv_t,
80
81 BPHYS_CHECK( onia.setTau( m_v0Tools->tau(onia.vtx(), pv, m_trkMasses),
82 pv_t,
84
85 BPHYS_CHECK( onia.setTauErr( m_v0Tools->tauError(onia.vtx(), pv, m_trkMasses),
86 pv_t,
88
89 //enum pv_type {PV_MAX_SUM_PT2, PV_MIN_A0, PV_MIN_Z0, PV_MIN_Z0_BA};
90 }else{
91
92
93 BPHYS_CHECK( onia.setTau(errConst, pv_t,
95 // Proper decay time assuming error constant mass hypothesis m_massHypo
96 BPHYS_CHECK( onia.setTauErr( errConst,
97 pv_t,
99
100 BPHYS_CHECK( onia.setTau( errConst,
101 pv_t,
103
104 BPHYS_CHECK( onia.setTauErr( errConst,
105 pv_t,
107 }
108
109 if(m_do3d){
110 BPHYS_CHECK( onia.setTau3d( pv ? m_v0Tools->tau3D(onia.vtx(), pv, m_massHypo) : errConst,
111 pv_t,
113 // Proper decay time assuming error constant mass hypothesis m_massHypo
114 BPHYS_CHECK( onia.setTau3dErr( pv ? m_v0Tools->tau3DError(onia.vtx(), pv, m_massHypo) : errConst,
115 pv_t,
117
118 BPHYS_CHECK( onia.setTau3d( pv ? m_v0Tools->tau3D(onia.vtx(), pv, m_trkMasses) : errConst,
119 pv_t,
121
122 BPHYS_CHECK( onia.setTau3dErr( pv ? m_v0Tools->tau3DError(onia.vtx(), pv, m_trkMasses) : errConst,
123 pv_t,
125
126 }
127
128 }
#define BPHYS_CHECK(EXP)
Useful CHECK macro.
const xAOD::Vertex * vtx() const
Getter method for the cached xAOD::Vertex.
const xAOD::Vertex * pv(const pv_type vertexType=BPhysHelper::PV_MIN_A0)
Get the refitted collision vertex of type pv_type.
bool setTau3d(const float val, const pv_type vertexType=BPhysHelper::PV_MIN_A0, const tau_type tauType=BPhysHypoHelper::TAU_CONST_MASS)
proper decay time
bool setTau3dErr(const float val, const pv_type vertexType=BPhysHelper::PV_MIN_A0, const tau_type tauType=BPhysHypoHelper::TAU_CONST_MASS)
proper decay time error
bool setTau(const float val, const pv_type vertexType=BPhysHelper::PV_MIN_A0, const tau_type tauType=BPhysHypoHelper::TAU_CONST_MASS)
: Set the proper decay time and error.
bool setTauErr(const float val, const pv_type vertexType=BPhysHelper::PV_MIN_A0, const tau_type tauType=BPhysHypoHelper::TAU_CONST_MASS)
proper decay time error
Vertex_v1 Vertex
Define the latest version of the vertex class.

Member Data Documentation

◆ m_chi2Max

double DerivationFramework::Select_onia2mumu::m_chi2Max
private

max chi2 cut

Definition at line 63 of file Select_onia2mumu.h.

◆ m_do3d

bool DerivationFramework::Select_onia2mumu::m_do3d
private

Definition at line 66 of file Select_onia2mumu.h.

◆ m_DoVertexType

int DerivationFramework::Select_onia2mumu::m_DoVertexType
private

Allows user to skip certain vertexes - bitwise test 7==all(111)

Definition at line 65 of file Select_onia2mumu.h.

◆ m_hypoName

std::string DerivationFramework::Select_onia2mumu::m_hypoName
private

job options

name of the mass hypothesis. E.g. Jpis, Upsi, etc. Will be used as a prefix for decorations

Definition at line 57 of file Select_onia2mumu.h.

◆ m_inputVtxContainerName

SG::ReadHandleKey<xAOD::VertexContainer> DerivationFramework::Select_onia2mumu::m_inputVtxContainerName
private

name of the input container name

Definition at line 58 of file Select_onia2mumu.h.

◆ m_lxyMin

double DerivationFramework::Select_onia2mumu::m_lxyMin
private

min lxy cut

Definition at line 64 of file Select_onia2mumu.h.

◆ m_massHypo

double DerivationFramework::Select_onia2mumu::m_massHypo
private

vertex mass hypothesis

Definition at line 60 of file Select_onia2mumu.h.

◆ m_massMax

double DerivationFramework::Select_onia2mumu::m_massMax
private

invariant mass range

Definition at line 61 of file Select_onia2mumu.h.

◆ m_massMin

double DerivationFramework::Select_onia2mumu::m_massMin
private

invariant mass range

Definition at line 62 of file Select_onia2mumu.h.

◆ m_trkMasses

std::vector<double> DerivationFramework::Select_onia2mumu::m_trkMasses
private

track mass hypotheses

Definition at line 59 of file Select_onia2mumu.h.

◆ m_v0Tools

ToolHandle<Trk::V0Tools> DerivationFramework::Select_onia2mumu::m_v0Tools
private

tools

Definition at line 53 of file Select_onia2mumu.h.


The documentation for this class was generated from the following files: