 |
ATLAS Offline Software
|
#include <InDetV0FinderTool.h>
|
| | InDetV0FinderTool (const std::string &t, const std::string &n, const IInterface *p) |
| |
| | ~InDetV0FinderTool () |
| |
| StatusCode | initialize () |
| |
| StatusCode | finalize () |
| |
| StatusCode | performSearch (xAOD::VertexContainer *v0Container, xAOD::VertexContainer *ksContainer, xAOD::VertexContainer *laContainer, xAOD::VertexContainer *lbContainer, const xAOD::Vertex *vertex, const xAOD::VertexContainer *vertColl, const EventContext &ctx) 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 |
| |
|
| void | SGError (const std::string &errService) const |
| |
| bool | doFit (const xAOD::TrackParticle *track1, const xAOD::TrackParticle *track2, Amg::Vector3D &startingPoint, const EventContext &ctx) const |
| |
| bool | d0Pass (const xAOD::TrackParticle *track1, const xAOD::TrackParticle *track2, const xAOD::VertexContainer *vertColl, const EventContext &ctx) const |
| |
| bool | d0Pass (const xAOD::TrackParticle *track1, const xAOD::VertexContainer *vertColl, const EventContext &ctx) const |
| |
| bool | d0Pass (const xAOD::TrackParticle *track1, const xAOD::Vertex *vertex, const EventContext &ctx) const |
| |
| bool | d0Pass (const xAOD::TrackParticle *track1, const Amg::Vector3D &vertex, const EventContext &ctx) const |
| |
| bool | pointAtVertex (const xAOD::Vertex *v0, const xAOD::Vertex *PV, float &score) const |
| |
| bool | pointAtVertexColl (xAOD::Vertex *v0, const xAOD::VertexContainer *vertColl, float &score) const |
| |
| bool | doMassFit (xAOD::Vertex *vxCandidate, int pdgID) const |
| |
| xAOD::Vertex * | massFit (int pdgID, const std::vector< const xAOD::TrackParticle * > &pairV0, const Amg::Vector3D &vertex) const |
| |
| ElementLink< xAOD::TrackParticleContainer > | makeLink (const xAOD::TrackParticle *, const std::vector< const xAOD::TrackParticleContainer * > &) 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...
|
| |
|
| SG::ReadHandleKey< xAOD::TrackParticleContainer > | m_trackParticleKey |
| |
| PublicToolHandle< Trk::IVertexFitter > | m_iVertexFitter |
| |
| PublicToolHandle< Trk::IVertexFitter > | m_iVKVertexFitter |
| |
| PublicToolHandle< Trk::IVertexFitter > | m_iKshortFitter |
| |
| PublicToolHandle< Trk::IVertexFitter > | m_iLambdaFitter |
| |
| PublicToolHandle< Trk::IVertexFitter > | m_iLambdabarFitter |
| |
| PublicToolHandle< Trk::IVertexFitter > | m_iGammaFitter |
| |
| PublicToolHandle< Trk::V0Tools > | m_V0Tools |
| |
| PublicToolHandle< Reco::ITrackToVertex > | m_trackToVertexTool |
| |
| PublicToolHandle< Trk::ITrackSelectorTool > | m_trkSelector |
| |
| PublicToolHandle< InDet::VertexPointEstimator > | m_vertexEstimator |
| |
| PublicToolHandle< Trk::IExtrapolator > | m_extrapolator |
| |
| const HepPDT::ParticleDataTable * | m_particleDataTable = nullptr |
| |
| BooleanProperty | m_doSimpleV0 {this, "doSimpleV0", false} |
| | = true equivalent to the old InDetSimpleV0Finder (false) More...
|
| |
| BooleanProperty | m_useorigin {this, "useorigin", true} |
| | = true only using tracks that have no vertex association (true) More...
|
| |
| BooleanProperty | m_samesign {this, "AddSameSign", false} |
| | = true select tracks with same sign (false) More...
|
| |
| BooleanProperty | m_pv {this, "trkSelPV", false} |
| | = true select tracks wrt primary vertex (false) More...
|
| |
| BooleanProperty | m_use_vertColl {this, "useVertexCollection", false} |
| | = true select tracks wrt a vertex collection (false) More...
|
| |
| BooleanProperty | m_useTRTplusTRT {this, "useTRTplusTRT", false} |
| | = use TRT+TRT pairs (true) More...
|
| |
| BooleanProperty | m_useTRTplusSi {this, "useTRTplusSi", false} |
| | = use TRT+Si pairs (true) More...
|
| |
| BooleanProperty | m_useV0Fitter {this, "useV0Fitter", false} |
| | = true if using TrkV0Fitter, = false if using VKalVert (true) More...
|
| |
| BooleanProperty | m_use_innerPixHits {this, "use_innerPixHits", false} |
| | = true select allows tracks with no innermost pixel layer hits to always pass d0 significance cut (false) More...
|
| |
| BooleanProperty | m_useBDT {this, "useBDT", false} |
| | = true uses BDT selections in place of rectangular pointAtVertex + minVertProb More...
|
| |
| BooleanProperty | m_useTrkSel {this, "use_TrackSelector", true} |
| | = true uses TrackSelectorTool More...
|
| |
| IntegerProperty | m_masses {this, "masses", 1} |
| | = 1 if using PDG values, = 2 if user set (1) More...
|
| |
| DoubleProperty | m_masspi {this, "masspi", ParticleConstants::chargedPionMassInMeV} |
| | pion mass (139.57 MeV) More...
|
| |
| DoubleProperty | m_massp {this, "massp", ParticleConstants::protonMassInMeV} |
| | proton mass (938.272 MeV) More...
|
| |
| DoubleProperty | m_masse {this, "masse", ParticleConstants::electronMassInMeV} |
| | electron mass (0.510999 MeV) More...
|
| |
| DoubleProperty | m_massK0S {this, "massK0S", ParticleConstants::KZeroMassInMeV} |
| | Kshort mass (497.672 MeV) More...
|
| |
| DoubleProperty | m_massLambda {this, "massLambda", ParticleConstants::lambdaMassInMeV} |
| | Lambda mass (1115.68 MeV) More...
|
| |
| DoubleProperty | m_ptTRT {this, "ptTRT", 700.} |
| | Minimum pT for TRT tracks (700. More...
|
| |
| DoubleProperty | m_maxsxy {this, "maxsxy", 1000.} |
| | Maximum Rxy of starting point (1000. More...
|
| |
| DoubleProperty | m_uksmin {this, "uksmin", 400.} |
| | min Kshort mass, unconstrained fit (400. More...
|
| |
| DoubleProperty | m_uksmax {this, "uksmax", 600.} |
| | max Kshort mass, unconstrained fit (600. More...
|
| |
| DoubleProperty | m_ulamin {this, "ulamin", 1000.} |
| | min Lambda mass, unconstrained fit (1000. More...
|
| |
| DoubleProperty | m_ulamax {this, "ulamax", 1200.} |
| | max Lambda mass, unconstrained fit (1200. More...
|
| |
| DoubleProperty | m_ksmin {this, "ksmin", 400.} |
| | min Kshort mass (400. More...
|
| |
| DoubleProperty | m_ksmax {this, "ksmax", 600.} |
| | max Kshort mass (600. More...
|
| |
| DoubleProperty | m_lamin {this, "lamin", 1000.} |
| | min Lambda mass (1000. More...
|
| |
| DoubleProperty | m_lamax {this, "lamax", 1200.} |
| | max Lambda mass (1200. More...
|
| |
| DoubleProperty | m_errmass {this, "errmass", 100.} |
| | Maximum mass error (100. More...
|
| |
| DoubleProperty | m_minVertProb {this, "minVertProb", 0.0001} |
| | Minimum vertex probability (0.0001) More...
|
| |
| DoubleProperty | m_minConstrVertProb {this, "minConstrVertProb", 0.0001} |
| | Minimum vertex probability for constrained fit (0.0001) More...
|
| |
| DoubleProperty | m_d0_cut {this, "d0_cut", 2.} |
| | track d0 significance wrt a vertex (>2.) More...
|
| |
| DoubleProperty | m_max_d0_cut {this, "max_d0_cut", 999999.} |
| | track |d0| wrt a vertex (<999999.) More...
|
| |
| DoubleProperty | m_max_z0_cut {this, "max_z0_cut", 999999.} |
| | track |z0| wrt a vertex (<999999.)
More...
|
| |
| DoubleProperty | m_vert_lxy_sig {this, "vert_lxy_sig", 2.} |
| | V0 lxy significance wrt a vertex (>2.) More...
|
| |
| DoubleProperty | m_vert_lxy_cut {this, "vert_lxy_cut", 500.} |
| | V0 lxy V0 lxy (<500.) More...
|
| |
| DoubleProperty | m_vert_a0xy_cut {this, "vert_a0xy_cut", 3.} |
| | V0 |a0xy| wrt a vertex (<3.) More...
|
| |
| DoubleProperty | m_vert_a0z_cut {this, "vert_a0z_cut", 15.} |
| | V0 |a0z| wrt a vertex (<15.) More...
|
| |
| DoubleProperty | m_vert_cos_cut {this, "vert_cos_cut", 0.} |
| | V0 cos(theta) angle between displacement and momentum (>0.) More...
|
| |
| DoubleProperty | m_BDTCut {this, "BDTCut", -1} |
| | BDT Score threshold. More...
|
| |
| StringProperty | m_BDTFile {this, "BDTFile", "XGBModelBetterVertex.root"} |
| | Filename of mvaUtils model file, located in /InDetV0FinderTool/BDT/v1/. More...
|
| |
| std::atomic< unsigned int > | m_events_processed {} |
| |
| std::atomic< unsigned int > | m_V0s_stored {} |
| |
| std::atomic< unsigned int > | m_Kshort_stored {} |
| |
| std::atomic< unsigned int > | m_Lambda_stored {} |
| |
| std::atomic< unsigned int > | m_Lambdabar_stored {} |
| |
| std::atomic< unsigned int > | m_Gamma_stored {} |
| |
| const Trk::TrkV0VertexFitter * | m_concreteVertexFitter = nullptr |
| |
| SG::ReadHandleKey< xAOD::VertexContainer > | m_vertexKey |
| |
| SG::WriteDecorHandleKey< xAOD::VertexContainer > | m_v0LinksDecorkeyks |
| |
| SG::WriteDecorHandleKey< xAOD::VertexContainer > | m_v0LinksDecorkeylb |
| |
| SG::WriteDecorHandleKey< xAOD::VertexContainer > | m_v0LinksDecorkeylbb |
| |
| SG::WriteDecorHandleKey< xAOD::VertexContainer > | m_v0_ksLinksDecorkey |
| |
| SG::WriteDecorHandleKey< xAOD::VertexContainer > | m_v0_laLinksDecorkey |
| |
| SG::WriteDecorHandleKey< xAOD::VertexContainer > | m_v0_lbLinksDecorkey |
| |
| SG::WriteDecorHandleKey< xAOD::VertexContainer > | m_mDecor_gfit |
| |
| SG::WriteDecorHandleKey< xAOD::VertexContainer > | m_mDecor_gmass |
| |
| SG::WriteDecorHandleKey< xAOD::VertexContainer > | m_mDecor_gmasserr |
| |
| SG::WriteDecorHandleKey< xAOD::VertexContainer > | m_mDecor_gprob |
| |
| SG::WriteDecorHandleKey< xAOD::VertexContainer > | m_v0_BDTScore |
| |
| std::unique_ptr< MVAUtils::BDT > | m_BDT |
| |
| SG::ReadHandleKey< xAOD::EventInfo > | m_eventInfo_key {this, "EventInfo", "EventInfo", "Input event information"} |
| |
| SG::ReadCondHandleKey< InDet::BeamSpotData > | m_beamSpotKey { this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" } |
| |
| SG::ReadDecorHandleKeyArray< xAOD::EventInfo > | m_beamSpotDecoKey {this, "BeamSpotDecoKeys", m_eventInfo_key, {"beamPosX", "beamPosY", "beamPosZ"}, "Add the scheduler dependencies on the beamspot information"} |
| |
| Gaudi::Property< bool > | m_useBeamSpotCond { this, "UseBeamSpotCond", false } |
| |
| Gaudi::Property< std::string > | m_v0Key { this, "V0ContainerName", "V0Candidates", "V0 container name (same calling alg)" } |
| |
| Gaudi::Property< std::string > | m_ksKey { this, "KshortContainerName", "KshortCandidates", "Ks container name (same calling alg)" } |
| |
| Gaudi::Property< std::string > | m_laKey |
| |
| Gaudi::Property< std::string > | m_lbKey |
| |
| Gaudi::Property< int > | m_maxPV { this, "MaxPV", 999999 } |
| |
| SG::ReadHandleKeyArray< xAOD::TrackParticleContainer > | m_RelinkContainers {this, "RelinkTracks", {}, "Track Containers if they need to be relinked through indirect use" } |
| |
| ServiceHandle< IPartPropSvc > | m_partPropSvc {this, "PartPropSvc", "PartPropSvc"} |
| |
| 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 |
| |
Definition at line 102 of file InDetV0FinderTool.h.
◆ StoreGateSvc_t
◆ InDetV0FinderTool()
| InDet::InDetV0FinderTool::InDetV0FinderTool |
( |
const std::string & |
t, |
|
|
const std::string & |
n, |
|
|
const IInterface * |
p |
|
) |
| |
◆ ~InDetV0FinderTool()
| InDet::InDetV0FinderTool::~InDetV0FinderTool |
( |
| ) |
|
|
default |
◆ d0Pass() [1/4]
◆ d0Pass() [2/4]
Definition at line 639 of file InDetV0FinderTool.cxx.
645 if (per1 ==
nullptr)
continue;
647 if (per2 ==
nullptr)
continue;
648 double d0_1 = per1->parameters()[
Trk::d0];
649 double sig_d0_1 = sqrt((*per1->covariance())(0,0));
650 double delta_z0_1 = track1->
z0() + track1->
vz() - PV->
z();
651 double d0_2 = per2->parameters()[
Trk::d0];
652 double sig_d0_2 = sqrt((*per2->covariance())(0,0));
653 double delta_z0_2 = track2->
z0() + track2->
vz() - PV->
z();
654 bool IP_check1 = (std::abs(d0_1/sig_d0_1) >
m_d0_cut) || !hasInnerPixHit1;
657 bool IP_check2 = (std::abs(d0_2/sig_d0_2) >
m_d0_cut) || !hasInnerPixHit2;
660 if (IP_check1 && IP_check2)
return true;
670 bool hasInnerPixHit1 =
true;
674 if (nInnerHits1 == 0) hasInnerPixHit1 =
false;
◆ d0Pass() [3/4]
Definition at line 704 of file InDetV0FinderTool.cxx.
717 bool hasInnerPixHit1 =
true;
721 if (nInnerHits1 == 0) hasInnerPixHit1 =
false;
◆ d0Pass() [4/4]
Definition at line 677 of file InDetV0FinderTool.cxx.
680 if (per1 ==
nullptr)
continue;
681 double d0_1 = per1->parameters()[
Trk::d0];
682 double sig_d0_1 = sqrt((*per1->covariance())(0,0));
683 double delta_z0_1 = track1->
z0() + track1->
vz() - PV->
z();
684 if (((std::abs(d0_1/sig_d0_1) >
m_d0_cut) ||
685 (!hasInnerPixHit1)) &&
696 bool hasInnerPixHit1 =
true;
700 if (nInnerHits1 == 0) hasInnerPixHit1 =
false;
◆ 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()
◆ doFit()
Definition at line 605 of file InDetV0FinderTool.cxx.
621 (massLambdabar_i >=
m_ulamin && massLambdabar_i <=
m_ulamax)) ) pass =
true;
632 bool hasInnerPixHit1 =
true;
633 bool hasInnerPixHit2 =
true;
637 if (nInnerHits1 == 0) hasInnerPixHit1 =
false;
◆ doMassFit()
| bool InDet::InDetV0FinderTool::doMassFit |
( |
xAOD::Vertex * |
vxCandidate, |
|
|
int |
pdgID |
|
) |
| const |
|
private |
Definition at line 799 of file InDetV0FinderTool.cxx.
808 }
else if (pdgID == -3122) {
814 if (in_mass_window) pass =
true;
822 std::vector<double>
masses;
826 }
else if (pdgID == 3122) {
◆ 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
◆ finalize()
| StatusCode InDet::InDetV0FinderTool::finalize |
( |
| ) |
|
◆ initialize()
| StatusCode InDet::InDetV0FinderTool::initialize |
( |
| ) |
|
Definition at line 54 of file InDetV0FinderTool.cxx.
122 std::string BDTPathName =
"InDetV0FinderTool/BDT/v1/" +
m_BDTFile;
125 std::unique_ptr<TFile>
rootFile(TFile::Open(fullPathToFile.c_str(),
"READ"));
126 std::string strBDTName =
"xgboost";
127 std::unique_ptr<TTree> training( (TTree*)
rootFile->Get(strBDTName.c_str()) );
128 m_BDT = std::make_unique<MVAUtils::BDT>(training.get());
168 ATH_MSG_FATAL(
"The vertex fitter passed is not a V0 Vertex Fitter");
169 return StatusCode::FAILURE;
177 return StatusCode::SUCCESS;
186 const EventContext& ctx
◆ 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& InDet::InDetV0FinderTool::interfaceID |
( |
| ) |
|
|
inlinestatic |
◆ invariantMass()
Definition at line 787 of file InDetV0FinderTool.cxx.
791 double mass = 1000000000.;
792 double error = 1000000001.;
793 bool in_mass_window =
false;
794 double winmass_min = 0., winmass_max = 0.;
◆ makeLink()
◆ massFit()
Definition at line 830 of file InDetV0FinderTool.cxx.
854 if (pdgID == -3122) {
866 const std::vector<const xAOD::TrackParticleContainer*>& trackcols)
const
870 bool elementSet =
false;
871 if(trackcols.empty()){
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ 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.
◆ performSearch()
Definition at line 191 of file InDetV0FinderTool.cxx.
194 trackCols.push_back(handle.cptr());
201 if (!vertices.isValid())
204 return StatusCode::SUCCESS;
209 if ( !TPC.isValid() )
212 return StatusCode::SUCCESS;
214 ATH_MSG_DEBUG(
"Track particle container size " << TPC->size());
222 beamspot = beamSpotHandle->beamPos();
227 beamspot =
Amg::Vector3D(beamPosX(0), beamPosY(0), beamPosZ(0));
230 std::vector<const xAOD::TrackParticle*> posTracks; posTracks.clear();
231 std::vector<const xAOD::TrackParticle*> negTracks; negTracks.clear();
233 if (
m_pv && primaryVertex) vx = primaryVertex;
235 if (TPC->size() > 1) {
237 for ( tpIt=TPC->begin(); tpIt!=TPC->end(); ++tpIt )
248 for (
const auto *
const vx : *vertices)
258 if (foundVertex)
break;
261 bool useTrack =
false;
263 if (
m_useorigin && foundVertex ==
nullptr) useTrack =
true;
264 if (!useTrack)
continue;
268 bool d0wrtVertex =
true;
270 if ( !
d0Pass(TP,vertColl, ctx) ) d0wrtVertex =
false;
274 if ( !
d0Pass(TP,primaryVertex, ctx) ) d0wrtVertex =
false;
276 if ( !
d0Pass(TP,beamspot, ctx) ) d0wrtVertex =
false;
279 if (!d0wrtVertex)
continue;
282 posTracks.push_back(TP);
283 negTracks.push_back(TP);
286 posTracks.push_back(*tpIt);
288 negTracks.push_back(*tpIt);
294 ATH_MSG_DEBUG(
"number of tracks passing preselection, positive " << posTracks.size() <<
" negative " << negTracks.size());
296 if (!posTracks.empty() && !negTracks.empty())
313 std::vector<const xAOD::TrackParticle*>::const_iterator tpIt1;
314 std::vector<const xAOD::TrackParticle*>::const_iterator tpIt2;
316 for (tpIt1 = posTracks.begin(); tpIt1 != posTracks.end(); ++tpIt1)
323 double pt1 = TP1->
pt();
326 for (tpIt2 = negTracks.begin(); tpIt2 != negTracks.end(); ++tpIt2)
328 if (*tpIt1 == *tpIt2)
continue;
336 ATH_MSG_DEBUG(
"nclus1 " << (
int)nclus1 <<
" nclus2 " << (
int)nclus2);
341 double pt2 = TP2->
pt();
343 bool trk_cut1 =
false;
344 bool trk_cut2 =
false;
345 if (nclus1 != 0) trk_cut1 =
true;
346 if (nclus1 == 0 && pt1 >=
m_ptTRT) trk_cut1 =
true;
347 if (!trk_cut1)
continue;
348 if (nclus2 != 0) trk_cut2 =
true;
349 if (nclus2 == 0 && pt2 >=
m_ptTRT) trk_cut2 =
true;
350 if (!trk_cut2)
continue;
358 if (errorcode != 0) {startingPoint(0) = 0.0; startingPoint(1) = 0.0; startingPoint(2) = 0.0;}
359 bool errorCode =
false;
360 if (errorcode == 0 || errorcode == 5 || errorcode == 6 || errorcode == 8) errorCode =
true;
361 if (!errorCode)
continue;
364 bool d0wrtVertex =
true;
366 if ( !
d0Pass(TP1,TP2,vertColl, ctx) ) d0wrtVertex =
false;
368 if (!d0wrtVertex)
continue;
372 if (
doFit(TP1,TP2,startingPoint, ctx) )
374 std::vector<const xAOD::TrackParticle*> pairV0;
376 pairV0.push_back(TP1);
377 pairV0.push_back(TP2);
382 std::unique_ptr<xAOD::Vertex> myVxCandidate;
386 myVxCandidate = std::unique_ptr<xAOD::Vertex>(
m_iVKVertexFitter->fit(pairV0, startingPoint) );
394 bool doKshortFit =
false;
395 doKshortFit =
doMassFit(myVxCandidate.get(),310);
396 bool doLambdaFit =
false;
397 doLambdaFit =
doMassFit(myVxCandidate.get(),3122);
398 bool doLambdabarFit =
false;
399 doLambdabarFit =
doMassFit(myVxCandidate.get(),-3122);
401 if (doKshortFit || doLambdaFit || doLambdabarFit)
403 bool pointAtVert =
true;
415 std::unique_ptr<xAOD::Vertex> myKshort;
416 std::unique_ptr<xAOD::Vertex> myLambda;
417 std::unique_ptr<xAOD::Vertex> myLambdabar;
418 std::unique_ptr<xAOD::Vertex> myGamma;
419 bool foundKshort =
false;
420 bool foundLambda =
false;
421 bool foundLambdabar =
false;
424 myKshort = std::unique_ptr<xAOD::Vertex>(
massFit(310, pairV0,
vertex) );
434 myLambda = std::unique_ptr<xAOD::Vertex>(
massFit(3122, pairV0,
vertex) );
444 myLambdabar = std::unique_ptr<xAOD::Vertex>(
massFit(-3122, pairV0,
vertex));
448 foundLambdabar =
true;
453 bool doGamma =
false;
455 double gamma_prob = -1., gamma_mass = -1., gamma_massErr = -1.;
456 if (foundKshort || foundLambda || foundLambdabar) doGamma =
true;
470 v0Container->
push_back(myVxCandidate.release());
472 v0_BDTScore( *(v0Container->
back()) ) =
score;
481 ksContainer->
push_back(myKshort.release());
485 v0LinksDecorks(*(ksContainer->
back())) = v0Link;
489 v0_ksLinksDecor(*(v0Container->
back())) = ksLink;
491 v0_ksLinksDecor(*(v0Container->
back())) = ksLink;
500 laContainer->
push_back(myLambda.release());
504 v0LinksDecorlb(*(laContainer->
back())) = v0Link;
508 v0_laLinksDecor(*(v0Container->
back())) = laLink;
510 v0_laLinksDecor(*(v0Container->
back())) = laLink;
519 lbContainer->
push_back(myLambdabar.release());
523 v0LinksDecorlbb(*(lbContainer->
back())) = v0Link;
527 v0_lbLinksDecor(*(v0Container->
back())) = lbLink;
529 v0_lbLinksDecor(*(v0Container->
back())) = lbLink;
532 myGamma = std::unique_ptr<xAOD::Vertex>(
massFit(22, pairV0,
vertex) );
535 gamma_prob =
m_V0Tools->vertexProbability(myGamma.get());
540 mDecor_gfit( *(v0Container->
back()) ) = gamma_fit;
541 mDecor_gmass( *(v0Container->
back()) ) = gamma_mass;
542 mDecor_gmasserr( *(v0Container->
back()) ) = gamma_massErr;
543 mDecor_gprob( *(v0Container->
back()) ) = gamma_prob;
565 if (v0Container->
empty())
ATH_MSG_DEBUG(
"No Candidates found. Empty container returned");
566 if (ksContainer->
empty())
ATH_MSG_DEBUG(
"No Kshort Candidates found. Empty container returned");
567 if (laContainer->
empty())
ATH_MSG_DEBUG(
"No Lambda Candidates found. Empty container returned");
568 if (lbContainer->
empty())
ATH_MSG_DEBUG(
"No Lambdabar Candidates found. Empty container returned");
570 return StatusCode::SUCCESS;
576 <<
"----------------------------------------------------------------------------------------------------------------------------------------------" <<
endmsg
◆ pointAtVertex()
◆ pointAtVertexColl()
Definition at line 779 of file InDetV0FinderTool.cxx.
780 double e2sq = per2->momentum().mag2() +
m2*
m2;
781 double e2 = (e2sq>0.) ? sqrt(e2sq) : 0.;
782 double p = (per1->momentum()+per2->momentum()).
mag();
784 double mass = (msq>0.) ? sqrt(msq) : 0.;
◆ renounce()
◆ renounceArray()
◆ SGError()
| void InDet::InDetV0FinderTool::SGError |
( |
const std::string & |
errService | ) |
const |
|
private |
Definition at line 599 of file InDetV0FinderTool.cxx.
601 double massKshort_i=2000001., massLambda_i=2000001., massLambdabar_i=2000001.;
◆ 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()
◆ m_BDT
◆ m_BDTCut
| DoubleProperty InDet::InDetV0FinderTool::m_BDTCut {this, "BDTCut", -1} |
|
private |
◆ m_BDTFile
| StringProperty InDet::InDetV0FinderTool::m_BDTFile {this, "BDTFile", "XGBModelBetterVertex.root"} |
|
private |
Filename of mvaUtils model file, located in /InDetV0FinderTool/BDT/v1/.
Definition at line 191 of file InDetV0FinderTool.h.
◆ m_beamSpotDecoKey
| SG::ReadDecorHandleKeyArray<xAOD::EventInfo> InDet::InDetV0FinderTool::m_beamSpotDecoKey {this, "BeamSpotDecoKeys", m_eventInfo_key, {"beamPosX", "beamPosY", "beamPosZ"}, "Add the scheduler dependencies on the beamspot information"} |
|
private |
◆ m_beamSpotKey
◆ m_concreteVertexFitter
◆ m_d0_cut
| DoubleProperty InDet::InDetV0FinderTool::m_d0_cut {this, "d0_cut", 2.} |
|
private |
◆ m_detStore
◆ m_doSimpleV0
| BooleanProperty InDet::InDetV0FinderTool::m_doSimpleV0 {this, "doSimpleV0", false} |
|
private |
◆ m_errmass
| DoubleProperty InDet::InDetV0FinderTool::m_errmass {this, "errmass", 100.} |
|
private |
◆ m_eventInfo_key
◆ m_events_processed
| std::atomic<unsigned int> InDet::InDetV0FinderTool::m_events_processed {} |
|
mutableprivate |
◆ m_evtStore
◆ m_extrapolator
Initial value:{
this, "Extrapolator", "Trk::Extrapolator"}
Definition at line 145 of file InDetV0FinderTool.h.
◆ m_Gamma_stored
| std::atomic<unsigned int> InDet::InDetV0FinderTool::m_Gamma_stored {} |
|
mutableprivate |
◆ m_iGammaFitter
Initial value:{
this, "GammaFitterTool", "Trk::TrkVKalVrtFitter"}
Definition at line 135 of file InDetV0FinderTool.h.
◆ m_iKshortFitter
Initial value:{
this, "KshortFitterTool", "Trk::TrkVKalVrtFitter"}
Definition at line 129 of file InDetV0FinderTool.h.
◆ m_iLambdabarFitter
Initial value:{
this, "LambdabarFitterTool", "Trk::TrkVKalVrtFitter"}
Definition at line 133 of file InDetV0FinderTool.h.
◆ m_iLambdaFitter
Initial value:{
this, "LambdaFitterTool", "Trk::TrkVKalVrtFitter"}
Definition at line 131 of file InDetV0FinderTool.h.
◆ m_iVertexFitter
Initial value:{
this, "VertexFitterTool", "Trk::V0VertexFitter"}
Definition at line 125 of file InDetV0FinderTool.h.
◆ m_iVKVertexFitter
Initial value:{
this, "VKVertexFitterTool", "Trk::TrkVKalVrtFitter"}
Definition at line 127 of file InDetV0FinderTool.h.
◆ m_Kshort_stored
| std::atomic<unsigned int> InDet::InDetV0FinderTool::m_Kshort_stored {} |
|
mutableprivate |
◆ m_ksKey
| Gaudi::Property<std::string> InDet::InDetV0FinderTool::m_ksKey { this, "KshortContainerName", "KshortCandidates", "Ks container name (same calling alg)" } |
|
private |
◆ m_ksmax
| DoubleProperty InDet::InDetV0FinderTool::m_ksmax {this, "ksmax", 600.} |
|
private |
◆ m_ksmin
| DoubleProperty InDet::InDetV0FinderTool::m_ksmin {this, "ksmin", 400.} |
|
private |
◆ m_laKey
| Gaudi::Property<std::string> InDet::InDetV0FinderTool::m_laKey |
|
private |
Initial value:{ this, "LambdaContainerName", "LambdaCandidates",
"Lambda container name (same calling alg)" }
Definition at line 247 of file InDetV0FinderTool.h.
◆ m_lamax
| DoubleProperty InDet::InDetV0FinderTool::m_lamax {this, "lamax", 1200.} |
|
private |
◆ m_Lambda_stored
| std::atomic<unsigned int> InDet::InDetV0FinderTool::m_Lambda_stored {} |
|
mutableprivate |
◆ m_Lambdabar_stored
| std::atomic<unsigned int> InDet::InDetV0FinderTool::m_Lambdabar_stored {} |
|
mutableprivate |
◆ m_lamin
| DoubleProperty InDet::InDetV0FinderTool::m_lamin {this, "lamin", 1000.} |
|
private |
◆ m_lbKey
| Gaudi::Property<std::string> InDet::InDetV0FinderTool::m_lbKey |
|
private |
Initial value:{ this, "LambdabarContainerName", "LambdabarCandidates",
"Lambdabar container name (same calling alg)" }
Definition at line 249 of file InDetV0FinderTool.h.
◆ m_masse
| DoubleProperty InDet::InDetV0FinderTool::m_masse {this, "masse", ParticleConstants::electronMassInMeV} |
|
private |
◆ m_masses
| IntegerProperty InDet::InDetV0FinderTool::m_masses {this, "masses", 1} |
|
private |
◆ m_massK0S
| DoubleProperty InDet::InDetV0FinderTool::m_massK0S {this, "massK0S", ParticleConstants::KZeroMassInMeV} |
|
private |
◆ m_massLambda
| DoubleProperty InDet::InDetV0FinderTool::m_massLambda {this, "massLambda", ParticleConstants::lambdaMassInMeV} |
|
private |
◆ m_massp
| DoubleProperty InDet::InDetV0FinderTool::m_massp {this, "massp", ParticleConstants::protonMassInMeV} |
|
private |
◆ m_masspi
| DoubleProperty InDet::InDetV0FinderTool::m_masspi {this, "masspi", ParticleConstants::chargedPionMassInMeV} |
|
private |
◆ m_max_d0_cut
| DoubleProperty InDet::InDetV0FinderTool::m_max_d0_cut {this, "max_d0_cut", 999999.} |
|
private |
◆ m_max_z0_cut
| DoubleProperty InDet::InDetV0FinderTool::m_max_z0_cut {this, "max_z0_cut", 999999.} |
|
private |
◆ m_maxPV
| Gaudi::Property<int> InDet::InDetV0FinderTool::m_maxPV { this, "MaxPV", 999999 } |
|
private |
◆ m_maxsxy
| DoubleProperty InDet::InDetV0FinderTool::m_maxsxy {this, "maxsxy", 1000.} |
|
private |
◆ m_mDecor_gfit
◆ m_mDecor_gmass
◆ m_mDecor_gmasserr
◆ m_mDecor_gprob
◆ m_minConstrVertProb
| DoubleProperty InDet::InDetV0FinderTool::m_minConstrVertProb {this, "minConstrVertProb", 0.0001} |
|
private |
◆ m_minVertProb
| DoubleProperty InDet::InDetV0FinderTool::m_minVertProb {this, "minVertProb", 0.0001} |
|
private |
◆ m_particleDataTable
| const HepPDT::ParticleDataTable* InDet::InDetV0FinderTool::m_particleDataTable = nullptr |
|
private |
◆ m_partPropSvc
| ServiceHandle<IPartPropSvc> InDet::InDetV0FinderTool::m_partPropSvc {this, "PartPropSvc", "PartPropSvc"} |
|
private |
◆ m_ptTRT
| DoubleProperty InDet::InDetV0FinderTool::m_ptTRT {this, "ptTRT", 700.} |
|
private |
◆ m_pv
| BooleanProperty InDet::InDetV0FinderTool::m_pv {this, "trkSelPV", false} |
|
private |
◆ m_RelinkContainers
◆ m_samesign
| BooleanProperty InDet::InDetV0FinderTool::m_samesign {this, "AddSameSign", false} |
|
private |
◆ m_trackParticleKey
Initial value:{ this, "TrackParticleCollection", "InDetTrackParticles",
"key for retrieval of TrackParticles" }
Definition at line 122 of file InDetV0FinderTool.h.
◆ m_trackToVertexTool
Initial value:{
this, "TrackToVertexTool", "Reco::TrackToVertex"}
Definition at line 139 of file InDetV0FinderTool.h.
◆ m_trkSelector
Initial value:{
this, "TrackSelectorTool", "InDet::TrackSelectorTool"}
Definition at line 141 of file InDetV0FinderTool.h.
◆ m_uksmax
| DoubleProperty InDet::InDetV0FinderTool::m_uksmax {this, "uksmax", 600.} |
|
private |
◆ m_uksmin
| DoubleProperty InDet::InDetV0FinderTool::m_uksmin {this, "uksmin", 400.} |
|
private |
◆ m_ulamax
| DoubleProperty InDet::InDetV0FinderTool::m_ulamax {this, "ulamax", 1200.} |
|
private |
◆ m_ulamin
| DoubleProperty InDet::InDetV0FinderTool::m_ulamin {this, "ulamin", 1000.} |
|
private |
◆ m_use_innerPixHits
| BooleanProperty InDet::InDetV0FinderTool::m_use_innerPixHits {this, "use_innerPixHits", false} |
|
private |
= true select allows tracks with no innermost pixel layer hits to always pass d0 significance cut (false)
Definition at line 158 of file InDetV0FinderTool.h.
◆ m_use_vertColl
| BooleanProperty InDet::InDetV0FinderTool::m_use_vertColl {this, "useVertexCollection", false} |
|
private |
◆ m_useBDT
| BooleanProperty InDet::InDetV0FinderTool::m_useBDT {this, "useBDT", false} |
|
private |
= true uses BDT selections in place of rectangular pointAtVertex + minVertProb
Definition at line 159 of file InDetV0FinderTool.h.
◆ m_useBeamSpotCond
| Gaudi::Property<bool> InDet::InDetV0FinderTool::m_useBeamSpotCond { this, "UseBeamSpotCond", false } |
|
private |
◆ m_useorigin
| BooleanProperty InDet::InDetV0FinderTool::m_useorigin {this, "useorigin", true} |
|
private |
= true only using tracks that have no vertex association (true)
Definition at line 151 of file InDetV0FinderTool.h.
◆ m_useTrkSel
| BooleanProperty InDet::InDetV0FinderTool::m_useTrkSel {this, "use_TrackSelector", true} |
|
private |
◆ m_useTRTplusSi
| BooleanProperty InDet::InDetV0FinderTool::m_useTRTplusSi {this, "useTRTplusSi", false} |
|
private |
◆ m_useTRTplusTRT
| BooleanProperty InDet::InDetV0FinderTool::m_useTRTplusTRT {this, "useTRTplusTRT", false} |
|
private |
◆ m_useV0Fitter
| BooleanProperty InDet::InDetV0FinderTool::m_useV0Fitter {this, "useV0Fitter", false} |
|
private |
= true if using TrkV0Fitter, = false if using VKalVert (true)
Definition at line 157 of file InDetV0FinderTool.h.
◆ m_v0_BDTScore
◆ m_v0_ksLinksDecorkey
◆ m_v0_laLinksDecorkey
◆ m_v0_lbLinksDecorkey
◆ m_v0Key
| Gaudi::Property<std::string> InDet::InDetV0FinderTool::m_v0Key { this, "V0ContainerName", "V0Candidates", "V0 container name (same calling alg)" } |
|
private |
◆ m_v0LinksDecorkeyks
◆ m_v0LinksDecorkeylb
◆ m_v0LinksDecorkeylbb
◆ m_V0s_stored
| std::atomic<unsigned int> InDet::InDetV0FinderTool::m_V0s_stored {} |
|
mutableprivate |
◆ m_V0Tools
| PublicToolHandle<Trk::V0Tools> InDet::InDetV0FinderTool::m_V0Tools |
|
private |
◆ m_varHandleArraysDeclared
◆ m_vert_a0xy_cut
| DoubleProperty InDet::InDetV0FinderTool::m_vert_a0xy_cut {this, "vert_a0xy_cut", 3.} |
|
private |
◆ m_vert_a0z_cut
| DoubleProperty InDet::InDetV0FinderTool::m_vert_a0z_cut {this, "vert_a0z_cut", 15.} |
|
private |
◆ m_vert_cos_cut
| DoubleProperty InDet::InDetV0FinderTool::m_vert_cos_cut {this, "vert_cos_cut", 0.} |
|
private |
V0 cos(theta) angle between displacement and momentum (>0.)
Definition at line 188 of file InDetV0FinderTool.h.
◆ m_vert_lxy_cut
| DoubleProperty InDet::InDetV0FinderTool::m_vert_lxy_cut {this, "vert_lxy_cut", 500.} |
|
private |
◆ m_vert_lxy_sig
| DoubleProperty InDet::InDetV0FinderTool::m_vert_lxy_sig {this, "vert_lxy_sig", 2.} |
|
private |
◆ m_vertexEstimator
Initial value:{
this, "VertexPointEstimator", "InDet::VertexPointEstimator"}
Definition at line 143 of file InDetV0FinderTool.h.
◆ m_vertexKey
Initial value:{ this, "VertexContainer", "PrimaryVertices",
"primary vertex container" }
Definition at line 222 of file InDetV0FinderTool.h.
◆ m_vhka
The documentation for this class was generated from the following files:
virtual double pt() const override final
The transverse momentum ( ) of the particle.
Const iterator class for DataVector/DataList.
double e1(const xAOD::CaloCluster &cluster)
return the uncorrected cluster energy in 1st sampling
float charge() const
Returns the charge.
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
@ V0Vtx
Vertex from V0 decay.
const TrackParticleLinks_t & trackParticleLinks() const
Get all the particles associated with the vertex.
bool summaryValue(uint8_t &value, const SummaryType &information) const
Accessor for TrackSummary values.
float vz() const
The z origin for the parameters.
float z0() const
Returns the parameter.
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
@ numberOfPixelHits
these are the pixel hits, including the b-layer [unit8_t].
const Amg::Vector3D & position() const
Returns the 3-pos.
Helper class to provide constant type-safe access to aux data.
virtual void setOwner(IDataHandleHolder *o)=0
void setVertexType(VxType::VertexType vType)
Set the type of the vertex.
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
void addTrackAtVertex(const ElementLink< TrackParticleContainer > &tr, float weight=1.0)
Add a new track to the vertex.
const Trk::Perigee & perigeeParameters() const
Returns the Trk::MeasuredPerigee track parameters.
Handle class for reading a decoration on an object.
::StatusCode StatusCode
StatusCode definition for legacy code.
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
Handle class for adding a decoration to an object.
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
void clearTracks()
Remove all tracks from the vertex.
float z() const
Returns the z position.
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
const T * back() const
Access the last element in the collection as an rvalue.
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
bool setElement(ElementType element)
Set to point to an element.
bool setStorableObject(BaseConstReference data, bool replace=false, IProxyDict *sg=0)
Set link to point to a new container (storable).
double charge(const T &p)
value_type push_back(value_type pElem)
Add an element to the end of the collection.
StatusCode initialize(bool used=true)
Eigen::Matrix< double, 3, 1 > Vector3D
std::string PathResolverFindCalibFile(const std::string &logical_file_name)
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
virtual xAOD::Vertex * fit(const std::vector< const xAOD::TrackParticle * > &vectorTrk, const Amg::Vector3D &startingPoint) const override
Interface for xAOD::TrackParticle with Amg::Vector3D starting point.
Class describing a Vertex.
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.
@ numberOfSCTHits
number of hits in SCT [unit8_t].
This class implements a vertex fitting algorithm optimised for V0 finding.
Class describing a TrackParticle.
size_type size() const noexcept
Returns the number of elements in the collection.
Scalar mag() const
mag method
bool empty() const noexcept
Returns true if the collection is empty.
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
@ numberOfInnermostPixelLayerHits
these are the hits in the 0th pixel barrel layer