|
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 1471 of file FourMuonEvent.cxx.
1473 (*m_msgStream) <<
MSG::DEBUG <<
" * FourMuonsEvents::CheckMuonVertices * -- START --" <<
endmsg;
1475 bool goodvertices =
false;
1476 goodvertices =
true;
1477 int nverticesfound = 0;
1481 for (
unsigned int imuneg = 0; imuneg <= 1; imuneg++) {
1517 if (nverticesfound >= 1) goodvertices =
true;
1519 if (nverticesfound == 0)
if (
m_doDebug) std::cout <<
" -- FourMuonEvent::CheckMuonVertices -- WARNING -- MUONS DO NOT COME FROM SAME VERTEX " << std::endl;
1521 (*m_msgStream) <<
MSG::DEBUG <<
" * FourMuonsEvents::CheckMuonVertices * -- COMPLETED -- status: " << goodvertices <<
endmsg;
1522 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 555 of file FourMuonEvent.cxx.
557 if(
m_doDebug){ std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") ** started ** " << std::endl
566 if(
m_doDebug) {std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * Failing number of good muons and electrons == 4 :( "
573 if(
m_doDebug) {std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * Too many muons !! Failing number of good muons == 4 :( "
579 if(
m_doDebug) {std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * Too many electrons !! Failing number of good electrons == 4 :( "
585 double leadingMuonPt = -1., secondMuonPt=-1., thirdMuonPt=-1, fourthMuonPt=-1.;
629 double theLeadingPt = leadingMuonPt;
630 if (secondMuonPt > theLeadingPt) { theLeadingPt = secondMuonPt;}
631 if (thirdMuonPt > theLeadingPt) { theLeadingPt = thirdMuonPt;}
632 if (fourthMuonPt > theLeadingPt) { theLeadingPt = fourthMuonPt;}
634 double theTrailingPt = leadingMuonPt;
635 if (secondMuonPt < theTrailingPt && secondMuonPt > 0) { theTrailingPt = secondMuonPt;}
636 if (thirdMuonPt < theTrailingPt && thirdMuonPt > 0) { theTrailingPt = thirdMuonPt;}
637 if (fourthMuonPt < theTrailingPt && fourthMuonPt > 0) { theTrailingPt = fourthMuonPt;}
642 std::cout <<
" Pt of muons in this event 1: " << leadingMuonPt << std::endl
643 <<
" 2: " << secondMuonPt << std::endl
644 <<
" 3: " << thirdMuonPt << std::endl
645 <<
" 4: " << fourthMuonPt << std::endl
646 <<
" leading Pt: " << theLeadingPt << std::endl
647 <<
" trailing Pt: " << theTrailingPt << std::endl;
653 std::cout <<
" * FourMuonEvent::EventSelection * Failing pt cut * Reco Pt: leading " << theLeadingPt <<
" --> trailing " << theTrailingPt << std::endl;
658 std::cout <<
" * FourMuonEvent::EventSelection * Event passed the pt cuts: leading muon pt: " << leadingMuonPt << std::endl;
659 std::cout <<
" trailing muon pt: " << theTrailingPt << std::endl;
666 std::cout <<
" * FourMuonEvent::EventSelection * Failing mass window low cut: reco m= " <<
m_fInvariantMass[eType] <<
" > " <<
m_MassWindowLow << std::endl;
677 std::cout <<
" * FourMuonEvent::EventSelection * Event passed the mass window: " <<
m_fInvariantMass[eType] << std::endl;
866 std::cout <<
" * FourMuonEvent::EventSelection( type= " << eType <<
")* Good 4-muon set: pt range from " << leadingMuonPt/1000
867 <<
" to " << secondMuonPt/1000
868 <<
" GeV 4-muon invariant mass = " <<
m_fInvariantMass[eType] <<
" GeV " << std::endl;
869 std::cout <<
" * FourMuonEvent::EventSelection( type= " << eType <<
")* completed * " << std::endl;
◆ EventSelectionNew()
bool FourMuonEvent::EventSelectionNew |
( |
ZTYPE |
eType | ) |
|
|
private |
Definition at line 262 of file FourMuonEvent.cxx.
267 bool eventisgood =
true;
268 (*m_msgStream) <<
MSG::DEBUG <<
" * FourMuonEvent::EventSelection( type= " << eType <<
") ** started ** " << std::endl
279 if(
m_doDebug) {std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * Failing number of good muons == 4 :( "
288 if(
m_doDebug) {std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * Failing number of good electrons == 4 :( "
295 bool thisselection =
false;
299 if (!thisselection) {
300 if(
m_doDebug) {std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * Failing number of good muons >= 2 && electrons >= 2 :( "
305 eventisgood = thisselection;
311 unsigned int npassleadingpt = 0;
312 unsigned int npasssecondpt = 0;
318 if(
m_doDebug) {std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * using muon " <<
i <<
" with pt: " <<
m_pxIDTrack[
i]->
pt() << std::endl;}
322 if(
m_doDebug) {std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * #muons with pt > leading pt: " <<
m_LeadingMuonPtCut*
CLHEP::GeV <<
" = " << npassleadingpt << std::endl;}
323 if(
m_doDebug) {std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * #muons with pt > second pt: " <<
m_SecondMuonPtCut*
CLHEP::GeV <<
" = " << npasssecondpt << std::endl;}
324 if (npassleadingpt == 0) {
342 if (
m_doDebug) {std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * using electron " <<
i <<
" with pt: " <<
m_pxELTrack[
i]->
pt() << std::endl;}
346 if(
m_doDebug) {std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * #elecs with pt > leading pt: " <<
m_LeadingMuonPtCut*
CLHEP::GeV <<
" = " << npassleadingpt << std::endl;}
347 if(
m_doDebug) {std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * #elecs with pt > second pt: " <<
m_SecondMuonPtCut*
CLHEP::GeV <<
" = " << npasssecondpt << std::endl;}
348 if (npassleadingpt == 0) {
363 std::cout <<
" * FourMuonEvent::EventSelection * Failing mass window low cut: reco m= " <<
m_fInvariantMass[eType] <<
" > " <<
m_MassWindowLow << std::endl;
369 std::cout <<
" * FourMuonEvent::EventSelection * Failing mass window high cut: reco m= " <<
m_fInvariantMass[eType] <<
" > " <<
m_MassWindowHigh << std::endl;
377 bool vertexstatus =
false;
379 std::vector <float> vtxListX;
380 std::vector <float> vtxListY;
381 std::vector <float> vtxListZ;
382 std::vector <int> vtxNpart;
384 int noVertexCountMuon = 0;
385 int noVertexCountElec = 0;
388 for (
unsigned int imu = 0; imu <
NUM_MUONS; imu++) {
426 for (
unsigned int iel = 0; iel <
NUM_MUONS; iel++) {
473 if (vtxListX.size()>0) vertexstatus =
true;
477 if (noVertexCountMuon > 0) vertexstatus =
false;
479 std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * vertices ID of the muons = " << std::endl
490 if (vtxListX.size()>0) vertexstatus =
true;
494 if (noVertexCountElec > 0) vertexstatus =
false;
496 std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * vertices ID of the electrons = " << std::endl
507 if (vtxListX.size()>0) vertexstatus =
true;
512 std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * vertices in event = " << vtxListX.size() << std::endl;
513 for (
size_t imu=0; imu <
NUM_MUONS; imu++) {
516 for (
size_t iel=0; iel <
NUM_MUONS; iel++) {
525 std::cout <<
" * FourMuonEvent::EventSelection(" << eType <<
") * Number of vertex found = " << vtxListX.size()
526 <<
" and mu without vertex: " << noVertexCountMuon
527 <<
" and elec without vertex: " << noVertexCountElec << std::endl;
528 for (
unsigned int ivtx=0; ivtx < vtxListX.size(); ivtx++) {
529 std::cout <<
" vtx[" << ivtx <<
"]= "
530 <<
"( " << vtxListX.at(ivtx)
531 <<
", " << vtxListY.at(ivtx)
532 <<
", " << vtxListZ.at(ivtx)
533 <<
") nparticles: " << vtxNpart.at(ivtx)
539 std::cout <<
" * FourMuonEvent::EventSelection * FAILED * number of vertex found = " << vtxListX.size()
540 <<
" mu without vertex: " << noVertexCountMuon
541 <<
" elec without vertex: " << noVertexCountElec << std::endl;
544 eventisgood = vertexstatus;
548 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 1286 of file FourMuonEvent.cxx.
1291 if ( pxTrackContainer )
1295 while ( xTrkItr != xTrkItrE )
1298 if ( !pxTrack )
continue;
1300 if(!pxTrkTrack)
continue;
1302 if ( !pxPerigee )
continue;
1303 const float fTrkPhi = pxPerigee->parameters()[
Trk::phi];
1304 const float fTrkEta = pxPerigee->eta();
1308 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 1366 of file FourMuonEvent.cxx.
1369 bool thisdebug =
false;
1371 if (
m_doDebug || thisdebug) {std::cout <<
" * FourMuonEvent::OrderMuonList * -- start -- " << std::endl
1376 int muMinus1Id = -9;
1377 int muMinus2Id = -9;
1378 double muPlus1Pt = 0.;
1379 double muPlus2Pt = 0.;
1380 double muMinus1Pt = 0.;
1381 double muMinus2Pt = 0.;
1389 if (nMuonsAtEntry >= 2) {
1390 for (
int imuon=0; imuon < (
int) nMuonsAtEntry; imuon++) {
1391 if(
m_doDebug &&
false ){ std::cout <<
" * FourMuonEvent::OrderMuonList * testing imuon= " << imuon
1402 muPlus2Pt = muPlus1Pt;
1403 muPlus2Id = muPlus1Id;
1419 muMinus2Pt = muMinus1Pt;
1420 muMinus2Id = muMinus1Id;
1434 if (nMuonsAtEntry >= 2 && (muposcount == 0 || munegcount == 0)) {
1435 if (
m_doDebug) std::cout <<
" -- FourMuonEvent::OrderMuonList -- No opposite charge muons in the " << nMuonsAtEntry <<
" input muons"
1436 <<
" #mu+ " << muposcount
1437 <<
" #mu- " << munegcount
1438 <<
" --> DISCARD ALL MUONS -- " << std::endl;
1456 std::cout <<
" * FourMuonEvent::OrderMuonList * taking " <<
m_numberOfFullPassMuons <<
" muons from the input list of " << nMuonsAtEntry <<
" muons: " << std::endl;
1457 if (muMinus1Id >= 0) std::cout <<
" leading mu-: " << muMinus1Id <<
" Pt = " << muMinus1Pt << std::endl;
1458 if (muMinus2Id >= 0) std::cout <<
" second mu-: " << muMinus2Id <<
" Pt = " << muMinus2Pt << std::endl;
1459 if (muPlus1Id >= 0) std::cout <<
" leading mu+: " << muPlus1Id <<
" Pt = " << muPlus1Pt << std::endl;
1460 if (muPlus2Id >= 0) std::cout <<
" second mu+: " << muPlus2Id <<
" Pt = " << muPlus2Pt << std::endl;
1463 if (
m_doDebug) std::cout <<
" * FourMuonEvent::OrderMuonList * This event has less than 2 muons :(" << std::endl;
1466 if (
m_doDebug || thisdebug) std::cout <<
" * FourMuonEvent::OrderMuonList * completed * m_numberOfFullPassMuons= " <<
m_numberOfFullPassMuons << std::endl;
◆ Reco()
bool FourMuonEvent::Reco |
( |
| ) |
|
Definition at line 85 of file FourMuonEvent.cxx.
100 if (pxMuonContainer !=
nullptr) {
102 <<
" track list has "<< pxMuonContainer->
size()
110 while ( xMuonItr != xMuonItrE ){
116 (*m_msgStream) <<
MSG::DEBUG <<
" * FourMuonEvent::Reco ** muon " << theCount <<
" is accepted " <<
endmsg;
124 if (!pxMuonContainer) {
125 std::cout <<
" * FourMuonEvent::Reco * Can't retrieve combined muon collection (container: " <<
m_container <<
") " << std::endl;
140 if (pxElecContainer !=
nullptr) {
141 (*m_msgStream) <<
MSG::DEBUG <<
" * FourMuonEvent::Reco * retrieving xAOD::ElectronContainer SUCCESS. "
143 <<
" size: " << pxElecContainer->
size()
145 if (pxElecContainer->
size() > 0 ){
152 (*m_msgStream) <<
MSG::DEBUG <<
" * FourMuonEvent::Reco * retrieving xAOD::ElectronContainer -- FAILED -- eventcount: " <<
m_eventCount <<
endmsg;
171 if (
m_doDebug) std::cout <<
" * FourMuonEvent::Reco * === Event " <<
m_eventCount <<
" is a GOOD 4-muon event " << std::endl;
174 if (
m_doDebug) std::cout <<
" * FourMuonEvent::Reco * === Event " <<
m_eventCount <<
" FAILS the 4-muon event selection " << std::endl;
180 if (
m_doDebug) std::cout <<
" * FourMuonEvent::Reco * applying 4 electron selection " << std::endl;
189 if (
m_doDebug) std::cout <<
" * FourMuonEvent::Reco * === Event " <<
m_eventCount <<
" is a GOOD 4-electrom event " << std::endl;
192 if (
m_doDebug) std::cout <<
" * FourMuonEvent::Reco * === Event " <<
m_eventCount <<
" FAILS the 4-electron event selection " << std::endl;
196 if (
m_doDebug) std::cout <<
" * FourMuonEvent::Reco * === Event " <<
m_eventCount <<
" is not a 4-electron event " << std::endl;
202 if (
m_doDebug) std::cout <<
" * FourMuonEvent::Reco * applying 4 lepton selection " << std::endl;
205 bool enoughleptons =
false;
210 if ( enoughleptons) {
212 std::cout <<
" * FourMuonEvent::Reco * Global statistics: Total number of accepted muons so far: " <<
m_acceptedMuonCount
228 (*m_msgStream) <<
MSG::DEBUG <<
" * FourMuonEvent::Reco * === Event " <<
m_eventCount <<
" -- FAILS -- the 4-lepton event selection " <<
endmsg;
◆ ReconstructKinematics()
bool FourMuonEvent::ReconstructKinematics |
( |
| ) |
|
|
private |
Definition at line 976 of file FourMuonEvent.cxx.
978 if(
m_doDebug){ std::cout <<
" * FourMuonEvent * ReconstructKinematics * -- start -- " << std::endl; }
979 bool kinematicscomputed =
false;
984 bool goodidentifiers =
true;
990 if (goodidentifiers) {
992 bool goodtracks =
true;
1010 kinematicscomputed =
true;
1013 std::cout <<
" * FourMuonEvent * ReconstructKinematics4Elec * -- Muon ID Tracks -- new -- " << std::endl
1026 if (!kinematicscomputed) {
1027 if(
m_doDebug){ std::cout <<
" * FourMuonEvent * ReconstructKinematics * -- FAILED -- " << std::endl; }
1030 if(
m_doDebug){ std::cout <<
" * FourMuonEvent * ReconstructKinematics * -- completed -- status: " << kinematicscomputed << std::endl; }
1031 return kinematicscomputed;
◆ ReconstructKinematics4Elec()
bool FourMuonEvent::ReconstructKinematics4Elec |
( |
| ) |
|
|
private |
Definition at line 1035 of file FourMuonEvent.cxx.
1037 if(
m_doDebug){ std::cout <<
" * FourMuonEvent * ReconstructKinematics4Elec * -- start -- " << std::endl; }
1038 bool kinematicscomputed =
false;
1043 bool goodtracks =
true;
1048 if (
m_pxELTrack[0] ==
nullptr) goodtracks =
false;
1049 if (
m_pxELTrack[1] ==
nullptr) goodtracks =
false;
1050 if (
m_pxELTrack[2] ==
nullptr) goodtracks =
false;
1051 if (
m_pxELTrack[3] ==
nullptr) goodtracks =
false;
1060 kinematicscomputed =
true;
1063 std::cout <<
" * FourMuonEvent * ReconstructKinematics4Elec * -- Electron Tracks -- " << std::endl
1074 if (!kinematicscomputed) {
1075 if(
m_doDebug){ std::cout <<
" * FourMuonEvent * ReconstructKinematics4Elec * -- FAILED -- " << std::endl; }
1078 if(
m_doDebug){ std::cout <<
" * FourMuonEvent * ReconstructKinematics4Elec * -- completed -- status: " << kinematicscomputed << std::endl; }
1079 return kinematicscomputed;
◆ ReconstructKinematicsNew()
bool FourMuonEvent::ReconstructKinematicsNew |
( |
| ) |
|
|
private |
Definition at line 1083 of file FourMuonEvent.cxx.
1085 (*m_msgStream) <<
MSG::DEBUG <<
" * FourMuonEvent * ReconstructKinematicsNew * -- START -- " <<
endmsg;
1087 bool kinematicscomputed =
false;
1111 bool goodtracks =
true;
1112 if (
m_pxMUTrack[0] ==
nullptr) goodtracks =
false;
1113 if (
m_pxMUTrack[1] ==
nullptr) goodtracks =
false;
1114 if (
m_pxMUTrack[2] ==
nullptr) goodtracks =
false;
1115 if (
m_pxMUTrack[3] ==
nullptr) goodtracks =
false;
1123 kinematicscomputed =
true;
1128 std::cout <<
" * FourMuonEvent * ReconstructKinematicsNew * -- Muon ID Tracks -- new -- " << std::endl;
1133 if (kinematicscomputed) std::cout <<
" invariant mass (4mu) = " <<
m_fInvariantMass[
ID] << std::endl;
1136 double invmass_test = -1.;
1139 bool goodtracks =
true;
1140 if (
m_pxELTrack[0] ==
nullptr) goodtracks =
false;
1141 if (
m_pxELTrack[1] ==
nullptr) goodtracks =
false;
1142 if (
m_pxELTrack[2] ==
nullptr) goodtracks =
false;
1143 if (
m_pxELTrack[3] ==
nullptr) goodtracks =
false;
1145 if (goodtracks && !kinematicscomputed) {
1153 kinematicscomputed =
true;
1157 std::cout <<
" * FourMuonEvent * ReconstructKinematicsNew * -- Electron Tracks -- " << std::endl;
1162 std::cout <<
" invariant mass (4e) = " << invmass_test << std::endl;
1167 bool goodtracks =
true;
1168 if (
m_pxMUTrack[0] ==
nullptr) goodtracks =
false;
1169 if (
m_pxMUTrack[2] ==
nullptr) goodtracks =
false;
1170 if (
m_pxELTrack[0] ==
nullptr) goodtracks =
false;
1171 if (
m_pxELTrack[2] ==
nullptr) goodtracks =
false;
1173 if (goodtracks && !kinematicscomputed) {
1181 kinematicscomputed =
true;
1185 std::cout <<
" * FourMuonEvent * ReconstructKinematicsNew * -- Muon and Electron Tracks -- " << std::endl;
1195 std::cout <<
" invariant mass test = " << invmass_test << std::endl;
1198 if (!kinematicscomputed) {
1199 if(
m_doDebug){ std::cout <<
" * FourMuonEvent * ReconstructKinematicsNew * -- FAILED -- " << std::endl; }
1202 (*m_msgStream) <<
MSG::DEBUG <<
" * FourMuonEvent * ReconstructKinematicsNew * -- COMPLETED -- status " << kinematicscomputed <<
endmsg;
1203 return kinematicscomputed;
◆ RecordMuon()
Definition at line 923 of file FourMuonEvent.cxx.
925 bool thisdebug =
false;
929 if(
m_doDebug){ std::cout <<
" * FourMuonEvent * RecordMuon * bad pxMuon --> EXIT "<< std::endl;}
944 if (
m_doDebug){ std::cout <<
" * FourMuonEvent * RecordMuon * bad pxMSmuon --> EXIT "<< std::endl;}
957 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 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
IMessageSvc * getMessageSvc(bool quiet=false)
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.