CMS 3D CMS Logo

PythiaFilterHT.cc
Go to the documentation of this file.
3 #include <iostream>
4 
5 using namespace edm;
6 using namespace std;
7 
8 
10  label_(consumes<edm::HepMCProduct>(edm::InputTag(iConfig.getUntrackedParameter("moduleLabel",std::string("generator")),"unsmeared"))),
11  /*minpcut(iConfig.getUntrackedParameter("MinP", 0.)),
12  maxpcut(iConfig.getUntrackedParameter("MaxP", 10000.)),
13  minptcut(iConfig.getUntrackedParameter("MinPt", 0.)),
14  maxptcut(iConfig.getUntrackedParameter("MaxPt", 10000.)),
15  minetacut(iConfig.getUntrackedParameter("MinEta", -10.)),
16  maxetacut(iConfig.getUntrackedParameter("MaxEta", 10.)),
17  minrapcut(iConfig.getUntrackedParameter("MinRapidity", -20.)),
18  maxrapcut(iConfig.getUntrackedParameter("MaxRapidity", 20.)),
19  minphicut(iConfig.getUntrackedParameter("MinPhi", -3.5)),
20  maxphicut(iConfig.getUntrackedParameter("MaxPhi", 3.5)),*/
21  minhtcut(iConfig.getUntrackedParameter("MinHT", 0.)),
22  motherID(iConfig.getUntrackedParameter("MotherID", 0)) {
23 
26 
27  cout << " Cut Definition: " << endl;
28  /*cout << " MinP = " << minpcut << endl;
29  cout << " MaxP = " << maxpcut << endl;
30  cout << " MinPt = " << minptcut << endl;
31  cout << " MaxPt = " << maxptcut << endl;
32  cout << " MinEta = " << minetacut << endl;
33  cout << " MaxEta = " << maxetacut << endl;
34  cout << " MinRapidity = " << minrapcut << endl;
35  cout << " MaxRapidity = " << maxrapcut << endl;
36  cout << " MinPhi = " << minphicut << endl;
37  cout << " MaxPhi = " << maxphicut << endl;*/
38  cout << " MinHT = " << minhtcut << endl;
39  cout << " MotherID = " << motherID << endl;
40 
41 }
42 
43 
45  std::cout << "Total number of tested events = " << theNumberOfTestedEvt << std::endl;
46  std::cout << "Total number of accepted events = " << theNumberOfSelected << std::endl;
47 }
48 
49 
50 //
51 // member functions
52 //
53 
54 // ------------ method called to produce the data ------------
56 
58  if(theNumberOfTestedEvt%1000 == 0) cout << "Number of tested events = " << theNumberOfTestedEvt << endl;
59 
60  bool accepted = false;
62  iEvent.getByToken(label_, evt);
63 
64  const HepMC::GenEvent * myGenEvent = evt->GetEvent();
65 
66  double HT = 0;
67 
68  for ( HepMC::GenEvent::particle_const_iterator p = myGenEvent->particles_begin(); p != myGenEvent->particles_end(); ++p ) {
69 
70  if ( ( (*p)->status() == 23 ) && ( ( abs( (*p)->pdg_id() ) < 6 ) || ( (*p)->pdg_id() == 21 ) ) ) {
71 
72  /*rapidity = 0.5*log( ((*p)->momentum().e()+(*p)->momentum().pz()) / ((*p)->momentum().e()-(*p)->momentum().pz()) );
73 
74  if ( (*p)->momentum().rho() > minpcut
75  && (*p)->momentum().rho() < maxpcut
76  && (*p)->momentum().perp() > minptcut
77  && (*p)->momentum().perp() < maxptcut
78  && (*p)->momentum().eta() > minetacut
79  && (*p)->momentum().eta() < maxetacut
80  && rapidity > minrapcut
81  && rapidity < maxrapcut
82  && (*p)->momentum().phi() > minphicut
83  && (*p)->momentum().phi() < maxphicut ) {*/
84 
85  if ( motherID == 0 ) {
86  HT += (*p)->momentum().perp();
87  } else {
88  HepMC::GenParticle* mother = (*((*p)->production_vertex()->particles_in_const_begin()));
89  if (abs(mother->pdg_id()) == abs(motherID)) {
90  HT += (*p)->momentum().perp();
91  }
92  }
93  //}
94  }
95  }
96  if ( HT > minhtcut ) accepted = true;
97 
98  if (accepted){
100  cout << "========> Event preselected " << theNumberOfSelected << " HT = " << HT << endl;
101  return true;
102  } else {
103  //cout << "========> Event rejected HT = " << HT << endl;
104  return false;
105  }
106 
107 }
108 
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:517
PythiaFilterHT(const edm::ParameterSet &)
int iEvent
Definition: GenABIO.cc:224
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
const HepMC::GenEvent * GetEvent() const
Definition: HepMCProduct.h:38
~PythiaFilterHT() override
bool filter(edm::Event &, const edm::EventSetup &) override
bool accepted(std::vector< std::string_view > const &, std::string_view)
HLT enums.
edm::EDGetTokenT< edm::HepMCProduct > label_
Definition: HT.h:21