CMS 3D CMS Logo

BTagSkimMC.cc
Go to the documentation of this file.
6 
7 using namespace edm;
8 using namespace std;
9 
11 using namespace reco;
12 
14  nEvents_(0), nAccepted_(0)
15 {
16  verbose = p.getUntrackedParameter<bool> ("verbose", false);
17  pthatMin = p.getParameter<double> ("pthat_min");
18  pthatMax = p.getParameter<double> ("pthat_max");
19  process_ = p.getParameter<string> ("mcProcess");
20  if (verbose) cout << " Requested: " << process_<<endl;
21 
22 }
23 
24 
25 bool BTagSkimMC::filter( Event& evt, const EventSetup& es )
26 {
27  nEvents_++;
28 
29  Handle<int> genProcessID;
30  evt.getByLabel( "genEventProcID", genProcessID );
31  double processID = *genProcessID;
32 
33  Handle<double> genEventScale;
34  evt.getByLabel( "genEventScale", genEventScale );
35  double pthat = *genEventScale;
36 
37  if (verbose) cout << "processID: "<< processID << " - pthat: " << pthat;
38 
39  if ((processID != 4) && (process_=="QCD")){ // the Pythia events (for ALPGEN see below)
40 
42  evt.getByLabel( "genEventRunInfo", "FilterEfficiency", genFilterEff);
43  double filter_eff = *genFilterEff;
44  if (verbose) cout << " Is QCD ";
45  // qcd (including min bias HS)
46  if ((filter_eff == 1. || filter_eff == 0.964) && (processID == 11 || processID == 12 || processID == 13 || processID == 28 || processID == 68 || processID == 53)) {
47 
48  if (pthat > pthatMin && pthat < pthatMax) {
49  if (verbose) cout << " ACCEPTED "<<endl;
50  nAccepted_++;
51  return true;
52  }
53  }
54 
55 
56  } // ALPGEN
57  else if(processID == 4) { // this is the number for external ALPGEN events
58 
60  evt.getByLabel( "genParticles", genParticles );
61 
62  for( size_t i = 0; i < genParticles->size(); ++ i ) {
63  const Candidate & p = (*genParticles)[ i ];
64  int id = p.pdgId();
65  int st = p.status();
66 
67  // tt+jets
68  if(st == 3 && (id == 6 || id == -6) ) {
69  if (verbose) cout << "We have a ttbar event"<<endl;
70  nAccepted_++;
71  return true;
72  }
73  }
74  }
75  if (verbose) cout << " REJECTED "<<endl;
76 
77  return false;
78 }
79 
81 {
82  edm::LogVerbatim( "BTagSkimMC" )
83  << "=============================================================================\n"
84  << " Events read: " << nEvents_
85  << "\n Events accepted by BTagSkimMC: " << nAccepted_
86  << "\n Efficiency: " << (double)(nAccepted_)/(double)(nEvents_)
87  << "\n==========================================================================="
88  << endl;
89 }
90 
91 
93 
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
double pthatMin
Definition: BTagSkimMC.h:18
BTagSkimMC(const edm::ParameterSet &)
constructor
Definition: BTagSkimMC.cc:13
virtual int status() const =0
status word
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
bool filter(edm::Event &evt, const edm::EventSetup &es) override
Definition: BTagSkimMC.cc:25
unsigned int nAccepted_
Definition: BTagSkimMC.h:17
virtual int pdgId() const =0
PDG identifier.
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:480
void endJob() override
Definition: BTagSkimMC.cc:80
fixed size matrix
HLT enums.
std::string process_
Definition: BTagSkimMC.h:19
double pthatMax
Definition: BTagSkimMC.h:18
unsigned int nEvents_
Definition: BTagSkimMC.h:16