~ubuntu-branches/ubuntu/trusty/pythia8/trusty-proposed

« back to all changes in this revision

Viewing changes to examples/main03.cc

  • Committer: Package Import Robot
  • Author(s): Lifeng Sun
  • Date: 2012-05-22 11:43:00 UTC
  • Revision ID: package-import@ubuntu.com-20120522114300-0jvsv2vl4o2bo435
Tags: upstream-8.1.65
ImportĀ upstreamĀ versionĀ 8.1.65

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// main03.cc is a part of the PYTHIA event generator.
 
2
// Copyright (C) 2012 Torbjorn Sjostrand.
 
3
// PYTHIA is licenced under the GNU GPL version 2, see COPYING for details.
 
4
// Please respect the MCnet Guidelines, see GUIDELINES for details.
 
5
 
 
6
// This is a simple test program. 
 
7
// It illustrates how different processes can be selected and studied.
 
8
// All input is specified in the main03.cmnd file.
 
9
 
 
10
#include "Pythia.h"
 
11
 
 
12
using namespace Pythia8; 
 
13
 
 
14
int main() {
 
15
 
 
16
  // Generator.
 
17
  Pythia pythia;
 
18
 
 
19
  // Shorthand for the event record in pythia.
 
20
  Event& event = pythia.event;
 
21
 
 
22
  // Read in commands from external file.
 
23
  pythia.readFile("main03.cmnd");    
 
24
 
 
25
  // Extract settings to be used in the main program.
 
26
  int nEvent = pythia.mode("Main:numberOfEvents");
 
27
  int nAbort = pythia.mode("Main:timesAllowErrors");
 
28
 
 
29
  // Initialize. 
 
30
  pythia.init();
 
31
 
 
32
  // Book histograms.
 
33
  Hist pThard("process pT scale", 100, 0., 500.);
 
34
  Hist nFinal("final particle multiplicity", 100, -0.5, 1599.5);
 
35
  Hist nCharged("charged particle multiplicity", 100, -0.5, 799.5);
 
36
  Hist dndy("dn/dy for charged particles", 100, -10., 10.);
 
37
  Hist dndeta("dn/d(eta) for charged particles", 100, -10., 10.);
 
38
  Hist dndpT("dn/dpT for charged particles", 100, 0., 10.);
 
39
  Hist epCons("deviation from energy-momentum conservation", 100, 0., 1e-6);
 
40
 
 
41
  // Begin event loop.
 
42
  int iAbort = 0;
 
43
  for (int iEvent = 0; iEvent < nEvent; ++iEvent) {
 
44
 
 
45
    // Generate events. Quit if many failures.
 
46
    if (!pythia.next()) {
 
47
      if (++iAbort < nAbort) continue;
 
48
      cout << " Event generation aborted prematurely, owing to error!\n"; 
 
49
      break;
 
50
    }
 
51
 
 
52
    // Fill hard scale of event.
 
53
    pThard.fill( pythia.info.pTHat() );
 
54
 
 
55
    // Loop over final particles in the event. 
 
56
    int  nFin = 0;
 
57
    int  nChg = 0;
 
58
    Vec4 pSum;
 
59
    for (int i = 0; i < event.size(); ++i) if (event[i].isFinal()) {
 
60
 
 
61
       // Analyze all particles.
 
62
      nFin++;
 
63
      pSum += event[i].p();
 
64
       
 
65
      // Analyze charged particles and fill histograms.
 
66
      if (event[i].isCharged()) {
 
67
        ++nChg;
 
68
        dndy.fill( event[i].y() );
 
69
        dndeta.fill( event[i].eta() );
 
70
        dndpT.fill( event[i].pT() );
 
71
      }
 
72
 
 
73
    // End of particle loop. Fill global properties.
 
74
    }
 
75
    nFinal.fill( nFin );
 
76
    nCharged.fill( nChg );
 
77
    pSum /= event[0].e();
 
78
    double epDev = abs(pSum.e() - 1.) + abs(pSum.px()) + abs(pSum.py())
 
79
      + abs(pSum.pz());
 
80
    epCons.fill(epDev);
 
81
 
 
82
  // End of event loop.
 
83
  }
 
84
   
 
85
  // Final statistics. Normalize and output histograms.
 
86
  pythia.stat();
 
87
  dndy   *=  5. / nEvent;
 
88
  dndeta *=  5. / nEvent;
 
89
  dndpT  *= 10. / nEvent;
 
90
  cout << pThard << nFinal << nCharged << dndy << dndeta << dndpT << epCons; 
 
91
 
 
92
  // Done.
 
93
  return 0;
 
94
}