fastjet 2.4.5
main.C
Go to the documentation of this file.
00001 #include <list>
00002 #include "ILConeAlgorithm.hpp"
00003 #include "HepEntity.h"
00004 
00005 #include <fastjet/internal/base.hh>
00006 
00007 FASTJET_BEGIN_NAMESPACE
00008 
00009 namespace d0{
00010 
00011 using namespace std;
00012 
00013 int main() {
00014 
00015   
00016   HepEntity el;
00017   list<const HepEntity*> *ensemble = new list<const HepEntity*>;
00018   //list<const HepEntity*> ensemble;
00019 
00020   //fill with E, px, py, pz
00021   el.Fill(100., 25., 25., 25., 0);
00022   ensemble->push_back(new HepEntity(el));
00023   el.Fill(105., 20., 30., 30., 1);
00024   ensemble->push_back(new HepEntity(el));
00025   el.Fill(60., 20., 20., 20., 2);
00026   ensemble->push_back(new HepEntity(el));
00027   el.Fill(95., 65., 10., 20., 3);
00028   ensemble->push_back(new HepEntity(el));
00029   
00030   el.Fill(110., 25., -25., -25., 4);
00031   ensemble->push_back(new HepEntity(el));
00032   el.Fill(100., 23., -25., -25., 5);
00033   ensemble->push_back(new HepEntity(el));
00034   el.Fill(101., 25., -20., -25., 6);
00035   ensemble->push_back(new HepEntity(el));
00036   el.Fill(102., 25., -25., -23., 7);
00037   ensemble->push_back(new HepEntity(el));
00038   
00039 
00040   
00041   cout << "list->size()=" << ensemble->size() << endl;
00042   int i=1;
00043   for (list<const HepEntity*>::iterator it = ensemble->begin(); it != ensemble->end(); ++it) {
00044     cout << "4-vector " << i++ << " : E=" << (*it)->E << " pT=" << (*it)->pT() << " y=" << (*it)->y() << " phi=" << (*it)->phi() << endl; 
00045     cout << (*it) << endl;
00046   }
00047 
00048   
00049   float cone_radius = 0.5;
00050   float min_jet_Et = 8.0;
00051   float split_ratio = 0.5;
00052 
00053   //the parameters below have been found to be set to the values given below 
00054   //in the original implementation, shouldn't be altered
00055   float far_ratio=0.5;
00056   float Et_min_ratio=0.5;
00057   bool kill_duplicate=true;
00058   float duplicate_dR=0.005; 
00059   float duplicate_dPT=0.01; 
00060   float search_factor=1.0; 
00061   float pT_min_leading_protojet=0.; 
00062   float pT_min_second_protojet=0.;
00063   int merge_max=10000; 
00064   float pT_min_nomerge=0.;
00065 
00066   ILConeAlgorithm<HepEntity> 
00067     ilegac(cone_radius, min_jet_Et, split_ratio,
00068            far_ratio, Et_min_ratio, kill_duplicate, duplicate_dR, 
00069            duplicate_dPT, search_factor, pT_min_leading_protojet, 
00070            pT_min_second_protojet, merge_max, pT_min_nomerge);
00071  
00072   float Item_ET_Threshold = 0.;
00073   float Zvertex = 0.;
00074 
00075   float* Item_ET_Threshold_ptr = &Item_ET_Threshold;
00076 
00077 
00078   list<HepEntity> jets;
00079   ilegac.makeClusters(jets, *ensemble, Item_ET_Threshold);
00080 
00081 
00082   list<HepEntity>::iterator it;
00083   cout << "Number of jets = " << jets.size() << endl;
00084   for (it=jets.begin(); it!=jets.end(); ++it) {
00085     cout << "jet: E=" << (*it).E << " pT=" << (*it).pT() << " y=" << (*it).y() << " phi=" << (*it).phi() << endl; 
00086   }
00087 
00088   //delete elements of the ensemble particle list
00089   //relevant to prevent memory leakage when running over many events
00090   for (list<const HepEntity*>::iterator it = ensemble->begin(); it != ensemble->end(); ++it) {
00091     delete *it;
00092   }
00093   delete ensemble;
00094 
00095   return 0;
00096 
00097 }
00098 
00099 }  // namespace d0
00100 
00101 
00102 FASTJET_END_NAMESPACE
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines