60 (*m_msgStream) << MSG::DEBUG <<
" * FourMuonEvent::Init * START *" <<
endmsg;
62 (*m_msgStream) << MSG::DEBUG <<
" * FourMuonEvent::Init * initializing muon selector *" <<
endmsg;
64 (*m_msgStream) << MSG::DEBUG <<
" * FourMuonEvent::Init * initializing electron selector *" <<
endmsg;
67 if (
m_workAsFourMuons) {(*m_msgStream) << MSG::INFO <<
" * FourMuonEvent::Init * working mode: 4 muons" <<
endmsg; }
72 (*m_msgStream) << MSG::DEBUG <<
" * FourMuonEvent::Init * Completed * " <<
endmsg;
81 (*m_msgStream) << MSG::DEBUG <<
" * FourMuonEvent::Reco * STARTING ** New event ** eventCount " <<
m_eventCount <<
endmsg;
88 (*m_msgStream) << MSG::DEBUG <<
" * FourMuonEvent::Reco * retrieving xAOD::MuonContainer " <<
m_container <<
" of eventCount " <<
m_eventCount << std::endl;
93 if (pxMuonContainer !=
nullptr) {
94 (*m_msgStream) << MSG::DEBUG <<
" * FourMuonEvent::Reco * eventCount " <<
m_eventCount
95 <<
" track list has "<< pxMuonContainer->
size()
103 while ( xMuonItr != xMuonItrE ){
107 if (
m_xMuonID.passSelection( pxCMuon)) {
109 (*m_msgStream) << MSG::DEBUG <<
" * FourMuonEvent::Reco ** muon " << theCount <<
" is accepted " <<
endmsg;
117 if (!pxMuonContainer) {
118 std::cout <<
" * FourMuonEvent::Reco * Can't retrieve combined muon collection (container: " <<
m_container <<
") " << std::endl;
133 if (pxElecContainer !=
nullptr) {
134 (*m_msgStream) << MSG::DEBUG <<
" * FourMuonEvent::Reco * retrieving xAOD::ElectronContainer SUCCESS. "
136 <<
" size: " << pxElecContainer->
size()
138 if (pxElecContainer->
size() > 0 ){
139 m_xElecID.PrepareElectronList (pxElecContainer);
145 (*m_msgStream) << MSG::DEBUG <<
" * FourMuonEvent::Reco * retrieving xAOD::ElectronContainer -- FAILED -- eventcount: " <<
m_eventCount <<
endmsg;
164 if (
m_doDebug) std::cout <<
" * FourMuonEvent::Reco * === Event " <<
m_eventCount <<
" is a GOOD 4-muon event " << std::endl;
167 if (
m_doDebug) std::cout <<
" * FourMuonEvent::Reco * === Event " <<
m_eventCount <<
" FAILS the 4-muon event selection " << std::endl;
173 if (
m_doDebug) std::cout <<
" * FourMuonEvent::Reco * applying 4 electron selection " << std::endl;
182 if (
m_doDebug) std::cout <<
" * FourMuonEvent::Reco * === Event " <<
m_eventCount <<
" is a GOOD 4-electrom event " << std::endl;
185 if (
m_doDebug) std::cout <<
" * FourMuonEvent::Reco * === Event " <<
m_eventCount <<
" FAILS the 4-electron event selection " << std::endl;
189 if (
m_doDebug) std::cout <<
" * FourMuonEvent::Reco * === Event " <<
m_eventCount <<
" is not a 4-electron event " << std::endl;
195 if (
m_doDebug) std::cout <<
" * FourMuonEvent::Reco * applying 4 lepton selection " << std::endl;
198 bool enoughleptons =
false;
203 if ( enoughleptons) {
205 std::cout <<
" * FourMuonEvent::Reco * Global statistics: Total number of accepted muons so far: " <<
m_acceptedMuonCount
221 (*m_msgStream) << MSG::DEBUG <<
" * FourMuonEvent::Reco * === Event " <<
m_eventCount <<
" -- FAILS -- the 4-lepton event selection " <<
endmsg;
225 (*m_msgStream) << MSG::DEBUG <<
" * FourMuonEvent::Reco * 4lepton selection FAILURE. Not enough muons or electrons. Event has " <<
m_numberOfFullPassMuons
238 (*m_msgStream) << MSG::DEBUG <<
" * FourMuonEvent::Reco * COMPLETED * Event has " <<
m_numberOfFullPassMuons <<
" muons & "
260 bool eventisgood =
true;
261 (*m_msgStream) << MSG::DEBUG <<
" * FourMuonEvent::EventSelection( type= " << eType <<
") ** started ** " << std::endl
272 if(
m_doDebug) {std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * Failing number of good muons == 4 :( "
281 if(
m_doDebug) {std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * Failing number of good electrons == 4 :( "
288 bool thisselection =
false;
292 if (!thisselection) {
293 if(
m_doDebug) {std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * Failing number of good muons >= 2 && electrons >= 2 :( "
298 eventisgood = thisselection;
304 unsigned int npassleadingpt = 0;
305 unsigned int npasssecondpt = 0;
309 for (
unsigned int i=0; i <
NUM_MUONS; i++) {
311 if(
m_doDebug) {std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * using muon " << i <<
" with pt: " <<
m_pxIDTrack[i]->pt() << std::endl;}
315 if(
m_doDebug) {std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * #muons with pt > leading pt: " <<
m_LeadingMuonPtCut*CLHEP::GeV <<
" = " << npassleadingpt << std::endl;}
316 if(
m_doDebug) {std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * #muons with pt > second pt: " <<
m_SecondMuonPtCut*CLHEP::GeV <<
" = " << npasssecondpt << std::endl;}
317 if (npassleadingpt == 0) {
319 if(
m_doDebug) {std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * Failing leading muon pt cut " <<
m_LeadingMuonPtCut*CLHEP::GeV << std::endl;}
323 if(
m_doDebug) {std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * Failing second muon pt cut " <<
m_LeadingMuonPtCut*CLHEP::GeV << std::endl;}
333 for (
unsigned int i=0; i <
NUM_MUONS; i++) {
335 if (
m_doDebug) {std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * using electron " << i <<
" with pt: " <<
m_pxELTrack[i]->pt() << std::endl;}
339 if(
m_doDebug) {std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * #elecs with pt > leading pt: " <<
m_LeadingMuonPtCut*CLHEP::GeV <<
" = " << npassleadingpt << std::endl;}
340 if(
m_doDebug) {std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * #elecs with pt > second pt: " <<
m_SecondMuonPtCut*CLHEP::GeV <<
" = " << npasssecondpt << std::endl;}
341 if (npassleadingpt == 0) {
343 if(
m_doDebug) {std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * Failing leading electron pt cut " <<
m_LeadingMuonPtCut*CLHEP::GeV << std::endl;}
347 if(
m_doDebug) {std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * Failing second electrons pt cut " <<
m_LeadingMuonPtCut*CLHEP::GeV << std::endl;}
356 std::cout <<
" * FourMuonEvent::EventSelection * Failing mass window low cut: reco m= " <<
m_fInvariantMass[eType] <<
" > " <<
m_MassWindowLow << std::endl;
362 std::cout <<
" * FourMuonEvent::EventSelection * Failing mass window high cut: reco m= " <<
m_fInvariantMass[eType] <<
" > " <<
m_MassWindowHigh << std::endl;
370 bool vertexstatus =
false;
372 std::vector <float> vtxListX;
373 std::vector <float> vtxListY;
374 std::vector <float> vtxListZ;
375 std::vector <int> vtxNpart;
377 int noVertexCountMuon = 0;
378 int noVertexCountElec = 0;
387 std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * vertices ID of the muons = " << std::endl
398 if (vtxListX.size()>0) vertexstatus =
true;
401 std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * vertices ID of the electrons = "
410 if (vtxListX.size()>0) vertexstatus =
true;
415 std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * vertices in event = " << vtxListX.size() << std::endl;
416 for (
size_t imu=0; imu <
NUM_MUONS; imu++) {
419 for (
size_t iel=0; iel <
NUM_MUONS; iel++) {
428 std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * Number of vertex found = " << vtxListX.size()
429 <<
" and mu without vertex: " << noVertexCountMuon
430 <<
" and elec without vertex: " << noVertexCountElec << std::endl;
431 for (
unsigned int ivtx=0; ivtx < vtxListX.size(); ivtx++) {
432 std::cout <<
" vtx[" << ivtx <<
"]= "
433 <<
"( " << vtxListX.at(ivtx)
434 <<
", " << vtxListY.at(ivtx)
435 <<
", " << vtxListZ.at(ivtx)
436 <<
") nparticles: " << vtxNpart.at(ivtx)
442 eventisgood = vertexstatus;
446 if(
m_doDebug){ std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") ** completed ** result= " << eventisgood << std::endl;}
455 if(
m_doDebug){ std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") ** started ** " << std::endl
464 if(
m_doDebug) {std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * Failing number of good muons and electrons == 4 :( "
471 if(
m_doDebug) {std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * Too many muons !! Failing number of good muons == 4 :( "
477 if(
m_doDebug) {std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * Too many electrons !! Failing number of good electrons == 4 :( "
483 double leadingMuonPt = -1., secondMuonPt=-1., thirdMuonPt=-1, fourthMuonPt=-1.;
527 double theLeadingPt = leadingMuonPt;
528 if (secondMuonPt > theLeadingPt) { theLeadingPt = secondMuonPt;}
529 if (thirdMuonPt > theLeadingPt) { theLeadingPt = thirdMuonPt;}
530 if (fourthMuonPt > theLeadingPt) { theLeadingPt = fourthMuonPt;}
532 double theTrailingPt = leadingMuonPt;
533 if (secondMuonPt < theTrailingPt && secondMuonPt > 0) { theTrailingPt = secondMuonPt;}
534 if (thirdMuonPt < theTrailingPt && thirdMuonPt > 0) { theTrailingPt = thirdMuonPt;}
535 if (fourthMuonPt < theTrailingPt && fourthMuonPt > 0) { theTrailingPt = fourthMuonPt;}
538 std::cout <<
" * FourMuonEvent::EventSelection * muon pt selection -- cuts: Leading: " <<
m_LeadingMuonPtCut*CLHEP::GeV << std::endl
540 std::cout <<
" Pt of muons in this event 1: " << leadingMuonPt << std::endl
541 <<
" 2: " << secondMuonPt << std::endl
542 <<
" 3: " << thirdMuonPt << std::endl
543 <<
" 4: " << fourthMuonPt << std::endl
544 <<
" leading Pt: " << theLeadingPt << std::endl
545 <<
" trailing Pt: " << theTrailingPt << std::endl;
551 std::cout <<
" * FourMuonEvent::EventSelection * Failing pt cut * Reco Pt: leading " << theLeadingPt <<
" --> trailing " << theTrailingPt << std::endl;
556 std::cout <<
" * FourMuonEvent::EventSelection * Event passed the pt cuts: leading muon pt: " << leadingMuonPt << std::endl;
557 std::cout <<
" trailing muon pt: " << theTrailingPt << std::endl;
564 std::cout <<
" * FourMuonEvent::EventSelection * Failing mass window low cut: reco m= " << invariantMass <<
" > " <<
m_MassWindowLow << std::endl;
570 std::cout <<
" * FourMuonEvent * Failing mass window high cut: reco m= " << invariantMass <<
" > " <<
m_MassWindowHigh << std::endl;
575 std::cout <<
" * FourMuonEvent::EventSelection * Event passed the mass window: " << invariantMass << std::endl;
579 std::cout <<
" * FourMuonEvent::EventSelection( type= " << eType <<
")* Good 4-muon set: pt range from " << leadingMuonPt/1000
580 <<
" to " << secondMuonPt/1000
581 <<
" GeV 4-muon invariant mass = " <<
m_fInvariantMass.at(eType) <<
" GeV \n";
582 std::cout <<
" * FourMuonEvent::EventSelection( type= " << eType <<
")* completed * \n";
607 for (
unsigned int u = 0; u <
NUM_MUONS; ++u ) {
615 for (
unsigned int v = 0; v <
NUM_TYPES; ++v ) {
638 constexpr bool thisdebug =
false;
641 if(
m_doDebug){ std::cout <<
" * FourMuonEvent * RecordMuon * bad pxMuon --> EXIT "<< std::endl;}
651 std::cout <<
" sigma_d0 "<<
m_pxRecMuon[
m_numberOfFullPassMuons]->trackParticle(xAOD::Muon::TrackParticleType::Primary)->definingParametersCovMatrixVec()[0] << std::endl;
656 if (
m_doDebug){ std::cout <<
" * FourMuonEvent * RecordMuon * bad pxMSmuon --> EXIT "<< std::endl;}
669 if (
m_doDebug){ std::cout <<
" * FourMuonEvent * RecordMuon * bad pxIDTrack for this muon--> EXIT "<< std::endl;}
690 if(
m_doDebug){ std::cout <<
" * FourMuonEvent * ReconstructKinematics * -- start -- " << std::endl; }
691 bool kinematicscomputed =
false;
696 bool goodidentifiers =
true;
702 if (goodidentifiers) {
704 bool goodtracks =
true;
722 kinematicscomputed =
true;
725 std::cout <<
" * FourMuonEvent * ReconstructKinematics4Elec * -- Muon ID Tracks -- new -- " << std::endl
726 <<
" Pt(mu1-)= " <<
m_pxMUTrack[0]->pt() << std::endl
727 <<
" Pt(mu2-)= " <<
m_pxMUTrack[1]->pt() << std::endl
728 <<
" Pt(mu1+)= " <<
m_pxMUTrack[2]->pt() << std::endl
729 <<
" Pt(mu2+)= " <<
m_pxMUTrack[3]->pt() << std::endl
738 if (!kinematicscomputed) {
739 if(
m_doDebug){ std::cout <<
" * FourMuonEvent * ReconstructKinematics * -- FAILED -- " << std::endl; }
742 if(
m_doDebug){ std::cout <<
" * FourMuonEvent * ReconstructKinematics * -- completed -- status: " << kinematicscomputed << std::endl; }
743 return kinematicscomputed;
749 if(
m_doDebug){ std::cout <<
" * FourMuonEvent * ReconstructKinematics4Elec * -- start -- " << std::endl; }
750 bool kinematicscomputed =
false;
755 bool goodtracks =
true;
772 kinematicscomputed =
true;
775 std::cout <<
" * FourMuonEvent * ReconstructKinematics4Elec * -- Electron Tracks -- " << std::endl
776 <<
" Pt(e1-)= " <<
m_pxELTrack[0]->pt() << std::endl
777 <<
" Pt(e2-)= " <<
m_pxELTrack[1]->pt() << std::endl
778 <<
" Pt(e1+)= " <<
m_pxELTrack[2]->pt() << std::endl
779 <<
" Pt(e2+)= " <<
m_pxELTrack[3]->pt() << std::endl
786 if (!kinematicscomputed) {
787 if(
m_doDebug){ std::cout <<
" * FourMuonEvent * ReconstructKinematics4Elec * -- FAILED -- " << std::endl; }
790 if(
m_doDebug){ std::cout <<
" * FourMuonEvent * ReconstructKinematics4Elec * -- completed -- status: " << kinematicscomputed << std::endl; }
791 return kinematicscomputed;
797 (*m_msgStream) << MSG::DEBUG <<
" * FourMuonEvent * ReconstructKinematicsNew * -- START -- " <<
endmsg;
799 bool kinematicscomputed =
false;
823 bool goodtracks =
true;
835 kinematicscomputed =
true;
840 std::cout <<
" * FourMuonEvent * ReconstructKinematicsNew * -- Muon ID Tracks -- new -- " << std::endl;
845 if (kinematicscomputed) std::cout <<
" invariant mass (4mu) = " <<
m_fInvariantMass[
ID] << std::endl;
848 double invmass_test = -1.;
851 bool goodtracks =
true;
857 if (goodtracks && !kinematicscomputed) {
865 kinematicscomputed =
true;
869 std::cout <<
" * FourMuonEvent * ReconstructKinematicsNew * -- Electron Tracks -- " << std::endl;
874 std::cout <<
" invariant mass (4e) = " << invmass_test << std::endl;
879 bool goodtracks =
true;
885 if (goodtracks && !kinematicscomputed) {
893 kinematicscomputed =
true;
897 std::cout <<
" * FourMuonEvent * ReconstructKinematicsNew * -- Muon and Electron Tracks -- " << std::endl;
907 std::cout <<
" invariant mass test = " << invmass_test << std::endl;
910 if (!kinematicscomputed) {
911 if(
m_doDebug){ std::cout <<
" * FourMuonEvent * ReconstructKinematicsNew * -- FAILED -- " << std::endl; }
914 (*m_msgStream) << MSG::DEBUG <<
" * FourMuonEvent * ReconstructKinematicsNew * -- COMPLETED -- status " << kinematicscomputed <<
endmsg;
915 return kinematicscomputed;
1003 if ( pxTrackContainer )
1007 while ( xTrkItr != xTrkItrE )
1010 if ( !pxTrack )
continue;
1012 if(!pxTrkTrack)
continue;
1014 if ( !pxPerigee )
continue;
1015 const float fTrkPhi = pxPerigee->parameters()[
Trk::phi];
1016 const float fTrkEta = pxPerigee->
eta();
1020 float fDR = sqrt( fDPhi*fDPhi + fDEta*fDEta );
1047 std::cout <<
" * FourMuonEvent * SetLeadingMuonPtCut * new Pt cuts: " <<
m_LeadingMuonPtCut <<
" & "
1049 <<
" MuonSelector: " <<
m_xMuonID.GetPtCut() << std::endl;
1069 std::cout <<
" * FourMuonEvent * SetSecondMuonPtCut * new Pt cuts: " <<
m_LeadingMuonPtCut
1071 <<
" MuonSelector: " <<
m_xMuonID.GetPtCut() << std::endl;
1081 constexpr bool thisdebug =
false;
1083 if (
m_doDebug || thisdebug) {std::cout <<
" * FourMuonEvent::OrderMuonList * -- start -- " << std::endl
1088 int muMinus1Id = -9;
1089 int muMinus2Id = -9;
1090 double muPlus1Pt = 0.;
1091 double muPlus2Pt = 0.;
1092 double muMinus1Pt = 0.;
1093 double muMinus2Pt = 0.;
1101 if (nMuonsAtEntry >= 2) {
1102 for (
int imuon=0; imuon < (int) nMuonsAtEntry; imuon++) {
1103 if(
m_doDebug &&
false ){ std::cout <<
" * FourMuonEvent::OrderMuonList * testing imuon= " << imuon
1104 <<
" with charge= " <<
m_pxRecMuon[imuon]->charge()
1114 muPlus2Pt = muPlus1Pt;
1115 muPlus2Id = muPlus1Id;
1131 muMinus2Pt = muMinus1Pt;
1132 muMinus2Id = muMinus1Id;
1146 if (nMuonsAtEntry >= 2 && (muposcount == 0 || munegcount == 0)) {
1147 if (
m_doDebug) std::cout <<
" -- FourMuonEvent::OrderMuonList -- No opposite charge muons in the " << nMuonsAtEntry <<
" input muons"
1148 <<
" #mu+ " << muposcount
1149 <<
" #mu- " << munegcount
1150 <<
" --> DISCARD ALL MUONS -- \n";
1167 std::cout <<
" * FourMuonEvent::OrderMuonList * taking " <<
m_numberOfFullPassMuons <<
" muons from the input list of " << nMuonsAtEntry <<
" muons: " << std::endl;
1168 if (muMinus1Id >= 0) std::cout <<
" leading mu-: " << muMinus1Id <<
" Pt = " << muMinus1Pt << std::endl;
1169 if (muMinus2Id >= 0) std::cout <<
" second mu-: " << muMinus2Id <<
" Pt = " << muMinus2Pt << std::endl;
1170 if (muPlus1Id >= 0) std::cout <<
" leading mu+: " << muPlus1Id <<
" Pt = " << muPlus1Pt << std::endl;
1171 if (muPlus2Id >= 0) std::cout <<
" second mu+: " << muPlus2Id <<
" Pt = " << muPlus2Pt << std::endl;
1174 if (
m_doDebug) std::cout <<
" * FourMuonEvent::OrderMuonList * This event has less than 2 muons :(" << std::endl;
1177 if (
m_doDebug || thisdebug) std::cout <<
" * FourMuonEvent::OrderMuonList * completed * m_numberOfFullPassMuons= " <<
m_numberOfFullPassMuons << std::endl;
1184 (*m_msgStream) << MSG::DEBUG <<
" * FourMuonsEvents::CheckMuonVertices * -- START --" <<
endmsg;
1186 if (
m_doDebug) std::cout <<
" -- FourMuonEvent::CheckMuonVertices -- WARNING -- MUONS DO NOT COME FROM SAME VERTEX \n" ;
1188 (*m_msgStream) << MSG::DEBUG <<
" * FourMuonsEvents::CheckMuonVertices * -- COMPLETED -- status: " <<
true <<
endmsg;
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
double charge(const T &p)
DataModel_detail::const_iterator< DataVector > const_iterator
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
size_type size() const noexcept
Returns the number of elements in the collection.
static float EvaluateAngle(const T *pxP1, const T *pxP2)
static float EvalCharge(const T *pxP1, const T *pxP2)
static float EvalPhi(const T *pxP1, const T *pxP2)
static float EvalPtDiff(const T *pxP1, const T *pxP2)
static float EvalPt(const T *pxP1, const T *pxP2)
static float EvalFourMuInvMass(const T *pxP1, const T *pxP2, const T *pxP3, const T *pxP4)
static float EvalEta(const T *pxP1, const T *pxP2)
std::string m_xSampleName
const xAOD::TrackParticle * m_pxMETrack[NUM_MUONS]
void SetSecondMuonPtCut(double newvalue)
bool m_passedFourLeptonSelection
void SetLeadingMuonPtCut(double newvalue)
int getZCharge(ZTYPE eType)
PerfMonServices::CONTAINERS m_container
int m_muon_vtx[NUM_MUONS]
bool m_passedFourElectronSelection
bool ReconstructKinematics4Elec()
int m_elec_vtx[NUM_MUONS]
bool ReconstructKinematics()
bool m_workAsFourElectrons
void SetMuonPtCut(double newvalue)
const xAOD::TrackParticle * m_pxIDTrack[NUM_MUONS]
bool EventSelection(ZTYPE eType)
const xAOD::TrackParticle * m_pxMUTrack[NUM_MUONS]
double m_LeadingMuonPtCut
ElectronSelector m_xElecID
bool m_passedFourMuonSelection
bool ReconstructKinematicsNew()
bool m_passedSelectionCuts
void RecordMuon(const xAOD::Muon *pxMuon)
const xAOD::TrackParticle * m_pxELTrack[NUM_MUONS]
float getPtImbalance(ZTYPE eType)
unsigned int getPosMuon(int eType)
unsigned int m_numberOfFullPassElectrons
const xAOD::Muon * m_pxRecMuon[NUM_MUONS]
unsigned int getNegMuon(int eType)
const xAOD::TrackParticle * m_pxMSTrack[NUM_MUONS]
const xAOD::TrackParticle * getLooseIDTk(unsigned int uPart)
bool EventSelectionNew(ZTYPE eType)
unsigned int m_numberOfFullPassMuons
static const T * getContainer(CONTAINERS eContainer)
static const std::string & getContainerName(CONTAINERS eContainer)
double eta() const
Access method for pseudorapidity - from momentum.
const Perigee * perigeeParameters() const
return Perigee.
const TrackParticle * trackParticle(TrackParticleType type) const
Returns a pointer (which can be a nullptr) to the TrackParticle used in identification of this muon.
const Trk::Track * track() const
Returns a pointer (which can be NULL) to the Trk::Track which was used to make this TrackParticle.
singleton-like access to IMessageSvc via open function and helper
IMessageSvc * getMessageSvc(bool quiet=false)
ParametersT< TrackParametersDim, Charged, PerigeeSurface > Perigee
ElectronContainer_v1 ElectronContainer
Definition of the current "electron container version".
TrackParticle_v1 TrackParticle
Reference the current persistent version:
TrackParticleContainer_v1 TrackParticleContainer
Definition of the current "TrackParticle container version".
Muon_v1 Muon
Reference the current persistent version:
MuonContainer_v1 MuonContainer
Definition of the current "Muon container version".