6 #include "GaudiKernel/PhysicalConstants.h"
32 return StatusCode::SUCCESS;
37 "\n########## DiLeptonMassFilter Statistics ##########\n" <<
38 "Filter has the following parameters:\n" <<
40 " Maximum eta : " <<
m_maxEta <<
"\n" <<
48 ATH_MSG_DEBUG(
"DiLeptonMassFilter filter is not interfaced/called.");
51 "\nAfter the filtering you have " <<
m_nPass <<
" events passing.\n" <<
54 "########## DiLeptonMassFilter finished ##########\n"
58 return StatusCode::SUCCESS;
66 const HepMC::GenEvent* genEvt = (*itr);
69 int pdgId1((*pitr1)->pdg_id());
74 if ((*pitr1)->momentum().perp() >=
m_minPt && std::abs((*pitr1)->momentum().pseudoRapidity()) <=
m_maxEta){
81 int pdgId2((*pitr2)->pdg_id());
88 (!
m_allowSameCharge && (pdgId2 == -1*pdgId1 || (
m_allowElecMu && (pdgId2 == (pdgId1 < 0 ? 1 : -1) * 11 || (pdgId1 < 0 ? 1 : -1) * pdgId2 == 13) ) ) ) ) {
89 if ((*pitr2)->momentum().perp() >=
m_minPt && std::abs((*pitr2)->momentum().pseudoRapidity()) <=
m_maxEta){
92 HepMC::FourVector
vec((*pitr1)->momentum().px() + (*pitr2)->momentum().px(),
93 (*pitr1)->momentum().py() + (*pitr2)->momentum().py(),
94 (*pitr1)->momentum().pz() + (*pitr2)->momentum().pz(),
95 (*pitr1)->momentum().e() + (*pitr2)->momentum().e());
98 double dilepPt =
vec.perp();
100 ATH_MSG_DEBUG(
" Lepton1 : Pt = " << (*pitr1)->momentum().perp() <<
", Eta = " << (*pitr1)->momentum().pseudoRapidity() <<
102 " Lepton2 : Pt = " << (*pitr2)->momentum().perp() <<
", Eta = " << (*pitr2)->momentum().pseudoRapidity() <<
105 " DilepPt = " << dilepPt);
109 return StatusCode::SUCCESS;
119 setFilterPassed(
false);
120 return StatusCode::SUCCESS;