#include <MCDijetResonance.h>
Public Member Functions | |
virtual void | endJob () |
virtual bool | filter (edm::Event &, const edm::EventSetup &) |
MCDijetResonance (const edm::ParameterSet &) | |
~MCDijetResonance () | |
Private Attributes | |
int | bosonID |
std::string | dijetProcess |
std::string | label_ |
int | maxQuarkID |
unsigned int | nAccepted |
unsigned int | nEvents |
Definition at line 38 of file MCDijetResonance.h.
MCDijetResonance::MCDijetResonance | ( | const edm::ParameterSet & | iConfig | ) | [explicit] |
Definition at line 12 of file MCDijetResonance.cc.
References bosonID, gather_cfg::cout, dijetProcess, edm::ParameterSet::getUntrackedParameter(), maxQuarkID, nAccepted, and nEvents.
: label_(iConfig.getUntrackedParameter("moduleLabel",std::string("generator"))) { //here do whatever other initialization is needed //Get dijet process type we will select dijetProcess = iConfig.getUntrackedParameter<string>( "dijetProcess" ); cout << "Dijet Resonance Filter Selecting Process = " << dijetProcess << endl; maxQuarkID = 4; //Maximum |ID| of Light Quark = charm quark gives u, d, s, and c decays of Zprime. bosonID = 21; //Gluon //Number of events and Number Accepted nEvents = 0; nAccepted = 0; }
MCDijetResonance::~MCDijetResonance | ( | ) |
Definition at line 30 of file MCDijetResonance.cc.
{ // do anything here that needs to be done at desctruction time // (e.g. close files, deallocate resources etc.) }
void MCDijetResonance::endJob | ( | void | ) | [virtual] |
Reimplemented from edm::EDFilter.
Definition at line 38 of file MCDijetResonance.cc.
References nAccepted, and nEvents.
{ edm::LogVerbatim("MCDijetResonanceInfo") << "================MCDijetResonance report========================================\n" << "Events read " << nEvents << " Events accepted " << nAccepted << "\nEfficiency " << ((double)nAccepted)/((double)nEvents) << "\n====================================================================" << std::endl; }
bool MCDijetResonance::filter | ( | edm::Event & | iEvent, |
const edm::EventSetup & | iSetup | ||
) | [virtual] |
Implements edm::EDFilter.
Definition at line 46 of file MCDijetResonance.cc.
References abs, bosonID, gather_cfg::cout, dijetProcess, edm::Event::getByLabel(), label_, maxQuarkID, nAccepted, nEvents, and AlCaHLTBitMon_ParallelJobs::p.
{ nEvents++; cout << endl << "Event=" << nEvents << endl; using namespace edm; Handle<HepMCProduct> evt; iEvent.getByLabel(label_, evt); const HepMC::GenEvent * myGenEvent = evt->GetEvent(); //If process is not the desired primary process, cleanup and reject the event. if (dijetProcess == "ZprimeLightQuarks" && myGenEvent->signal_process_id() != 141){ // Wanted a Z' but didn't find it, so reject event. delete myGenEvent; return false; } if (dijetProcess == "QstarQuarkGluon" && myGenEvent->signal_process_id() != 147 && myGenEvent->signal_process_id() != 148){ // Wanted a q* but didn't find it, so reject event. delete myGenEvent; return false; } //found a dijet resonance //debug // int count = 0; //for ( HepMC::GenEvent::particle_iterator p = myGenEvent->particles_begin(); // p != myGenEvent->particles_end() & count<13; ++p ) // { //std::cout << count << ": ID=" << (*p)->pdg_id() << ", status=" << (*p)->status() << ", mass=" << (*p)->momentum().invariantMass() << ", pt=" <<(*p)->momentum().perp() << std::endl; //count++; //} for ( HepMC::GenEvent::particle_const_iterator p = myGenEvent->particles_begin(); p != myGenEvent->particles_end(); ++p ) { //Find resonance particle and check that it is part of hard collision if ( (*p)->status() == 3 && ( (dijetProcess == "ZprimeLightQuarks" && (*p)->pdg_id() == 32) || (dijetProcess == "QstarQuarkGluon" && abs((*p)->pdg_id()) == 4000001) || (dijetProcess == "QstarQuarkGluon" && abs((*p)->pdg_id()) == 4000002) ) ) { // The next two particles are the outgoing particles from the resonance decay p++; int ID1 = (*p)->pdg_id(); p++; int ID2 = (*p)->pdg_id(); //Check for the process we want if( (dijetProcess == "ZprimeLightQuarks" && abs(ID1) <= maxQuarkID && abs(ID2) <= maxQuarkID ) || (dijetProcess == "QstarQuarkGluon" && ( ID1 == bosonID || ID2 == bosonID ) ) ) { //cout << "dijet resonance " << dijetProcess << " found " << endl; nAccepted++; delete myGenEvent; return true; } else { delete myGenEvent; return false; } } } delete myGenEvent; return false; }
int MCDijetResonance::bosonID [private] |
Definition at line 52 of file MCDijetResonance.h.
Referenced by filter(), and MCDijetResonance().
std::string MCDijetResonance::dijetProcess [private] |
Definition at line 48 of file MCDijetResonance.h.
Referenced by filter(), and MCDijetResonance().
std::string MCDijetResonance::label_ [private] |
Definition at line 47 of file MCDijetResonance.h.
Referenced by filter().
int MCDijetResonance::maxQuarkID [private] |
Definition at line 51 of file MCDijetResonance.h.
Referenced by filter(), and MCDijetResonance().
unsigned int MCDijetResonance::nAccepted [private] |
Definition at line 50 of file MCDijetResonance.h.
Referenced by endJob(), filter(), and MCDijetResonance().
unsigned int MCDijetResonance::nEvents [private] |
Definition at line 49 of file MCDijetResonance.h.
Referenced by endJob(), filter(), and MCDijetResonance().