ATLAS Offline Software
Public Member Functions | Protected Member Functions | Protected Attributes | Private Attributes | List of all members
sTGCHitsTestTool Class Reference

#include <sTGCHitsTestTool.h>

Inheritance diagram for sTGCHitsTestTool:
Collaboration diagram for sTGCHitsTestTool:

Public Member Functions

 sTGCHitsTestTool (const std::string &type, const std::string &name, const IInterface *parent)
 
virtual StatusCode initialize () override final
 
virtual StatusCode processEvent () override final
 

Protected Member Functions

StatusCode executeCheckEventInfo ()
 
StatusCode executeFillHistos (const Amg::Vector3D &)
 
StatusCode executeFillHistosSectors_Wedge1 (const Amg::Vector3D &, std::string)
 
StatusCode executeFillHistosSectors_Wedge2 (const Amg::Vector3D &, std::string)
 
StatusCode executeFillHistos_sTGc (const Amg::Vector3D &, std::string)
 

Protected Attributes

TH2m_sTgc_TransverseView_QS1C_posZ = nullptr
 
TH2m_sTgc_TransverseView_QS2C_posZ = nullptr
 
TH2m_sTgc_TransverseView_QS3C_posZ = nullptr
 
TH2m_sTgc_TransverseView_QL1P_posZ = nullptr
 
TH2m_sTgc_TransverseView_QL2P_posZ = nullptr
 
TH2m_sTgc_TransverseView_QL3P_posZ = nullptr
 
TH2m_sTgc_rZview_positiveZ = nullptr
 
std::string m_detname
 
const MuonGM::MuonDetectorManagerm_pMuonMgr
 
SG::ReadHandleKey< xAOD::EventInfom_eventInfoKey {this, "EventInfo", "EventInfo", "EventInfo name"}
 SG key for Event Info. More...
 
double m_BarrelEtaCut
 MDT barrel eta cut, applicable to the MDT 2D cross section plot. More...
 
TH1m_muonevnt
 
TH1m_muonrun
 
TH1m_muoneta
 
TH1m_muontheta
 
TH1m_muonphi
 
TH1m_muonzResid
 
TH1m_muonphiResid
 
TH2m_muondetBarrel
 
TH2m_muonlongView
 
TH1m_eta
 
TH1m_theta
 
TH1m_phi
 
TH1m_zResid
 
TH1m_phiResid
 
TH2m_detBarrel
 
TH2m_longView
 
Amg::Vector3D m_direction
 
std::string m_path {"/truth/"}
 
ServiceHandle< ITHistSvc > m_histSvc {"THistSvc", "SimTestHisto"}
 

Private Attributes

bool m_DosTGCTest = true
 

structors and AlgTool implementation

std::string m_key
 The MC truth key. More...
 
HepMC::ConstGenParticlePtr getPrimary ()
 

Detailed Description

Definition at line 11 of file sTGCHitsTestTool.h.

Constructor & Destructor Documentation

◆ sTGCHitsTestTool()

sTGCHitsTestTool::sTGCHitsTestTool ( const std::string &  type,
const std::string &  name,
const IInterface *  parent 
)
inline

Definition at line 16 of file sTGCHitsTestTool.h.

18  {
19  declareProperty("DosTGCTest", m_DosTGCTest);
20  m_BarrelEtaCut=10.;
21  }

Member Function Documentation

◆ executeCheckEventInfo()

StatusCode MuonHitTestToolBase::executeCheckEventInfo ( )
protectedinherited

Definition at line 35 of file MuonHitTestToolBase.cxx.

36 {
37  SG::ReadHandle<xAOD::EventInfo> eventInfo (m_eventInfoKey,Gaudi::Hive::currentContext());
38  ATH_CHECK(eventInfo.isValid());
39  uint64_t evt = eventInfo->eventNumber();
40  int numrun = eventInfo->runNumber();
41  ATH_MSG_VERBOSE("Processing EventInfo event #"<< evt<< " run: " << numrun);
43  m_muonrun->Fill(numrun);
44  const McEventCollection* mcEvent;
45  CHECK(evtStore()->retrieve(mcEvent,m_key));
46 
47  // *AS* Why only if mcEvent ==1? when would there be more than one event?
48  if (mcEvent->size()!=1) {
49  m_direction=Amg::Vector3D(0.,0.,0.);
50  return StatusCode::SUCCESS;
51  }
52 
53  // *AS* Why this (double) loop, if only the last entry is preserved?
54  // changed it to take the gen particle
56  for (e=mcEvent->begin();e!=mcEvent->end(); ++e) {
57  for (auto p: (**e)) {
59  Amg::Vector3D temp_momentum(p->momentum().px(),
60  p->momentum().py(),
61  p->momentum().pz());
62  m_direction = temp_momentum.unit();
63  break;
64  }
65  }
66  }
67  return StatusCode::SUCCESS;
68 }

◆ executeFillHistos()

StatusCode MuonHitTestToolBase::executeFillHistos ( const Amg::Vector3D u)
protectedinherited

for MDTs that have barrel + endcap section, take only the barrel when plotting the xy-2d plot of the detector

Definition at line 70 of file MuonHitTestToolBase.cxx.

70  {
72 
73  if (m_direction.perp() > 0 && fabs(m_direction.eta())<m_BarrelEtaCut){
74  //mdtdet->Fill(u.x(),u.y());
75  m_muondetBarrel->Fill(u.x(),u.y());
76  m_detBarrel->Fill(u.x(),u.y());
77  }
78 
79  double rad=sqrt(u.x()*u.x()+u.y()*u.y());
80  m_muonlongView->Fill(u.z(),rad);
81  m_longView->Fill(u.z(),rad);
82 
83  // //m_direction vector is filled with truth above, so here it is wrong (no eta, theta, phi of the hit!!!)
84  // *AS* why not use "u"?
85  // theta->Fill(m_direction.theta());
86  // theta->Fill(m_direction.theta());
87  // eta->Fill(m_direction.eta());
88  // eta->Fill(m_direction.eta());
89  // phi->Fill(m_direction.phi());
90  // phi->Fill(m_direction.phi());
91 
92  if (m_direction.perp() > 0) {
93  m_muonzResid->Fill(u.cross(m_direction).dot(m_direction.cross(Amg::Vector3D(0,0,1)).unit()));
94  m_muonphiResid->Fill(u.cross(m_direction).z());
95 
96  m_zResid->Fill(u.cross(m_direction).dot(m_direction.cross(Amg::Vector3D(0,0,1)).unit()));
97  m_phiResid->Fill(u.cross(m_direction).z());
98  }
99  else {
100  m_muonzResid->Fill(0);
101  m_muonphiResid->Fill(0);
102  m_zResid->Fill(0);
103  m_phiResid->Fill(0);
104  }
105 
106  return StatusCode::SUCCESS;
107 }

◆ executeFillHistos_sTGc()

StatusCode MuonHitTestToolBase::executeFillHistos_sTGc ( const Amg::Vector3D ,
std::string   
)
protectedinherited

◆ executeFillHistosSectors_Wedge1()

StatusCode MuonHitTestToolBase::executeFillHistosSectors_Wedge1 ( const Amg::Vector3D ,
std::string   
)
protectedinherited

◆ executeFillHistosSectors_Wedge2()

StatusCode MuonHitTestToolBase::executeFillHistosSectors_Wedge2 ( const Amg::Vector3D ,
std::string   
)
protectedinherited

◆ getPrimary()

HepMC::ConstGenParticlePtr SimTestToolBase::getPrimary ( )
protectedinherited

Definition at line 20 of file SimTestToolBase.cxx.

21 {
22  const McEventCollection* mcCollection;
23  if (evtStore()->retrieve(mcCollection,m_key).isSuccess()) {
25  for (e=mcCollection->begin();e!=mcCollection->end(); ++e) {
26  for (auto p : (**e)) {
28  return p;
29  }
30  }
31  }
32  }
33  return 0;
34 }

◆ initialize()

StatusCode sTGCHitsTestTool::initialize ( )
finaloverridevirtual

Reimplemented from MuonHitTestToolBase.

Definition at line 106 of file sTGCHitsTestTool.cxx.

106  {
108  _TH2D( m_sTgc_TransverseView_QS1C_posZ,"sTGC_TransverseView_QS1C_posZ",1200,-6000.,6000.,1200,-6000.,6000.);
109  _TH2D( m_sTgc_TransverseView_QS2C_posZ,"sTGC_TransverseView_QS2C_posZ",1200,-6000.,6000.,1200,-6000.,6000.);
110  _TH2D( m_sTgc_TransverseView_QS3C_posZ,"sTGC_TransverseView_QS3C_posZ",1200,-6000.,6000.,1200,-6000.,6000.);
111 
112  _TH2D( m_sTgc_TransverseView_QL1P_posZ,"sTGC_TransverseView_QL1P_posZ",1200,-6000.,6000.,1200,-6000.,6000.);
113  _TH2D( m_sTgc_TransverseView_QL2P_posZ,"sTGC_TransverseView_QL2P_posZ",1200,-6000.,6000.,1200,-6000.,6000.);
114  _TH2D( m_sTgc_TransverseView_QL3P_posZ,"sTGC_TransverseView_QL3P_posZ",1200,-6000.,6000.,1200,-6000.,6000.);
115 
116  _TH2D(m_sTgc_rZview_positiveZ,"sTGC_rZView_posZ",2000,6500.,8500.,5000,0.,5000.);
117  return StatusCode::SUCCESS;
118 }

◆ processEvent()

StatusCode sTGCHitsTestTool::processEvent ( )
finaloverridevirtual

Definition at line 39 of file sTGCHitsTestTool.cxx.

39  {
41 
42  if (m_DosTGCTest) {
43  const sTGCSimHitCollection* p_collection = nullptr;
44  CHECK(evtStore()->retrieve(p_collection,"sTGC_Hits"));
45  for (const sTGCSimHit& hit : *p_collection) {
46  Amg::Vector3D u = hit.globalPosition();
48 
49 
50  const sTgcHitIdHelper* hitHelper = sTgcHitIdHelper::GetHelper();
51  int simId = hit.sTGCId();
52  std::string sim_stationName = hitHelper->GetStationName(simId);
53 
54  static const std::string QS1C("QS1C");
55  static const std::string QS2C("QS2C");
56  static const std::string QS3C("QS3C");
57  static const std::string QL1P("QL1P");
58  static const std::string QL2P("QL2P");
59  static const std::string QL3P("QL3P");
60 
61  if (sim_stationName==QS1C && u.z()>0){
62  m_sTgc_TransverseView_QS1C_posZ->Fill(u.x(),u.y());
63  }
64 
65 
66  if (sim_stationName==QS2C && u.z()>0){
67  m_sTgc_TransverseView_QS2C_posZ->Fill(u.x(),u.y());
68  }
69 
70 
71  if (sim_stationName==QS3C && u.z()>0){
72  m_sTgc_TransverseView_QS3C_posZ->Fill(u.x(),u.y());
73  }
74 
75  if (sim_stationName==QL1P && u.z()>0){
76  m_sTgc_TransverseView_QL1P_posZ->Fill(u.x(),u.y());
77  }
78 
79 
80  if (sim_stationName==QL2P && u.z()>0){
81  m_sTgc_TransverseView_QL2P_posZ->Fill(u.x(),u.y());
82  }
83 
84  if (sim_stationName==QL3P && u.z()>0){
85  m_sTgc_TransverseView_QL3P_posZ->Fill(u.x(),u.y());
86  }
87 
88  double r_sTGc = sqrt(u.x()*u.x()+u.y()*u.y());
89 
90  if (u.z() > 0){
91  m_sTgc_rZview_positiveZ->Fill(u.z(), r_sTGc);
92  }
93 
94 
95  // GeoMMHit ghit(hit);
96  // if (!ghit) continue;
97  // Amg::Vector3D u = ghit.getGlobalPosition();
98  // CHECK(executeFillHistos(u));
99  }
100  }
101 
102  return StatusCode::SUCCESS;
103 }

Member Data Documentation

◆ m_BarrelEtaCut

double MuonHitTestToolBase::m_BarrelEtaCut
protectedinherited

MDT barrel eta cut, applicable to the MDT 2D cross section plot.

Definition at line 44 of file MuonHitTestToolBase.h.

◆ m_detBarrel

TH2* MuonHitTestToolBase::m_detBarrel
protectedinherited

Definition at line 54 of file MuonHitTestToolBase.h.

◆ m_detname

std::string MuonHitTestToolBase::m_detname
protectedinherited

Definition at line 37 of file MuonHitTestToolBase.h.

◆ m_direction

Amg::Vector3D MuonHitTestToolBase::m_direction
protectedinherited

Definition at line 58 of file MuonHitTestToolBase.h.

◆ m_DosTGCTest

bool sTGCHitsTestTool::m_DosTGCTest = true
private

Definition at line 39 of file sTGCHitsTestTool.h.

◆ m_eta

TH1* MuonHitTestToolBase::m_eta
protectedinherited

Definition at line 52 of file MuonHitTestToolBase.h.

◆ m_eventInfoKey

SG::ReadHandleKey<xAOD::EventInfo> MuonHitTestToolBase::m_eventInfoKey {this, "EventInfo", "EventInfo", "EventInfo name"}
protectedinherited

SG key for Event Info.

Definition at line 41 of file MuonHitTestToolBase.h.

◆ m_histSvc

ServiceHandle<ITHistSvc> SimTestHisto::m_histSvc {"THistSvc", "SimTestHisto"}
protectedinherited

Definition at line 35 of file SimTestHisto.h.

◆ m_key

std::string SimTestToolBase::m_key
protectedinherited

The MC truth key.

Definition at line 34 of file SimTestToolBase.h.

◆ m_longView

TH2 * MuonHitTestToolBase::m_longView
protectedinherited

Definition at line 54 of file MuonHitTestToolBase.h.

◆ m_muondetBarrel

TH2* MuonHitTestToolBase::m_muondetBarrel
protectedinherited

Definition at line 50 of file MuonHitTestToolBase.h.

◆ m_muoneta

TH1* MuonHitTestToolBase::m_muoneta
protectedinherited

Definition at line 48 of file MuonHitTestToolBase.h.

◆ m_muonevnt

TH1* MuonHitTestToolBase::m_muonevnt
protectedinherited

Definition at line 47 of file MuonHitTestToolBase.h.

◆ m_muonlongView

TH2 * MuonHitTestToolBase::m_muonlongView
protectedinherited

Definition at line 50 of file MuonHitTestToolBase.h.

◆ m_muonphi

TH1 * MuonHitTestToolBase::m_muonphi
protectedinherited

Definition at line 48 of file MuonHitTestToolBase.h.

◆ m_muonphiResid

TH1 * MuonHitTestToolBase::m_muonphiResid
protectedinherited

Definition at line 49 of file MuonHitTestToolBase.h.

◆ m_muonrun

TH1 * MuonHitTestToolBase::m_muonrun
protectedinherited

Definition at line 47 of file MuonHitTestToolBase.h.

◆ m_muontheta

TH1 * MuonHitTestToolBase::m_muontheta
protectedinherited

Definition at line 48 of file MuonHitTestToolBase.h.

◆ m_muonzResid

TH1* MuonHitTestToolBase::m_muonzResid
protectedinherited

Definition at line 49 of file MuonHitTestToolBase.h.

◆ m_path

std::string SimTestHisto::m_path {"/truth/"}
protectedinherited

Definition at line 34 of file SimTestHisto.h.

◆ m_phi

TH1 * MuonHitTestToolBase::m_phi
protectedinherited

Definition at line 52 of file MuonHitTestToolBase.h.

◆ m_phiResid

TH1 * MuonHitTestToolBase::m_phiResid
protectedinherited

Definition at line 53 of file MuonHitTestToolBase.h.

◆ m_pMuonMgr

const MuonGM::MuonDetectorManager* MuonHitTestToolBase::m_pMuonMgr
protectedinherited

Definition at line 38 of file MuonHitTestToolBase.h.

◆ m_sTgc_rZview_positiveZ

TH2* sTGCHitsTestTool::m_sTgc_rZview_positiveZ = nullptr
protected

Definition at line 35 of file sTGCHitsTestTool.h.

◆ m_sTgc_TransverseView_QL1P_posZ

TH2* sTGCHitsTestTool::m_sTgc_TransverseView_QL1P_posZ = nullptr
protected

Definition at line 32 of file sTGCHitsTestTool.h.

◆ m_sTgc_TransverseView_QL2P_posZ

TH2* sTGCHitsTestTool::m_sTgc_TransverseView_QL2P_posZ = nullptr
protected

Definition at line 33 of file sTGCHitsTestTool.h.

◆ m_sTgc_TransverseView_QL3P_posZ

TH2* sTGCHitsTestTool::m_sTgc_TransverseView_QL3P_posZ = nullptr
protected

Definition at line 34 of file sTGCHitsTestTool.h.

◆ m_sTgc_TransverseView_QS1C_posZ

TH2* sTGCHitsTestTool::m_sTgc_TransverseView_QS1C_posZ = nullptr
protected

Definition at line 29 of file sTGCHitsTestTool.h.

◆ m_sTgc_TransverseView_QS2C_posZ

TH2* sTGCHitsTestTool::m_sTgc_TransverseView_QS2C_posZ = nullptr
protected

Definition at line 30 of file sTGCHitsTestTool.h.

◆ m_sTgc_TransverseView_QS3C_posZ

TH2* sTGCHitsTestTool::m_sTgc_TransverseView_QS3C_posZ = nullptr
protected

Definition at line 31 of file sTGCHitsTestTool.h.

◆ m_theta

TH1 * MuonHitTestToolBase::m_theta
protectedinherited

Definition at line 52 of file MuonHitTestToolBase.h.

◆ m_zResid

TH1* MuonHitTestToolBase::m_zResid
protectedinherited

Definition at line 53 of file MuonHitTestToolBase.h.


The documentation for this class was generated from the following files:
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
MuonHitTestToolBase::m_detBarrel
TH2 * m_detBarrel
Definition: MuonHitTestToolBase.h:54
TH2::Fill
int Fill(double, double)
Definition: rootspy.cxx:382
MuonHitTestToolBase::m_muonphiResid
TH1 * m_muonphiResid
Definition: MuonHitTestToolBase.h:49
MuonHitTestToolBase::m_muonevnt
TH1 * m_muonevnt
Definition: MuonHitTestToolBase.h:47
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
MuonHitTestToolBase::executeCheckEventInfo
StatusCode executeCheckEventInfo()
Definition: MuonHitTestToolBase.cxx:35
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
sTGCHitsTestTool::m_sTgc_rZview_positiveZ
TH2 * m_sTgc_rZview_positiveZ
Definition: sTGCHitsTestTool.h:35
sTgcHitIdHelper::GetHelper
static const sTgcHitIdHelper * GetHelper()
Definition: sTgcHitIdHelper.cxx:24
AtlasHitsVector
Definition: AtlasHitsVector.h:33
sTGCHitsTestTool::m_sTgc_TransverseView_QL1P_posZ
TH2 * m_sTgc_TransverseView_QL1P_posZ
Definition: sTGCHitsTestTool.h:32
sTGCHitsTestTool::m_sTgc_TransverseView_QL2P_posZ
TH2 * m_sTgc_TransverseView_QL2P_posZ
Definition: sTGCHitsTestTool.h:33
sTGCHitsTestTool::m_sTgc_TransverseView_QS2C_posZ
TH2 * m_sTgc_TransverseView_QS2C_posZ
Definition: sTGCHitsTestTool.h:30
sTGCHitsTestTool::m_sTgc_TransverseView_QS1C_posZ
TH2 * m_sTgc_TransverseView_QS1C_posZ
Definition: sTGCHitsTestTool.h:29
LArG4FSStartPointFilter.evt
evt
Definition: LArG4FSStartPointFilter.py:42
MuonHitTestToolBase::m_BarrelEtaCut
double m_BarrelEtaCut
MDT barrel eta cut, applicable to the MDT 2D cross section plot.
Definition: MuonHitTestToolBase.h:44
MuonHitTestToolBase::m_longView
TH2 * m_longView
Definition: MuonHitTestToolBase.h:54
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
MuonHitTestToolBase::MuonHitTestToolBase
MuonHitTestToolBase(const std::string &type, const std::string &name, const IInterface *parent)
Definition: MuonHitTestToolBase.cxx:17
Trk::u
@ u
Enums for curvilinear frames.
Definition: ParamDefs.h:83
sTGCHitsTestTool::m_sTgc_TransverseView_QL3P_posZ
TH2 * m_sTgc_TransverseView_QL3P_posZ
Definition: sTGCHitsTestTool.h:34
MuonHitTestToolBase::m_muonzResid
TH1 * m_muonzResid
Definition: MuonHitTestToolBase.h:49
sTGCHitsTestTool::m_DosTGCTest
bool m_DosTGCTest
Definition: sTGCHitsTestTool.h:39
HepMC::is_simulation_particle
bool is_simulation_particle(const T &p)
Method to establish if a particle (or barcode) was created during the simulation (TODO update to be s...
Definition: MagicNumbers.h:298
MuonHitTestToolBase::m_muonlongView
TH2 * m_muonlongView
Definition: MuonHitTestToolBase.h:50
test_pyathena.parent
parent
Definition: test_pyathena.py:15
_TH2D
#define _TH2D(var, name, nbinx, xmin, xmax, nbiny, ymin, ymax)
Definition: SimTestHisto.h:81
xAOD::uint64_t
uint64_t
Definition: EventInfo_v1.cxx:123
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
CHECK
#define CHECK(...)
Evaluate an expression and check for errors.
Definition: Control/AthenaKernel/AthenaKernel/errorcheck.h:422
McEventCollection
This defines the McEventCollection, which is really just an ObjectVector of McEvent objects.
Definition: McEventCollection.h:33
TH1::Fill
int Fill(double)
Definition: rootspy.cxx:285
MuonHitTestToolBase::m_direction
Amg::Vector3D m_direction
Definition: MuonHitTestToolBase.h:58
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
MuonHitTestToolBase::m_eventInfoKey
SG::ReadHandleKey< xAOD::EventInfo > m_eventInfoKey
SG key for Event Info.
Definition: MuonHitTestToolBase.h:41
MuonHitTestToolBase::m_phiResid
TH1 * m_phiResid
Definition: MuonHitTestToolBase.h:53
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
sTGCHitsTestTool::m_sTgc_TransverseView_QS3C_posZ
TH2 * m_sTgc_TransverseView_QS3C_posZ
Definition: sTGCHitsTestTool.h:31
sTgcHitIdHelper::GetStationName
std::string GetStationName(const int &hid) const
Definition: sTgcHitIdHelper.cxx:56
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
MuonHitTestToolBase::executeFillHistos
StatusCode executeFillHistos(const Amg::Vector3D &)
Definition: MuonHitTestToolBase.cxx:70
sTGCSimHit
Definition: sTGCSimHit.h:15
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
DiTauMassTools::MaxHistStrategyV2::e
e
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:26
MuonHitTestToolBase::initialize
virtual StatusCode initialize() override
Definition: MuonHitTestToolBase.cxx:111
sTgcHitIdHelper
Definition: sTgcHitIdHelper.h:13
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
MuonHitTestToolBase::m_muonrun
TH1 * m_muonrun
Definition: MuonHitTestToolBase.h:47
MuonHitTestToolBase::m_zResid
TH1 * m_zResid
Definition: MuonHitTestToolBase.h:53
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
MuonHitTestToolBase::m_muondetBarrel
TH2 * m_muondetBarrel
Definition: MuonHitTestToolBase.h:50
SimTestToolBase::m_key
std::string m_key
The MC truth key.
Definition: SimTestToolBase.h:34
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
python.SystemOfUnits.rad
int rad
Definition: SystemOfUnits.py:111
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.