30 return StatusCode::SUCCESS;
39 const double beamPosSigmaX =
m_useBeamSpot ? evt.beamPosSigmaX() : -1.;
40 const double beamPosSigmaY =
m_useBeamSpot ? evt.beamPosSigmaY() : -1.;
41 const double beamPosSigmaXY =
m_useBeamSpot ? evt.beamPosSigmaXY() : -1.;
45 auto tool =
getGroup(
"MuonTrackMonitorAlgorithm");
58 Author = muon->author();
59 Quality = muon->quality();
65 tp = muon->trackParticle(xAOD::Muon::ExtrapolatedMuonSpectrometerTrackParticle);
68 tp = muon->trackParticle(xAOD::Muon::MuonSpectrometerTrackParticle);
73 Pt = tp->pt() * MeVtoGeV;
76 chi2ndof = tp->chiSquared()/std::max(1.f,tp->numberDoF());
79 deltaZ0 = tp->z0() + tp->vz() - pvtx->
z();
84 fill(tool, Author, Quality,
Type, Eta, Phi, Pt, D0, Z0, chi2ndof, deltaZ0, D0sig);
86 return StatusCode::SUCCESS;
95 auto tool =
getGroup(
"MuonTrackMonitorAlgorithm");
131 uint32_t lumiBlockID = evt.lumiBlock();
132 LumiBlock = lumiBlockID;
136 for(
unsigned int n=0; n<vecMuons.size(); n++) {
138 xAOD::Muon::MuonType muonType = muon->muonType();
139 xAOD::Muon::Quality muonQuality = muon->quality();
146 MuonPhi = muon->phi();
147 MuonPt = muon->pt() * MeVtoGeV;
149 const xAOD::TrackParticle *metp = muon->trackParticle(xAOD::Muon::ExtrapolatedMuonSpectrometerTrackParticle);
150 const xAOD::TrackParticle *idtp = muon->trackParticle(xAOD::Muon::InnerDetectorTrackParticle);
151 const xAOD::TrackParticle *mstp = muon->trackParticle(xAOD::Muon::MuonSpectrometerTrackParticle);
153 fill(tool, LumiBlock, LumiBlockTrackCategory);
155 if (muonType==xAOD::Muon::Combined) {
159 uint8_t hitval_numberOfBLayerHits, hitval_numberOfPixelHits, hitval_numberOfSCTHits, hitval_numberOfTRTHits;
171 MuonsNBHits =
static_cast<unsigned int>(hitval_numberOfBLayerHits);
172 MuonsNPixHits =
static_cast<unsigned int>(hitval_numberOfPixelHits);
173 MuonsNSCTHits =
static_cast<unsigned int>(hitval_numberOfSCTHits);
174 MuonsNTRTHits =
static_cast<unsigned int>(hitval_numberOfTRTHits);
175 fill(tool, MuonsNBHits, MuonsNPixHits, MuonsNSCTHits, MuonsNTRTHits);
176 MuonsNBHitsAvg = hitval_numberOfBLayerHits / vecMuons.size();
177 MuonsNPixHitsAvg = hitval_numberOfPixelHits / vecMuons.size();
178 MuonsNSCTHitsAvg = hitval_numberOfSCTHits / vecMuons.size();
179 MuonsNTRTHitsAvg = hitval_numberOfTRTHits / vecMuons.size();
180 fill(tool, MuonsNBHitsAvg, MuonsNPixHitsAvg, MuonsNSCTHitsAvg, MuonsNTRTHitsAvg);
183 uint8_t hitval_nEtaLayer1{0}, hitval_nEtaLayer2{0}, hitval_nEtaLayer3{0}, hitval_nEtaLayer4{0};
184 uint8_t hitval_nPhiLayer1{0}, hitval_nPhiLayer2{0}, hitval_nPhiLayer3{0}, hitval_nPhiLayer4{0};
193 MuonsEtaHitsLayer1 =
static_cast<unsigned int>(hitval_nEtaLayer1);
194 MuonsEtaHitsLayer2 =
static_cast<unsigned int>(hitval_nEtaLayer2);
195 MuonsEtaHitsLayer3 =
static_cast<unsigned int>(hitval_nEtaLayer3);
196 MuonsEtaHitsLayer4 =
static_cast<unsigned int>(hitval_nEtaLayer4);
197 MuonsPhiHitsLayer1 =
static_cast<unsigned int>(hitval_nPhiLayer1);
198 MuonsPhiHitsLayer2 =
static_cast<unsigned int>(hitval_nPhiLayer2);
199 MuonsPhiHitsLayer3 =
static_cast<unsigned int>(hitval_nPhiLayer3);
200 MuonsPhiHitsLayer4 =
static_cast<unsigned int>(hitval_nPhiLayer4);
201 fill(tool, MuonsEtaHitsLayer1, MuonsEtaHitsLayer2, MuonsEtaHitsLayer3, MuonsEtaHitsLayer4, MuonsPhiHitsLayer1, MuonsPhiHitsLayer2, MuonsPhiHitsLayer3, MuonsPhiHitsLayer4);
205 if (muonQuality==xAOD::Muon::Medium) {
206 MuonEtaMedium = cbtp->
eta();
207 MuonPhiMedium = cbtp->
phi();
208 fill(tool, MuonEtaMedium, MuonPhiMedium);
210 if (muonQuality==xAOD::Muon::Tight) {
211 MuonEtaTight = cbtp->
eta();
212 MuonPhiTight = cbtp->
phi();
213 fill(tool, MuonEtaTight, MuonPhiTight);
217 MuonDPTIDME = (idtp->
pt() - metp->
pt()) / idtp->
pt();
218 MuonDPTCBME = (cbtp->
pt() - metp->
pt()) / cbtp->
pt();
219 MuonDPTIDMECB = (idtp->
pt() - metp->
pt()) / cbtp->
pt();
222 fill(tool, MuonDPTIDME, MuonsIDchi2ndof, MuonsMEchi2ndof);
235 uint8_t hitval_numberOfBLayerHits{0}, hitval_numberOfPixelHits{0}, hitval_numberOfSCTHits{0}, hitval_numberOfTRTHits{0};
240 MuonsNBHits =
static_cast<unsigned int>(hitval_numberOfBLayerHits);
241 MuonsNPixHits =
static_cast<unsigned int>(hitval_numberOfPixelHits);
242 MuonsNSCTHits =
static_cast<unsigned int>(hitval_numberOfSCTHits);
243 MuonsNTRTHits =
static_cast<unsigned int>(hitval_numberOfTRTHits);
244 fill(tool, MuonsNBHits, MuonsNPixHits, MuonsNSCTHits, MuonsNTRTHits);
248 MuonDPTIDME = (idtp->
pt() - metp->
pt()) / idtp->
pt();
251 fill(tool, MuonDPTIDME, MuonsIDchi2ndof, MuonsMEchi2ndof);
257 auto muonEta = muon->eta();
259 if (muonEta > 1.05) {
261 }
else if (muonEta > 0) {
263 }
else if (muonEta > -1.05) {
265 }
else if (muonEta <= -1.05) {
268 fill(tool, LumiBlock, LumiBlockTrackCategory);
271 auto muonEta = muon->eta();
272 if (muonEta > 1.05) {
274 }
else if (muonEta > 0) {
276 }
else if (muonEta > -1.05) {
278 }
else if (muonEta <= -1.05) {
281 fill(tool, LumiBlock, LumiBlockTrackCategory);
284 auto muonEta = muon->eta();
285 if (muonEta > 1.05) {
287 }
else if (muonEta > 0) {
289 }
else if (muonEta > -1.05) {
291 }
else if (muonEta <= -1.05) {
294 fill(tool, LumiBlock, LumiBlockTrackCategory);
297 return StatusCode::SUCCESS;
303 uint32_t lumiBlockID = evt.lumiBlock();
308 auto tool =
getGroup(
"MuonTrackMonitorAlgorithm");
333 for(
const auto muon :
Muons) {
334 xAOD::Muon::Quality muonQuality = muon->quality();
335 xAOD::Muon::MuonType muonType = muon->muonType();
336 xAOD::Muon::Author muonAuthor = muon->author();
337 MuonLumiBlock = lumiBlockID;
338 fill(tool, MuonLumiBlock);
341 MuonAuthor = muonAuthor;
342 MuonQuality = muonQuality;
345 MuonPhi = muon->phi();
346 MuonPt = muon->pt() * MeVtoGeV;
351 MuonEtaHi = muon->eta();
352 MuonPhiHi = muon->phi();
353 MuonPtHi = muon->pt() * MeVtoGeV;
354 fill(tool, MuonEtaHi, MuonPhiHi, MuonPtHi);
358 for (
size_t nSeg=0; nSeg < muon->nMuonSegments(); nSeg++) {
364 MuonSmallSectorR = MuonLargeSectorR = std::hypot(muonSegment->
x(), muonSegment->
y());
365 MuonSmallSectorZ = MuonLargeSectorZ = muonSegment->
z();
366 MuonSector = muonSegment->
sector();
368 int sector = muonSegment->
sector();
369 if(sector % 2 == 0) {
370 fill(tool, MuonLargeSectorZ, MuonLargeSectorR, MuonSector, MuonCIndex);
372 fill(tool, MuonSmallSectorZ, MuonSmallSectorR, MuonSector, MuonCIndex);
374 const double muonSegmentEta =
Amg::Vector3D(muonSegment->
px(), muonSegment->
py(), muonSegment->
pz()).eta();
375 if (std::abs(muonSegmentEta) > 1.05) {
376 SegmentXPosEndcap = muonSegment->
x();
377 SegmentYPosEndcap = muonSegment->
y();
378 fill(tool, SegmentXPosEndcap, SegmentYPosEndcap);
380 SegmentXPosBarrel = muonSegment->
x();
381 SegmentYPosBarrel = muonSegment->
y();
382 fill(tool, SegmentXPosBarrel, SegmentYPosBarrel);
387 return StatusCode::SUCCESS;
397 auto tool =
getGroup(
"MuonTrackMonitorAlgorithm");
409 std::vector<const xAOD::Muon*> vecAllCombinedMuons;
410 std::vector<const xAOD::Muon*> vecCombinedMuons;
411 std::vector<const xAOD::Muon*> vecNoTrigCombinedMuons;
414 std::vector<const xAOD::Muon*> vecAllNonCombinedMuons;
415 std::vector<const xAOD::Muon*> vecNonCombinedMuons;
416 std::vector<const xAOD::Muon*> vecNoTrigNonCombinedMuons;
418 uint32_t n_muons = 0;
419 uint32_t n_muons_trig = 0;
420 uint32_t n_muons_trig_cb = 0;
421 uint32_t n_muons_trig_noncb = 0;
422 uint32_t n_muons_no_trig_cb = 0;
423 uint32_t n_muons_no_trig_noncb = 0;
424 for(
const auto muon :
Muons) {
426 bool isTriggered =
false;
441 xAOD::Muon::MuonType muonType = muon->muonType();
442 if (muonType==xAOD::Muon::Combined) {
443 vecAllCombinedMuons.push_back(muon);
445 vecCombinedMuons.push_back(muon);
448 MuonPrefix =
"TrigCB";
451 vecNoTrigCombinedMuons.push_back(muon);
452 MuonPrefix =
"NoTrigCB";
453 n_muons_no_trig_cb++;
457 vecAllNonCombinedMuons.push_back(muon);
459 vecNonCombinedMuons.push_back(muon);
461 n_muons_trig_noncb++;
462 MuonPrefix =
"TrigNonCB";
465 vecNoTrigNonCombinedMuons.push_back(muon);
466 MuonPrefix =
"NoTrigNonCB";
467 n_muons_no_trig_noncb++;
470 fill(tool, MuonPrefix);
471 for (
size_t nSeg=0; nSeg < muon->nMuonSegments(); nSeg++) {
472 LumiBlockNumberOfSegments = evt.lumiBlock();
473 fill(tool, LumiBlockNumberOfSegments);
477 NMuonsTrig = n_muons_trig;
478 NMuonsTrigCB = n_muons_trig_cb;
479 NMuonsTrigNonCB = n_muons_trig_noncb;
480 NMuonsNoTrigCB = n_muons_no_trig_cb;
481 NMuonsNoTrigNonCB = n_muons_no_trig_noncb;
482 fill(tool, NMuons, NMuonsTrig, NMuonsTrigCB, NMuonsTrigNonCB, NMuonsNoTrigCB, NMuonsNoTrigNonCB);
484 LumiBlockNumberOfMuonTracks = evt.lumiBlock();
485 fill(tool, LumiBlockNumberOfMuonTracks);
503 return StatusCode::SUCCESS;
510 uint32_t lumiBlockID = evt.lumiBlock();
515 auto tool =
getGroup(
"MuonTrackMonitorAlgorithm");
525 std::map<int, int> mapTagged_Resonance;
526 std::vector<const xAOD::Muon*> vecMuons;
527 for (
unsigned int n=0; n<muonCandidates.size(); n++)
528 mapTagged_Resonance[n]=0;
529 for (
unsigned int n=0; n<muonCandidates.size(); n++){
530 const TLorentzVector& tVec1 = muonCandidates[n]->p4();
531 for (
unsigned int m=n+1; m<muonCandidates.size(); m++) {
532 const TLorentzVector& tVec2 = muonCandidates[m]->p4();
533 const TLorentzVector candidate = tVec1 + tVec2;
534 const float resonance_Mass = candidate.M() * MeVtoGeV;
535 const float resonance_Eta = candidate.Eta();
536 if (muonCandidates[n]->
charge()==muonCandidates[m]->
charge())
continue;
542 if (mapTagged_Resonance[n]!=1) vecMuons.push_back(muonCandidates[n]);
543 mapTagged_Resonance[n]=1;
544 if (mapTagged_Resonance[m]!=1) vecMuons.push_back(muonCandidates[m]);
545 mapTagged_Resonance[m]=1;
547 if (muonCandidates[n]->
charge()<0){
548 muMinusEta = tVec1.Eta();
549 muPlusEta = tVec2.Eta();
552 muMinusEta = tVec2.Eta();
553 muPlusEta = tVec1.Eta();
555 const char* EtaReg =
"";
557 if ((muMinusEta>1.05)&&(muPlusEta>1.05)){
560 Mass2D = resonance_Mass;
562 }
else if ((muMinusEta>1.05)&&(muPlusEta>0.)&&(muPlusEta<1.05)){
565 Mass2D = resonance_Mass;
567 }
else if ((muMinusEta>1.05)&&(muPlusEta>-1.05)&&(muPlusEta<0.)){
570 Mass2D = resonance_Mass;
572 }
else if ((muMinusEta>1.05)&&(muPlusEta<-1.05)){
575 Mass2D = resonance_Mass;
577 }
else if ((muMinusEta>0.)&&(muMinusEta<1.05)&&(muPlusEta>1.05)){
580 Mass2D = resonance_Mass;
582 }
else if ((muMinusEta>0.)&&(muMinusEta<1.05)&&(muPlusEta>0.)&&(muPlusEta<1.05)){
585 Mass2D = resonance_Mass;
587 }
else if ((muMinusEta>0.)&&(muMinusEta<1.05)&&(muPlusEta>-1.05)&&(muPlusEta<0.)){
590 Mass2D = resonance_Mass;
592 }
else if ((muMinusEta>0.)&&(muMinusEta<1.05)&&(muPlusEta<-1.05)){
595 Mass2D = resonance_Mass;
597 }
else if ((muMinusEta>-1.05)&&(muMinusEta<0.)&&(muPlusEta>1.05)){
600 Mass2D = resonance_Mass;
602 }
else if ((muMinusEta>-1.05)&&(muMinusEta<0.)&&(muPlusEta>0.)&&(muPlusEta<1.05)){
605 Mass2D = resonance_Mass;
607 }
else if ((muMinusEta>-1.05)&&(muMinusEta<0.)&&(muPlusEta>-1.05)&&(muPlusEta<0.)){
610 Mass2D = resonance_Mass;
612 }
else if ((muMinusEta>-1.05)&&(muMinusEta<0.)&&(muPlusEta<-1.05)){
615 Mass2D = resonance_Mass;
617 }
else if ((muMinusEta<-1.05)&&(muPlusEta>1.05)){
620 Mass2D = resonance_Mass;
622 }
else if ((muMinusEta<-1.05)&&(muPlusEta>0.)&&(muPlusEta<1.05)){
625 Mass2D = resonance_Mass;
627 }
else if ((muMinusEta<-1.05)&&(muPlusEta>-1.05)&&(muPlusEta<0.)){
630 Mass2D = resonance_Mass;
632 }
else if ((muMinusEta<-1.05)&&(muPlusEta<-1.05)){
635 Mass2D = resonance_Mass;
641 Mass = resonance_Mass;
645 fill(tool, Mass, Eta, Eta2, Eta2D, muMinusEta, muPlusEta);
647 MuonLumiBlock = lumiBlockID;
648 fill(tool, MuonLumiBlock);
655 return StatusCode::SUCCESS;
662 std::vector<const xAOD::Muon*> vecMuons_ZBoson_Candidates;
663 std::vector<const xAOD::Muon*> vecMuons_Jpsi_Candidates;
666 for(
const auto muon :
Muons) {
667 xAOD::Muon::MuonType muonType = muon->muonType();
668 if (muonType==xAOD::Muon::Combined) {
671 if (cbtpLink.
isValid()) cbtp = *cbtpLink;
676 if (muonType==xAOD::Muon::Combined &&
683 vecMuons_ZBoson_Candidates.push_back(muon);
684 if (muonType==xAOD::Muon::Combined &&
691 vecMuons_Jpsi_Candidates.push_back(muon);
699 return StatusCode::SUCCESS;
713 return StatusCode::FAILURE;
720 return StatusCode::FAILURE;
729 return StatusCode::FAILURE;
737 return StatusCode::SUCCESS;
745 for(
const auto vertex : Vertices){
756 int trackCategoryID = -1;
758 if (sIdentifier ==
"NoTrigNonCB") trackCategoryID = 1;
759 else if (sIdentifier ==
"NoTrigCB") trackCategoryID = 2;
760 else if (sIdentifier ==
"NonCB") trackCategoryID = 3;
761 else if (sIdentifier ==
"CB") trackCategoryID = 4;
762 else if (sIdentifier ==
"AllNonCB") trackCategoryID = 5;
763 else if (sIdentifier ==
"AllCB") trackCategoryID = 6;
765 else if (sIdentifier ==
"Z") trackCategoryID = 8;
766 else if (sIdentifier ==
"Jpsi") trackCategoryID = 9;
768 else if (sIdentifier ==
"ME_EC") trackCategoryID = 11;
769 else if (sIdentifier ==
"ME_BC") trackCategoryID = 12;
770 else if (sIdentifier ==
"ME_BA") trackCategoryID = 13;
771 else if (sIdentifier ==
"ME_EA") trackCategoryID = 14;
773 else if (sIdentifier ==
"MS_EC") trackCategoryID = 16;
774 else if (sIdentifier ==
"MS_BC") trackCategoryID = 17;
775 else if (sIdentifier ==
"MS_BA") trackCategoryID = 18;
776 else if (sIdentifier ==
"MS_EA") trackCategoryID = 19;
778 else if (sIdentifier ==
"ID_EC") trackCategoryID = 21;
779 else if (sIdentifier ==
"ID_BC") trackCategoryID = 22;
780 else if (sIdentifier ==
"ID_BA") trackCategoryID = 23;
781 else if (sIdentifier ==
"ID_EA") trackCategoryID = 24;
783 return trackCategoryID;
#define ATH_CHECK
Evaluate an expression and check for errors.
double charge(const T &p)
static const Attributes_t empty
const ToolHandle< GenericMonitoringTool > & getGroup(const std::string &name) const
Get a specific monitoring tool from the tool handle array.
virtual StatusCode initialize() override
initialize
const ToolHandle< Trig::TrigDecisionTool > & getTrigDecisionTool() const
Get the trigger decision tool member.
AthMonitorAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor.
ElementLink implementation for ROOT usage.
bool isValid() const
Test to see if the link can be dereferenced.
Declare a monitored scalar variable.
Gaudi::Property< float > m_JpsiSelection_Z0Cut
Gaudi::Property< float > m_ZBosonSelection_minPt
Gaudi::Property< float > m_ZBosonSelection_maxEta
StatusCode plotResonanceCandidates(const std::string &resonanceName, std::vector< const xAOD::Muon * > &muonCandidates, const xAOD::Vertex *pvtx, const xAOD::EventInfo &evt) const
Function to create performance plots for all combined muons that lead to a Jpsi Meson Candidate event...
virtual StatusCode fillHistograms(const EventContext &ctx) const override
adds event to the monitoring histograms
StatusCode FillTrackInformation(const std::string &sIdentifier, const xAOD::Muon *muon, const xAOD::Vertex *pvtx, const std::string &sTrack, const xAOD::EventInfo &evt) const
Function to fill low level Track information.
Gaudi::Property< float > m_ZBosonSelection_maxMass
StatusCode analyseResonanceCandidates(const xAOD::MuonContainer &Muons, const xAOD::Vertex *pvtx, const xAOD::EventInfo &evt) const
Function to create performance plots for all combined muons that lead to a Z Boson Candidate event.
Gaudi::Property< float > m_ZBosonSelection_trkIsolation
StatusCode FillMuonInformation(const std::string &sIdentifier, std::vector< const xAOD::Muon * > &vecMuons, const xAOD::Vertex *pvtx, const xAOD::EventInfo &evt) const
Fills data-quality information (e.g.
SG::ReadDecorHandleKeyArray< xAOD::EventInfo > m_beamSpotKey
Gaudi::Property< float > m_JpsiSelection_D0Cut
Gaudi::Property< float > m_JpsiSelection_minMass
virtual StatusCode initialize() override
initialize
const xAOD::Vertex * getPrimaryVertex(const xAOD::VertexContainer &Vertices) const
Function to get the primary vertex.
StatusCode analyseLowLevelMuonFeatures(const std::string &sIdentifier, std::vector< const xAOD::Muon * > &Muons, const xAOD::EventInfo &evt) const
Function to create performance plots for muon standalone tracks with some detailed informatiom.
Gaudi::Property< float > m_ZBosonSelection_minMass
Gaudi::Property< std::vector< std::string > > m_hltchainList
MuonTrackMonitorAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Gaudi::Property< float > m_ZBosonSelection_Z0Cut
SG::ReadDecorHandleKey< xAOD::MuonContainer > m_MuonIsoDecorKey
SG::ReadHandleKey< xAOD::EventInfo > m_derEventInfoKey
Gaudi::Property< float > m_JpsiSelection_maxMass
Gaudi::Property< float > m_JpsiSelection_maxEta
Gaudi::Property< float > m_ZBosonSelection_D0Cut
StatusCode analyseCombinedTracks(const xAOD::MuonContainer &Muons, const xAOD::Vertex *pvtx, const xAOD::EventInfo &evt) const
Function to create performance plots for all combined muons.
Gaudi::Property< float > m_JpsiSelection_trkIsolation
SG::ReadHandleKey< xAOD::VertexContainer > m_VertexContainerKey
Gaudi::Property< bool > m_useBeamSpot
SG::ReadHandleKey< xAOD::MuonContainer > m_MuonContainerKey
Gaudi::Property< float > m_CBmuons_minPt
Gaudi::Property< float > m_JpsiSelection_minPt
int getTrackCategoryID(const std::string &sIdentifier) const
Function to get the track category ID for the given identifier.
virtual bool isValid() override final
Can the handle be successfully dereferenced?
float y() const
Returns the x position.
float pz() const
Returns the pz.
float py() const
Returns the py.
::Muon::MuonStationIndex::ChIndex chamberIndex() const
Returns the chamber index.
float z() const
Returns the y position.
float z0() const
Returns the parameter.
float numberDoF() const
Returns the number of degrees of freedom of the overall track or vertex fit as float.
virtual double phi() const override final
The azimuthal angle ( ) of the particle (has range to .)
float d0() const
Returns the parameter.
bool summaryValue(uint8_t &value, const SummaryType &information) const
Accessor for TrackSummary values.
virtual double pt() const override final
The transverse momentum ( ) of the particle.
float chiSquared() const
Returns the of the overall track fit.
virtual double eta() const override final
The pseudorapidity ( ) of the particle.
float z() const
Returns the z position.
Eigen::Matrix< double, 3, 1 > Vector3D
Generic monitoring tool for athena components.
constexpr int toInt(const EnumType enumVal)
double d0significance(const xAOD::TrackParticle *tp, double d0_uncert_beam_spot_2)
EventInfo_v1 EventInfo
Definition of the latest event info version.
TrackParticle_v1 TrackParticle
Reference the current persistent version:
VertexContainer_v1 VertexContainer
Definition of the current "Vertex container version".
Vertex_v1 Vertex
Define the latest version of the vertex class.
Muon_v1 Muon
Reference the current persistent version:
MuonContainer_v1 MuonContainer
Definition of the current "Muon container version".
MuonSegment_v1 MuonSegment
Reference the current persistent version:
@ numberOfTRTHits
number of TRT hits [unit8_t].
@ numberOfSCTHits
number of hits in SCT [unit8_t].
@ numberOfInnermostPixelLayerHits
these are the hits in the 0th pixel barrel layer
@ numberOfPixelHits
these are the pixel hits, including the b-layer [unit8_t].
@ phiLayer3Hits
number of phi hits in the third trigger layer (BOL1 ot T2)
@ phiLayer2Hits
number of phi hits in the second trigger layer (BML2 ot T1)
@ etaLayer3Hits
number of eta hits in the third trigger layer (BOL1 ot T2)
@ etaLayer1Hits
number of eta hits in the first trigger layer (BML1 ot T4)
@ phiLayer1Hits
number of phi hits in the first trigger layer (BML1 ot T4)
@ phiLayer4Hits
number of phi hits in the fourth trigger layer (T3)
@ etaLayer4Hits
number of eta hits in the fourth trigger layer (T3)
@ etaLayer2Hits
number of eta hits in the second trigger layer (BML2 ot T1)
void fill(H5::Group &out_file, size_t iterations)