Go to the documentation of this file.00001 #ifndef _BsJpsiPhiFilter_h_
00002 #define _BsJpsiPhiFilter_h_
00003
00004
00005
00006 #include <memory>
00007 #include <iostream>
00008 #include <vector>
00009
00010
00011 #include "FWCore/Framework/interface/Frameworkfwd.h"
00012 #include "FWCore/Framework/interface/EDFilter.h"
00013
00014 #include "FWCore/Framework/interface/Event.h"
00015 #include "FWCore/Framework/interface/MakerMacros.h"
00016
00017 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00018
00019 #include "SimDataFormats/GeneratorProducts/interface/HepMCProduct.h"
00020
00021 #include "HepMC/GenVertex.h"
00022
00023
00024
00025
00026
00027 class BsJpsiPhiFilter : public edm::EDFilter
00028 {
00029
00030 public:
00031
00032 explicit BsJpsiPhiFilter(const edm::ParameterSet&);
00033 ~BsJpsiPhiFilter();
00034
00035 virtual bool filter(edm::Event&, const edm::EventSetup&);
00036
00037 private:
00038
00039 struct CutStruct {
00040 int type;
00041 double etaMin, etaMax, ptMin;
00042 };
00043
00044 typedef std::vector< HepMC::GenParticle * > GenPartVect;
00045 typedef std::vector< HepMC::GenParticle * >::const_iterator GenPartVectIt;
00046
00047
00048
00049
00050 HepMC::GenParticle * findParticle(HepMC::GenVertex* , const int requested_id) ;
00051
00052
00053 HepMC::GenEvent::particle_const_iterator getNextBs(const HepMC::GenEvent::particle_const_iterator start,
00054 const HepMC::GenEvent::particle_const_iterator end);
00055
00056
00057 bool cuts(const HepMC::GenParticle * jpsi, const CutStruct cut);
00058 bool etaInRange(float eta, float etamin, float etamax);
00059
00060 CutStruct leptonCuts, hadronCuts;
00061
00062 std::string label_;
00063 int noAccepted;
00064 };
00065
00066
00067 #endif