CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
HiBasicGenTest.cc
Go to the documentation of this file.
1 #include "HepMC/GenEvent.h"
2 #include "HepMC/GenParticle.h"
7 
8 #include "HepMC/GenEvent.h"
9 #include "HepMC/HeavyIon.h"
10 
11 #include <TString.h>
12 #include <TMath.h>
13 
14 using namespace edm;
15 using namespace HepMC;
16 
18 {
19  dbe = 0;
20  dbe = edm::Service<DQMStore>().operator->();
21  generatorToken_ = consumes<edm::HepMCProduct> (
22  iPSet.getParameter<edm::InputTag>("generatorLabel"));
23 }
24 
26 
28 {
29  if(dbe){
31  dbe->setCurrentFolder("Generator/Particles");
32 
34  for(int ibin=0; ibin<3; ibin++) {
35  dnchdeta[ibin] = dbe->book1D(Form("dnchdeta%d",ibin), ";#eta;dN^{ch}/d#eta", 100, -6.0, 6.0);
36  dnchdpt[ibin] = dbe->book1D(Form("dnchdpt%d",ibin), ";p_{T};dN^{ch}/dp_{T}", 200, 0.0, 100.0);
37  b[ibin] = dbe->book1D(Form("b%d",ibin),";b[fm];events",100, 0.0, 20.0);
38  dnchdphi[ibin] = dbe->book1D(Form("dnchdphi%d",ibin),";#phi;dN^{ch}/d#phi",100, -3.2, 3.2);
39 
40  dbe->tag(dnchdeta[ibin]->getFullname(),1+ibin*4);
41  dbe->tag(dnchdpt[ibin]->getFullname(),2+ibin*4);
42  dbe->tag(b[ibin]->getFullname(),3+ibin*4);
43  dbe->tag(dnchdphi[ibin]->getFullname(),4+ibin*4);
44  }
45 
46  rp = dbe->book1D("phi0",";#phi_{RP};events",100,-3.2,3.2);
47  dbe->tag(rp->getFullname(),13);
48 
49 
50  }
51  return;
52 }
53 
55  // normalization of histograms can be done here (or in post-processor)
56  return;
57 }
58 
59 void HiBasicGenTest::beginRun(const edm::Run& iRun,const edm::EventSetup& iSetup)
60 {
61  iSetup.getData(pdt);
62  return;
63 }
64 
65 void HiBasicGenTest::endRun(const edm::Run& iRun,const edm::EventSetup& iSetup){return;}
66 
68 {
69 
71  iEvent.getByToken(generatorToken_, mc);
72  const HepMC::GenEvent *evt = mc->GetEvent();
73  const HepMC::HeavyIon *hi = evt->heavy_ion();
74 
75  int cbin = 0;
76  double phi0 =0.;
77 
78  if(hi){
79 
80  double ip = hi->impact_parameter();
81  phi0 = hi->event_plane_angle();
82 
83  // fill reaction plane distribution
84  rp->Fill(phi0);
85 
86  // if the event is in one of the centrality bins of interest fill hists
87  int cbin=-1;
88  if(ip < 5.045) cbin=0;
89  else if (ip < 7.145 && ip > 5.045) cbin=1;
90  else if (ip < 15.202 && ip > 14.283) cbin=2;
91  if(cbin<0) return;
92 
93  // fill impact parameter distributions
94  b[cbin]->Fill(ip);
95  }
96 
97  // loop over particles
98  HepMC::GenEvent::particle_const_iterator begin = evt->particles_begin();
99  HepMC::GenEvent::particle_const_iterator end = evt->particles_end();
100  for(HepMC::GenEvent::particle_const_iterator it = begin; it != end; ++it){
101 
102  // only fill hists for status=1 particles
103  if((*it)->status() != 1) continue;
104 
105  // only fill hists for charged particles
106  int pdg_id = (*it)->pdg_id();
107  const ParticleData * part = pdt->particle(pdg_id);
108  int charge = static_cast<int>(part->charge());
109  if(charge==0) continue;
110 
111  float eta = (*it)->momentum().eta();
112  float phi = (*it)->momentum().phi();
113  float pt = (*it)->momentum().perp();
114 
115  dnchdeta[cbin]->Fill(eta);
116  dnchdpt[cbin]->Fill(pt);
117 
118  double pi = TMath::Pi();
119  double p = phi-phi0;
120  if(p > pi) p = p - 2*pi;
121  if(p < -1*pi) p = p + 2*pi;
122  dnchdphi[cbin]->Fill(p);
123 
124  }
125 
126  return;
127 
128 }
129 
132 
133 
const double Pi
virtual void analyze(const edm::Event &, const edm::EventSetup &)
T getParameter(std::string const &) const
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:446
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:17
virtual void beginJob()
virtual void beginRun(const edm::Run &, const edm::EventSetup &)
T eta() const
virtual void endJob()
void getData(T &iHolder) const
Definition: EventSetup.h:78
const Double_t pi
virtual void endRun(const edm::Run &, const edm::EventSetup &)
int iEvent
Definition: GenABIO.cc:230
virtual ~HiBasicGenTest()
HiBasicGenTest(const edm::ParameterSet &)
#define end
Definition: vmac.h:37
HepPDT::ParticleData ParticleData
part
Definition: HCALResponse.h:20
double b
Definition: hdecay.h:120
#define begin
Definition: vmac.h:30
Definition: Run.h:41
Definition: DDAxes.h:10