![]() |
![]() |
#include <BdecayFilter.h>
Classes | |
struct | CutStruct |
Public Member Functions | |
BdecayFilter (const edm::ParameterSet &) | |
virtual bool | filter (edm::Event &, const edm::EventSetup &) |
~BdecayFilter () | |
Private Types | |
typedef std::vector < HepMC::GenParticle * > | GenPartVect |
typedef std::vector < HepMC::GenParticle * > ::const_iterator | GenPartVectIt |
Private Member Functions | |
bool | cuts (const HepMC::GenParticle *jpsi, const CutStruct cut) |
bool | etaInRange (float eta, float etamin, float etamax) |
HepMC::GenParticle * | findParticle (HepMC::GenVertex *, const int requested_id) |
HepMC::GenEvent::particle_const_iterator | getNextBs (const HepMC::GenEvent::particle_const_iterator start, const HepMC::GenEvent::particle_const_iterator end) |
Private Attributes | |
CutStruct | firstDaughter |
std::string | label_ |
int | motherParticle |
int | noAccepted |
CutStruct | secondDaughter |
Definition at line 27 of file BdecayFilter.h.
typedef std::vector< HepMC::GenParticle * > BdecayFilter::GenPartVect [private] |
Definition at line 45 of file BdecayFilter.h.
typedef std::vector< HepMC::GenParticle * >::const_iterator BdecayFilter::GenPartVectIt [private] |
Definition at line 46 of file BdecayFilter.h.
BdecayFilter::BdecayFilter | ( | const edm::ParameterSet & | iConfig | ) | [explicit] |
Definition at line 9 of file BdecayFilter.cc.
References edm::ParameterSet::getParameter(), and edm::ParameterSet::getUntrackedParameter().
{ label_ = iConfig.getUntrackedParameter("moduleLabel",std::string("generator")); motherParticle = iConfig.getParameter< int >("motherParticle"); firstDaughter.type = iConfig.getParameter< int >("firstDaughter"); firstDaughter.decayProduct = iConfig.getParameter< vector<int> >("firstDaughterDecay"); firstDaughter.etaMin = iConfig.getParameter<double>("firstDaughterDecayEtaMin"); firstDaughter.etaMax = iConfig.getParameter<double>("firstDaughterDecayEtaMax"); firstDaughter.ptMin = iConfig.getParameter<double>("firstDaughterDecayPtMin"); secondDaughter.type = iConfig.getParameter< int >("secondDaughter"); secondDaughter.decayProduct = iConfig.getParameter< vector<int> >("secondDaughterDecay"); secondDaughter.etaMin = iConfig.getParameter<double>("secondDaughterDecayEtaMin"); secondDaughter.etaMax = iConfig.getParameter<double>("secondDaughterDecayEtaMax"); secondDaughter.ptMin = iConfig.getParameter<double>("secondDaughterDecayPtMin"); noAccepted = 0; }
BdecayFilter::~BdecayFilter | ( | ) |
Definition at line 30 of file BdecayFilter.cc.
References gather_cfg::cout.
{ std::cout << "Total number of accepted events = " << noAccepted << std::endl; }
bool BdecayFilter::cuts | ( | const HepMC::GenParticle * | jpsi, |
const CutStruct | cut | ||
) | [private] |
bool BdecayFilter::etaInRange | ( | float | eta, |
float | etamin, | ||
float | etamax | ||
) | [private] |
Definition at line 159 of file BdecayFilter.cc.
bool BdecayFilter::filter | ( | edm::Event & | iEvent, |
const edm::EventSetup & | iSetup | ||
) | [virtual] |
Implements edm::EDFilter.
Definition at line 76 of file BdecayFilter.cc.
References gather_cfg::cout, configurableAnalysis::GenParticle, edm::Event::getByLabel(), and phi.
{ edm::Handle<HepMCProduct> evt; iEvent.getByLabel(label_, evt); const HepMC::GenEvent * generated_event = evt->GetEvent(); //cout << "Start\n"; bool event_passed = false; HepMC::GenEvent::particle_const_iterator bs = getNextBs(generated_event->particles_begin(), generated_event->particles_end()); while (bs!= generated_event->particles_end() ) { // vector< GenParticle * > bsChild = (*bs)->listChildren(); //*** HepMC::GenVertex* outVertex = (*bs)->end_vertex(); //*** GenParticle * jpsi = 0; GenParticle * phi = 0; // cout << "bs size "<<bsChild.size()<<endl; //*** int numChildren = outVertex->particles_out_size(); cout<< "B children "<<numChildren<<endl; //*** /* if ((bsChild.size()==2) && ((jpsi = findParticle(bsChild, 443))!=0) && ((phi = findParticle(bsChild, 333))!=0)) { cout << bsChild[0]->momentum()<<" "<<bsChild[0]->momentum().eta() <<" "<<bsChild[1]->momentum()<<" "<<bsChild[1]->momentum().eta()<<endl; */ //*** if( (numChildren==2) && ((jpsi = findParticle(outVertex, firstDaughter.type))!=0) && ((phi = findParticle(outVertex, secondDaughter.type))!=0)) { cout << jpsi->momentum().rho() <<" "<<jpsi->momentum().eta() <<" "<<phi->momentum().rho()<<" "<<phi->momentum().eta()<<endl; //cout <<"bs dec trouve"<<endl; if (cuts(phi, secondDaughter) && cuts(jpsi, firstDaughter)) { cout <<"decay found"<<endl; event_passed = true; break; } } bs = getNextBs(++bs, generated_event->particles_end()); } if (event_passed) noAccepted++; cout << "End filter\n"; delete generated_event; return event_passed; }
HepMC::GenParticle * BdecayFilter::findParticle | ( | HepMC::GenVertex * | vertex, |
const int | requested_id | ||
) | [private] |
Definition at line 49 of file BdecayFilter.cc.
References abs, gather_cfg::cout, and L1TEmulatorMonitor_cff::p.
{ // for(std::set<GenParticle*>::const_iterator p = vertex->particles_out_const_begin(); for(GenVertex::particles_out_const_iterator p = vertex->particles_out_const_begin(); p != vertex->particles_out_const_end(); p++) { int event_particle_id = abs( (*p)->pdg_id() ); cout << "particle Id: "<<event_particle_id<<"\n"; if (requested_id == event_particle_id) return *p; } return 0; }
HepMC::GenEvent::particle_const_iterator BdecayFilter::getNextBs | ( | const HepMC::GenEvent::particle_const_iterator | start, |
const HepMC::GenEvent::particle_const_iterator | end | ||
) | [private] |
Definition at line 63 of file BdecayFilter.cc.
References abs, end, and L1TEmulatorMonitor_cff::p.
CutStruct BdecayFilter::firstDaughter [private] |
Definition at line 61 of file BdecayFilter.h.
std::string BdecayFilter::label_ [private] |
Definition at line 63 of file BdecayFilter.h.
int BdecayFilter::motherParticle [private] |
Definition at line 65 of file BdecayFilter.h.
int BdecayFilter::noAccepted [private] |
Definition at line 64 of file BdecayFilter.h.
CutStruct BdecayFilter::secondDaughter [private] |
Definition at line 61 of file BdecayFilter.h.