ATLAS Offline Software
Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
Analysis::JpsiPlus2Tracks Class Reference

#include <JpsiPlus2Tracks.h>

Inheritance diagram for Analysis::JpsiPlus2Tracks:
Collaboration diagram for Analysis::JpsiPlus2Tracks:

Public Member Functions

 JpsiPlus2Tracks (const std::string &t, const std::string &n, const IInterface *p)
 
 ~JpsiPlus2Tracks ()
 
virtual StatusCode initialize () override
 
virtual StatusCode performSearch (const EventContext &ctx, xAOD::VertexContainer &) const override
 
bool passCuts (xAOD::BPhysHelper &bHelper, std::span< const double > masses, std::string_view str) const
 
bool vertexCuts (xAOD::BPhysHelper &bHelper) const
 
xAOD::Vertexfit (const std::vector< const xAOD::TrackParticle * > &, const xAOD::TrackParticleContainer *, const xAOD::TrackParticleContainer *GSL) const
 
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & evtStore () const
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc. More...
 
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm. More...
 
virtual StatusCode sysStart () override
 Handle START transition. More...
 
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles. More...
 
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles. More...
 
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T > &t)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc="none")
 Declare a new Gaudi property. More...
 
void updateVHKA (Gaudi::Details::PropertyBase &)
 
MsgStream & msg () const
 
MsgStream & msg (const MSG::Level lvl) const
 
bool msgLvl (const MSG::Level lvl) const
 

Static Public Member Functions

static const InterfaceID & interfaceID ()
 
static double getInvariantMass (const xAOD::TrackParticle *, double, const xAOD::TrackParticle *, double)
 
static double getInvariantMass (const std::vector< const xAOD::TrackParticle * > &trk, const std::vector< double > &)
 
static bool oppositeCharges (const xAOD::TrackParticle *, const xAOD::TrackParticle *)
 

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution More...
 
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
 
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed. More...
 

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 

Private Attributes

bool m_pipiMassHyp {}
 
bool m_kkMassHyp {}
 
bool m_kpiMassHyp {}
 
bool m_kpMassHyp {}
 
bool m_oppChargesOnly {}
 
bool m_sameChargesOnly {}
 
double m_trkThresholdPt {}
 
double m_trkMaxEta {}
 
double m_BThresholdPt {}
 
double m_BMassUpper {}
 
double m_BMassLower {}
 
SG::ReadHandleKey< xAOD::VertexContainerm_jpsiCollectionKey
 
double m_jpsiMassUpper {}
 
double m_jpsiMassLower {}
 
SG::ReadHandleKey< xAOD::TrackParticleContainerm_TrkParticleCollection
 
SG::ReadHandleKey< xAOD::TrackParticleContainerm_TrkParticleGSFCollection
 
SG::ReadHandleKey< xAOD::MuonContainerm_MuonsUsedInJpsi
 
bool m_excludeJpsiMuonsOnly {}
 
bool m_excludeCrossJpsiTracks {}
 
ToolHandle< Trk::IVertexFitterm_iVertexFitter
 
ToolHandle< Trk::ITrackSelectorToolm_trkSelector
 
Trk::TrkVKalVrtFitterm_VKVFitter {}
 
bool m_useMassConst {}
 
double m_altMassConst {}
 
double m_diTrackMassUpper {}
 
double m_diTrackMassLower {}
 
double m_chi2cut {}
 
double m_diTrackPt {}
 
double m_trkQuadrupletMassUpper {}
 
double m_trkQuadrupletMassLower {}
 
double m_trkQuadrupletPt {}
 
double m_finalDiTrackMassUpper {}
 
double m_finalDiTrackMassLower {}
 
double m_finalDiTrackPt {}
 
double m_trkDeltaZ {}
 
std::vector< double > m_manualMassHypo
 
int m_requiredNMuons {}
 
std::vector< double > m_altMassMuonTracks
 
std::vector< double > m_mumukkMasses
 
std::vector< double > m_mumupipiMasses
 
std::vector< double > m_mumukpiMasses
 
std::vector< double > m_mumupikMasses
 
std::vector< double > m_mumukpMasses
 
std::vector< double > m_mumupkMasses
 
std::vector< int > m_useGSFTrackIndices
 
std::bitset< 4 > m_useGSFTrack
 
size_t m_candidateLimit {}
 
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default) More...
 
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default) More...
 
std::vector< SG::VarHandleKeyArray * > m_vhka
 
bool m_varHandleArraysDeclared
 

Detailed Description

Definition at line 43 of file JpsiPlus2Tracks.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ JpsiPlus2Tracks()

Analysis::JpsiPlus2Tracks::JpsiPlus2Tracks ( const std::string &  t,
const std::string &  n,
const IInterface *  p 
)

Definition at line 87 of file JpsiPlus2Tracks.cxx.

87  : AthAlgTool(t,n,p),
88  m_pipiMassHyp(true),
89  m_kkMassHyp(true),
90  m_kpiMassHyp(true),
91  m_kpMassHyp(false),
92  m_oppChargesOnly(true),
93  m_sameChargesOnly(false),
94  m_trkThresholdPt(0.0),
95  m_trkMaxEta(102.5),
96  m_BThresholdPt(0.0),
97  m_BMassUpper(0.0),
98  m_BMassLower(0.0),
99  m_jpsiCollectionKey("JpsiCandidates"),
100  m_jpsiMassUpper(0.0),
101  m_jpsiMassLower(0.0),
102  m_TrkParticleCollection("InDetTrackParticles"),
103  m_TrkParticleGSFCollection("GSFTrackParticles"),
107  m_iVertexFitter("Trk::TrkVKalVrtFitter"),
108  m_trkSelector("InDet::TrackSelectorTool"),
109  m_useMassConst(true),
110  m_altMassConst(-1.0),
111  m_diTrackMassUpper(-1.0),
112  m_diTrackMassLower(-1.0),
113  m_chi2cut(-1.0),
114  m_diTrackPt(-1.0),
117  m_trkQuadrupletPt(-1.0),
120  m_finalDiTrackPt(-1.0),
121  m_trkDeltaZ(-1.0),
122  m_requiredNMuons(0),
124  {
125  declareInterface<JpsiPlus2Tracks>(this);
126  declareProperty("pionpionHypothesis",m_pipiMassHyp);
127  declareProperty("kaonkaonHypothesis",m_kkMassHyp);
128  declareProperty("kaonpionHypothesis",m_kpiMassHyp);
129  declareProperty("kaonprotonHypothesis",m_kpMassHyp);
130  declareProperty("oppChargesOnly",m_oppChargesOnly);
131  declareProperty("SameChargesOnly",m_sameChargesOnly);
132  declareProperty("trkThresholdPt",m_trkThresholdPt);
133  declareProperty("trkMaxEta",m_trkMaxEta);
134  declareProperty("BThresholdPt",m_BThresholdPt);
135  declareProperty("BMassUpper",m_BMassUpper);
136  declareProperty("BMassLower",m_BMassLower);
137  declareProperty("JpsiContainerKey",m_jpsiCollectionKey);
138  declareProperty("JpsiMassUpper",m_jpsiMassUpper);
139  declareProperty("JpsiMassLower",m_jpsiMassLower);
140  declareProperty("TrackParticleCollection",m_TrkParticleCollection);
141  declareProperty("MuonsUsedInJpsi",m_MuonsUsedInJpsi);
142  declareProperty("ExcludeJpsiMuonsOnly",m_excludeJpsiMuonsOnly);
143  declareProperty("ExcludeCrossJpsiTracks",m_excludeCrossJpsiTracks); //Essential when trying to make vertices out of multiple muons (set to false)
144  declareProperty("TrkVertexFitterTool",m_iVertexFitter);
145  declareProperty("TrackSelectorTool",m_trkSelector);
146  declareProperty("UseMassConstraint", m_useMassConst);
147  declareProperty("AlternativeMassConstraint",m_altMassConst);
148  declareProperty("DiTrackMassUpper",m_diTrackMassUpper);
149  declareProperty("DiTrackMassLower",m_diTrackMassLower);
150  // additional cuts by Daniel Scheirich
151  declareProperty("Chi2Cut",m_chi2cut);
152  declareProperty("DiTrackPt",m_diTrackPt);
153  declareProperty("TrkQuadrupletMassUpper",m_trkQuadrupletMassUpper);
154  declareProperty("TrkQuadrupletMassLower",m_trkQuadrupletMassLower);
155  declareProperty("TrkQuadrupletPt" ,m_trkQuadrupletPt );
156  declareProperty("FinalDiTrackMassUpper" ,m_finalDiTrackMassUpper );
157  declareProperty("FinalDiTrackMassLower" ,m_finalDiTrackMassLower );
158  declareProperty("FinalDiTrackPt" ,m_finalDiTrackPt );
159  declareProperty("TrkDeltaZ" ,m_trkDeltaZ );
160  declareProperty("ManualMassHypo", m_manualMassHypo);
161  declareProperty("RequireNMuonTracks", m_requiredNMuons);
162  declareProperty("AlternativeMassConstraintTrack", m_altMassMuonTracks);
163  declareProperty("UseGSFTrackIndices", m_useGSFTrackIndices);
165  declareProperty("CandidateLimit", m_candidateLimit);
166  }

◆ ~JpsiPlus2Tracks()

Analysis::JpsiPlus2Tracks::~JpsiPlus2Tracks ( )

Definition at line 168 of file JpsiPlus2Tracks.cxx.

168 {}

Member Function Documentation

◆ declareGaudiProperty() [1/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyArrayType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKeyArray>

Definition at line 170 of file AthCommonDataStore.h.

172  {
173  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
174  hndl.value(),
175  hndl.documentation());
176 
177  }

◆ declareGaudiProperty() [2/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158  {
159  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
160  hndl.value(),
161  hndl.documentation());
162 
163  }

◆ declareGaudiProperty() [3/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleBase>

Definition at line 184 of file AthCommonDataStore.h.

186  {
187  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
188  hndl.value(),
189  hndl.documentation());
190  }

◆ declareGaudiProperty() [4/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  t,
const SG::NotHandleType  
)
inlineprivateinherited

specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray>

Definition at line 199 of file AthCommonDataStore.h.

200  {
201  return PBASE::declareProperty(t);
202  }

◆ declareProperty() [1/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleBase hndl,
const std::string &  doc,
const SG::VarHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleBase. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 245 of file AthCommonDataStore.h.

249  {
250  this->declare(hndl.vhKey());
251  hndl.vhKey().setOwner(this);
252 
253  return PBASE::declareProperty(name,hndl,doc);
254  }

◆ declareProperty() [2/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKey hndl,
const std::string &  doc,
const SG::VarHandleKeyType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleKey. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 221 of file AthCommonDataStore.h.

225  {
226  this->declare(hndl);
227  hndl.setOwner(this);
228 
229  return PBASE::declareProperty(name,hndl,doc);
230  }

◆ declareProperty() [3/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKeyArray hndArr,
const std::string &  doc,
const SG::VarHandleKeyArrayType  
)
inlineinherited

Definition at line 259 of file AthCommonDataStore.h.

263  {
264 
265  // std::ostringstream ost;
266  // ost << Algorithm::name() << " VHKA declareProp: " << name
267  // << " size: " << hndArr.keys().size()
268  // << " mode: " << hndArr.mode()
269  // << " vhka size: " << m_vhka.size()
270  // << "\n";
271  // debug() << ost.str() << endmsg;
272 
273  hndArr.setOwner(this);
274  m_vhka.push_back(&hndArr);
275 
276  Gaudi::Details::PropertyBase* p = PBASE::declareProperty(name, hndArr, doc);
277  if (p != 0) {
278  p->declareUpdateHandler(&AthCommonDataStore<PBASE>::updateVHKA, this);
279  } else {
280  ATH_MSG_ERROR("unable to call declareProperty on VarHandleKeyArray "
281  << name);
282  }
283 
284  return p;
285 
286  }

◆ declareProperty() [4/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc,
const SG::NotHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This is the generic version, for types that do not derive from SG::VarHandleKey. It just forwards to the base class version of declareProperty.

Definition at line 333 of file AthCommonDataStore.h.

337  {
338  return PBASE::declareProperty(name, property, doc);
339  }

◆ declareProperty() [5/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc = "none" 
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This dispatches to either the generic declareProperty or the one for VarHandle/Key/KeyArray.

Definition at line 352 of file AthCommonDataStore.h.

355  {
356  typedef typename SG::HandleClassifier<T>::type htype;
357  return declareProperty (name, property, doc, htype());
358  }

◆ declareProperty() [6/6]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( Gaudi::Property< T > &  t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145  {
146  typedef typename SG::HandleClassifier<T>::type htype;
148  }

◆ detStore()

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

95 { return m_detStore; }

◆ evtStore() [1/2]

ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

85 { return m_evtStore; }

◆ evtStore() [2/2]

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( ) const
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase &  ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ fit()

xAOD::Vertex * Analysis::JpsiPlus2Tracks::fit ( const std::vector< const xAOD::TrackParticle * > &  inputTracks,
const xAOD::TrackParticleContainer importedTrackCollection,
const xAOD::TrackParticleContainer GSL 
) const

Definition at line 433 of file JpsiPlus2Tracks.cxx.

435  {
436 
437  std::unique_ptr<Trk::IVKalState> state = m_VKVFitter->makeState();
438 
439 
440 
441 
442  // Set the mass constraint if requested by user (default=true)
443  // Can be set by user (m_altMassConstraint) - default is -1.0.
444  // If < 0.0, uses J/psi (default)
445  // If > 0.0, uses the value provided
446 
447 
448  if (m_useMassConst) {
449  constexpr double jpsiTableMass = 3096.916;
451  std::array<int,2> indices= {1, 2};
452  if (m_altMassConst<0.0) m_VKVFitter->setMassForConstraint(jpsiTableMass,indices,*state);
454  }
455 
456  // Do the fit itself.......
457  // Starting point (use the J/psi position)
458  Amg::Vector3D startingPoint(0,0,0);
459  StatusCode sc=m_VKVFitter->VKalVrtFitFast(inputTracks, startingPoint, *state);
460  if(sc.isFailure()){
461  startingPoint = Amg::Vector3D(0,0,0);
462  }
463  xAOD::Vertex* theResult = m_VKVFitter->fit(inputTracks, startingPoint, *state);
464 
465  // Added by ASC
466  if(theResult != 0){
467  std::vector<ElementLink<DataVector<xAOD::TrackParticle> > > newLinkVector;
468  for(unsigned int i=0; i< theResult->trackParticleLinks().size(); i++)
469  {
470  ElementLink<DataVector<xAOD::TrackParticle> > mylink=theResult->trackParticleLinks()[i]; //makes a copy (non-const)
471  mylink.setStorableObject( m_useGSFTrack[i] ? *gsfCollection : *importedTrackCollection, true);
472  newLinkVector.push_back( mylink );
473  }
474  theResult->clearTracks();
475  theResult->setTrackParticleLinks( newLinkVector );
476  }
477 
478  return theResult;
479 
480  }

◆ getInvariantMass() [1/2]

double Analysis::JpsiPlus2Tracks::getInvariantMass ( const std::vector< const xAOD::TrackParticle * > &  trk,
const std::vector< double > &  masses 
)
static

Definition at line 524 of file JpsiPlus2Tracks.cxx.

526  {
527  assert(trk.size() == masses.size() && trk.size()==4);
528  const auto trk1V = trk[0]->p4();
529  double px1 = trk1V.Px();
530  double py1 = trk1V.Py();
531  double pz1 = trk1V.Pz();
532  double e1 = sqrt(px1*px1+py1*py1+pz1*pz1+masses[0]*masses[0]);
533 
534  const auto trk2V = trk[1]->p4();
535  double px2 = trk2V.Px();
536  double py2 = trk2V.Py();
537  double pz2 = trk2V.Pz();
538  double e2 = sqrt(px2*px2+py2*py2+pz2*pz2+masses[1]*masses[1]);
539 
540  const auto trk3V = trk[2]->p4();
541  double px3 = trk3V.Px();
542  double py3 = trk3V.Py();
543  double pz3 = trk3V.Pz();
544  double e3 = sqrt(px3*px3+py3*py3+pz3*pz3+masses[2]*masses[2]);
545 
546  const auto trk4V = trk[3]->p4();
547  double px4 = trk4V.Px();
548  double py4 = trk4V.Py();
549  double pz4 = trk4V.Pz();
550  double e4 = sqrt(px4*px4+py4*py4+pz4*pz4+masses[3]*masses[3]);
551 
552  double pxSum=px1+px2+px3+px4;
553  double pySum=py1+py2+py3+py4;
554  double pzSum=pz1+pz2+pz3+pz4;
555  double eSum=e1+e2+e3+e4;
556 
557  double M=sqrt((eSum*eSum)-(pxSum*pxSum)-(pySum*pySum)-(pzSum*pzSum));
558 
559  return M;
560 
561  }

◆ getInvariantMass() [2/2]

double Analysis::JpsiPlus2Tracks::getInvariantMass ( const xAOD::TrackParticle trk1,
double  mass1,
const xAOD::TrackParticle trk2,
double  mass2 
)
static

Definition at line 503 of file JpsiPlus2Tracks.cxx.

503  {
504  const auto trk1V = trk1->p4();
505  double px1 = trk1V.Px();
506  double py1 = trk1V.Py();
507  double pz1 = trk1V.Pz();
508  double e1 = sqrt(px1*px1+py1*py1+pz1*pz1+mass1*mass1);
509  const auto trk2V = trk2->p4();
510  double px2 = trk2V.Px();
511  double py2 = trk2V.Py();
512  double pz2 = trk2V.Pz();
513  double e2 = sqrt(px2*px2+py2*py2+pz2*pz2+mass2*mass2);
514  double pxSum=px1+px2;
515  double pySum=py1+py2;
516  double pzSum=pz1+pz2;
517  double eSum=e1+e2;
518  double M=sqrt((eSum*eSum)-(pxSum*pxSum)-(pySum*pySum)-(pzSum*pzSum));
519 
520  return M;
521 
522  }

◆ initialize()

StatusCode Analysis::JpsiPlus2Tracks::initialize ( )
overridevirtual

Definition at line 35 of file JpsiPlus2Tracks.cxx.

35  {
36 
37  // retrieving vertex Fitter
38  ATH_CHECK(m_iVertexFitter.retrieve());
39  m_VKVFitter = dynamic_cast<Trk::TrkVKalVrtFitter*>(&(*m_iVertexFitter));
40 
41  // Get the track selector tool from ToolSvc
42  ATH_CHECK(m_trkSelector.retrieve());
43 
44 
45  ATH_CHECK(m_jpsiCollectionKey.initialize());
48  if(m_MuonsUsedInJpsi.key() == "NONE") m_MuonsUsedInJpsi = "";
49  ATH_CHECK(m_MuonsUsedInJpsi.initialize(!m_MuonsUsedInJpsi.key().empty()));
50 
51  if(!m_manualMassHypo.empty() && m_manualMassHypo.size() !=4){
52  ATH_MSG_FATAL("Invalid number of elements given for manualMass hypothesis - needs 4");
53  return StatusCode::FAILURE;
54  }
55  if(!m_manualMassHypo.empty()){
56  ATH_MSG_DEBUG("manual mass hypo " << m_manualMassHypo[0] <<
57  ',' << m_manualMassHypo[1] << ',' << m_manualMassHypo[2] << ',' << m_manualMassHypo[3]);
58  }
60  ATH_MSG_FATAL("Invalid configuration");
61  return StatusCode::FAILURE;
62  }
64  ATH_MSG_FATAL("Invalid configuration");
65  return StatusCode::FAILURE;
66  }
67 
68  if(m_altMassMuonTracks.empty()){
69  m_altMassMuonTracks.assign(2, muMass); //Default to muon mass
70  }
71 
78  m_useGSFTrack.reset();
79  for(int i : m_useGSFTrackIndices) m_useGSFTrack.set(i, true);
80 
81  ATH_MSG_DEBUG("Initialize successful");
82 
83  return StatusCode::SUCCESS;
84 
85  }

◆ inputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ interfaceID()

static const InterfaceID& Analysis::JpsiPlus2Tracks::interfaceID ( )
inlinestatic

Definition at line 50 of file JpsiPlus2Tracks.h.

50 { return IID_JpsiPlus2Tracks;};

◆ msg() [1/2]

MsgStream& AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24  {
25  return this->msgStream();
26  }

◆ msg() [2/2]

MsgStream& AthCommonMsg< AlgTool >::msg ( const MSG::Level  lvl) const
inlineinherited

Definition at line 27 of file AthCommonMsg.h.

27  {
28  return this->msgStream(lvl);
29  }

◆ msgLvl()

bool AthCommonMsg< AlgTool >::msgLvl ( const MSG::Level  lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30  {
31  return this->msgLevel(lvl);
32  }

◆ oppositeCharges()

bool Analysis::JpsiPlus2Tracks::oppositeCharges ( const xAOD::TrackParticle trk1,
const xAOD::TrackParticle trk2 
)
static

Definition at line 487 of file JpsiPlus2Tracks.cxx.

487  {
488  double qOverP1=trk1->qOverP();
489  double qOverP2=trk2->qOverP();
490  bool opposite = (qOverP1*qOverP2<0.0);
491  return opposite;
492  }

◆ outputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ passCuts()

bool Analysis::JpsiPlus2Tracks::passCuts ( xAOD::BPhysHelper bHelper,
std::span< const double >  masses,
std::string_view  str 
) const

Definition at line 563 of file JpsiPlus2Tracks.cxx.

563  {
564 
565  TLorentzVector bMomentum = bHelper.totalP(masses);
566 // ATH_MSG_DEBUG(bMomentum.X() << " " << bMomentum.Y()<< " " << bMomentum.Z() << " " << bMomentum.E());
567  double bPt = bMomentum.Pt();
568 
569  double bMass = bMomentum.M();
570  ATH_MSG_DEBUG("Candidate pt/mass under " << str << " track mass hypothesis is " << bPt << " / " << bMass);
571  if( !JpsiUpsilonCommon::cutAcceptGreater(bPt, m_BThresholdPt)) return false;
572  if( !JpsiUpsilonCommon::cutRange(bMass, m_BMassLower, m_BMassUpper)) return false;
573  assert(masses.size()==4);
574  TLorentzVector tr1 = bHelper.refTrk(2,masses[2]);
575  TLorentzVector tr2 = bHelper.refTrk(3,masses[3]);
576  double bDiTrkPt = (tr1+tr2).Pt();
577  double bDiTrkMass = (tr1+tr2).M();
578  if( !JpsiUpsilonCommon::cutAcceptGreater(bDiTrkPt, m_finalDiTrackPt)) return false;
580 
581  return true;
582  }

◆ performSearch()

StatusCode Analysis::JpsiPlus2Tracks::performSearch ( const EventContext &  ctx,
xAOD::VertexContainer bContainer 
) const
overridevirtual

Implements Analysis::ICandidateSearch.

Definition at line 174 of file JpsiPlus2Tracks.cxx.

175  {
176  ATH_MSG_DEBUG( "JpsiPlus2Tracks::performSearch" );
177 
178  // Get the J/psis from StoreGate
179  const xAOD::VertexContainer* importedJpsiCollection{nullptr};
181  if(!jpsihandle.isValid()){
182  ATH_MSG_ERROR("No VertexContainer with key " << m_jpsiCollectionKey.key() << " found in StoreGate. BCandidates will be EMPTY!");
183  return StatusCode::FAILURE;
184  }else{
185  importedJpsiCollection = jpsihandle.cptr();
186  ATH_MSG_DEBUG("Found VxCandidate container with key "<<m_jpsiCollectionKey.key());
187  }
188  ATH_MSG_DEBUG("VxCandidate container size " << importedJpsiCollection->size());
189 
190  // Get tracks
191  const xAOD::TrackParticleContainer* importedTrackCollection{nullptr};
193  if(!trackshandle.isValid()){
194  ATH_MSG_ERROR("No track particle collection with name " << m_TrkParticleCollection.key() << " found in StoreGate!");
195  return StatusCode::FAILURE;
196  } else {
197  importedTrackCollection = trackshandle.cptr();
198  ATH_MSG_DEBUG("Found track particle collection " << m_TrkParticleCollection.key() << " in StoreGate!");
199  }
200  ATH_MSG_DEBUG("Track container size "<< importedTrackCollection->size());
201 
202  const xAOD::TrackParticleContainer* importedGSFTrackCollection(nullptr);
203  if(m_useGSFTrack.any() && !m_TrkParticleGSFCollection.key().empty()){
205  ATH_CHECK(h.isValid());
206  importedGSFTrackCollection = h.cptr();
207  }
208 
209  // Get the muon collection used to build the J/psis
210  const xAOD::MuonContainer* importedMuonCollection{nullptr};
211  if (!m_MuonsUsedInJpsi.key().empty()) {
213  if (!h.isValid()){
214  ATH_MSG_ERROR("No muon collection with name " << m_MuonsUsedInJpsi.key() << " found in StoreGate!");
215  return StatusCode::FAILURE;
216  } else {
217  importedMuonCollection = h.cptr();
218  ATH_MSG_DEBUG("Found muon collection " << m_MuonsUsedInJpsi.key() << " in StoreGate!");
219  }
220  ATH_MSG_DEBUG("Muon container size "<< importedMuonCollection->size());
221  }
222 
223  // Typedef for vectors of tracks and VxCandidates
224  typedef std::vector<const xAOD::TrackParticle*> TrackBag;
225 
226  // Select the inner detector tracks
227  TrackBag theIDTracksAfterSelection;
228  for (auto trkPBItr=importedTrackCollection->cbegin(); trkPBItr!=importedTrackCollection->cend(); ++trkPBItr) {
229  const xAOD::TrackParticle* tp (*trkPBItr);
230  if ( tp->pt()<m_trkThresholdPt ) continue;
231  if ( std::abs(tp->eta())>m_trkMaxEta ) continue;
232  if (importedMuonCollection!=NULL && !m_excludeJpsiMuonsOnly) {
233  if (JpsiUpsilonCommon::isContainedIn(tp,importedMuonCollection)) continue;
234  }
235  if ( m_trkSelector->decision(*tp, NULL) ) theIDTracksAfterSelection.push_back(tp);
236  }
237  if (theIDTracksAfterSelection.size() == 0) return StatusCode::SUCCESS;
238  ATH_MSG_DEBUG("Number of tracks after ID trkSelector: " << theIDTracksAfterSelection.size());
239 
240  // Loop over J/psi candidates, select, collect up tracks used to build a J/psi
241  std::vector<const xAOD::Vertex*> selectedJpsiCandidates;
242  std::vector<const xAOD::TrackParticle*> jpsiTracks;
243  for(auto vxcItr=importedJpsiCollection->cbegin(); vxcItr!=importedJpsiCollection->cend(); ++vxcItr) {
244  // Check J/psi candidate invariant mass and skip if need be
245 
246  if (m_jpsiMassUpper>0.0 || m_jpsiMassLower > 0.0) {
247  xAOD::BPhysHelper jpsiCandidate(*vxcItr);
248  double jpsiMass = jpsiCandidate.totalP(m_altMassMuonTracks).M();
250  if (!pass) continue;
251  }
252  selectedJpsiCandidates.push_back(*vxcItr);
253 
254  // Collect up tracks
256  // Extract tracks from J/psi
257  const xAOD::TrackParticle* jpsiTP1 = (*vxcItr)->trackParticle(0);
258  const xAOD::TrackParticle* jpsiTP2 = (*vxcItr)->trackParticle(1);
259  jpsiTracks.push_back(jpsiTP1);
260  jpsiTracks.push_back(jpsiTP2);
261  }
262  }
263  ATH_MSG_DEBUG("selectedJpsiCandidates: " << selectedJpsiCandidates.size());
264 
265 
266 
267 
268  // Attempt to fit each track with the two tracks from the J/psi candidates
269  // Loop over J/psis
270  std::vector<const xAOD::TrackParticle*> QuadletTracks(4, nullptr);//Initialise as 4 nulls
271 
272  std::vector<double> massCuts;
273 
274  TrackBag muonTracks;
275  if (importedMuonCollection != NULL && m_excludeJpsiMuonsOnly) {
276  for(auto muon : *importedMuonCollection){
277  if(!muon->inDetTrackParticleLink().isValid()) continue;
278  auto track = muon->trackParticle( xAOD::Muon::InnerDetectorTrackParticle );
279  if(track==nullptr) continue;
280  if(!JpsiUpsilonCommon::isContainedIn(track, theIDTracksAfterSelection)) continue;
281  muonTracks.push_back(track);
282  }
283  }
284 
285  for(auto jpsiItr=selectedJpsiCandidates.begin(); jpsiItr!=selectedJpsiCandidates.end(); ++jpsiItr) {
286 
287  // Extract tracks from J/psi
288  const xAOD::TrackParticle* jpsiTP1 = (*jpsiItr)->trackParticle(0);
289  const xAOD::TrackParticle* jpsiTP2 = (*jpsiItr)->trackParticle(1);
290  QuadletTracks[0] = jpsiTP1;
291  QuadletTracks[1] = jpsiTP2;
292 
293  //If requested, only exclude duplicates in the same tripplet
295  jpsiTracks.resize(2);
296  jpsiTracks[0] = jpsiTP1;
297  jpsiTracks[1] = jpsiTP2;
298  }
299 
300  // Loop over ID tracks, call vertexing
301  for (TrackBag::iterator trkItr1=theIDTracksAfterSelection.begin(); trkItr1<theIDTracksAfterSelection.end(); ++trkItr1) { // outer loop
302  if (!m_excludeJpsiMuonsOnly && JpsiUpsilonCommon::isContainedIn(*trkItr1,jpsiTracks)) continue; // remove tracks which were used to build J/psi
303  int linkedMuonTrk1 = 0;
305  linkedMuonTrk1 = JpsiUpsilonCommon::isContainedIn(*trkItr1, muonTracks);
306  if (linkedMuonTrk1) ATH_MSG_DEBUG("This id track 1 is muon track!");
307 
308  if (JpsiUpsilonCommon::isContainedIn(*trkItr1,jpsiTracks)) {
309  if (linkedMuonTrk1) ATH_MSG_DEBUG("ID track 1 removed: id track is selected to build Jpsi!");
310  continue; // remove tracks which were used to build J/psi
311  }
312  }
313 
314  // Daniel Scheirich: remove track too far from the Jpsi vertex (DeltaZ cut)
315  if(m_trkDeltaZ>0 &&
316  std::abs((*trkItr1)->z0() + (*trkItr1)->vz() - (*jpsiItr)->z()) > m_trkDeltaZ )
317  continue;
318 
319  for (TrackBag::iterator trkItr2=trkItr1+1; trkItr2!=theIDTracksAfterSelection.end(); ++trkItr2) { // inner loop
320  if(bContainer.size() >= m_candidateLimit ){
321  ATH_MSG_WARNING("Hard Limit exceeded N=" << bContainer.size());
322  return StatusCode::SUCCESS;
323  }
324  if (!m_excludeJpsiMuonsOnly && JpsiUpsilonCommon::isContainedIn(*trkItr2,jpsiTracks)) continue; // remove tracks which were used to build J/psi
325 
327  int linkedMuonTrk2 = JpsiUpsilonCommon::isContainedIn(*trkItr2, muonTracks);
328  if (linkedMuonTrk2) ATH_MSG_DEBUG("This id track 2 is muon track!");
329  if (JpsiUpsilonCommon::isContainedIn(*trkItr2,jpsiTracks)) {
330  if (linkedMuonTrk2) ATH_MSG_DEBUG("ID track 2 removed: id track is selected to build Jpsi Vtx!");
331  continue; // remove tracks which were used to build J/psi
332  }
333  if( (linkedMuonTrk1+ linkedMuonTrk2) < m_requiredNMuons) {
334  ATH_MSG_DEBUG("Skipping Tracks with Muons " << linkedMuonTrk1 + linkedMuonTrk2 << " Limited to " << m_requiredNMuons);
335  continue;
336  }
337  }
338 
339  // Daniel Scheirich: remove track too far from the Jpsi vertex (DeltaZ cut)
340  if(m_trkDeltaZ>0 &&
341  std::abs((*trkItr2)->z0() + (*trkItr2)->vz() - (*jpsiItr)->z()) > m_trkDeltaZ )
342  continue;
343 
344  if (m_oppChargesOnly && !oppositeCharges(*trkItr1,*trkItr2)) continue; //enforce opposite charges
345  if (m_sameChargesOnly && oppositeCharges(*trkItr1,*trkItr2)) continue; //enforce same charges
346 
347  if (m_diTrackPt>0 && JpsiUpsilonCommon::getPt(*trkItr1,*trkItr2) < m_diTrackPt ) continue; // track pair pT cut (daniel Scheirich)
348 
349  // sort the track by charge, putting the positive track first
350  if((*trkItr2)->qOverP()>0) {
351  QuadletTracks[2] = *trkItr2;
352  QuadletTracks[3] = *trkItr1;
353  }else{
354  QuadletTracks[2] = *trkItr1;
355  QuadletTracks[3] = *trkItr2;
356  }
357 
358  if (m_trkQuadrupletPt>0 && JpsiUpsilonCommon::getPt(QuadletTracks[0], QuadletTracks[1], *trkItr1,*trkItr2) < m_trkQuadrupletPt ) continue; // track quadruplet pT cut (daniel Scheirich)
359 
360  // apply mass cut on track pair (non muon) if requested
361  bool passesDiTrack(true);
362  if (m_diTrackMassUpper>0.0 || m_diTrackMassLower>0.0) {
363  massCuts.clear();
364  if(m_kkMassHyp) massCuts.push_back(getInvariantMass(*trkItr1,kMass,*trkItr2,kMass));
365  if(m_pipiMassHyp) massCuts.push_back(getInvariantMass(*trkItr1,piMass,*trkItr2,piMass));
366  if(m_kpiMassHyp){
367  massCuts.push_back(getInvariantMass(*trkItr1,kMass,*trkItr2,piMass));
368  massCuts.push_back(getInvariantMass(*trkItr1,piMass,*trkItr2,kMass));
369  }
370  if(m_kpMassHyp){
371  massCuts.push_back(getInvariantMass(*trkItr1,kMass,*trkItr2,piMass));
372  massCuts.push_back(getInvariantMass(*trkItr1,piMass,*trkItr2,kMass));
373  }
374  if(!m_manualMassHypo.empty()) massCuts.push_back(getInvariantMass(*trkItr1, m_manualMassHypo[2], *trkItr2, m_manualMassHypo[3]));
376 
377  }
378  if (!passesDiTrack) continue;
379 
380  // apply mass cut on track quadruplet if requested
381  bool passes4TrackMass(true);
383  massCuts.clear();
384 
385  if(m_kkMassHyp) massCuts.push_back( getInvariantMass(QuadletTracks, m_mumukkMasses) );
386  if(m_pipiMassHyp) massCuts.push_back(getInvariantMass(QuadletTracks, m_mumupipiMasses));
387  if(m_kpiMassHyp){
388  massCuts.push_back(getInvariantMass(QuadletTracks, m_mumukpiMasses));
389  massCuts.push_back(getInvariantMass(QuadletTracks, m_mumupikMasses));
390  }
391  if(m_kpMassHyp){
392  massCuts.push_back(getInvariantMass(QuadletTracks, m_mumukpMasses));
393  massCuts.push_back(getInvariantMass(QuadletTracks, m_mumupkMasses));
394  }
395  if(!m_manualMassHypo.empty()) massCuts.push_back(getInvariantMass(QuadletTracks, m_manualMassHypo));
396 
398  }
399  if (!passes4TrackMass) continue;
400 
401  //Managed pointer, "release" if you don't want it deleted. Automatically deleted otherwise
402  std::unique_ptr<xAOD::Vertex> bVertex (fit(QuadletTracks, importedTrackCollection, importedGSFTrackCollection)); // do vertexing
403  if(!bVertex) continue;
404  double bChi2DOF = bVertex->chiSquared()/bVertex->numberDoF();
405  ATH_MSG_DEBUG("Candidate chi2/DOF is " << bChi2DOF);
406  bool chi2CutPassed = (m_chi2cut <= 0.0 || bChi2DOF < m_chi2cut);
407  if(!chi2CutPassed) { ATH_MSG_DEBUG("Chi Cut failed!"); continue; }
408  xAOD::BPhysHelper bHelper(bVertex.get());//"get" does not "release" still automatically deleted
409  bHelper.setRefTrks();
410  bool passesCuts = vertexCuts(bHelper);
411  if(!passesCuts) continue;
412  // Saving successful candidates
413  // Set links to J/psi
414  std::vector<const xAOD::Vertex*> theJpsiPreceding;
415  theJpsiPreceding.push_back(*jpsiItr);
416  bHelper.setPrecedingVertices(theJpsiPreceding, importedJpsiCollection);
417  bContainer.push_back(bVertex.release());//ptr is released preventing deletion
418 
419  } // End of inner loop over tracks
420  } // End of outer loop over tracks
421  } // End of loop over J/spi
422  ATH_MSG_DEBUG("bContainer size " << bContainer.size());
423  return StatusCode::SUCCESS;
424 
425  }

◆ renounce()

std::enable_if_t<std::is_void_v<std::result_of_t<decltype(&T::renounce)(T)> > && !std::is_base_of_v<SG::VarHandleKeyArray, T> && std::is_base_of_v<Gaudi::DataHandle, T>, void> AthCommonDataStore< AthCommonMsg< AlgTool > >::renounce ( T &  h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381  {
382  h.renounce();
383  PBASE::renounce (h);
384  }

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::renounceArray ( SG::VarHandleKeyArray handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364  {
365  handlesArray.renounce();
366  }

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
overridevirtualinherited

Perform system initialization for an algorithm.

We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.

Reimplemented in DerivationFramework::CfAthAlgTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and asg::AsgMetadataTool.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::updateVHKA ( Gaudi::Details::PropertyBase &  )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308  {
309  // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310  // << " size: " << m_vhka.size() << endmsg;
311  for (auto &a : m_vhka) {
312  std::vector<SG::VarHandleKey*> keys = a->keys();
313  for (auto k : keys) {
314  k->setOwner(this);
315  }
316  }
317  }

◆ vertexCuts()

bool Analysis::JpsiPlus2Tracks::vertexCuts ( xAOD::BPhysHelper bHelper) const

Definition at line 584 of file JpsiPlus2Tracks.cxx.

584  {
585  // Invariant mass calculation under the various hypotheses
586  // create the helper class
587 
588  bool passesCuts = (m_kkMassHyp && passCuts(bHelper, m_mumukkMasses, "KK")) ||
589  (m_pipiMassHyp && passCuts(bHelper, m_mumupipiMasses, "pi pi")) ||
590  (m_kpiMassHyp && (passCuts(bHelper, m_mumukpiMasses, "K pi") ||
591  passCuts(bHelper, m_mumupikMasses, "pi K"))) ||
592  (m_kpMassHyp && (passCuts(bHelper, m_mumukpMasses, "K p") ||
593  passCuts(bHelper, m_mumupkMasses, "p K"))) ||
594  (!m_manualMassHypo.empty() && passCuts(bHelper, m_manualMassHypo, "manual"));
595  return passesCuts;
596  }

Member Data Documentation

◆ m_altMassConst

double Analysis::JpsiPlus2Tracks::m_altMassConst {}
private

Definition at line 90 of file JpsiPlus2Tracks.h.

◆ m_altMassMuonTracks

std::vector<double> Analysis::JpsiPlus2Tracks::m_altMassMuonTracks
private

Definition at line 107 of file JpsiPlus2Tracks.h.

◆ m_BMassLower

double Analysis::JpsiPlus2Tracks::m_BMassLower {}
private

Definition at line 77 of file JpsiPlus2Tracks.h.

◆ m_BMassUpper

double Analysis::JpsiPlus2Tracks::m_BMassUpper {}
private

Definition at line 76 of file JpsiPlus2Tracks.h.

◆ m_BThresholdPt

double Analysis::JpsiPlus2Tracks::m_BThresholdPt {}
private

Definition at line 75 of file JpsiPlus2Tracks.h.

◆ m_candidateLimit

size_t Analysis::JpsiPlus2Tracks::m_candidateLimit {}
private

Definition at line 116 of file JpsiPlus2Tracks.h.

◆ m_chi2cut

double Analysis::JpsiPlus2Tracks::m_chi2cut {}
private

Definition at line 95 of file JpsiPlus2Tracks.h.

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_diTrackMassLower

double Analysis::JpsiPlus2Tracks::m_diTrackMassLower {}
private

Definition at line 92 of file JpsiPlus2Tracks.h.

◆ m_diTrackMassUpper

double Analysis::JpsiPlus2Tracks::m_diTrackMassUpper {}
private

Definition at line 91 of file JpsiPlus2Tracks.h.

◆ m_diTrackPt

double Analysis::JpsiPlus2Tracks::m_diTrackPt {}
private

Definition at line 96 of file JpsiPlus2Tracks.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_excludeCrossJpsiTracks

bool Analysis::JpsiPlus2Tracks::m_excludeCrossJpsiTracks {}
private

Definition at line 85 of file JpsiPlus2Tracks.h.

◆ m_excludeJpsiMuonsOnly

bool Analysis::JpsiPlus2Tracks::m_excludeJpsiMuonsOnly {}
private

Definition at line 84 of file JpsiPlus2Tracks.h.

◆ m_finalDiTrackMassLower

double Analysis::JpsiPlus2Tracks::m_finalDiTrackMassLower {}
private

Definition at line 101 of file JpsiPlus2Tracks.h.

◆ m_finalDiTrackMassUpper

double Analysis::JpsiPlus2Tracks::m_finalDiTrackMassUpper {}
private

Definition at line 100 of file JpsiPlus2Tracks.h.

◆ m_finalDiTrackPt

double Analysis::JpsiPlus2Tracks::m_finalDiTrackPt {}
private

Definition at line 102 of file JpsiPlus2Tracks.h.

◆ m_iVertexFitter

ToolHandle< Trk::IVertexFitter > Analysis::JpsiPlus2Tracks::m_iVertexFitter
private

Definition at line 86 of file JpsiPlus2Tracks.h.

◆ m_jpsiCollectionKey

SG::ReadHandleKey<xAOD::VertexContainer> Analysis::JpsiPlus2Tracks::m_jpsiCollectionKey
private

Definition at line 78 of file JpsiPlus2Tracks.h.

◆ m_jpsiMassLower

double Analysis::JpsiPlus2Tracks::m_jpsiMassLower {}
private

Definition at line 80 of file JpsiPlus2Tracks.h.

◆ m_jpsiMassUpper

double Analysis::JpsiPlus2Tracks::m_jpsiMassUpper {}
private

Definition at line 79 of file JpsiPlus2Tracks.h.

◆ m_kkMassHyp

bool Analysis::JpsiPlus2Tracks::m_kkMassHyp {}
private

Definition at line 68 of file JpsiPlus2Tracks.h.

◆ m_kpiMassHyp

bool Analysis::JpsiPlus2Tracks::m_kpiMassHyp {}
private

Definition at line 69 of file JpsiPlus2Tracks.h.

◆ m_kpMassHyp

bool Analysis::JpsiPlus2Tracks::m_kpMassHyp {}
private

Definition at line 70 of file JpsiPlus2Tracks.h.

◆ m_manualMassHypo

std::vector<double> Analysis::JpsiPlus2Tracks::m_manualMassHypo
private

Definition at line 105 of file JpsiPlus2Tracks.h.

◆ m_mumukkMasses

std::vector<double> Analysis::JpsiPlus2Tracks::m_mumukkMasses
private

Definition at line 108 of file JpsiPlus2Tracks.h.

◆ m_mumukpiMasses

std::vector<double> Analysis::JpsiPlus2Tracks::m_mumukpiMasses
private

Definition at line 110 of file JpsiPlus2Tracks.h.

◆ m_mumukpMasses

std::vector<double> Analysis::JpsiPlus2Tracks::m_mumukpMasses
private

Definition at line 112 of file JpsiPlus2Tracks.h.

◆ m_mumupikMasses

std::vector<double> Analysis::JpsiPlus2Tracks::m_mumupikMasses
private

Definition at line 111 of file JpsiPlus2Tracks.h.

◆ m_mumupipiMasses

std::vector<double> Analysis::JpsiPlus2Tracks::m_mumupipiMasses
private

Definition at line 109 of file JpsiPlus2Tracks.h.

◆ m_mumupkMasses

std::vector<double> Analysis::JpsiPlus2Tracks::m_mumupkMasses
private

Definition at line 113 of file JpsiPlus2Tracks.h.

◆ m_MuonsUsedInJpsi

SG::ReadHandleKey<xAOD::MuonContainer> Analysis::JpsiPlus2Tracks::m_MuonsUsedInJpsi
private

Definition at line 83 of file JpsiPlus2Tracks.h.

◆ m_oppChargesOnly

bool Analysis::JpsiPlus2Tracks::m_oppChargesOnly {}
private

Definition at line 71 of file JpsiPlus2Tracks.h.

◆ m_pipiMassHyp

bool Analysis::JpsiPlus2Tracks::m_pipiMassHyp {}
private

Definition at line 67 of file JpsiPlus2Tracks.h.

◆ m_requiredNMuons

int Analysis::JpsiPlus2Tracks::m_requiredNMuons {}
private

Definition at line 106 of file JpsiPlus2Tracks.h.

◆ m_sameChargesOnly

bool Analysis::JpsiPlus2Tracks::m_sameChargesOnly {}
private

Definition at line 72 of file JpsiPlus2Tracks.h.

◆ m_trkDeltaZ

double Analysis::JpsiPlus2Tracks::m_trkDeltaZ {}
private

Definition at line 103 of file JpsiPlus2Tracks.h.

◆ m_trkMaxEta

double Analysis::JpsiPlus2Tracks::m_trkMaxEta {}
private

Definition at line 74 of file JpsiPlus2Tracks.h.

◆ m_TrkParticleCollection

SG::ReadHandleKey<xAOD::TrackParticleContainer> Analysis::JpsiPlus2Tracks::m_TrkParticleCollection
private

Definition at line 81 of file JpsiPlus2Tracks.h.

◆ m_TrkParticleGSFCollection

SG::ReadHandleKey<xAOD::TrackParticleContainer> Analysis::JpsiPlus2Tracks::m_TrkParticleGSFCollection
private

Definition at line 82 of file JpsiPlus2Tracks.h.

◆ m_trkQuadrupletMassLower

double Analysis::JpsiPlus2Tracks::m_trkQuadrupletMassLower {}
private

Definition at line 98 of file JpsiPlus2Tracks.h.

◆ m_trkQuadrupletMassUpper

double Analysis::JpsiPlus2Tracks::m_trkQuadrupletMassUpper {}
private

Definition at line 97 of file JpsiPlus2Tracks.h.

◆ m_trkQuadrupletPt

double Analysis::JpsiPlus2Tracks::m_trkQuadrupletPt {}
private

Definition at line 99 of file JpsiPlus2Tracks.h.

◆ m_trkSelector

ToolHandle< Trk::ITrackSelectorTool > Analysis::JpsiPlus2Tracks::m_trkSelector
private

Definition at line 87 of file JpsiPlus2Tracks.h.

◆ m_trkThresholdPt

double Analysis::JpsiPlus2Tracks::m_trkThresholdPt {}
private

Definition at line 73 of file JpsiPlus2Tracks.h.

◆ m_useGSFTrack

std::bitset<4> Analysis::JpsiPlus2Tracks::m_useGSFTrack
private

Definition at line 115 of file JpsiPlus2Tracks.h.

◆ m_useGSFTrackIndices

std::vector<int> Analysis::JpsiPlus2Tracks::m_useGSFTrackIndices
private

Definition at line 114 of file JpsiPlus2Tracks.h.

◆ m_useMassConst

bool Analysis::JpsiPlus2Tracks::m_useMassConst {}
private

Definition at line 89 of file JpsiPlus2Tracks.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.

◆ m_VKVFitter

Trk::TrkVKalVrtFitter* Analysis::JpsiPlus2Tracks::m_VKVFitter {}
private

Definition at line 88 of file JpsiPlus2Tracks.h.


The documentation for this class was generated from the following files:
Analysis::JpsiPlus2Tracks::m_oppChargesOnly
bool m_oppChargesOnly
Definition: JpsiPlus2Tracks.h:71
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
Analysis::JpsiPlus2Tracks::m_jpsiMassLower
double m_jpsiMassLower
Definition: JpsiPlus2Tracks.h:80
Analysis::JpsiPlus2Tracks::m_trkSelector
ToolHandle< Trk::ITrackSelectorTool > m_trkSelector
Definition: JpsiPlus2Tracks.h:87
Analysis::JpsiPlus2Tracks::m_MuonsUsedInJpsi
SG::ReadHandleKey< xAOD::MuonContainer > m_MuonsUsedInJpsi
Definition: JpsiPlus2Tracks.h:83
xAOD::muon
@ muon
Definition: TrackingPrimitives.h:195
xAOD::BPhysHelper::totalP
TVector3 totalP()
: Returns total 3-momentum calculated from the refitted tracks
Definition: BPhysHelper.cxx:374
Analysis::JpsiPlus2Tracks::m_BMassLower
double m_BMassLower
Definition: JpsiPlus2Tracks.h:77
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
Analysis::JpsiPlus2Tracks::m_chi2cut
double m_chi2cut
Definition: JpsiPlus2Tracks.h:95
Analysis::JpsiPlus2Tracks::m_kkMassHyp
bool m_kkMassHyp
Definition: JpsiPlus2Tracks.h:68
xAOD::BPhysHelper
Definition: BPhysHelper.h:71
Analysis::JpsiPlus2Tracks::m_BThresholdPt
double m_BThresholdPt
Definition: JpsiPlus2Tracks.h:75
Analysis::JpsiPlus2Tracks::m_trkQuadrupletPt
double m_trkQuadrupletPt
Definition: JpsiPlus2Tracks.h:99
egammaEnergyPositionAllSamples::e1
double e1(const xAOD::CaloCluster &cluster)
return the uncorrected cluster energy in 1st sampling
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
max
constexpr double max()
Definition: ap_fixedTest.cxx:33
Analysis::JpsiPlus2Tracks::m_finalDiTrackMassLower
double m_finalDiTrackMassLower
Definition: JpsiPlus2Tracks.h:101
Trk::TrkVKalVrtFitter::VKalVrtFitFast
virtual StatusCode VKalVrtFitFast(std::span< const xAOD::TrackParticle *const >, Amg::Vector3D &Vertex, double &minDZ, IVKalState &istate) const
Definition: VKalVrtFitFastSvc.cxx:56
xAOD::Vertex_v1::trackParticleLinks
const TrackParticleLinks_t & trackParticleLinks() const
Get all the particles associated with the vertex.
Analysis::JpsiPlus2Tracks::m_candidateLimit
size_t m_candidateLimit
Definition: JpsiPlus2Tracks.h:116
Trk::indices
std::pair< long int, long int > indices
Definition: AlSymMatBase.h:24
Analysis::JpsiPlus2Tracks::m_kpiMassHyp
bool m_kpiMassHyp
Definition: JpsiPlus2Tracks.h:69
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
ParticleTest.tp
tp
Definition: ParticleTest.py:25
Analysis::kMass
constexpr double kMass
Definition: JpsiPlus1Track.cxx:34
Analysis::JpsiPlus2Tracks::m_mumupikMasses
std::vector< double > m_mumupikMasses
Definition: JpsiPlus2Tracks.h:111
Analysis::JpsiPlus2Tracks::fit
xAOD::Vertex * fit(const std::vector< const xAOD::TrackParticle * > &, const xAOD::TrackParticleContainer *, const xAOD::TrackParticleContainer *GSL) const
Definition: JpsiPlus2Tracks.cxx:433
Analysis::JpsiUpsilonCommon::isContainedIn
static bool isContainedIn(const xAOD::TrackParticle *, const std::vector< const xAOD::TrackParticle * > &)
Definition: JpsiUpsilonCommon.cxx:58
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
Analysis::pMass
constexpr double pMass
Definition: JpsiPlus2Tracks.cxx:33
Analysis::JpsiPlus2Tracks::m_sameChargesOnly
bool m_sameChargesOnly
Definition: JpsiPlus2Tracks.h:72
Analysis::JpsiPlus2Tracks::m_trkQuadrupletMassLower
double m_trkQuadrupletMassLower
Definition: JpsiPlus2Tracks.h:98
Analysis::JpsiPlus2Tracks::m_VKVFitter
Trk::TrkVKalVrtFitter * m_VKVFitter
Definition: JpsiPlus2Tracks.h:88
Analysis::JpsiUpsilonCommon::cutRange
static bool cutRange(double value, double min, double max)
Definition: JpsiUpsilonCommon.cxx:72
Analysis::JpsiPlus2Tracks::oppositeCharges
static bool oppositeCharges(const xAOD::TrackParticle *, const xAOD::TrackParticle *)
Definition: JpsiPlus2Tracks.cxx:487
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
Analysis::JpsiPlus2Tracks::m_finalDiTrackPt
double m_finalDiTrackPt
Definition: JpsiPlus2Tracks.h:102
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:29
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
Analysis::JpsiPlus2Tracks::m_mumukkMasses
std::vector< double > m_mumukkMasses
Definition: JpsiPlus2Tracks.h:108
xAOD::TrackParticle_v1::p4
virtual FourMom_t p4() const override final
The full 4-momentum of the particle.
Definition: TrackParticle_v1.cxx:129
Analysis::JpsiPlus2Tracks::m_mumupipiMasses
std::vector< double > m_mumupipiMasses
Definition: JpsiPlus2Tracks.h:109
Analysis::JpsiPlus2Tracks::m_TrkParticleCollection
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_TrkParticleCollection
Definition: JpsiPlus2Tracks.h:81
Analysis::JpsiUpsilonCommon::cutAcceptGreater
static bool cutAcceptGreater(double value, double min)
Definition: JpsiUpsilonCommon.cxx:83
Trk::TrkVKalVrtFitter::setMassForConstraint
virtual void setMassForConstraint(double Mass, IVKalState &istate) const override final
Definition: SetFitOptions.cxx:134
Analysis::JpsiPlus2Tracks::getInvariantMass
static double getInvariantMass(const xAOD::TrackParticle *, double, const xAOD::TrackParticle *, double)
Definition: JpsiPlus2Tracks.cxx:503
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
Analysis::JpsiPlus2Tracks::m_pipiMassHyp
bool m_pipiMassHyp
Definition: JpsiPlus2Tracks.h:67
AthCommonDataStore
Definition: AthCommonDataStore.h:52
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
CheckAppliedSFs.e3
e3
Definition: CheckAppliedSFs.py:264
python.TrigInDetConfig.inputTracks
inputTracks
Definition: TrigInDetConfig.py:183
lumiFormat.i
int i
Definition: lumiFormat.py:85
PixelAthClusterMonAlgCfg.e4
e4
Definition: PixelAthClusterMonAlgCfg.py:332
beamspotman.n
n
Definition: beamspotman.py:731
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
extractSporadic.h
list h
Definition: extractSporadic.py:97
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
Analysis::JpsiPlus2Tracks::m_mumukpMasses
std::vector< double > m_mumukpMasses
Definition: JpsiPlus2Tracks.h:112
Analysis::JpsiPlus2Tracks::m_jpsiMassUpper
double m_jpsiMassUpper
Definition: JpsiPlus2Tracks.h:79
xAOD::Vertex_v1::setTrackParticleLinks
void setTrackParticleLinks(const TrackParticleLinks_t &trackParticles)
Set all track particle links at once.
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
Analysis::JpsiPlus2Tracks::m_altMassConst
double m_altMassConst
Definition: JpsiPlus2Tracks.h:90
Analysis::JpsiPlus2Tracks::m_excludeCrossJpsiTracks
bool m_excludeCrossJpsiTracks
Definition: JpsiPlus2Tracks.h:85
Analysis::JpsiPlus2Tracks::m_diTrackPt
double m_diTrackPt
Definition: JpsiPlus2Tracks.h:96
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
DerivationFramework::TrackBag
std::vector< const xAOD::TrackParticle * > TrackBag
Definition: BPhysAddMuonBasedInvMass.h:32
xAOD::Vertex_v1::clearTracks
void clearTracks()
Remove all tracks from the vertex.
Definition: Vertex_v1.cxx:331
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
Analysis::JpsiPlus2Tracks::m_finalDiTrackMassUpper
double m_finalDiTrackMassUpper
Definition: JpsiPlus2Tracks.h:100
DataVector
Derived DataVector<T>.
Definition: DataVector.h:794
AthAlgTool::AthAlgTool
AthAlgTool()
Default constructor:
Analysis::JpsiPlus2Tracks::m_useGSFTrack
std::bitset< 4 > m_useGSFTrack
Definition: JpsiPlus2Tracks.h:115
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
Analysis::JpsiPlus2Tracks::m_excludeJpsiMuonsOnly
bool m_excludeJpsiMuonsOnly
Definition: JpsiPlus2Tracks.h:84
Analysis::JpsiPlus2Tracks::m_altMassMuonTracks
std::vector< double > m_altMassMuonTracks
Definition: JpsiPlus2Tracks.h:107
Analysis::JpsiPlus2Tracks::vertexCuts
bool vertexCuts(xAOD::BPhysHelper &bHelper) const
Definition: JpsiPlus2Tracks.cxx:584
xAOD::TrackParticle_v1::qOverP
float qOverP() const
Returns the parameter.
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
Analysis::JpsiPlus2Tracks::m_BMassUpper
double m_BMassUpper
Definition: JpsiPlus2Tracks.h:76
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
Analysis::JpsiPlus2Tracks::m_jpsiCollectionKey
SG::ReadHandleKey< xAOD::VertexContainer > m_jpsiCollectionKey
Definition: JpsiPlus2Tracks.h:78
Analysis::JpsiPlus2Tracks::m_requiredNMuons
int m_requiredNMuons
Definition: JpsiPlus2Tracks.h:106
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
Analysis::JpsiPlus2Tracks::m_TrkParticleGSFCollection
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_TrkParticleGSFCollection
Definition: JpsiPlus2Tracks.h:82
Analysis::JpsiPlus2Tracks::m_useGSFTrackIndices
std::vector< int > m_useGSFTrackIndices
Definition: JpsiPlus2Tracks.h:114
Prompt::Def::Pt
@ Pt
Definition: VarHolder.h:76
Analysis::JpsiPlus2Tracks::m_useMassConst
bool m_useMassConst
Definition: JpsiPlus2Tracks.h:89
a
TList * a
Definition: liststreamerinfos.cxx:10
Analysis::JpsiPlus2Tracks::m_mumupkMasses
std::vector< double > m_mumupkMasses
Definition: JpsiPlus2Tracks.h:113
h
xAOD::Vertex_v1
Class describing a Vertex.
Definition: Vertex_v1.h:42
xAOD::BPhysHelper::refTrk
TVector3 refTrk(const size_t index)
Returns i-th refitted track 3-momentum.
Definition: BPhysHelper.cxx:126
Analysis::JpsiPlus2Tracks::m_trkMaxEta
double m_trkMaxEta
Definition: JpsiPlus2Tracks.h:74
egammaEnergyPositionAllSamples::e2
double e2(const xAOD::CaloCluster &cluster)
return the uncorrected cluster energy in 2nd sampling
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
Analysis::JpsiPlus2Tracks::m_kpMassHyp
bool m_kpMassHyp
Definition: JpsiPlus2Tracks.h:70
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:623
Analysis::piMass
constexpr double piMass
Definition: JpsiPlus1Track.cxx:35
Analysis::JpsiPlus2Tracks::passCuts
bool passCuts(xAOD::BPhysHelper &bHelper, std::span< const double > masses, std::string_view str) const
Definition: JpsiPlus2Tracks.cxx:563
Analysis::JpsiPlus2Tracks::m_trkQuadrupletMassUpper
double m_trkQuadrupletMassUpper
Definition: JpsiPlus2Tracks.h:97
str
Definition: BTagTrackIpAccessor.cxx:11
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:798
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
Trk::TrkVKalVrtFitter::fit
virtual xAOD::Vertex * fit(const std::vector< const TrackParameters * > &perigeeList, const Amg::Vector3D &startingPoint) const override final
Interface for MeasuredPerigee with starting point.
Definition: TrkVKalVrtFitter.cxx:261
Analysis::JpsiPlus2Tracks::m_iVertexFitter
ToolHandle< Trk::IVertexFitter > m_iVertexFitter
Definition: JpsiPlus2Tracks.h:86
Analysis::muMass
constexpr double muMass
Definition: JpsiPlus1Track.cxx:33
Analysis::JpsiPlus2Tracks::m_trkDeltaZ
double m_trkDeltaZ
Definition: JpsiPlus2Tracks.h:103
Analysis::JpsiPlus2Tracks::m_trkThresholdPt
double m_trkThresholdPt
Definition: JpsiPlus2Tracks.h:73
Analysis::JpsiUpsilonCommon::getPt
static double getPt(const xAOD::TrackParticle *, const xAOD::TrackParticle *)
Definition: JpsiUpsilonCommon.cxx:17
Analysis::JpsiPlus2Tracks::m_mumukpiMasses
std::vector< double > m_mumukpiMasses
Definition: JpsiPlus2Tracks.h:110
Analysis::JpsiPlus2Tracks::m_manualMassHypo
std::vector< double > m_manualMassHypo
Definition: JpsiPlus2Tracks.h:105
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
Trk::TrkVKalVrtFitter::setMassInputParticles
virtual void setMassInputParticles(const std::vector< double > &, IVKalState &istate) const override final
Definition: SetFitOptions.cxx:187
Analysis::JpsiPlus2Tracks::m_diTrackMassUpper
double m_diTrackMassUpper
Definition: JpsiPlus2Tracks.h:91
Trk::TrkVKalVrtFitter::makeState
virtual std::unique_ptr< IVKalState > makeState(const EventContext &ctx) const override final
Definition: TrkVKalVrtFitter.cxx:118
fitman.k
k
Definition: fitman.py:528
SUSY_SimplifiedModel_PreInclude.masses
dictionary masses
Definition: SUSY_SimplifiedModel_PreInclude.py:7
Analysis::JpsiPlus2Tracks::m_diTrackMassLower
double m_diTrackMassLower
Definition: JpsiPlus2Tracks.h:92
Analysis::JpsiUpsilonCommon::cutRangeOR
static bool cutRangeOR(const std::vector< double > &values, double min, double max)
Definition: JpsiUpsilonCommon.cxx:76
Trk::TrkVKalVrtFitter
Definition: TrkVKalVrtFitter.h:67