forked from mverwe/JetToyHI
-
Notifications
You must be signed in to change notification settings - Fork 1
/
runCreatePythiaEvents.cc
79 lines (56 loc) · 2.34 KB
/
runCreatePythiaEvents.cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include "TFile.h"
#include "TTree.h"
#include "fastjet/PseudoJet.hh"
#include "fastjet/ClusterSequenceArea.hh"
#include "include/ProgressBar.h"
#include "include/pythiaEvent.hh"
#include "include/extraInfo.hh"
#include "PU14/CmdLine.hh"
using namespace std;
using namespace fastjet;
int main (int argc, char ** argv)
{
// Uncomment to silence fastjet banner
ClusterSequence::set_fastjet_banner_stream(NULL);
CmdLine cmdline(argc,argv);
// inputs read from command line
unsigned int nEvent = cmdline.value<unsigned int>("-nev",1); // first argument: command line option; second argument: default value
// Number of events, generated and listed ones.
//unsigned int nEvent = 10000;
//event generator settings
double ptHat = cmdline.value<double>("-pthat",120);//120.;
unsigned int tune = cmdline.value<int>("-tune",14);
std::cout << "generating " << nEvent << " events with pthat = " << ptHat << " and tune = " << tune << std::endl;
pythiaEvent pyt(ptHat, tune, -3.0, 3.0);
ProgressBar Bar(cout, nEvent);
Bar.SetStyle(-1);
//output text file
ofstream fout;
const char *dir = getenv("PWD");//"/eos/user/m/mverweij/JetWorkshop2017/samples/";
TString outFileName = Form("%s/PythiaEventsTune%dPtHat%.0f.pu14",dir,tune,ptHat);
fout.open(outFileName.Data());
unsigned int entryDiv = (nEvent > 200) ? nEvent / 200 : 1;
for(unsigned int ie = 0; ie < nEvent; ie++) {
Bar.Update(ie);
Bar.PrintWithMod(entryDiv);
Bar.Update(ie);
Bar.PrintWithMod(entryDiv);
//---------------------------------------------------------------------------
// produce event
//---------------------------------------------------------------------------
fout << "# event " << ie << "\n";
//create pythia event
std::vector<fastjet::PseudoJet> particlesSig = pyt.createPythiaEvent();
for(fastjet::PseudoJet p : particlesSig) {
const int & pdgid = p.user_info<extraInfo>().pdg_id();
const int & vtx = p.user_info<extraInfo>().vertex_number();
fout << p.px() << " " << p.py() << " " << p.pz() << " " << p.m() << " " << pdgid << " " << vtx << "\n";
//fout << p.pt() << " " << p.rap() << " " << p.phi() << " " << p.m() << " " << pdgid << " " << vtx << "\n";
}
fout << "end\n";
}
fout.close();
}