CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
TotalKinematicsFilter.cc
Go to the documentation of this file.
2 
3 using namespace edm;
4 
6  src_(iPSet.getParameter<edm::InputTag>("src")),
7  tolerance_(iPSet.getParameter<double>("tolerance")),
8  verbose_(iPSet.getUntrackedParameter<bool>("verbose",false))
9 {
10 }
11 
13 
15 {
16 
17  float nEcms = 0.;
18  unsigned int nInit = 0;
19 
20  std::vector<float> p4tot(4,0.);
21  unsigned int nPart = 0;
22 
23  // Gather information on the reco::GenParticle collection
25  iEvent.getByLabel(src_, genParticles );
26 
27  for (reco::GenParticleCollection::const_iterator iter=genParticles->begin();iter!=genParticles->end();++iter){
28  if ( nInit < 3 && (*iter).status() == 3 && (*iter).pdgId() == 2212 ) {
29  nInit++;
30  nEcms += (*iter).energy();
31  }
32  if ( (*iter).status() == 1) {
33  nPart++;
34  if (verbose_) {
35  std::cout << "Status 1 part # " << std::setw(4) << std::fixed << nPart
36  << std::setw(14) << std::fixed << (*iter).pdgId()
37  << std::setw(14) << std::fixed << (*iter).px()
38  << std::setw(14) << std::fixed << (*iter).py()
39  << std::setw(14) << std::fixed << (*iter).pz() << std::endl;
40  }
41  p4tot[0] += (*iter).px();
42  p4tot[1] += (*iter).py();
43  p4tot[2] += (*iter).pz();
44  p4tot[3] += std::sqrt( (*iter).px()*(*iter).px() +
45  (*iter).py()*(*iter).py() +
46  (*iter).pz()*(*iter).pz() +
47  (*iter).mass()*(*iter).mass()) ;
48  }
49  }
50 
51  if ( verbose_ ) {
52  std::cout << "Initial sqrt(s) = " << nEcms << std::endl;
53  for (unsigned int i=0; i<4; i++) {
54  std::cout << "p4tot["<<i<<"] = " << p4tot[i] << std::endl;
55  }
56  }
57 
58  bool pass = true;
59  if ( std::abs(p4tot[0]) > tolerance_ || std::abs(p4tot[1]) > tolerance_ || std::abs(p4tot[2]) > tolerance_ || std::abs(p4tot[3]-nEcms) > tolerance_ )
60  { pass = false; }
61 
62  return pass;
63 
64 }
65 
int i
Definition: DBlmapReader.cc:9
virtual bool filter(edm::Event &, const edm::EventSetup &)
int iEvent
Definition: GenABIO.cc:230
T sqrt(T t)
Definition: SSEVec.h:48
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:420
TString nPart(Int_t part, TString string, TString delimit=";", Bool_t removerest=true)
TotalKinematicsFilter(const edm::ParameterSet &)
tuple cout
Definition: gather_cfg.py:121
volatile std::atomic< bool > shutdown_flag false