Main Page
Namespaces
Classes
Package Documentation
GeneratorInterface
HiGenCommon
plugins
HighMultiplicityGenFilter.cc
Go to the documentation of this file.
1
// -*- C++ -*-
2
//
3
// Package: HighMultiplicityGenFilter
4
// Class: HighMultiplicityGenFilter
5
//
13
//
14
// Original Author: Wei Li
15
// Created: Tue Dec 8 23:51:37 EST 2009
16
//
17
//
18
19
20
// system include files
21
#include <memory>
22
23
// user include files
24
#include "
FWCore/Framework/interface/Frameworkfwd.h
"
25
#include "
FWCore/Framework/interface/EDFilter.h
"
26
#include "
FWCore/Framework/interface/EventSetup.h
"
27
#include "
FWCore/Framework/interface/ESHandle.h
"
28
#include "
FWCore/Framework/interface/Event.h
"
29
#include "
FWCore/Framework/interface/MakerMacros.h
"
30
#include "
FWCore/ParameterSet/interface/ParameterSet.h
"
31
#include "
SimGeneral/HepPDTRecord/interface/ParticleDataTable.h
"
32
#include "
SimDataFormats/GeneratorProducts/interface/HepMCProduct.h
"
33
//
34
// class declaration
35
//
36
37
class
HighMultiplicityGenFilter
:
public
edm::EDFilter
{
38
public
:
39
explicit
HighMultiplicityGenFilter
(
const
edm::ParameterSet
&);
40
~HighMultiplicityGenFilter
()
override
;
41
42
private
:
43
void
beginJob
()
override
;
44
bool
filter
(
edm::Event
&,
const
edm::EventSetup
&)
override
;
45
void
endJob
()
override
;
46
47
// ----------member data ---------------------------
48
edm::ESHandle <ParticleDataTable>
pdt
;
49
edm::EDGetTokenT<edm::HepMCProduct>
hepmcSrc
;
50
double
etaMax
;
51
double
ptMin
;
52
int
nMin
;
53
int
nAccepted
;
54
};
55
56
//
57
// constants, enums and typedefs
58
//
59
60
//
61
// static data member definitions
62
//
63
64
//
65
// constructors and destructor
66
//
67
HighMultiplicityGenFilter::HighMultiplicityGenFilter
(
const
edm::ParameterSet
& iConfig) :
68
hepmcSrc
(
consumes
<
edm
::
HepMCProduct
>(iConfig.getParameter<
edm
::InputTag > (
"generatorSmeared"
))),
69
etaMax
(iConfig.getUntrackedParameter<double>(
"etaMax"
)),
70
ptMin
(iConfig.getUntrackedParameter<double>(
"ptMin"
)),
71
nMin
(iConfig.getUntrackedParameter<
int
>(
"nMin"
))
72
{
73
//now do what ever initialization is needed
74
nAccepted
= 0;
75
}
76
77
78
HighMultiplicityGenFilter::~HighMultiplicityGenFilter
()
79
{
80
81
// do anything here that needs to be done at desctruction time
82
// (e.g. close files, deallocate resources etc.)
83
84
}
85
86
87
//
88
// member functions
89
//
90
91
// ------------ method called on each new Event ------------
92
bool
93
HighMultiplicityGenFilter::filter
(
edm::Event
&
iEvent
,
const
edm::EventSetup
& iSetup)
94
{
95
96
bool
accepted
=
false
;
97
edm::Handle<edm::HepMCProduct>
evt;
98
iEvent.
getByToken
(
hepmcSrc
,evt);
99
100
iSetup.
getData
(
pdt
);
101
102
const
HepMC::GenEvent
* myGenEvent = evt->
GetEvent
();
103
104
int
nMult=0;
105
for
( HepMC::GenEvent::particle_const_iterator
p
= myGenEvent->particles_begin();
p
!= myGenEvent->particles_end(); ++
p
) {
106
107
if
((*p)->status()!=1)
continue
;
108
109
double
charge
= 0;
110
int
pid
= (*p)->pdg_id();
111
if
(
abs
(pid) > 100000) {
std::cout
<<
"pid="
<<pid<<
" status="
<<(*p)->status()<<std::endl;
continue
; }
112
const
ParticleData
*
part
=
pdt
->particle(pid);
113
if
(part) charge = part->charge();
114
if
(charge == 0)
continue
;
115
116
if
(
117
(*p)->momentum().perp() >
ptMin
118
&& fabs((*p)->momentum().eta()) <
etaMax
) nMult++;
119
}
120
if
(nMult>=
nMin
) {
nAccepted
++; accepted =
true
; }
121
return
accepted
;
122
}
123
124
// ------------ method called once each job just before starting event loop ------------
125
void
126
HighMultiplicityGenFilter::beginJob
()
127
{}
128
129
// ------------ method called once each job just after ending the event loop ------------
130
void
131
HighMultiplicityGenFilter::endJob
() {
132
std::cout
<<
"There are "
<<
nAccepted
<<
" events with multiplicity greater than "
<<
nMin
<<std::endl;
133
}
134
135
//define this as a plug-in
136
DEFINE_FWK_MODULE
(
HighMultiplicityGenFilter
);
sysUtil.pid
pid
Definition:
sysUtil.py:23
AlCaHLTBitMon_ParallelJobs.p
p
Definition:
AlCaHLTBitMon_ParallelJobs.py:153
edm::Event::getByToken
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition:
Event.h:517
HighMultiplicityGenFilter::~HighMultiplicityGenFilter
~HighMultiplicityGenFilter() override
Definition:
HighMultiplicityGenFilter.cc:78
Event.h
MakerMacros.h
edm::Handle< edm::HepMCProduct >
EventSetup.h
edm::EDGetTokenT< edm::HepMCProduct >
Frameworkfwd.h
edm::EDConsumerBase::consumes
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
Definition:
EDConsumerBase.h:126
ParameterSet.h
edm::EventSetup::getData
bool getData(T &iHolder) const
Definition:
EventSetup.h:111
ParticleDataTable.h
HighMultiplicityGenFilter::beginJob
void beginJob() override
Definition:
HighMultiplicityGenFilter.cc:126
iEvent
int iEvent
Definition:
GenABIO.cc:224
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition:
MakerMacros.h:16
createfilelist.int
int
Definition:
createfilelist.py:10
HepMC::GenEvent
Definition:
hepmc_rootio.cc:9
EDFilter.h
edm::ESHandle< ParticleDataTable >
funct::abs
Abs< T >::type abs(const T &t)
Definition:
Abs.h:22
HepMCProduct
HighMultiplicityGenFilter::ptMin
double ptMin
Definition:
HighMultiplicityGenFilter.cc:51
ESHandle.h
HighMultiplicityGenFilter::nMin
int nMin
Definition:
HighMultiplicityGenFilter.cc:52
HighMultiplicityGenFilter::pdt
edm::ESHandle< ParticleDataTable > pdt
Definition:
HighMultiplicityGenFilter.cc:48
edm::EventSetup
Definition:
EventSetup.h:57
ALCARECOTkAlJpsiMuMu_cff.charge
charge
Definition:
ALCARECOTkAlJpsiMuMu_cff.py:47
ParticleData
HepPDT::ParticleData ParticleData
Definition:
ParticleDataTable.h:9
HepMCProduct.h
edm::EDFilter
Definition:
EDFilter.h:39
HighMultiplicityGenFilter
Definition:
HighMultiplicityGenFilter.cc:37
edm::HepMCProduct::GetEvent
const HepMC::GenEvent * GetEvent() const
Definition:
HepMCProduct.h:38
HighMultiplicityGenFilter::filter
bool filter(edm::Event &, const edm::EventSetup &) override
Definition:
HighMultiplicityGenFilter.cc:93
part
part
Definition:
HCALResponse.h:20
cms::dd::accepted
bool accepted(std::vector< std::string_view > const &, std::string_view)
edm
HLT enums.
Definition:
AlignableModifier.h:17
HighMultiplicityGenFilter::endJob
void endJob() override
Definition:
HighMultiplicityGenFilter.cc:131
HighMultiplicityGenFilter::hepmcSrc
edm::EDGetTokenT< edm::HepMCProduct > hepmcSrc
Definition:
HighMultiplicityGenFilter.cc:49
edm::ParameterSet
Definition:
ParameterSet.h:36
gather_cfg.cout
cout
Definition:
gather_cfg.py:144
HighMultiplicityGenFilter::HighMultiplicityGenFilter
HighMultiplicityGenFilter(const edm::ParameterSet &)
Definition:
HighMultiplicityGenFilter.cc:67
edm::Event
Definition:
Event.h:71
HighMultiplicityGenFilter::etaMax
double etaMax
Definition:
HighMultiplicityGenFilter.cc:50
HighMultiplicityGenFilter::nAccepted
int nAccepted
Definition:
HighMultiplicityGenFilter.cc:53
Generated for CMSSW Reference Manual by
1.8.11