27 return StatusCode::SUCCESS;
31 return StatusCode::SUCCESS;
38 const HepMC::GenEvent* genEvt = (*itr);
40 auto genEvt_particles_end =
HepMC::end(*genEvt);
42 for (
auto pitr1 = genEvt_particles_begin; pitr1 != genEvt_particles_end; ++pitr1 ){
46 int pdgId1((*pitr1)->pdg_id());
47 if (!(std::abs(pdgId1) == 11 || std::abs(pdgId1) == 13))
continue;
48 if (!((*pitr1)->momentum().perp() >=
m_minPt && std::abs((*pitr1)->momentum().pseudoRapidity()) <=
m_maxEta))
continue;
54 for(; pitr2 != genEvt_particles_end; ++pitr2){
58 int pdgId2((*pitr2)->pdg_id());
59 if (!(std::abs(pdgId2) == 11 || std::abs(pdgId2) == 13))
continue;
60 if (!((*pitr2)->momentum().perp() >=
m_minPt && std::abs((*pitr2)->momentum().pseudoRapidity()) <=
m_maxEta))
continue;
66 for(; pitr3 != genEvt_particles_end; ++pitr3){
67 if(!
MC::isStable(*pitr3) || pitr1 == pitr3 || pitr2 == pitr3 )
continue;
70 int pdgId3((*pitr3)->pdg_id());
71 if (!(std::abs(pdgId3) == 11 || std::abs(pdgId3) == 13))
continue;
72 if (!((*pitr3)->momentum().perp() >=
m_minPt && std::abs((*pitr3)->momentum().pseudoRapidity()) <=
m_maxEta))
continue;
78 for(; pitr4 != genEvt_particles_end; ++pitr4){
79 if(!
MC::isStable(*pitr4) || pitr1 == pitr4 || pitr2 == pitr4 || pitr3 == pitr4)
continue;
82 int pdgId4((*pitr4)->pdg_id());
83 if (!(std::abs(pdgId4) == 11 || std::abs(pdgId4) == 13))
continue;
84 if (!((*pitr4)->momentum().perp() >=
m_minPt && std::abs((*pitr4)->momentum().pseudoRapidity()) <=
m_maxEta))
continue;
87 HepMC::FourVector
vec((*pitr1)->momentum().px() + (*pitr2)->momentum().px() + (*pitr3)->momentum().px() + (*pitr4)->momentum().px(),
88 (*pitr1)->momentum().py() + (*pitr2)->momentum().py() + (*pitr3)->momentum().py() + (*pitr4)->momentum().py(),
89 (*pitr1)->momentum().pz() + (*pitr2)->momentum().pz() + (*pitr3)->momentum().pz() + (*pitr4)->momentum().pz(),
90 (*pitr1)->momentum().e() + (*pitr2)->momentum().e() + (*pitr3)->momentum().e() + (*pitr4)->momentum().e());
94 return StatusCode::SUCCESS;
101 setFilterPassed(
false);
102 return StatusCode::SUCCESS;