CMS 3D CMS Logo

TauHadronDecayFilter.cc
Go to the documentation of this file.
1 // system include files
2 #include <memory>
3 #include <iostream>
4 
5 // user include files
7 // #include "FWCore/Framework/interface/EDFilter.h"
8 
13 
15 
17 
18 
22 
24 
26 
27 
28 using namespace edm;
29 using namespace std;
30 
32  //now do what ever initialization is needed
33 
34  particleFilter_ = iConfig.getParameter<edm::ParameterSet>
35  ( "ParticleFilter" );
36 
37  mySimEvent = new FSimEvent( particleFilter_);
38 }
39 
40 
42 
43  // do anything here that needs to be done at desctruction time
44  // (e.g. close files, deallocate resources etc.)
45  delete mySimEvent;
46 
47 }
48 
49 
50 bool
52  const edm::EventSetup& iSetup) {
53 
55  iEvent.getByLabel("g4SimHits",simTracks);
57  iEvent.getByLabel("g4SimHits",simVertices);
58 
59  mySimEvent->fill( *simTracks, *simVertices );
60 
61  if( mySimEvent->nTracks() >= 2 ) {
62  FSimTrack& gene = mySimEvent->track(0);
63  if( abs(gene.type()) != 15) {
64  // first particle is not a tau.
65  // -> do not filter
66  return true;
67  }
68 
69  FSimTrack& decayproduct = mySimEvent->track(1);
70  switch( abs(decayproduct.type() ) ) {
71  case 11: // electrons
72  case 13: // muons
73  LogWarning("PFProducer")
74  <<"TauHadronDecayFilter: selecting single tau events with hadronic decay."<<endl;
75  // mySimEvent->print();
76  return false;
77  default:
78  return true;
79  }
80  }
81 
82  // more than 2 particles
83  return true;
84 }
85 
86 void
88  const edm::EventSetup& es) {
89  // init Particle data table (from Pythia)
91  // edm::ESHandle < DefaultConfig::ParticleDataTable > pdt;
92 
93  es.getData(pdt);
94  mySimEvent->initializePdt(&(*pdt));
95 
96 }
97 
T getParameter(std::string const &) const
TauHadronDecayFilter(const edm::ParameterSet &)
bool getData(T &iHolder) const
Definition: EventSetup.h:111
int iEvent
Definition: GenABIO.cc:224
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:480
void beginRun(const edm::Run &, const edm::EventSetup &) override
int type() const
particle type (HEP PDT convension)
Definition: CoreSimTrack.h:22
HLT enums.
bool filter(edm::Event &, const edm::EventSetup &) override
Definition: Run.h:45