 |
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, V, H > &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 |
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKey> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyArrayType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleType &) |
| specialization for handling Gaudi::Property<SG::VarHandleBase> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T, V, H > &t, const SG::NotHandleType &) |
| specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
|
|
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 434 of file JpsiPlus2Tracks.cxx.
452 std::array<int,2>
indices= {1, 2};
468 std::vector<ElementLink<DataVector<xAOD::TrackParticle> > > newLinkVector;
473 newLinkVector.push_back( mylink );
◆ getInvariantMass() [1/2]
Definition at line 525 of file JpsiPlus2Tracks.cxx.
528 assert(trk.size() ==
masses.size() && trk.size()==4);
529 const auto trk1V = trk[0]->p4();
530 double px1 = trk1V.Px();
531 double py1 = trk1V.Py();
532 double pz1 = trk1V.Pz();
535 const auto trk2V = trk[1]->p4();
536 double px2 = trk2V.Px();
537 double py2 = trk2V.Py();
538 double pz2 = trk2V.Pz();
541 const auto trk3V = trk[2]->p4();
542 double px3 = trk3V.Px();
543 double py3 = trk3V.Py();
544 double pz3 = trk3V.Pz();
547 const auto trk4V = trk[3]->p4();
548 double px4 = trk4V.Px();
549 double py4 = trk4V.Py();
550 double pz4 = trk4V.Pz();
553 double pxSum=px1+px2+px3+px4;
554 double pySum=py1+py2+py3+py4;
555 double pzSum=pz1+pz2+pz3+pz4;
558 double M=sqrt((eSum*eSum)-(pxSum*pxSum)-(pySum*pySum)-(pzSum*pzSum));
◆ getInvariantMass() [2/2]
Definition at line 504 of file JpsiPlus2Tracks.cxx.
505 const auto trk1V = trk1->
p4();
506 double px1 = trk1V.Px();
507 double py1 = trk1V.Py();
508 double pz1 = trk1V.Pz();
509 double e1 = sqrt(px1*px1+py1*py1+pz1*pz1+mass1*mass1);
510 const auto trk2V = trk2->
p4();
511 double px2 = trk2V.Px();
512 double py2 = trk2V.Py();
513 double pz2 = trk2V.Pz();
514 double e2 = sqrt(px2*px2+py2*py2+pz2*pz2+mass2*mass2);
515 double pxSum=px1+px2;
516 double pySum=py1+py2;
517 double pzSum=pz1+pz2;
519 double M=sqrt((eSum*eSum)-(pxSum*pxSum)-(pySum*pySum)-(pzSum*pzSum));
◆ initialize()
StatusCode Analysis::JpsiPlus2Tracks::initialize |
( |
| ) |
|
|
overridevirtual |
Definition at line 36 of file JpsiPlus2Tracks.cxx.
53 ATH_MSG_FATAL(
"Invalid number of elements given for manualMass hypothesis - needs 4");
54 return StatusCode::FAILURE;
62 return StatusCode::FAILURE;
66 return StatusCode::FAILURE;
84 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 564 of file JpsiPlus2Tracks.cxx.
568 double bPt = bMomentum.Pt();
570 double bMass = bMomentum.M();
571 ATH_MSG_DEBUG(
"Candidate pt/mass under " <<
str <<
" track mass hypothesis is " << bPt <<
" / " << bMass);
577 double bDiTrkPt = (tr1+tr2).
Pt();
578 double bDiTrkMass = (tr1+tr2).M();
◆ performSearch()
Implements Analysis::ICandidateSearch.
Definition at line 175 of file JpsiPlus2Tracks.cxx.
182 if(!jpsihandle.isValid()){
184 return StatusCode::FAILURE;
186 importedJpsiCollection = jpsihandle.cptr();
189 ATH_MSG_DEBUG(
"VxCandidate container size " << importedJpsiCollection->size());
194 if(!trackshandle.isValid()){
196 return StatusCode::FAILURE;
198 importedTrackCollection = trackshandle.cptr();
201 ATH_MSG_DEBUG(
"Track container size "<< importedTrackCollection->size());
207 importedGSFTrackCollection =
h.cptr();
216 return StatusCode::FAILURE;
218 importedMuonCollection =
h.cptr();
221 ATH_MSG_DEBUG(
"Muon container size "<< importedMuonCollection->size());
225 typedef std::vector<const xAOD::TrackParticle*>
TrackBag;
229 for (
auto trkPBItr=importedTrackCollection->cbegin(); trkPBItr!=importedTrackCollection->cend(); ++trkPBItr) {
236 if (
m_trkSelector->decision(*
tp, NULL) ) theIDTracksAfterSelection.push_back(
tp);
238 if (theIDTracksAfterSelection.size() == 0)
return StatusCode::SUCCESS;
239 ATH_MSG_DEBUG(
"Number of tracks after ID trkSelector: " << theIDTracksAfterSelection.size());
242 std::vector<const xAOD::Vertex*> selectedJpsiCandidates;
243 std::vector<const xAOD::TrackParticle*> jpsiTracks;
244 for(
auto vxcItr=importedJpsiCollection->cbegin(); vxcItr!=importedJpsiCollection->cend(); ++vxcItr) {
253 selectedJpsiCandidates.push_back(*vxcItr);
260 jpsiTracks.push_back(jpsiTP1);
261 jpsiTracks.push_back(jpsiTP2);
264 ATH_MSG_DEBUG(
"selectedJpsiCandidates: " << selectedJpsiCandidates.size());
271 std::vector<const xAOD::TrackParticle*> QuadletTracks(4,
nullptr);
273 std::vector<double> massCuts;
277 for(
auto muon : *importedMuonCollection){
278 if(!
muon->inDetTrackParticleLink().isValid())
continue;
279 auto track =
muon->trackParticle( xAOD::Muon::InnerDetectorTrackParticle );
280 if(
track==
nullptr)
continue;
282 muonTracks.push_back(
track);
286 for(
auto jpsiItr=selectedJpsiCandidates.begin(); jpsiItr!=selectedJpsiCandidates.end(); ++jpsiItr) {
291 QuadletTracks[0] = jpsiTP1;
292 QuadletTracks[1] = jpsiTP2;
296 jpsiTracks.resize(2);
297 jpsiTracks[0] = jpsiTP1;
298 jpsiTracks[1] = jpsiTP2;
302 for (
TrackBag::iterator trkItr1=theIDTracksAfterSelection.begin(); trkItr1<theIDTracksAfterSelection.end(); ++trkItr1) {
304 int linkedMuonTrk1 = 0;
307 if (linkedMuonTrk1)
ATH_MSG_DEBUG(
"This id track 1 is muon track!");
310 if (linkedMuonTrk1)
ATH_MSG_DEBUG(
"ID track 1 removed: id track is selected to build Jpsi!");
317 std::abs((*trkItr1)->z0() + (*trkItr1)->vz() - (*jpsiItr)->z()) >
m_trkDeltaZ )
320 for (
TrackBag::iterator trkItr2=trkItr1+1; trkItr2!=theIDTracksAfterSelection.end(); ++trkItr2) {
323 return StatusCode::SUCCESS;
329 if (linkedMuonTrk2)
ATH_MSG_DEBUG(
"This id track 2 is muon track!");
331 if (linkedMuonTrk2)
ATH_MSG_DEBUG(
"ID track 2 removed: id track is selected to build Jpsi Vtx!");
342 std::abs((*trkItr2)->z0() + (*trkItr2)->vz() - (*jpsiItr)->z()) >
m_trkDeltaZ )
351 if((*trkItr2)->qOverP()>0) {
352 QuadletTracks[2] = *trkItr2;
353 QuadletTracks[3] = *trkItr1;
355 QuadletTracks[2] = *trkItr1;
356 QuadletTracks[3] = *trkItr2;
362 bool passesDiTrack(
true);
379 if (!passesDiTrack)
continue;
382 bool passes4TrackMass(
true);
400 if (!passes4TrackMass)
continue;
403 std::unique_ptr<xAOD::Vertex> bVertex (
fit(QuadletTracks, importedTrackCollection, importedGSFTrackCollection));
404 if(!bVertex)
continue;
405 double bChi2DOF = bVertex->chiSquared()/bVertex->numberDoF();
408 if(!chi2CutPassed) {
ATH_MSG_DEBUG(
"Chi Cut failed!");
continue; }
410 bHelper.setRefTrks();
412 if(!passesCuts)
continue;
415 std::vector<const xAOD::Vertex*> theJpsiPreceding;
416 theJpsiPreceding.push_back(*jpsiItr);
417 bHelper.setPrecedingVertices(theJpsiPreceding, importedJpsiCollection);
424 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
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.
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
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.
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
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.
constexpr double JpsiMassInMeV
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.
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)