CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Attributes
PythiaFilter Class Reference

#include <IOMC/PythiaFilter/src/PythiaFilter.cc>

Inheritance diagram for PythiaFilter:
edm::EDFilter edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

virtual bool filter (edm::Event &, const edm::EventSetup &)
 
 PythiaFilter (const edm::ParameterSet &)
 
 ~PythiaFilter ()
 
- Public Member Functions inherited from edm::EDFilter
 EDFilter ()
 
ModuleDescription const & moduleDescription () const
 
virtual ~EDFilter ()
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 ProducerBase ()
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription
const &)> 
registrationCallback () const
 used by the fwk to register list of products More...
 
virtual ~ProducerBase ()
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
 EDConsumerBase ()
 
ProductHolderIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
std::vector
< ProductHolderIndexAndSkipBit >
const & 
itemsToGetFromEvent () const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesDependentUpon (const std::string &iProcessName, std::vector< const char * > &oModuleLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
bool registeredToConsume (ProductHolderIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductHolderIndexHelper const &)
 
virtual ~EDConsumerBase ()
 

Private Attributes

double maxetacut
 
double maxpcut
 
double maxphicut
 
double maxptcut
 
double maxrapcut
 
double minetacut
 
double minpcut
 
double minphicut
 
double minptcut
 
double minrapcut
 
int motherID
 
int particleID
 
int processID
 
double rapidity
 
int status
 
edm::EDGetTokenT
< edm::HepMCProduct
token_
 

Additional Inherited Members

- Public Types inherited from edm::EDFilter
typedef EDFilter ModuleType
 
- Public Types inherited from edm::ProducerBase
typedef
ProductRegistryHelper::TypeLabelList 
TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::EDFilter
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &)
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

Description: <one line="" class="" summary>="">

Implementation: <Notes on="" implementation>="">

Definition at line 42 of file PythiaFilter.h.

Constructor & Destructor Documentation

PythiaFilter::PythiaFilter ( const edm::ParameterSet iConfig)
explicit

Definition at line 11 of file PythiaFilter.cc.

11  :
12 token_(consumes<edm::HepMCProduct>(edm::InputTag(iConfig.getUntrackedParameter("moduleLabel",std::string("generator")),"unsmeared"))),
13 particleID(iConfig.getUntrackedParameter("ParticleID", 0)),
14 minpcut(iConfig.getUntrackedParameter("MinP", 0.)),
15 maxpcut(iConfig.getUntrackedParameter("MaxP", 10000.)),
16 minptcut(iConfig.getUntrackedParameter("MinPt", 0.)),
17 maxptcut(iConfig.getUntrackedParameter("MaxPt", 10000.)),
18 minetacut(iConfig.getUntrackedParameter("MinEta", -10.)),
19 maxetacut(iConfig.getUntrackedParameter("MaxEta", 10.)),
20 minrapcut(iConfig.getUntrackedParameter("MinRapidity", -20.)),
21 maxrapcut(iConfig.getUntrackedParameter("MaxRapidity", 20.)),
22 minphicut(iConfig.getUntrackedParameter("MinPhi", -3.5)),
23 maxphicut(iConfig.getUntrackedParameter("MaxPhi", 3.5)),
24 status(iConfig.getUntrackedParameter("Status", 0)),
25 motherID(iConfig.getUntrackedParameter("MotherID", 0)),
26 processID(iConfig.getUntrackedParameter("ProcessID", 0))
27 {
28  //now do what ever initialization is needed
29 
30 }
double maxpcut
Definition: PythiaFilter.h:55
double maxphicut
Definition: PythiaFilter.h:63
T getUntrackedParameter(std::string const &, T const &) const
double maxptcut
Definition: PythiaFilter.h:57
edm::EDGetTokenT< edm::HepMCProduct > token_
Definition: PythiaFilter.h:52
double minrapcut
Definition: PythiaFilter.h:60
double minphicut
Definition: PythiaFilter.h:62
double maxrapcut
Definition: PythiaFilter.h:61
double maxetacut
Definition: PythiaFilter.h:59
double minpcut
Definition: PythiaFilter.h:54
double minptcut
Definition: PythiaFilter.h:56
double minetacut
Definition: PythiaFilter.h:58
PythiaFilter::~PythiaFilter ( )

Definition at line 33 of file PythiaFilter.cc.

34 {
35 
36  // do anything here that needs to be done at desctruction time
37  // (e.g. close files, deallocate resources etc.)
38 
39 }

Member Function Documentation

bool PythiaFilter::filter ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
virtual

Implements edm::EDFilter.

Definition at line 47 of file PythiaFilter.cc.

References funct::abs(), GenParticle::GenParticle, edm::Event::getByToken(), cmsBatch::log, maxetacut, maxpcut, maxphicut, maxptcut, maxrapcut, minetacut, minpcut, minphicut, minptcut, minrapcut, motherID, AlCaHLTBitMon_ParallelJobs::p, particleID, processID, rapidity, status, and token_.

48 {
49  using namespace edm;
50  bool accepted = false;
52  iEvent.getByToken(token_, evt);
53 
54  const HepMC::GenEvent * myGenEvent = evt->GetEvent();
55 
56  if(processID == 0 || processID == myGenEvent->signal_process_id()) {
57 
58  for ( HepMC::GenEvent::particle_const_iterator p = myGenEvent->particles_begin();
59  p != myGenEvent->particles_end(); ++p ) {
60 
61  rapidity = 0.5*log( ((*p)->momentum().e()+(*p)->momentum().pz()) / ((*p)->momentum().e()-(*p)->momentum().pz()) );
62 
63  if ( abs((*p)->pdg_id()) == particleID
64  && (*p)->momentum().rho() > minpcut
65  && (*p)->momentum().rho() < maxpcut
66  && (*p)->momentum().perp() > minptcut
67  && (*p)->momentum().perp() < maxptcut
68  && (*p)->momentum().eta() > minetacut
69  && (*p)->momentum().eta() < maxetacut
70  && rapidity > minrapcut
71  && rapidity < maxrapcut
72  && (*p)->momentum().phi() > minphicut
73  && (*p)->momentum().phi() < maxphicut ) {
74 
75 
76 
77  if (status == 0 && motherID == 0){
78  accepted = true;
79  }
80  if (status != 0 && motherID == 0){
81  if ((*p)->status() == status)
82  accepted = true;
83  }
84 
85  HepMC::GenParticle* mother = (*((*p)->production_vertex()->particles_in_const_begin()));
86 
87  if (status == 0 && motherID != 0){
88  if (abs(mother->pdg_id()) == abs(motherID)) {
89  accepted = true;
90  }
91  }
92  if (status != 0 && motherID != 0){
93 
94  if ((*p)->status() == status && abs(mother->pdg_id()) == abs(motherID)){
95  accepted = true;
96 
97  }
98  }
99 
100  /*
101  if (status == 0 && motherID != 0){
102  if (abs(((*p)->mother())->pdg_id()) == abs(motherID)) {
103  accepted = true;
104  }
105  }
106  if (status != 0 && motherID != 0){
107 
108  if ((*p)->status() == status && abs(((*p)->mother())->pdg_id()) == abs(motherID)){
109  accepted = true;
110 
111  }
112  }
113  */
114 
115  }
116  }
117 
118  } else { accepted = true; }
119 
120  if (accepted){
121  return true; } else {return false;}
122 
123 }
double maxpcut
Definition: PythiaFilter.h:55
double maxphicut
Definition: PythiaFilter.h:63
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:464
double maxptcut
Definition: PythiaFilter.h:57
edm::EDGetTokenT< edm::HepMCProduct > token_
Definition: PythiaFilter.h:52
double minrapcut
Definition: PythiaFilter.h:60
double minphicut
Definition: PythiaFilter.h:62
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
double rapidity
Definition: PythiaFilter.h:65
double maxrapcut
Definition: PythiaFilter.h:61
double maxetacut
Definition: PythiaFilter.h:59
double minpcut
Definition: PythiaFilter.h:54
double minptcut
Definition: PythiaFilter.h:56
double minetacut
Definition: PythiaFilter.h:58
tuple log
Definition: cmsBatch.py:341

Member Data Documentation

double PythiaFilter::maxetacut
private

Definition at line 59 of file PythiaFilter.h.

Referenced by filter().

double PythiaFilter::maxpcut
private

Definition at line 55 of file PythiaFilter.h.

Referenced by filter().

double PythiaFilter::maxphicut
private

Definition at line 63 of file PythiaFilter.h.

Referenced by filter().

double PythiaFilter::maxptcut
private

Definition at line 57 of file PythiaFilter.h.

Referenced by filter().

double PythiaFilter::maxrapcut
private

Definition at line 61 of file PythiaFilter.h.

Referenced by filter().

double PythiaFilter::minetacut
private

Definition at line 58 of file PythiaFilter.h.

Referenced by filter().

double PythiaFilter::minpcut
private

Definition at line 54 of file PythiaFilter.h.

Referenced by filter().

double PythiaFilter::minphicut
private

Definition at line 62 of file PythiaFilter.h.

Referenced by filter().

double PythiaFilter::minptcut
private

Definition at line 56 of file PythiaFilter.h.

Referenced by filter().

double PythiaFilter::minrapcut
private

Definition at line 60 of file PythiaFilter.h.

Referenced by filter().

int PythiaFilter::motherID
private

Definition at line 68 of file PythiaFilter.h.

Referenced by filter().

int PythiaFilter::particleID
private

Definition at line 53 of file PythiaFilter.h.

Referenced by filter().

int PythiaFilter::processID
private

Definition at line 69 of file PythiaFilter.h.

Referenced by filter().

double PythiaFilter::rapidity
private

Definition at line 65 of file PythiaFilter.h.

Referenced by filter().

int PythiaFilter::status
private
edm::EDGetTokenT<edm::HepMCProduct> PythiaFilter::token_
private

Definition at line 52 of file PythiaFilter.h.

Referenced by filter().