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 =
static_cast<int>(muon->author());
59 Quality =
static_cast<int>(muon->quality());
60 Type =
static_cast<int>(muon->type());
65 tp = muon->trackParticle(xAOD::Muon::TrackParticleType::ExtrapolatedMuonSpectrometerTrackParticle);
68 tp = muon->trackParticle(xAOD::Muon::TrackParticleType::MuonSpectrometerTrackParticle);
73 Pt = tp->
pt() * MeVtoGeV;
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();
145 MuonEta = muon->eta();
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 LumiBlockTrackCategory = 1;
154 fill(tool, LumiBlock, LumiBlockTrackCategory);
156 using enum xAOD::Muon::Quality;
157 if (muonQuality <= Loose) {
158 LumiBlockTrackCategory = 2;
159 fill(tool, LumiBlock, LumiBlockTrackCategory);
161 if (muonQuality <= Medium) {
162 LumiBlockTrackCategory = 3;
163 fill(tool, LumiBlock, LumiBlockTrackCategory);
165 if (muonQuality == Tight) {
166 LumiBlockTrackCategory = 4;
167 fill(tool, LumiBlock, LumiBlockTrackCategory);
172 fill(tool, LumiBlock, LumiBlockTrackCategory);
174 if (muonType==xAOD::Muon::MuonType::Combined) {
178 uint8_t hitval_numberOfBLayerHits, hitval_numberOfPixelHits, hitval_numberOfSCTHits, hitval_numberOfTRTHits;
187 fill(tool, MuonEta, MuonPhi, MuonPt, MuonZ0, MuonD0);
190 MuonsNBHits =
static_cast<unsigned int>(hitval_numberOfBLayerHits);
191 MuonsNPixHits =
static_cast<unsigned int>(hitval_numberOfPixelHits);
192 MuonsNSCTHits =
static_cast<unsigned int>(hitval_numberOfSCTHits);
193 MuonsNTRTHits =
static_cast<unsigned int>(hitval_numberOfTRTHits);
194 fill(tool, MuonsNBHits, MuonsNPixHits, MuonsNSCTHits, MuonsNTRTHits);
195 MuonsNBHitsAvg = hitval_numberOfBLayerHits / vecMuons.size();
196 MuonsNPixHitsAvg = hitval_numberOfPixelHits / vecMuons.size();
197 MuonsNSCTHitsAvg = hitval_numberOfSCTHits / vecMuons.size();
198 MuonsNTRTHitsAvg = hitval_numberOfTRTHits / vecMuons.size();
199 fill(tool, MuonsNBHitsAvg, MuonsNPixHitsAvg, MuonsNSCTHitsAvg, MuonsNTRTHitsAvg);
202 uint8_t hitval_nEtaLayer1{0}, hitval_nEtaLayer2{0}, hitval_nEtaLayer3{0}, hitval_nEtaLayer4{0};
203 uint8_t hitval_nPhiLayer1{0}, hitval_nPhiLayer2{0}, hitval_nPhiLayer3{0}, hitval_nPhiLayer4{0};
212 MuonsEtaHitsLayer1 =
static_cast<unsigned int>(hitval_nEtaLayer1);
213 MuonsEtaHitsLayer2 =
static_cast<unsigned int>(hitval_nEtaLayer2);
214 MuonsEtaHitsLayer3 =
static_cast<unsigned int>(hitval_nEtaLayer3);
215 MuonsEtaHitsLayer4 =
static_cast<unsigned int>(hitval_nEtaLayer4);
216 MuonsPhiHitsLayer1 =
static_cast<unsigned int>(hitval_nPhiLayer1);
217 MuonsPhiHitsLayer2 =
static_cast<unsigned int>(hitval_nPhiLayer2);
218 MuonsPhiHitsLayer3 =
static_cast<unsigned int>(hitval_nPhiLayer3);
219 MuonsPhiHitsLayer4 =
static_cast<unsigned int>(hitval_nPhiLayer4);
220 fill(tool, MuonsEtaHitsLayer1, MuonsEtaHitsLayer2, MuonsEtaHitsLayer3, MuonsEtaHitsLayer4, MuonsPhiHitsLayer1, MuonsPhiHitsLayer2, MuonsPhiHitsLayer3, MuonsPhiHitsLayer4);
224 if (muonQuality==xAOD::Muon::Quality::Medium) {
225 MuonEtaMedium = cbtp->
eta();
226 MuonPhiMedium = cbtp->
phi();
227 fill(tool, MuonEtaMedium, MuonPhiMedium);
229 if (muonQuality==xAOD::Muon::Quality::Tight) {
230 MuonEtaTight = cbtp->
eta();
231 MuonPhiTight = cbtp->
phi();
232 fill(tool, MuonEtaTight, MuonPhiTight);
236 MuonDPTIDME = (idtp->
pt() - metp->
pt()) / idtp->
pt();
237 MuonDPTCBME = (cbtp->
pt() - metp->
pt()) / cbtp->
pt();
238 MuonDPTIDMECB = (idtp->
pt() - metp->
pt()) / cbtp->
pt();
241 fill(tool, MuonDPTIDME, MuonsIDchi2ndof, MuonsMEchi2ndof);
246 const xAOD::TrackParticle *ptp = muon->trackParticle(xAOD::Muon::TrackParticleType::Primary);
251 fill(tool, MuonEta, MuonPhi, MuonPt, MuonZ0, MuonD0);
254 uint8_t hitval_numberOfBLayerHits{0}, hitval_numberOfPixelHits{0}, hitval_numberOfSCTHits{0}, hitval_numberOfTRTHits{0};
259 MuonsNBHits =
static_cast<unsigned int>(hitval_numberOfBLayerHits);
260 MuonsNPixHits =
static_cast<unsigned int>(hitval_numberOfPixelHits);
261 MuonsNSCTHits =
static_cast<unsigned int>(hitval_numberOfSCTHits);
262 MuonsNTRTHits =
static_cast<unsigned int>(hitval_numberOfTRTHits);
263 fill(tool, MuonsNBHits, MuonsNPixHits, MuonsNSCTHits, MuonsNTRTHits);
267 MuonDPTIDME = (idtp->
pt() - metp->
pt()) / idtp->
pt();
270 fill(tool, MuonDPTIDME, MuonsIDchi2ndof, MuonsMEchi2ndof);
276 auto muonEta = muon->eta();
278 if (muonEta > 1.05) {
280 }
else if (muonEta > 0) {
282 }
else if (muonEta > -1.05) {
284 }
else if (muonEta <= -1.05) {
287 fill(tool, LumiBlock, LumiBlockTrackCategory);
290 auto muonEta = muon->eta();
291 if (muonEta > 1.05) {
293 }
else if (muonEta > 0) {
295 }
else if (muonEta > -1.05) {
297 }
else if (muonEta <= -1.05) {
300 fill(tool, LumiBlock, LumiBlockTrackCategory);
303 auto muonEta = muon->eta();
304 if (muonEta > 1.05) {
306 }
else if (muonEta > 0) {
308 }
else if (muonEta > -1.05) {
310 }
else if (muonEta <= -1.05) {
313 fill(tool, LumiBlock, LumiBlockTrackCategory);
316 return StatusCode::SUCCESS;
322 uint32_t lumiBlockID = evt.lumiBlock();
327 auto tool =
getGroup(
"MuonTrackMonitorAlgorithm");
352 for(
const auto muon :
Muons) {
353 xAOD::Muon::Quality muonQuality = muon->quality();
354 xAOD::Muon::MuonType muonType = muon->muonType();
355 xAOD::Muon::Author muonAuthor = muon->author();
356 MuonLumiBlock = lumiBlockID;
357 fill(tool, MuonLumiBlock);
360 MuonAuthor =
static_cast<int>(muonAuthor);
361 MuonQuality =
static_cast<int>(muonQuality);
362 MuonType =
static_cast<int>(muonType);
363 MuonEta = muon->eta();
364 MuonPhi = muon->phi();
365 MuonPt = muon->pt() * MeVtoGeV;
366 fill(tool, MuonAuthor, MuonQuality, MuonType, MuonEta, MuonPhi, MuonPt);
370 MuonEtaHi = muon->eta();
371 MuonPhiHi = muon->phi();
372 MuonPtHi = muon->pt() * MeVtoGeV;
373 fill(tool, MuonEtaHi, MuonPhiHi, MuonPtHi);
377 for (
size_t nSeg=0; nSeg < muon->nMuonSegments(); nSeg++) {
383 MuonSmallSectorR = MuonLargeSectorR = std::hypot(muonSegment->
x(), muonSegment->
y());
384 MuonSmallSectorZ = MuonLargeSectorZ = muonSegment->
z();
385 MuonSector = muonSegment->
sector();
387 int sector = muonSegment->
sector();
388 if(sector % 2 == 0) {
389 fill(tool, MuonLargeSectorZ, MuonLargeSectorR, MuonSector, MuonCIndex);
391 fill(tool, MuonSmallSectorZ, MuonSmallSectorR, MuonSector, MuonCIndex);
393 const double muonSegmentEta =
Amg::Vector3D(muonSegment->
px(), muonSegment->
py(), muonSegment->
pz()).eta();
394 if (std::abs(muonSegmentEta) > 1.05) {
395 SegmentXPosEndcap = muonSegment->
x();
396 SegmentYPosEndcap = muonSegment->
y();
397 fill(tool, SegmentXPosEndcap, SegmentYPosEndcap);
399 SegmentXPosBarrel = muonSegment->
x();
400 SegmentYPosBarrel = muonSegment->
y();
401 fill(tool, SegmentXPosBarrel, SegmentYPosBarrel);
406 return StatusCode::SUCCESS;
416 auto tool =
getGroup(
"MuonTrackMonitorAlgorithm");
428 std::vector<const xAOD::Muon*> vecAllCombinedMuons;
429 std::vector<const xAOD::Muon*> vecCombinedMuons;
430 std::vector<const xAOD::Muon*> vecNoTrigCombinedMuons;
433 std::vector<const xAOD::Muon*> vecAllNonCombinedMuons;
434 std::vector<const xAOD::Muon*> vecNonCombinedMuons;
435 std::vector<const xAOD::Muon*> vecNoTrigNonCombinedMuons;
437 uint32_t n_muons = 0;
438 uint32_t n_muons_trig = 0;
439 uint32_t n_muons_trig_cb = 0;
440 uint32_t n_muons_trig_noncb = 0;
441 uint32_t n_muons_no_trig_cb = 0;
442 uint32_t n_muons_no_trig_noncb = 0;
443 for(
const auto muon :
Muons) {
445 bool isTriggered =
false;
460 xAOD::Muon::MuonType muonType = muon->muonType();
461 if (muonType==xAOD::Muon::MuonType::Combined) {
462 vecAllCombinedMuons.push_back(muon);
464 vecCombinedMuons.push_back(muon);
467 MuonPrefix =
"TrigCB";
470 vecNoTrigCombinedMuons.push_back(muon);
471 MuonPrefix =
"NoTrigCB";
472 n_muons_no_trig_cb++;
476 vecAllNonCombinedMuons.push_back(muon);
478 vecNonCombinedMuons.push_back(muon);
480 n_muons_trig_noncb++;
481 MuonPrefix =
"TrigNonCB";
484 vecNoTrigNonCombinedMuons.push_back(muon);
485 MuonPrefix =
"NoTrigNonCB";
486 n_muons_no_trig_noncb++;
489 fill(tool, MuonPrefix);
490 for (
size_t nSeg=0; nSeg < muon->nMuonSegments(); nSeg++) {
491 LumiBlockNumberOfSegments = evt.lumiBlock();
492 fill(tool, LumiBlockNumberOfSegments);
496 NMuonsTrig = n_muons_trig;
497 NMuonsTrigCB = n_muons_trig_cb;
498 NMuonsTrigNonCB = n_muons_trig_noncb;
499 NMuonsNoTrigCB = n_muons_no_trig_cb;
500 NMuonsNoTrigNonCB = n_muons_no_trig_noncb;
501 fill(tool, NMuons, NMuonsTrig, NMuonsTrigCB, NMuonsTrigNonCB, NMuonsNoTrigCB, NMuonsNoTrigNonCB);
503 LumiBlockNumberOfMuonTracks = evt.lumiBlock();
504 fill(tool, LumiBlockNumberOfMuonTracks);
522 return StatusCode::SUCCESS;
529 uint32_t lumiBlockID = evt.lumiBlock();
534 auto tool =
getGroup(
"MuonTrackMonitorAlgorithm");
544 std::map<int, int> mapTagged_Resonance;
545 std::vector<const xAOD::Muon*> vecMuons;
546 for (
unsigned int n=0; n<muonCandidates.size(); n++)
547 mapTagged_Resonance[n]=0;
548 for (
unsigned int n=0; n<muonCandidates.size(); n++){
549 const TLorentzVector& tVec1 = muonCandidates[n]->p4();
550 for (
unsigned int m=n+1; m<muonCandidates.size(); m++) {
551 const TLorentzVector& tVec2 = muonCandidates[m]->p4();
552 const TLorentzVector candidate = tVec1 + tVec2;
553 const float resonance_Mass = candidate.M() * MeVtoGeV;
554 const float resonance_Eta = candidate.Eta();
555 if (muonCandidates[n]->
charge()==muonCandidates[m]->
charge())
continue;
561 if (mapTagged_Resonance[n]!=1) vecMuons.push_back(muonCandidates[n]);
562 mapTagged_Resonance[n]=1;
563 if (mapTagged_Resonance[m]!=1) vecMuons.push_back(muonCandidates[m]);
564 mapTagged_Resonance[m]=1;
566 if (muonCandidates[n]->
charge()<0){
567 muMinusEta = tVec1.Eta();
568 muPlusEta = tVec2.Eta();
571 muMinusEta = tVec2.Eta();
572 muPlusEta = tVec1.Eta();
575 const char* EtaRegio =
"out";
576 if ((muMinusEta>1.05)&&(muPlusEta>1.05)){
580 Mass2D = resonance_Mass;
582 }
else if ((muMinusEta>1.05)&&(muPlusEta>0.)&&(muPlusEta<1.05)){
586 Mass2D = resonance_Mass;
588 }
else if ((muMinusEta>1.05)&&(muPlusEta>-1.05)&&(muPlusEta<0.)){
592 Mass2D = resonance_Mass;
594 }
else if ((muMinusEta>1.05)&&(muPlusEta<-1.05)){
598 Mass2D = resonance_Mass;
600 }
else if ((muMinusEta>0.)&&(muMinusEta<1.05)&&(muPlusEta>1.05)){
604 Mass2D = resonance_Mass;
606 }
else if ((muMinusEta>0.)&&(muMinusEta<1.05)&&(muPlusEta>0.)&&(muPlusEta<1.05)){
610 Mass2D = resonance_Mass;
612 }
else if ((muMinusEta>0.)&&(muMinusEta<1.05)&&(muPlusEta>-1.05)&&(muPlusEta<0.)){
616 Mass2D = resonance_Mass;
618 }
else if ((muMinusEta>0.)&&(muMinusEta<1.05)&&(muPlusEta<-1.05)){
622 Mass2D = resonance_Mass;
624 }
else if ((muMinusEta>-1.05)&&(muMinusEta<0.)&&(muPlusEta>1.05)){
628 Mass2D = resonance_Mass;
630 }
else if ((muMinusEta>-1.05)&&(muMinusEta<0.)&&(muPlusEta>0.)&&(muPlusEta<1.05)){
634 Mass2D = resonance_Mass;
636 }
else if ((muMinusEta>-1.05)&&(muMinusEta<0.)&&(muPlusEta>-1.05)&&(muPlusEta<0.)){
640 Mass2D = resonance_Mass;
642 }
else if ((muMinusEta>-1.05)&&(muMinusEta<0.)&&(muPlusEta<-1.05)){
646 Mass2D = resonance_Mass;
648 }
else if ((muMinusEta<-1.05)&&(muPlusEta>1.05)){
652 Mass2D = resonance_Mass;
654 }
else if ((muMinusEta<-1.05)&&(muPlusEta>0.)&&(muPlusEta<1.05)){
658 Mass2D = resonance_Mass;
660 }
else if ((muMinusEta<-1.05)&&(muPlusEta>-1.05)&&(muPlusEta<0.)){
664 Mass2D = resonance_Mass;
666 }
else if ((muMinusEta<-1.05)&&(muPlusEta<-1.05)){
670 Mass2D = resonance_Mass;
677 Mass = resonance_Mass;
681 fill(tool, Mass, Eta, Eta2, Eta2D, muMinusEta, muPlusEta);
683 MuonLumiBlock = lumiBlockID;
684 fill(tool, MuonLumiBlock);
691 return StatusCode::SUCCESS;
698 std::vector<const xAOD::Muon*> vecMuons_ZBoson_Candidates;
699 std::vector<const xAOD::Muon*> vecMuons_Jpsi_Candidates;
702 for(
const auto muon :
Muons) {
703 xAOD::Muon::MuonType muonType = muon->muonType();
704 if (muonType==xAOD::Muon::MuonType::Combined) {
705 const xAOD::TrackParticle *cbtp = muon->trackParticle(xAOD::Muon::TrackParticleType::CombinedTrackParticle);
709 if (muonType==xAOD::Muon::MuonType::Combined &&
716 vecMuons_ZBoson_Candidates.push_back(muon);
717 if (muonType==xAOD::Muon::MuonType::Combined &&
724 vecMuons_Jpsi_Candidates.push_back(muon);
732 return StatusCode::SUCCESS;
746 return StatusCode::FAILURE;
753 return StatusCode::FAILURE;
762 return StatusCode::FAILURE;
770 return StatusCode::SUCCESS;
778 for(
const auto vertex : Vertices){
789 int trackCategoryID = -1;
791 if (sIdentifier ==
"NoTrigNonCB") trackCategoryID = 6;
792 else if (sIdentifier ==
"NoTrigCB") trackCategoryID = 7;
793 else if (sIdentifier ==
"NonCB") trackCategoryID = 8;
794 else if (sIdentifier ==
"CB") trackCategoryID = 9;
795 else if (sIdentifier ==
"AllNonCB") trackCategoryID = 10;
796 else if (sIdentifier ==
"AllCB") trackCategoryID = 11;
798 else if (sIdentifier ==
"Z") trackCategoryID = 13;
799 else if (sIdentifier ==
"Jpsi") trackCategoryID = 14;
801 else if (sIdentifier ==
"ME_EC") trackCategoryID = 16;
802 else if (sIdentifier ==
"ME_BC") trackCategoryID = 17;
803 else if (sIdentifier ==
"ME_BA") trackCategoryID = 18;
804 else if (sIdentifier ==
"ME_EA") trackCategoryID = 19;
806 else if (sIdentifier ==
"MS_EC") trackCategoryID = 21;
807 else if (sIdentifier ==
"MS_BC") trackCategoryID = 22;
808 else if (sIdentifier ==
"MS_BA") trackCategoryID = 23;
809 else if (sIdentifier ==
"MS_EA") trackCategoryID = 24;
811 else if (sIdentifier ==
"ID_EC") trackCategoryID = 26;
812 else if (sIdentifier ==
"ID_BC") trackCategoryID = 27;
813 else if (sIdentifier ==
"ID_BA") trackCategoryID = 28;
814 else if (sIdentifier ==
"ID_EA") trackCategoryID = 29;
816 return trackCategoryID;
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x,...)
double charge(const T &p)
static const Attributes_t empty
virtual StatusCode initialize() override
initialize
const ToolHandle< Trig::TrigDecisionTool > & getTrigDecisionTool() const
Get the trigger decision tool member.
const ToolHandle< GenericMonitoringTool > & getGroup(std::string_view name) const
Get a specific monitoring tool from the tool handle array.
AthMonitorAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor.
This class provides general information about an event.
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 vz() const
The z origin for the parameters.
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)