15 #include "fastjet/internal/numconsts.hh" 
   20 #include "KtJet/KtEvent.h" 
   21 #include "KtJet/KtLorentzVector.h" 
   23 using namespace KtJet;
 
   25 inline double pow2(
const double x) {
return x*x;}
 
   28 int main (
int argc, 
char ** argv) {
 
   30   CmdLine cmdline(argc,argv);
 
   32   int  repeat = cmdline.int_val(
"-repeat",1);
 
   33   int  combine = cmdline.int_val(
"-combine",1);
 
   34   bool write   = cmdline.present(
"-write");
 
   35   double ktR   = cmdline.double_val(
"-r",1.0);
 
   36   double inclkt = cmdline.double_val(
"-incl",-1.0);
 
   37   int    excln  = cmdline.int_val   (
"-excln",-1);
 
   38   double excld  = cmdline.double_val(
"-excld",-1.0);
 
   39   int  nev     = cmdline.int_val(
"-nev",1);
 
   40   bool   massless = cmdline.present(
"-massless");
 
   41   bool   get_all_dij   = cmdline.present(
"-get-all-dij");
 
   44   for (
int iev = 0; iev < nev; iev++) {
 
   45   vector<KtJet::KtLorentzVector> jets;
 
   48   while (getline(cin, line)) {
 
   50     istringstream linestream(line);
 
   53       if (ndone == combine) {
break;}
 
   55     if (line.substr(0,1) == 
"#") {
continue;}
 
   56     valarray<double> fourvec(4);
 
   57     linestream >> fourvec[0] >> fourvec[1] >> fourvec[2] >> fourvec[3];
 
   59       linestream >> fourvec[0] >> fourvec[1] >> fourvec[2];
 
   60       fourvec[3] = sqrt(pow2(fourvec[0])+pow2(fourvec[1])+pow2(fourvec[2]));}
 
   62       linestream >> fourvec[0] >> fourvec[1] >> fourvec[2] >> fourvec[3];
 
   64     KtJet::KtLorentzVector p(fourvec[0],fourvec[1],fourvec[2],fourvec[3]);
 
   69   int type, angle, recom;
 
   71   if (cmdline.present(
"-eekt")) {
 
   75     info << 
"Algorithm: KtJet e+e- kt algorithm" ;
 
   80     info << 
"Algorithm: KtJet (long.inv.) with R = " << ktR ;
 
   84   for (
int i = 0; i < repeat ; i++) {
 
   86     KtJet::KtEvent ev(jets,type,angle,recom,ktR);
 
   89     int nparticles = jets.size();
 
   90     cout << 
"Number of particles = "<< nparticles << endl;
 
   91     cout << info.str() << endl;
 
   97       std::vector<KtJet::KtLorentzVector> jets = ev.getJetsPt();
 
  100       std::vector<KtJet::KtLorentzVector>::const_iterator itr = jets.begin();
 
  101       for( ; itr != jets.end() ; ++itr) {
 
  102         std::cout << 
"Jets Pt2: " << pow2((*itr).perp()) << std::endl; 
 
  108       std::vector<KtJet::KtLorentzVector> jets = ev.getJetsPt();
 
  111       for (
size_t j = 0; j < jets.size(); j++) {
 
  112         if (jets[j].perp() < inclkt) {
break;}
 
  113         double phi = jets[j].phi();
 
  114         if (phi < 0.0) {phi += fastjet::twopi;}
 
  115         printf(
"%5u %15.8f %15.8f %15.8f\n",j,jets[j].rapidity(),phi,jets[j].perp());
 
  121       vector<KtJet::KtLorentzVector> jets = ev.getJetsPt();
 
  122       cout << 
"Printing "<<excln<<
" exclusive jets\n";
 
  123       for (
size_t j = 0; j < jets.size(); j++) {
 
  124         double phi = jets[j].phi();
 
  125         if (phi < 0) phi += fastjet::twopi;
 
  126         printf(
"%5u %15.8f %15.8f %15.8f\n",j,
 
  127                jets[j].rapidity(),phi,jets[j].perp());
 
  133       vector<KtJet::KtLorentzVector> jets = ev.getJetsPt();
 
  134       cout << 
"Printing exclusive jets for d = "<<excld<<
"\n";
 
  135       for (
size_t j = 0; j < jets.size(); j++) {
 
  136         double phi = jets[j].phi();
 
  137         if (phi < 0) phi += fastjet::twopi;
 
  138         printf(
"%5u %15.8f %15.8f %15.8f\n",j,
 
  139                jets[j].rapidity(),phi,jets[j].perp());
 
  144       for (
int i = nparticles-1; i > 0; i--) {
 
  145         printf(
"d for n = %4d -> %4d is %14.5e\n", i+1, i, ev.getDMerge(i));
 
int main()
an example program showing how to use fastjet