|
ATLAS Offline Software
|
#include <FourMuonEvent.h>
|
enum | {
MUON1,
MUON2,
MUON3,
MUON4,
NUM_MUONS
} |
|
enum | { CENTRAL,
FORWARD,
BACKWARD,
UNDEF
} |
|
enum | ZTYPE {
MS,
ME,
ID,
CB,
NUM_TYPES
} |
|
|
template<class T > |
static CLHEP::Hep3Vector | calculateMomentum (const T *pP) |
|
template<class T > |
static float | EvalInvMass (const T *pxP1, const T *pxP2, float fMass1, float fMass2=invalidAnswer) |
|
template<class T > |
static float | EvalInvMass (const T *pxP1, const T *pxP2, const T *pxp3, const T *pxP4, float fMass1, float fMass2=-999.9, float fMass3=-999.9, float fMass4=invalidAnswer) |
|
template<class T > |
static float | EvalDiMuInvMass (const T *pxP1, const T *pxP2) |
|
template<class T > |
static float | EvalFourMuInvMass (const T *pxP1, const T *pxP2, const T *pxP3, const T *pxP4) |
|
template<class T > |
static float | EvaluateAngle (const T *pxP1, const T *pxP2) |
|
template<class T > |
static float | EvalPtDiff (const T *pxP1, const T *pxP2) |
|
template<class T > |
static float | EvalPhiDiff (const T *pxP1, const T *pxP2) |
|
template<class T > |
static float | EvalEtaDiff (const T *pxP1, const T *pxP2) |
|
template<class T > |
static float | EvalPt (const T *pxP1, const T *pxP2) |
|
template<class T > |
static float | EvalPhi (const T *pxP1, const T *pxP2) |
|
template<class T > |
static float | EvalEta (const T *pxP1, const T *pxP2) |
|
template<class T > |
static float | EvalCharge (const T *pxP1, const T *pxP2) |
|
template<class T > |
static float | EvalTransverseMass (const T *pxP1, float fMETx, float fMETy, float fMass1, float fMass2=invalidAnswer) |
|
template<class T > |
static float | EvalTransverseMass (const T *pxP1, float fMETx, float fMETy) |
|
template<class T > |
static float | EvalTransverseMass (const T *pxP1, const T *pxP2, float fMETx, float fMETy, float fMass1, float fMass2=invalidAnswer) |
|
template<class T > |
static float | EvalTransverseMass (const T *pxP1, const T *pxP2, float fMETx, float fMETy) |
|
Definition at line 34 of file FourMuonEvent.h.
◆ PARENT
◆ anonymous enum
Enumerator |
---|
MUON1 | |
MUON2 | |
MUON3 | |
MUON4 | |
NUM_MUONS | |
Definition at line 43 of file FourMuonEvent.h.
◆ anonymous enum
Enumerator |
---|
CENTRAL | |
FORWARD | |
BACKWARD | |
UNDEF | |
Definition at line 52 of file FourMuonEvent.h.
◆ HISTOS_1D
Enumerator |
---|
ZMASS_MUON | |
ZMASS_MUONADJ | |
ZMASS_TRACK | |
ZMASS_COMB | |
NUM_1HISTOS | |
Definition at line 184 of file FourMuonEvent.h.
◆ ZTYPE
◆ FourMuonEvent() [1/2]
FourMuonEvent::FourMuonEvent |
( |
| ) |
|
◆ ~FourMuonEvent()
FourMuonEvent::~FourMuonEvent |
( |
| ) |
|
|
virtual |
◆ FourMuonEvent() [2/2]
◆ BookHistograms()
void FourMuonEvent::BookHistograms |
( |
| ) |
|
|
protectedvirtual |
◆ calculateMomentum()
template<class T >
CLHEP::Hep3Vector EventAnalysis::calculateMomentum |
( |
const T * |
pP | ) |
|
|
staticinherited |
◆ CheckMuonVertices()
bool FourMuonEvent::CheckMuonVertices |
( |
| ) |
|
|
private |
Definition at line 1470 of file FourMuonEvent.cxx.
1472 (*m_msgStream) <<
MSG::DEBUG <<
" * FourMuonsEvents::CheckMuonVertices * -- START --" <<
endmsg;
1474 bool goodvertices =
false;
1475 goodvertices =
true;
1476 int nverticesfound = 0;
1480 for (
unsigned int imuneg = 0; imuneg <= 1; imuneg++) {
1516 if (nverticesfound >= 1) goodvertices =
true;
1518 if (nverticesfound == 0)
if (
m_doDebug) std::cout <<
" -- FourMuonEvent::CheckMuonVertices -- WARNING -- MUONS DO NOT COME FROM SAME VERTEX " << std::endl;
1520 (*m_msgStream) <<
MSG::DEBUG <<
" * FourMuonsEvents::CheckMuonVertices * -- COMPLETED -- status: " << goodvertices <<
endmsg;
1521 return goodvertices;
◆ Clear()
void FourMuonEvent::Clear |
( |
| ) |
|
|
private |
◆ doIPSelection()
void FourMuonEvent::doIPSelection |
( |
bool |
doIPsel | ) |
|
|
inline |
◆ doIsoSelection()
void FourMuonEvent::doIsoSelection |
( |
bool |
doIso | ) |
|
|
inline |
◆ doMCPSelection()
void FourMuonEvent::doMCPSelection |
( |
bool |
doMCP | ) |
|
|
inline |
◆ EvalCharge()
template<class T >
float EventAnalysis::EvalCharge |
( |
const T * |
pxP1, |
|
|
const T * |
pxP2 |
|
) |
| |
|
staticinherited |
Definition at line 238 of file EventAnalysis.h.
242 return static_cast<float>( pxP1->charge() + pxP2->charge() );
◆ EvalDiMuInvMass()
template<class T >
float EventAnalysis::EvalDiMuInvMass |
( |
const T * |
pxP1, |
|
|
const T * |
pxP2 |
|
) |
| |
|
staticinherited |
◆ EvalEta()
template<class T >
float EventAnalysis::EvalEta |
( |
const T * |
pxP1, |
|
|
const T * |
pxP2 |
|
) |
| |
|
staticinherited |
Definition at line 229 of file EventAnalysis.h.
235 return static_cast<float>( (xTmp1 + xTmp2).pseudoRapidity() );
◆ EvalEtaDiff()
template<class T >
float EventAnalysis::EvalEtaDiff |
( |
const T * |
pxP1, |
|
|
const T * |
pxP2 |
|
) |
| |
|
staticinherited |
Definition at line 201 of file EventAnalysis.h.
208 return static_cast<float>( xTmp1.polarAngle(xTmp2) );
◆ EvalFourMuInvMass()
template<class T >
float EventAnalysis::EvalFourMuInvMass |
( |
const T * |
pxP1, |
|
|
const T * |
pxP2, |
|
|
const T * |
pxP3, |
|
|
const T * |
pxP4 |
|
) |
| |
|
staticinherited |
◆ EvalInvMass() [1/2]
template<class T >
float EventAnalysis::EvalInvMass |
( |
const T * |
pxP1, |
|
|
const T * |
pxP2, |
|
|
const T * |
pxp3, |
|
|
const T * |
pxP4, |
|
|
float |
fMass1, |
|
|
float |
fMass2 = -999.9 , |
|
|
float |
fMass3 = -999.9 , |
|
|
float |
fMass4 = invalidAnswer |
|
) |
| |
|
staticinherited |
Definition at line 132 of file EventAnalysis.h.
140 fMass2 = ( fMass2 < 0.0f ) ? fMass1 : fMass2;
141 fMass3 = ( fMass3 < 0.0f ) ? fMass1 : fMass3;
142 fMass4 = ( fMass4 < 0.0f ) ? fMass1 : fMass4;
150 CLHEP::HepLorentzVector xLVec; xLVec.setVectM ( xTmp1, fMass1 );
151 CLHEP::HepLorentzVector xLVec2; xLVec2.setVectM( xTmp2, fMass2 );
152 CLHEP::HepLorentzVector xLVec3; xLVec3.setVectM( xTmp3, fMass3 );
153 CLHEP::HepLorentzVector xLVec4; xLVec4.setVectM( xTmp4, fMass4 );
159 return static_cast<float>( xLVec.m() );
◆ EvalInvMass() [2/2]
Definition at line 106 of file EventAnalysis.h.
113 fMass2 = ( fMass2 < 0.0f ) ? fMass1 : fMass2;
117 CLHEP::HepLorentzVector xLVec1; xLVec1.setVectM( xTmp1, fMass1 );
118 CLHEP::HepLorentzVector xLVec2; xLVec2.setVectM( xTmp2, fMass2 );
119 return static_cast<float>( xLVec1.invariantMass( xLVec2 ) );
◆ EvalPhi()
template<class T >
float EventAnalysis::EvalPhi |
( |
const T * |
pxP1, |
|
|
const T * |
pxP2 |
|
) |
| |
|
staticinherited |
◆ EvalPhiDiff()
template<class T >
float EventAnalysis::EvalPhiDiff |
( |
const T * |
pxP1, |
|
|
const T * |
pxP2 |
|
) |
| |
|
staticinherited |
Definition at line 190 of file EventAnalysis.h.
197 return static_cast<float>( xTmp1.deltaPhi(xTmp2) );
◆ EvalPt()
template<class T >
float EventAnalysis::EvalPt |
( |
const T * |
pxP1, |
|
|
const T * |
pxP2 |
|
) |
| |
|
staticinherited |
◆ EvalPtDiff()
template<class T >
float EventAnalysis::EvalPtDiff |
( |
const T * |
pxP1, |
|
|
const T * |
pxP2 |
|
) |
| |
|
staticinherited |
◆ EvalTransverseMass() [1/4]
template<class T >
float EventAnalysis::EvalTransverseMass |
( |
const T * |
pxP1, |
|
|
const T * |
pxP2, |
|
|
float |
fMETx, |
|
|
float |
fMETy |
|
) |
| |
|
staticinherited |
◆ EvalTransverseMass() [2/4]
template<class T >
float EventAnalysis::EvalTransverseMass |
( |
const T * |
pxP1, |
|
|
const T * |
pxP2, |
|
|
float |
fMETx, |
|
|
float |
fMETy, |
|
|
float |
fMass1, |
|
|
float |
fMass2 = invalidAnswer |
|
) |
| |
|
staticinherited |
Definition at line 279 of file EventAnalysis.h.
286 fMass2 = ( fMass2 < 0.0f ) ? fMass1 : fMass2;
288 CLHEP::Hep3Vector xTmp1 = CLHEP::Hep3Vector( pxP1->p4().Px() *
EAna::CGeV, pxP1->p4().Py() *
EAna::CGeV, 0.0f );
289 CLHEP::Hep3Vector xTmp2 = CLHEP::Hep3Vector( pxP2->p4().Px() *
EAna::CGeV, pxP2->p4().Py() *
EAna::CGeV, 0.0f );
290 CLHEP::Hep3Vector xTmp12 = xTmp1 + xTmp2;
291 CLHEP::Hep3Vector xTmp3 = CLHEP::Hep3Vector( fMETx, fMETy, 0.0
f );
292 CLHEP::HepLorentzVector xLVec1; xLVec1.setVectM( xTmp12, fMass1 );
293 CLHEP::HepLorentzVector xLVec2; xLVec2.setVectM( xTmp3, 0.0
f );
294 return static_cast<float>( xLVec1.invariantMass( xLVec2 ) );
◆ EvalTransverseMass() [3/4]
template<class T >
float EventAnalysis::EvalTransverseMass |
( |
const T * |
pxP1, |
|
|
float |
fMETx, |
|
|
float |
fMETy |
|
) |
| |
|
staticinherited |
◆ EvalTransverseMass() [4/4]
template<class T >
float EventAnalysis::EvalTransverseMass |
( |
const T * |
pxP1, |
|
|
float |
fMETx, |
|
|
float |
fMETy, |
|
|
float |
fMass1, |
|
|
float |
fMass2 = invalidAnswer |
|
) |
| |
|
staticinherited |
Definition at line 254 of file EventAnalysis.h.
261 fMass2 = ( fMass2 < 0.0f ) ? fMass1 : fMass2;
263 CLHEP::Hep3Vector xTmp1 = CLHEP::Hep3Vector( pxP1->p4().Px() *
EAna::CGeV, pxP1->p4().Py() *
EAna::CGeV, 0.0f );
264 CLHEP::Hep3Vector xTmp2 = CLHEP::Hep3Vector( fMETx, fMETy, 0.0
f );
265 CLHEP::HepLorentzVector xLVec1; xLVec1.setVectM( xTmp1, fMass1 );
266 CLHEP::HepLorentzVector xLVec2; xLVec2.setVectM( xTmp2, 0.0
f );
267 return static_cast<float>( xLVec1.invariantMass( xLVec2 ) );
◆ EvaluateAngle()
template<class T >
float EventAnalysis::EvaluateAngle |
( |
const T * |
pxP1, |
|
|
const T * |
pxP2 |
|
) |
| |
|
staticinherited |
Definition at line 163 of file EventAnalysis.h.
170 return static_cast<float>( xTmp1.angle(xTmp2) );
◆ EventPassed()
bool FourMuonEvent::EventPassed |
( |
| ) |
|
|
inline |
◆ EventSelection()
bool FourMuonEvent::EventSelection |
( |
ZTYPE |
eType | ) |
|
|
private |
Definition at line 554 of file FourMuonEvent.cxx.
556 if(
m_doDebug){ std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") ** started ** " << std::endl
565 if(
m_doDebug) {std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * Failing number of good muons and electrons == 4 :( "
572 if(
m_doDebug) {std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * Too many muons !! Failing number of good muons == 4 :( "
578 if(
m_doDebug) {std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * Too many electrons !! Failing number of good electrons == 4 :( "
584 double leadingMuonPt = -1., secondMuonPt=-1., thirdMuonPt=-1, fourthMuonPt=-1.;
628 double theLeadingPt = leadingMuonPt;
629 if (secondMuonPt > theLeadingPt) { theLeadingPt = secondMuonPt;}
630 if (thirdMuonPt > theLeadingPt) { theLeadingPt = thirdMuonPt;}
631 if (fourthMuonPt > theLeadingPt) { theLeadingPt = fourthMuonPt;}
633 double theTrailingPt = leadingMuonPt;
634 if (secondMuonPt < theTrailingPt && secondMuonPt > 0) { theTrailingPt = secondMuonPt;}
635 if (thirdMuonPt < theTrailingPt && thirdMuonPt > 0) { theTrailingPt = thirdMuonPt;}
636 if (fourthMuonPt < theTrailingPt && fourthMuonPt > 0) { theTrailingPt = fourthMuonPt;}
641 std::cout <<
" Pt of muons in this event 1: " << leadingMuonPt << std::endl
642 <<
" 2: " << secondMuonPt << std::endl
643 <<
" 3: " << thirdMuonPt << std::endl
644 <<
" 4: " << fourthMuonPt << std::endl
645 <<
" leading Pt: " << theLeadingPt << std::endl
646 <<
" trailing Pt: " << theTrailingPt << std::endl;
652 std::cout <<
" * FourMuonEvent::EventSelection * Failing pt cut * Reco Pt: leading " << theLeadingPt <<
" --> trailing " << theTrailingPt << std::endl;
657 std::cout <<
" * FourMuonEvent::EventSelection * Event passed the pt cuts: leading muon pt: " << leadingMuonPt << std::endl;
658 std::cout <<
" trailing muon pt: " << theTrailingPt << std::endl;
665 std::cout <<
" * FourMuonEvent::EventSelection * Failing mass window low cut: reco m= " <<
m_fInvariantMass[eType] <<
" > " <<
m_MassWindowLow << std::endl;
676 std::cout <<
" * FourMuonEvent::EventSelection * Event passed the mass window: " <<
m_fInvariantMass[eType] << std::endl;
865 std::cout <<
" * FourMuonEvent::EventSelection( type= " << eType <<
")* Good 4-muon set: pt range from " << leadingMuonPt/1000
866 <<
" to " << secondMuonPt/1000
867 <<
" GeV 4-muon invariant mass = " <<
m_fInvariantMass[eType] <<
" GeV " << std::endl;
868 std::cout <<
" * FourMuonEvent::EventSelection( type= " << eType <<
")* completed * " << std::endl;
◆ EventSelectionNew()
bool FourMuonEvent::EventSelectionNew |
( |
ZTYPE |
eType | ) |
|
|
private |
Definition at line 261 of file FourMuonEvent.cxx.
266 bool eventisgood =
true;
267 (*m_msgStream) <<
MSG::DEBUG <<
" * FourMuonEvent::EventSelection( type= " << eType <<
") ** started ** " << std::endl
278 if(
m_doDebug) {std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * Failing number of good muons == 4 :( "
287 if(
m_doDebug) {std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * Failing number of good electrons == 4 :( "
294 bool thisselection =
false;
298 if (!thisselection) {
299 if(
m_doDebug) {std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * Failing number of good muons >= 2 && electrons >= 2 :( "
304 eventisgood = thisselection;
310 unsigned int npassleadingpt = 0;
311 unsigned int npasssecondpt = 0;
317 if(
m_doDebug) {std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * using muon " <<
i <<
" with pt: " <<
m_pxIDTrack[
i]->
pt() << std::endl;}
321 if(
m_doDebug) {std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * #muons with pt > leading pt: " <<
m_LeadingMuonPtCut*
CLHEP::GeV <<
" = " << npassleadingpt << std::endl;}
322 if(
m_doDebug) {std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * #muons with pt > second pt: " <<
m_SecondMuonPtCut*
CLHEP::GeV <<
" = " << npasssecondpt << std::endl;}
323 if (npassleadingpt == 0) {
341 if (
m_doDebug) {std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * using electron " <<
i <<
" with pt: " <<
m_pxELTrack[
i]->
pt() << std::endl;}
345 if(
m_doDebug) {std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * #elecs with pt > leading pt: " <<
m_LeadingMuonPtCut*
CLHEP::GeV <<
" = " << npassleadingpt << std::endl;}
346 if(
m_doDebug) {std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * #elecs with pt > second pt: " <<
m_SecondMuonPtCut*
CLHEP::GeV <<
" = " << npasssecondpt << std::endl;}
347 if (npassleadingpt == 0) {
362 std::cout <<
" * FourMuonEvent::EventSelection * Failing mass window low cut: reco m= " <<
m_fInvariantMass[eType] <<
" > " <<
m_MassWindowLow << std::endl;
368 std::cout <<
" * FourMuonEvent::EventSelection * Failing mass window high cut: reco m= " <<
m_fInvariantMass[eType] <<
" > " <<
m_MassWindowHigh << std::endl;
376 bool vertexstatus =
false;
378 std::vector <float> vtxListX;
379 std::vector <float> vtxListY;
380 std::vector <float> vtxListZ;
381 std::vector <int> vtxNpart;
383 int noVertexCountMuon = 0;
384 int noVertexCountElec = 0;
387 for (
unsigned int imu = 0; imu <
NUM_MUONS; imu++) {
425 for (
unsigned int iel = 0; iel <
NUM_MUONS; iel++) {
472 if (vtxListX.size()>0) vertexstatus =
true;
476 if (noVertexCountMuon > 0) vertexstatus =
false;
478 std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * vertices ID of the muons = " << std::endl
489 if (vtxListX.size()>0) vertexstatus =
true;
493 if (noVertexCountElec > 0) vertexstatus =
false;
495 std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * vertices ID of the electrons = " << std::endl
506 if (vtxListX.size()>0) vertexstatus =
true;
511 std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * vertices in event = " << vtxListX.size() << std::endl;
512 for (
size_t imu=0; imu <
NUM_MUONS; imu++) {
515 for (
size_t iel=0; iel <
NUM_MUONS; iel++) {
524 std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * Number of vertex found = " << vtxListX.size()
525 <<
" and mu without vertex: " << noVertexCountMuon
526 <<
" and elec without vertex: " << noVertexCountElec << std::endl;
527 for (
unsigned int ivtx=0; ivtx < vtxListX.size(); ivtx++) {
528 std::cout <<
" vtx[" << ivtx <<
"]= "
529 <<
"( " << vtxListX.at(ivtx)
530 <<
", " << vtxListY.at(ivtx)
531 <<
", " << vtxListZ.at(ivtx)
532 <<
") nparticles: " << vtxNpart.at(ivtx)
538 std::cout <<
" * FourMuonEvent::EventSelection * FAILED * number of vertex found = " << vtxListX.size()
539 <<
" mu without vertex: " << noVertexCountMuon
540 <<
" elec without vertex: " << noVertexCountElec << std::endl;
543 eventisgood = vertexstatus;
547 if(
m_doDebug){ std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") ** completed ** result= " << eventisgood << std::endl;}
◆ get4MuInvMass()
const float& FourMuonEvent::get4MuInvMass |
( |
ZTYPE |
eType | ) |
|
|
inline |
◆ getAcceptedEvents()
int FourMuonEvent::getAcceptedEvents |
( |
| ) |
|
|
inline |
◆ getCombMuon()
◆ getELTrack()
◆ getIDTrack()
◆ GetInvMass()
double FourMuonEvent::GetInvMass |
( |
| ) |
|
|
inline |
◆ getLeptonOpeningAngle()
const float& FourMuonEvent::getLeptonOpeningAngle |
( |
ZTYPE |
eType | ) |
|
|
inline |
◆ getLooseIDTk()
Definition at line 1285 of file FourMuonEvent.cxx.
1290 if ( pxTrackContainer )
1294 while ( xTrkItr != xTrkItrE )
1297 if ( !pxTrack )
continue;
1299 if(!pxTrkTrack)
continue;
1301 if ( !pxPerigee )
continue;
1302 const float fTrkPhi = pxPerigee->parameters()[
Trk::phi];
1303 const float fTrkEta = pxPerigee->eta();
1307 float fDR = sqrt( fDPhi*fDPhi + fDEta*fDEta );
◆ getMSTrack()
◆ getNegMuon()
unsigned int FourMuonEvent::getNegMuon |
( |
int |
eType | ) |
|
◆ getNumberOfTaggedMuons()
unsigned int FourMuonEvent::getNumberOfTaggedMuons |
( |
| ) |
|
|
inline |
◆ GetNVertex()
int FourMuonEvent::GetNVertex |
( |
| ) |
|
|
inline |
◆ getPosMuon()
unsigned int FourMuonEvent::getPosMuon |
( |
int |
eType | ) |
|
◆ getPtImbalance()
float FourMuonEvent::getPtImbalance |
( |
ZTYPE |
eType | ) |
|
◆ getRegion()
const std::string FourMuonEvent::getRegion |
( |
| ) |
const |
◆ GetVertexElec()
int FourMuonEvent::GetVertexElec |
( |
unsigned int |
uPart | ) |
|
|
inline |
◆ GetVertexElNeg1()
int FourMuonEvent::GetVertexElNeg1 |
( |
| ) |
|
|
inline |
◆ GetVertexElNeg2()
int FourMuonEvent::GetVertexElNeg2 |
( |
| ) |
|
|
inline |
◆ GetVertexElPos1()
int FourMuonEvent::GetVertexElPos1 |
( |
| ) |
|
|
inline |
◆ GetVertexElPos2()
int FourMuonEvent::GetVertexElPos2 |
( |
| ) |
|
|
inline |
◆ GetVertexMuNeg1()
int FourMuonEvent::GetVertexMuNeg1 |
( |
| ) |
|
|
inline |
◆ GetVertexMuNeg2()
int FourMuonEvent::GetVertexMuNeg2 |
( |
| ) |
|
|
inline |
◆ GetVertexMuPos1()
int FourMuonEvent::GetVertexMuPos1 |
( |
| ) |
|
|
inline |
◆ GetVertexMuPos2()
int FourMuonEvent::GetVertexMuPos2 |
( |
| ) |
|
|
inline |
◆ getZCharge()
int FourMuonEvent::getZCharge |
( |
ZTYPE |
eType | ) |
|
◆ getZEta()
const float& FourMuonEvent::getZEta |
( |
ZTYPE |
eType | ) |
|
|
inline |
◆ getZMass()
const float& FourMuonEvent::getZMass |
( |
ZTYPE |
eType | ) |
|
|
inline |
◆ getZPhi()
const float& FourMuonEvent::getZPhi |
( |
ZTYPE |
eType | ) |
|
|
inline |
◆ getZPt()
◆ Init()
void FourMuonEvent::Init |
( |
| ) |
|
|
virtual |
◆ operator=()
◆ OrderMuonList()
void FourMuonEvent::OrderMuonList |
( |
| ) |
|
Definition at line 1365 of file FourMuonEvent.cxx.
1368 bool thisdebug =
false;
1370 if (
m_doDebug || thisdebug) {std::cout <<
" * FourMuonEvent::OrderMuonList * -- start -- " << std::endl
1375 int muMinus1Id = -9;
1376 int muMinus2Id = -9;
1377 double muPlus1Pt = 0.;
1378 double muPlus2Pt = 0.;
1379 double muMinus1Pt = 0.;
1380 double muMinus2Pt = 0.;
1388 if (nMuonsAtEntry >= 2) {
1389 for (
int imuon=0; imuon < (
int) nMuonsAtEntry; imuon++) {
1390 if(
m_doDebug &&
false ){ std::cout <<
" * FourMuonEvent::OrderMuonList * testing imuon= " << imuon
1401 muPlus2Pt = muPlus1Pt;
1402 muPlus2Id = muPlus1Id;
1418 muMinus2Pt = muMinus1Pt;
1419 muMinus2Id = muMinus1Id;
1433 if (nMuonsAtEntry >= 2 && (muposcount == 0 || munegcount == 0)) {
1434 if (
m_doDebug) std::cout <<
" -- FourMuonEvent::OrderMuonList -- No opposite charge muons in the " << nMuonsAtEntry <<
" input muons"
1435 <<
" #mu+ " << muposcount
1436 <<
" #mu- " << munegcount
1437 <<
" --> DISCARD ALL MUONS -- " << std::endl;
1455 std::cout <<
" * FourMuonEvent::OrderMuonList * taking " <<
m_numberOfFullPassMuons <<
" muons from the input list of " << nMuonsAtEntry <<
" muons: " << std::endl;
1456 if (muMinus1Id >= 0) std::cout <<
" leading mu-: " << muMinus1Id <<
" Pt = " << muMinus1Pt << std::endl;
1457 if (muMinus2Id >= 0) std::cout <<
" second mu-: " << muMinus2Id <<
" Pt = " << muMinus2Pt << std::endl;
1458 if (muPlus1Id >= 0) std::cout <<
" leading mu+: " << muPlus1Id <<
" Pt = " << muPlus1Pt << std::endl;
1459 if (muPlus2Id >= 0) std::cout <<
" second mu+: " << muPlus2Id <<
" Pt = " << muPlus2Pt << std::endl;
1462 if (
m_doDebug) std::cout <<
" * FourMuonEvent::OrderMuonList * This event has less than 2 muons :(" << std::endl;
1465 if (
m_doDebug || thisdebug) std::cout <<
" * FourMuonEvent::OrderMuonList * completed * m_numberOfFullPassMuons= " <<
m_numberOfFullPassMuons << std::endl;
◆ Reco()
bool FourMuonEvent::Reco |
( |
| ) |
|
Definition at line 84 of file FourMuonEvent.cxx.
99 if (pxMuonContainer !=
nullptr) {
101 <<
" track list has "<< pxMuonContainer->
size()
109 while ( xMuonItr != xMuonItrE ){
115 (*m_msgStream) <<
MSG::DEBUG <<
" * FourMuonEvent::Reco ** muon " << theCount <<
" is accepted " <<
endmsg;
123 if (!pxMuonContainer) {
124 std::cout <<
" * FourMuonEvent::Reco * Can't retrieve combined muon collection (container: " <<
m_container <<
") " << std::endl;
139 if (pxElecContainer !=
nullptr) {
140 (*m_msgStream) <<
MSG::DEBUG <<
" * FourMuonEvent::Reco * retrieving xAOD::ElectronContainer SUCCESS. "
142 <<
" size: " << pxElecContainer->
size()
144 if (pxElecContainer->
size() > 0 ){
151 (*m_msgStream) <<
MSG::DEBUG <<
" * FourMuonEvent::Reco * retrieving xAOD::ElectronContainer -- FAILED -- eventcount: " <<
m_eventCount <<
endmsg;
170 if (
m_doDebug) std::cout <<
" * FourMuonEvent::Reco * === Event " <<
m_eventCount <<
" is a GOOD 4-muon event " << std::endl;
173 if (
m_doDebug) std::cout <<
" * FourMuonEvent::Reco * === Event " <<
m_eventCount <<
" FAILS the 4-muon event selection " << std::endl;
179 if (
m_doDebug) std::cout <<
" * FourMuonEvent::Reco * applying 4 electron selection " << std::endl;
188 if (
m_doDebug) std::cout <<
" * FourMuonEvent::Reco * === Event " <<
m_eventCount <<
" is a GOOD 4-electrom event " << std::endl;
191 if (
m_doDebug) std::cout <<
" * FourMuonEvent::Reco * === Event " <<
m_eventCount <<
" FAILS the 4-electron event selection " << std::endl;
195 if (
m_doDebug) std::cout <<
" * FourMuonEvent::Reco * === Event " <<
m_eventCount <<
" is not a 4-electron event " << std::endl;
201 if (
m_doDebug) std::cout <<
" * FourMuonEvent::Reco * applying 4 lepton selection " << std::endl;
204 bool enoughleptons =
false;
209 if ( enoughleptons) {
211 std::cout <<
" * FourMuonEvent::Reco * Global statistics: Total number of accepted muons so far: " <<
m_acceptedMuonCount
227 (*m_msgStream) <<
MSG::DEBUG <<
" * FourMuonEvent::Reco * === Event " <<
m_eventCount <<
" -- FAILS -- the 4-lepton event selection " <<
endmsg;
◆ ReconstructKinematics()
bool FourMuonEvent::ReconstructKinematics |
( |
| ) |
|
|
private |
Definition at line 975 of file FourMuonEvent.cxx.
977 if(
m_doDebug){ std::cout <<
" * FourMuonEvent * ReconstructKinematics * -- start -- " << std::endl; }
978 bool kinematicscomputed =
false;
983 bool goodidentifiers =
true;
989 if (goodidentifiers) {
991 bool goodtracks =
true;
1009 kinematicscomputed =
true;
1012 std::cout <<
" * FourMuonEvent * ReconstructKinematics4Elec * -- Muon ID Tracks -- new -- " << std::endl
1025 if (!kinematicscomputed) {
1026 if(
m_doDebug){ std::cout <<
" * FourMuonEvent * ReconstructKinematics * -- FAILED -- " << std::endl; }
1029 if(
m_doDebug){ std::cout <<
" * FourMuonEvent * ReconstructKinematics * -- completed -- status: " << kinematicscomputed << std::endl; }
1030 return kinematicscomputed;
◆ ReconstructKinematics4Elec()
bool FourMuonEvent::ReconstructKinematics4Elec |
( |
| ) |
|
|
private |
Definition at line 1034 of file FourMuonEvent.cxx.
1036 if(
m_doDebug){ std::cout <<
" * FourMuonEvent * ReconstructKinematics4Elec * -- start -- " << std::endl; }
1037 bool kinematicscomputed =
false;
1042 bool goodtracks =
true;
1047 if (
m_pxELTrack[0] ==
nullptr) goodtracks =
false;
1048 if (
m_pxELTrack[1] ==
nullptr) goodtracks =
false;
1049 if (
m_pxELTrack[2] ==
nullptr) goodtracks =
false;
1050 if (
m_pxELTrack[3] ==
nullptr) goodtracks =
false;
1059 kinematicscomputed =
true;
1062 std::cout <<
" * FourMuonEvent * ReconstructKinematics4Elec * -- Electron Tracks -- " << std::endl
1073 if (!kinematicscomputed) {
1074 if(
m_doDebug){ std::cout <<
" * FourMuonEvent * ReconstructKinematics4Elec * -- FAILED -- " << std::endl; }
1077 if(
m_doDebug){ std::cout <<
" * FourMuonEvent * ReconstructKinematics4Elec * -- completed -- status: " << kinematicscomputed << std::endl; }
1078 return kinematicscomputed;
◆ ReconstructKinematicsNew()
bool FourMuonEvent::ReconstructKinematicsNew |
( |
| ) |
|
|
private |
Definition at line 1082 of file FourMuonEvent.cxx.
1084 (*m_msgStream) <<
MSG::DEBUG <<
" * FourMuonEvent * ReconstructKinematicsNew * -- START -- " <<
endmsg;
1086 bool kinematicscomputed =
false;
1110 bool goodtracks =
true;
1111 if (
m_pxMUTrack[0] ==
nullptr) goodtracks =
false;
1112 if (
m_pxMUTrack[1] ==
nullptr) goodtracks =
false;
1113 if (
m_pxMUTrack[2] ==
nullptr) goodtracks =
false;
1114 if (
m_pxMUTrack[3] ==
nullptr) goodtracks =
false;
1122 kinematicscomputed =
true;
1127 std::cout <<
" * FourMuonEvent * ReconstructKinematicsNew * -- Muon ID Tracks -- new -- " << std::endl;
1132 if (kinematicscomputed) std::cout <<
" invariant mass (4mu) = " <<
m_fInvariantMass[
ID] << std::endl;
1135 double invmass_test = -1.;
1138 bool goodtracks =
true;
1139 if (
m_pxELTrack[0] ==
nullptr) goodtracks =
false;
1140 if (
m_pxELTrack[1] ==
nullptr) goodtracks =
false;
1141 if (
m_pxELTrack[2] ==
nullptr) goodtracks =
false;
1142 if (
m_pxELTrack[3] ==
nullptr) goodtracks =
false;
1144 if (goodtracks && !kinematicscomputed) {
1152 kinematicscomputed =
true;
1156 std::cout <<
" * FourMuonEvent * ReconstructKinematicsNew * -- Electron Tracks -- " << std::endl;
1161 std::cout <<
" invariant mass (4e) = " << invmass_test << std::endl;
1166 bool goodtracks =
true;
1167 if (
m_pxMUTrack[0] ==
nullptr) goodtracks =
false;
1168 if (
m_pxMUTrack[2] ==
nullptr) goodtracks =
false;
1169 if (
m_pxELTrack[0] ==
nullptr) goodtracks =
false;
1170 if (
m_pxELTrack[2] ==
nullptr) goodtracks =
false;
1172 if (goodtracks && !kinematicscomputed) {
1180 kinematicscomputed =
true;
1184 std::cout <<
" * FourMuonEvent * ReconstructKinematicsNew * -- Muon and Electron Tracks -- " << std::endl;
1194 std::cout <<
" invariant mass test = " << invmass_test << std::endl;
1197 if (!kinematicscomputed) {
1198 if(
m_doDebug){ std::cout <<
" * FourMuonEvent * ReconstructKinematicsNew * -- FAILED -- " << std::endl; }
1201 (*m_msgStream) <<
MSG::DEBUG <<
" * FourMuonEvent * ReconstructKinematicsNew * -- COMPLETED -- status " << kinematicscomputed <<
endmsg;
1202 return kinematicscomputed;
◆ RecordMuon()
Definition at line 922 of file FourMuonEvent.cxx.
924 bool thisdebug =
false;
928 if(
m_doDebug){ std::cout <<
" * FourMuonEvent * RecordMuon * bad pxMuon --> EXIT "<< std::endl;}
943 if (
m_doDebug){ std::cout <<
" * FourMuonEvent * RecordMuon * bad pxMSmuon --> EXIT "<< std::endl;}
956 if (
m_doDebug){ std::cout <<
" * FourMuonEvent * RecordMuon * bad pxIDTrack for this muon--> EXIT "<< std::endl;}
◆ Register()
void EventAnalysis::Register |
( |
| ) |
|
|
privateinherited |
◆ setContainer()
◆ setDebugMode()
void FourMuonEvent::setDebugMode |
( |
bool |
debug | ) |
|
|
inline |
◆ SetLeadingMuonPtCut()
void FourMuonEvent::SetLeadingMuonPtCut |
( |
double |
newvalue | ) |
|
◆ SetMassWindowHigh()
void FourMuonEvent::SetMassWindowHigh |
( |
double |
newvalue | ) |
|
|
inline |
◆ SetMassWindowLow()
void FourMuonEvent::SetMassWindowLow |
( |
double |
newvalue | ) |
|
|
inline |
◆ SetMuonPtCut()
void FourMuonEvent::SetMuonPtCut |
( |
double |
newvalue | ) |
|
|
inline |
◆ SetMuonSelectionTool()
◆ SetOpeningAngleCut()
void FourMuonEvent::SetOpeningAngleCut |
( |
double |
newvalue | ) |
|
|
inline |
◆ SetSecondMuonPtCut()
void FourMuonEvent::SetSecondMuonPtCut |
( |
double |
newvalue | ) |
|
◆ SetZ0GapCut()
void FourMuonEvent::SetZ0GapCut |
( |
double |
newvalue | ) |
|
|
inline |
◆ invalidAnswer
constexpr float EventAnalysis::invalidAnswer {-999.9f} |
|
staticconstexprinherited |
◆ m_acceptedElecCount
int FourMuonEvent::m_acceptedElecCount {} |
|
private |
◆ m_acceptedEventCount
int FourMuonEvent::m_acceptedEventCount |
|
private |
◆ m_acceptedMuonCount
int FourMuonEvent::m_acceptedMuonCount {} |
|
private |
◆ m_container
◆ m_deltaXYcut
double FourMuonEvent::m_deltaXYcut {} |
|
private |
◆ m_doDebug
bool FourMuonEvent::m_doDebug |
|
private |
◆ m_elec_vtx
◆ m_eventCount
int FourMuonEvent::m_eventCount |
|
private |
◆ m_fInvariantMass
float FourMuonEvent::m_fInvariantMass[NUM_TYPES] {} |
|
private |
◆ m_fMuonDispersion
float FourMuonEvent::m_fMuonDispersion[NUM_TYPES] {} |
|
private |
◆ m_FourMuonInvMass
double FourMuonEvent::m_FourMuonInvMass {} |
|
private |
◆ m_fZEtaDir
float FourMuonEvent::m_fZEtaDir[NUM_TYPES] {} |
|
private |
◆ m_fZPhiDir
float FourMuonEvent::m_fZPhiDir[NUM_TYPES] {} |
|
private |
◆ m_fZPt
◆ m_LeadingMuonPtCut
double FourMuonEvent::m_LeadingMuonPtCut {} |
|
private |
◆ m_MassWindowHigh
double FourMuonEvent::m_MassWindowHigh {} |
|
private |
◆ m_MassWindowLow
double FourMuonEvent::m_MassWindowLow {} |
|
private |
◆ m_msgStream
MsgStream* FourMuonEvent::m_msgStream |
|
private |
◆ m_muon1
int FourMuonEvent::m_muon1 = 0 |
|
private |
◆ m_muon2
int FourMuonEvent::m_muon2 = 0 |
|
private |
◆ m_muon_vtx
◆ m_muonneg1
int FourMuonEvent::m_muonneg1 = 0 |
|
private |
◆ m_muonneg1_vtx
int FourMuonEvent::m_muonneg1_vtx = 0 |
|
private |
◆ m_muonneg2
int FourMuonEvent::m_muonneg2 = 0 |
|
private |
◆ m_muonneg2_vtx
int FourMuonEvent::m_muonneg2_vtx = 0 |
|
private |
◆ m_muonpos1
int FourMuonEvent::m_muonpos1 = 0 |
|
private |
◆ m_muonpos1_vtx
int FourMuonEvent::m_muonpos1_vtx = 0 |
|
private |
◆ m_muonpos2
int FourMuonEvent::m_muonpos2 = 0 |
|
private |
◆ m_muonpos2_vtx
int FourMuonEvent::m_muonpos2_vtx = 0 |
|
private |
◆ m_numberOfFullPassElectrons
unsigned int FourMuonEvent::m_numberOfFullPassElectrons {} |
|
private |
◆ m_numberOfFullPassMuons
unsigned int FourMuonEvent::m_numberOfFullPassMuons {} |
|
private |
◆ m_nVertex
int FourMuonEvent::m_nVertex = 0 |
|
private |
◆ m_OpeningAngleCut
double FourMuonEvent::m_OpeningAngleCut {} |
|
private |
◆ m_passedFourElectronSelection
bool FourMuonEvent::m_passedFourElectronSelection = false |
|
private |
◆ m_passedFourLeptonSelection
bool FourMuonEvent::m_passedFourLeptonSelection = false |
|
private |
◆ m_passedFourMuonSelection
bool FourMuonEvent::m_passedFourMuonSelection = false |
|
private |
◆ m_passedSelectionCuts
bool FourMuonEvent::m_passedSelectionCuts = false |
|
private |
◆ m_pxELTrack
◆ m_pxIDTrack
◆ m_pxMETrack
◆ m_pxMSTrack
◆ m_pxMUTrack
◆ m_pxRecMuon
◆ m_SecondMuonPtCut
double FourMuonEvent::m_SecondMuonPtCut {} |
|
private |
◆ m_SelectMuonByIP
bool FourMuonEvent::m_SelectMuonByIP |
|
private |
◆ m_SelectMuonByIso
bool FourMuonEvent::m_SelectMuonByIso |
|
private |
◆ m_uMuonTags
unsigned int FourMuonEvent::m_uMuonTags {} |
|
private |
◆ m_uPassedEvents
unsigned int EventAnalysis::m_uPassedEvents |
|
protectedinherited |
◆ m_workAsFourElectrons
bool FourMuonEvent::m_workAsFourElectrons |
|
private |
◆ m_workAsFourLeptons
bool FourMuonEvent::m_workAsFourLeptons |
|
private |
◆ m_workAsFourMuons
bool FourMuonEvent::m_workAsFourMuons |
|
private |
◆ m_x1DHistograms
std::map<unsigned int, TH1F*> EventAnalysis::m_x1DHistograms |
|
protectedinherited |
◆ m_x1DProfHistograms
std::map<unsigned int, TProfile*> EventAnalysis::m_x1DProfHistograms |
|
protectedinherited |
◆ m_x2DHistograms
std::map<unsigned int, TH2F*> EventAnalysis::m_x2DHistograms |
|
protectedinherited |
◆ m_x2DProfHistograms
std::map<unsigned int, TProfile2D*> EventAnalysis::m_x2DProfHistograms |
|
protectedinherited |
◆ m_xElecID
◆ m_xMuonID
◆ m_xSampleName
std::string EventAnalysis::m_xSampleName |
|
protectedinherited |
◆ m_Z0GapCut
double FourMuonEvent::m_Z0GapCut {} |
|
private |
The documentation for this class was generated from the following files:
static float EvalInvMass(const T *pxP1, const T *pxP2, float fMass1, float fMass2=invalidAnswer)
static float EvaluateAngle(const T *pxP1, const T *pxP2)
const xAOD::TrackParticle * GetElecNegTrackParticle(size_t i)
virtual double pt() const override final
The transverse momentum ( ) of the particle.
Const iterator class for DataVector/DataList.
static IMessageSvc * getMessagingService()
static const std::string & getContainerName(CONTAINERS eContainer)
bool EventSelectionNew(ZTYPE eType)
int m_muon_vtx[NUM_MUONS]
Scalar phi() const
phi method
std::vector< Identifier > ID
float m_fZEtaDir[NUM_TYPES]
const TrackParticle * trackParticle(TrackParticleType type) const
Returns a pointer (which can be NULL) to the TrackParticle used in identification of this muon.
Scalar perp() const
perp method - perpenticular length
const xAOD::TrackParticle * GetElecPosTrackParticle(size_t i)
Scalar eta() const
pseudorapidity method
ElectronSelector m_xElecID
const xAOD::TrackParticle * m_pxIDTrack[NUM_MUONS]
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
static float EvalFourMuInvMass(const T *pxP1, const T *pxP2, const T *pxP3, const T *pxP4)
unsigned int m_numberOfFullPassMuons
std::vector< float > definingParametersCovMatrixVec() const
Returns the length 6 vector containing the elements of defining parameters covariance matrix.
bool ReconstructKinematicsNew()
void RecordMuon(const xAOD::Muon *pxMuon)
void SetPtCut(float newpt)
static float EvalCharge(const T *pxP1, const T *pxP2)
@ u
Enums for curvilinear frames.
std::map< unsigned int, TH1F * > m_x1DHistograms
bool m_passedFourLeptonSelection
float d0() const
Returns the parameter.
int m_elec_vtx[NUM_MUONS]
bool m_workAsFourElectrons
void SetCustomMuonSelectionTool(ToolHandle< CP::IMuonSelectionTool > mst)
std::map< unsigned int, TH2F * > m_x2DHistograms
static float EvalTransverseMass(const T *pxP1, float fMETx, float fMETy, float fMass1, float fMass2=invalidAnswer)
static CLHEP::Hep3Vector calculateMomentum(const T *pP)
void doMCPSelection(bool domcp)
static float EvalPtDiff(const T *pxP1, const T *pxP2)
void PrepareElectronList(const xAOD::ElectronContainer *pxElecContainer)
void doIsoSelection(bool doIso)
unsigned int m_numberOfFullPassElectrons
void SetLeadingMuonPtCut(double newvalue)
virtual double pt() const
The transverse momentum ( ) of the particle.
bool m_passedFourElectronSelection
PerfMonServices::CONTAINERS m_container
std::map< unsigned int, TProfile * > m_x1DProfHistograms
const xAOD::TrackParticle * m_pxMETrack[NUM_MUONS]
const Perigee * perigeeParameters() const
return Perigee.
unsigned int GetElectronCollectionSize()
double charge(const T &p)
static float EvalEta(const T *pxP1, const T *pxP2)
double m_LeadingMuonPtCut
float m_fMuonDispersion[NUM_TYPES]
bool passSelection(const xAOD::Muon *pxMuon)
static float EvalPt(const T *pxP1, const T *pxP2)
bool m_passedFourMuonSelection
void SetPtCut(double newvalue)
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
void doIPSelection(bool doIPsel)
const xAOD::TrackParticle * m_pxELTrack[NUM_MUONS]
float m_fZPhiDir[NUM_TYPES]
std::map< unsigned int, TProfile2D * > m_x2DProfHistograms
float m_fInvariantMass[NUM_TYPES]
const xAOD::TrackParticle * m_pxMSTrack[NUM_MUONS]
const xAOD::Muon * m_pxRecMuon[NUM_MUONS]
bool m_passedSelectionCuts
static float EvalPhi(const T *pxP1, const T *pxP2)
void SetMuonPtCut(double newvalue)
const TrackParticle * primaryTrackParticle() const
Returns a pointer (which should not usually be NULL, but might be if the muon has been stripped of in...
const xAOD::TrackParticle * m_pxMUTrack[NUM_MUONS]
Class describing a TrackParticle.
const Trk::Track * track() const
Returns a pointer (which can be NULL) to the Trk::Track which was used to make this TrackParticle.
std::string m_xSampleName
size_type size() const noexcept
Returns the number of elements in the collection.
void SetSecondMuonPtCut(double newvalue)
static constexpr float invalidAnswer
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.