23 void pythia8(Int_t nev = 100, Int_t ndeb = 1)
26 gSystem->Load(
"libEG");
27 gSystem->Load(
"libEGPythia8");
29 TH1F* etaH =
new TH1F(
"etaH",
"Pseudorapidity", 120, -12., 12.);
30 TH1F* ptH =
new TH1F(
"ptH",
"pt", 50, 0., 10.);
34 TClonesArray* particles =
new TClonesArray(
"TParticle", 1000);
36 TPythia8* pythia8 =
new TPythia8();
38 #if PYTHIA_VERSION_INTEGER == 8235
40 printf(
"ABORTING PYTHIA8 TUTORIAL!\n");
41 printf(
"The version of Pythia you use is known to case crashes due to memory errors.\n");
42 printf(
"They have been reported to the authors; the Pythia versions 8.1... are known to work.\n");
47 pythia8->ReadString(
"HardQCD:all = on");
48 pythia8->ReadString(
"Random:setSeed = on");
50 pythia8->ReadString(
"Random:seed = 42");
55 pythia8->Initialize(2212 , 2212 , 14000. );
58 for (Int_t iev = 0; iev < nev; iev++) {
59 pythia8->GenerateEvent();
60 if (iev < ndeb) pythia8->EventListing();
61 pythia8->ImportParticles(particles,
"All");
62 Int_t np = particles->GetEntriesFast();
64 for (Int_t ip = 0; ip < np; ip++) {
65 TParticle* part = (TParticle*) particles->At(ip);
66 Int_t ist = part->GetStatusCode();
68 if (ist <= 0)
continue;
69 Int_t pdg = part->GetPdgCode();
70 Float_t charge = TDatabasePDG::Instance()->GetParticle(pdg)->Charge();
71 if (charge == 0.)
continue;
72 Float_t eta = part->Eta();
73 Float_t pt = part->Pt();
76 if (pt > 0.) ptH->Fill(pt, 1./(2. * pt));
80 pythia8->PrintStatistics();
82 TCanvas* c1 =
new TCanvas(
"c1",
"Pythia8 test example",800,800);
85 etaH->Scale(5./Float_t(nev));
87 etaH->SetXTitle(
"#eta");
88 etaH->SetYTitle(
"dN/d#eta");
92 ptH->Scale(5./Float_t(nev));
94 ptH->SetXTitle(
"p_{t} [GeV/c]");
95 ptH->SetYTitle(
"dN/dp_{t}^{2} [GeV/c]^{-2}");