|
ATLAS Offline Software
|
#include <JpsiPlus2Tracks.h>
|
| 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::Vertex * | fit (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 |
|
Definition at line 43 of file JpsiPlus2Tracks.h.
◆ StoreGateSvc_t
◆ JpsiPlus2Tracks()
Analysis::JpsiPlus2Tracks::JpsiPlus2Tracks |
( |
const std::string & |
t, |
|
|
const std::string & |
n, |
|
|
const IInterface * |
p |
|
) |
| |
◆ ~JpsiPlus2Tracks()
Analysis::JpsiPlus2Tracks::~JpsiPlus2Tracks |
( |
| ) |
|
◆ declareGaudiProperty() [1/4]
specialization for handling Gaudi::Property<SG::VarHandleKeyArray>
Definition at line 170 of file AthCommonDataStore.h.
175 hndl.documentation());
◆ declareGaudiProperty() [2/4]
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition at line 156 of file AthCommonDataStore.h.
161 hndl.documentation());
◆ declareGaudiProperty() [3/4]
specialization for handling Gaudi::Property<SG::VarHandleBase>
Definition at line 184 of file AthCommonDataStore.h.
189 hndl.documentation());
◆ declareGaudiProperty() [4/4]
◆ declareProperty() [1/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation 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.
250 this->declare(hndl.
vhKey());
251 hndl.
vhKey().setOwner(
this);
253 return PBASE::declareProperty(
name,hndl,
doc);
◆ declareProperty() [2/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation 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.
229 return PBASE::declareProperty(
name,hndl,
doc);
◆ declareProperty() [3/6]
◆ declareProperty() [4/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation 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.
338 return PBASE::declareProperty(
name, property,
doc);
◆ declareProperty() [5/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation 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.
◆ declareProperty() [6/6]
◆ detStore()
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ extraDeps_update_handler()
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()
Definition at line 433 of file JpsiPlus2Tracks.cxx.
449 constexpr
double jpsiTableMass = 3096.916;
451 std::array<int,2>
indices= {1, 2};
467 std::vector<ElementLink<DataVector<xAOD::TrackParticle> > > newLinkVector;
472 newLinkVector.push_back( mylink );
◆ getInvariantMass() [1/2]
Definition at line 524 of file JpsiPlus2Tracks.cxx.
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();
534 const auto trk2V = trk[1]->p4();
535 double px2 = trk2V.Px();
536 double py2 = trk2V.Py();
537 double pz2 = trk2V.Pz();
540 const auto trk3V = trk[2]->p4();
541 double px3 = trk3V.Px();
542 double py3 = trk3V.Py();
543 double pz3 = trk3V.Pz();
546 const auto trk4V = trk[3]->p4();
547 double px4 = trk4V.Px();
548 double py4 = trk4V.Py();
549 double pz4 = trk4V.Pz();
552 double pxSum=px1+px2+px3+px4;
553 double pySum=py1+py2+py3+py4;
554 double pzSum=pz1+pz2+pz3+pz4;
557 double M=sqrt((eSum*eSum)-(pxSum*pxSum)-(pySum*pySum)-(pzSum*pzSum));
◆ getInvariantMass() [2/2]
Definition at line 503 of file JpsiPlus2Tracks.cxx.
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;
518 double M=sqrt((eSum*eSum)-(pxSum*pxSum)-(pySum*pySum)-(pzSum*pzSum));
◆ initialize()
StatusCode Analysis::JpsiPlus2Tracks::initialize |
( |
| ) |
|
|
overridevirtual |
Definition at line 35 of file JpsiPlus2Tracks.cxx.
52 ATH_MSG_FATAL(
"Invalid number of elements given for manualMass hypothesis - needs 4");
53 return StatusCode::FAILURE;
61 return StatusCode::FAILURE;
65 return StatusCode::FAILURE;
83 return StatusCode::SUCCESS;
◆ inputHandles()
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 |
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ oppositeCharges()
◆ outputHandles()
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.
567 double bPt = bMomentum.Pt();
569 double bMass = bMomentum.M();
570 ATH_MSG_DEBUG(
"Candidate pt/mass under " <<
str <<
" track mass hypothesis is " << bPt <<
" / " << bMass);
576 double bDiTrkPt = (tr1+tr2).
Pt();
577 double bDiTrkMass = (tr1+tr2).M();
◆ performSearch()
Implements Analysis::ICandidateSearch.
Definition at line 174 of file JpsiPlus2Tracks.cxx.
181 if(!jpsihandle.isValid()){
183 return StatusCode::FAILURE;
185 importedJpsiCollection = jpsihandle.cptr();
188 ATH_MSG_DEBUG(
"VxCandidate container size " << importedJpsiCollection->size());
193 if(!trackshandle.isValid()){
195 return StatusCode::FAILURE;
197 importedTrackCollection = trackshandle.cptr();
200 ATH_MSG_DEBUG(
"Track container size "<< importedTrackCollection->size());
206 importedGSFTrackCollection =
h.cptr();
215 return StatusCode::FAILURE;
217 importedMuonCollection =
h.cptr();
220 ATH_MSG_DEBUG(
"Muon container size "<< importedMuonCollection->size());
224 typedef std::vector<const xAOD::TrackParticle*>
TrackBag;
228 for (
auto trkPBItr=importedTrackCollection->cbegin(); trkPBItr!=importedTrackCollection->cend(); ++trkPBItr) {
235 if (
m_trkSelector->decision(*
tp, NULL) ) theIDTracksAfterSelection.push_back(
tp);
237 if (theIDTracksAfterSelection.size() == 0)
return StatusCode::SUCCESS;
238 ATH_MSG_DEBUG(
"Number of tracks after ID trkSelector: " << theIDTracksAfterSelection.size());
241 std::vector<const xAOD::Vertex*> selectedJpsiCandidates;
242 std::vector<const xAOD::TrackParticle*> jpsiTracks;
243 for(
auto vxcItr=importedJpsiCollection->cbegin(); vxcItr!=importedJpsiCollection->cend(); ++vxcItr) {
252 selectedJpsiCandidates.push_back(*vxcItr);
259 jpsiTracks.push_back(jpsiTP1);
260 jpsiTracks.push_back(jpsiTP2);
263 ATH_MSG_DEBUG(
"selectedJpsiCandidates: " << selectedJpsiCandidates.size());
270 std::vector<const xAOD::TrackParticle*> QuadletTracks(4,
nullptr);
272 std::vector<double> massCuts;
276 for(
auto muon : *importedMuonCollection){
277 if(!
muon->inDetTrackParticleLink().isValid())
continue;
278 auto track =
muon->trackParticle( xAOD::Muon::InnerDetectorTrackParticle );
279 if(
track==
nullptr)
continue;
281 muonTracks.push_back(
track);
285 for(
auto jpsiItr=selectedJpsiCandidates.begin(); jpsiItr!=selectedJpsiCandidates.end(); ++jpsiItr) {
290 QuadletTracks[0] = jpsiTP1;
291 QuadletTracks[1] = jpsiTP2;
295 jpsiTracks.resize(2);
296 jpsiTracks[0] = jpsiTP1;
297 jpsiTracks[1] = jpsiTP2;
301 for (
TrackBag::iterator trkItr1=theIDTracksAfterSelection.begin(); trkItr1<theIDTracksAfterSelection.end(); ++trkItr1) {
303 int linkedMuonTrk1 = 0;
306 if (linkedMuonTrk1)
ATH_MSG_DEBUG(
"This id track 1 is muon track!");
309 if (linkedMuonTrk1)
ATH_MSG_DEBUG(
"ID track 1 removed: id track is selected to build Jpsi!");
316 std::abs((*trkItr1)->z0() + (*trkItr1)->vz() - (*jpsiItr)->z()) >
m_trkDeltaZ )
319 for (
TrackBag::iterator trkItr2=trkItr1+1; trkItr2!=theIDTracksAfterSelection.end(); ++trkItr2) {
322 return StatusCode::SUCCESS;
328 if (linkedMuonTrk2)
ATH_MSG_DEBUG(
"This id track 2 is muon track!");
330 if (linkedMuonTrk2)
ATH_MSG_DEBUG(
"ID track 2 removed: id track is selected to build Jpsi Vtx!");
341 std::abs((*trkItr2)->z0() + (*trkItr2)->vz() - (*jpsiItr)->z()) >
m_trkDeltaZ )
350 if((*trkItr2)->qOverP()>0) {
351 QuadletTracks[2] = *trkItr2;
352 QuadletTracks[3] = *trkItr1;
354 QuadletTracks[2] = *trkItr1;
355 QuadletTracks[3] = *trkItr2;
361 bool passesDiTrack(
true);
378 if (!passesDiTrack)
continue;
381 bool passes4TrackMass(
true);
399 if (!passes4TrackMass)
continue;
402 std::unique_ptr<xAOD::Vertex> bVertex (
fit(QuadletTracks, importedTrackCollection, importedGSFTrackCollection));
403 if(!bVertex)
continue;
404 double bChi2DOF = bVertex->chiSquared()/bVertex->numberDoF();
407 if(!chi2CutPassed) {
ATH_MSG_DEBUG(
"Chi Cut failed!");
continue; }
409 bHelper.setRefTrks();
411 if(!passesCuts)
continue;
414 std::vector<const xAOD::Vertex*> theJpsiPreceding;
415 theJpsiPreceding.push_back(*jpsiItr);
416 bHelper.setPrecedingVertices(theJpsiPreceding, importedJpsiCollection);
423 return StatusCode::SUCCESS;
◆ renounce()
◆ renounceArray()
◆ sysInitialize()
◆ sysStart()
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
◆ updateVHKA()
◆ vertexCuts()
◆ m_altMassConst
double Analysis::JpsiPlus2Tracks::m_altMassConst |
|
private |
◆ m_altMassMuonTracks
std::vector<double> Analysis::JpsiPlus2Tracks::m_altMassMuonTracks |
|
private |
◆ m_BMassLower
double Analysis::JpsiPlus2Tracks::m_BMassLower |
|
private |
◆ m_BMassUpper
double Analysis::JpsiPlus2Tracks::m_BMassUpper |
|
private |
◆ m_BThresholdPt
double Analysis::JpsiPlus2Tracks::m_BThresholdPt |
|
private |
◆ m_candidateLimit
size_t Analysis::JpsiPlus2Tracks::m_candidateLimit |
|
private |
◆ m_chi2cut
double Analysis::JpsiPlus2Tracks::m_chi2cut |
|
private |
◆ m_detStore
◆ m_diTrackMassLower
double Analysis::JpsiPlus2Tracks::m_diTrackMassLower |
|
private |
◆ m_diTrackMassUpper
double Analysis::JpsiPlus2Tracks::m_diTrackMassUpper |
|
private |
◆ m_diTrackPt
double Analysis::JpsiPlus2Tracks::m_diTrackPt |
|
private |
◆ m_evtStore
◆ m_excludeCrossJpsiTracks
bool Analysis::JpsiPlus2Tracks::m_excludeCrossJpsiTracks |
|
private |
◆ m_excludeJpsiMuonsOnly
bool Analysis::JpsiPlus2Tracks::m_excludeJpsiMuonsOnly |
|
private |
◆ m_finalDiTrackMassLower
double Analysis::JpsiPlus2Tracks::m_finalDiTrackMassLower |
|
private |
◆ m_finalDiTrackMassUpper
double Analysis::JpsiPlus2Tracks::m_finalDiTrackMassUpper |
|
private |
◆ m_finalDiTrackPt
double Analysis::JpsiPlus2Tracks::m_finalDiTrackPt |
|
private |
◆ m_iVertexFitter
◆ m_jpsiCollectionKey
◆ m_jpsiMassLower
double Analysis::JpsiPlus2Tracks::m_jpsiMassLower |
|
private |
◆ m_jpsiMassUpper
double Analysis::JpsiPlus2Tracks::m_jpsiMassUpper |
|
private |
◆ m_kkMassHyp
bool Analysis::JpsiPlus2Tracks::m_kkMassHyp |
|
private |
◆ m_kpiMassHyp
bool Analysis::JpsiPlus2Tracks::m_kpiMassHyp |
|
private |
◆ m_kpMassHyp
bool Analysis::JpsiPlus2Tracks::m_kpMassHyp |
|
private |
◆ m_manualMassHypo
std::vector<double> Analysis::JpsiPlus2Tracks::m_manualMassHypo |
|
private |
◆ m_mumukkMasses
std::vector<double> Analysis::JpsiPlus2Tracks::m_mumukkMasses |
|
private |
◆ m_mumukpiMasses
std::vector<double> Analysis::JpsiPlus2Tracks::m_mumukpiMasses |
|
private |
◆ m_mumukpMasses
std::vector<double> Analysis::JpsiPlus2Tracks::m_mumukpMasses |
|
private |
◆ m_mumupikMasses
std::vector<double> Analysis::JpsiPlus2Tracks::m_mumupikMasses |
|
private |
◆ m_mumupipiMasses
std::vector<double> Analysis::JpsiPlus2Tracks::m_mumupipiMasses |
|
private |
◆ m_mumupkMasses
std::vector<double> Analysis::JpsiPlus2Tracks::m_mumupkMasses |
|
private |
◆ m_MuonsUsedInJpsi
◆ m_oppChargesOnly
bool Analysis::JpsiPlus2Tracks::m_oppChargesOnly |
|
private |
◆ m_pipiMassHyp
bool Analysis::JpsiPlus2Tracks::m_pipiMassHyp |
|
private |
◆ m_requiredNMuons
int Analysis::JpsiPlus2Tracks::m_requiredNMuons |
|
private |
◆ m_sameChargesOnly
bool Analysis::JpsiPlus2Tracks::m_sameChargesOnly |
|
private |
◆ m_trkDeltaZ
double Analysis::JpsiPlus2Tracks::m_trkDeltaZ |
|
private |
◆ m_trkMaxEta
double Analysis::JpsiPlus2Tracks::m_trkMaxEta |
|
private |
◆ m_TrkParticleCollection
◆ m_TrkParticleGSFCollection
◆ m_trkQuadrupletMassLower
double Analysis::JpsiPlus2Tracks::m_trkQuadrupletMassLower |
|
private |
◆ m_trkQuadrupletMassUpper
double Analysis::JpsiPlus2Tracks::m_trkQuadrupletMassUpper |
|
private |
◆ m_trkQuadrupletPt
double Analysis::JpsiPlus2Tracks::m_trkQuadrupletPt |
|
private |
◆ m_trkSelector
◆ m_trkThresholdPt
double Analysis::JpsiPlus2Tracks::m_trkThresholdPt |
|
private |
◆ m_useGSFTrack
std::bitset<4> Analysis::JpsiPlus2Tracks::m_useGSFTrack |
|
private |
◆ m_useGSFTrackIndices
std::vector<int> Analysis::JpsiPlus2Tracks::m_useGSFTrackIndices |
|
private |
◆ m_useMassConst
bool Analysis::JpsiPlus2Tracks::m_useMassConst |
|
private |
◆ m_varHandleArraysDeclared
◆ m_vhka
◆ m_VKVFitter
The documentation for this class was generated from the following files:
JetConstituentVector::iterator iterator
ToolHandle< Trk::ITrackSelectorTool > m_trkSelector
SG::ReadHandleKey< xAOD::MuonContainer > m_MuonsUsedInJpsi
TVector3 totalP()
: Returns total 3-momentum calculated from the refitted tracks
double e1(const xAOD::CaloCluster &cluster)
return the uncorrected cluster energy in 1st sampling
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
double m_finalDiTrackMassLower
virtual StatusCode VKalVrtFitFast(std::span< const xAOD::TrackParticle *const >, Amg::Vector3D &Vertex, double &minDZ, IVKalState &istate) const
const TrackParticleLinks_t & trackParticleLinks() const
Get all the particles associated with the vertex.
std::pair< long int, long int > indices
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
std::vector< double > m_mumupikMasses
xAOD::Vertex * fit(const std::vector< const xAOD::TrackParticle * > &, const xAOD::TrackParticleContainer *, const xAOD::TrackParticleContainer *GSL) const
static bool isContainedIn(const xAOD::TrackParticle *, const std::vector< const xAOD::TrackParticle * > &)
const std::string & key() const
Return the StoreGate ID for the referenced object.
double m_trkQuadrupletMassLower
Trk::TrkVKalVrtFitter * m_VKVFitter
static bool cutRange(double value, double min, double max)
static bool oppositeCharges(const xAOD::TrackParticle *, const xAOD::TrackParticle *)
virtual void setOwner(IDataHandleHolder *o)=0
std::vector< double > m_mumukkMasses
virtual FourMom_t p4() const override final
The full 4-momentum of the particle.
std::vector< double > m_mumupipiMasses
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_TrkParticleCollection
static bool cutAcceptGreater(double value, double min)
virtual void setMassForConstraint(double Mass, IVKalState &istate) const override final
static double getInvariantMass(const xAOD::TrackParticle *, double, const xAOD::TrackParticle *, double)
::StatusCode StatusCode
StatusCode definition for legacy code.
std::vector< double > m_mumukpMasses
void setTrackParticleLinks(const TrackParticleLinks_t &trackParticles)
Set all track particle links at once.
bool m_excludeCrossJpsiTracks
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
std::vector< const xAOD::TrackParticle * > TrackBag
void clearTracks()
Remove all tracks from the vertex.
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
double m_finalDiTrackMassUpper
std::bitset< 4 > m_useGSFTrack
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
ElementLink implementation for ROOT usage.
bool m_excludeJpsiMuonsOnly
std::vector< double > m_altMassMuonTracks
bool vertexCuts(xAOD::BPhysHelper &bHelper) const
float qOverP() const
Returns the parameter.
bool setStorableObject(BaseConstReference data, bool replace=false, IProxyDict *sg=0)
Set link to point to a new container (storable).
value_type push_back(value_type pElem)
Add an element to the end of the collection.
SG::ReadHandleKey< xAOD::VertexContainer > m_jpsiCollectionKey
Eigen::Matrix< double, 3, 1 > Vector3D
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_TrkParticleGSFCollection
std::vector< int > m_useGSFTrackIndices
std::vector< double > m_mumupkMasses
Class describing a Vertex.
TVector3 refTrk(const size_t index)
Returns i-th refitted track 3-momentum.
double e2(const xAOD::CaloCluster &cluster)
return the uncorrected cluster energy in 2nd sampling
#define ATH_MSG_WARNING(x)
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
bool passCuts(xAOD::BPhysHelper &bHelper, std::span< const double > masses, std::string_view str) const
double m_trkQuadrupletMassUpper
Class describing a TrackParticle.
virtual xAOD::Vertex * fit(const std::vector< const TrackParameters * > &perigeeList, const Amg::Vector3D &startingPoint) const override final
Interface for MeasuredPerigee with starting point.
ToolHandle< Trk::IVertexFitter > m_iVertexFitter
static double getPt(const xAOD::TrackParticle *, const xAOD::TrackParticle *)
std::vector< double > m_mumukpiMasses
std::vector< double > m_manualMassHypo
size_type size() const noexcept
Returns the number of elements in the collection.
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
virtual void setMassInputParticles(const std::vector< double > &, IVKalState &istate) const override final
double m_diTrackMassUpper
virtual std::unique_ptr< IVKalState > makeState(const EventContext &ctx) const override final
double m_diTrackMassLower
static bool cutRangeOR(const std::vector< double > &values, double min, double max)