28#include "LorentzVector.hh" 
   33#include "fastjet/internal/base.hh" 
   35FASTJET_BEGIN_NAMESPACE
 
   39class Jet : 
public LorentzVector {
 
   42  typedef std::list<Jet*> constit_vect_t;
 
   43  typedef std::vector<Jet*> jet_list_t;
 
   45  Jet(): LorentzVector(0,0,0,0) {}
 
   46  Jet(
double p1, 
double p2, 
double p3, 
double p0, 
int index_in=0): LorentzVector(p1,p2,p3,p0), m_index(index_in){}
 
   47  Jet(LorentzVector v): LorentzVector(v)  {m_index = 0;}
 
   58  int getConstituentNum(){
return m_constituents.size();}
 
   59  constit_vect_t::iterator firstConstituent(){ 
return m_constituents.begin();};
 
   60  constit_vect_t::iterator lastConstituent(){ 
return m_constituents.end();};
 
   65  void addConstituent(Jet* jet) {m_constituents.push_back(jet);this->add(*jet);};
 
   66  void addConstituent(constit_vect_t::iterator first, constit_vect_t::iterator last);
 
   67  void removeConstituent(Jet* jet) {m_constituents.remove(jet);this->subtract(*jet);};
 
   69  void addConstituent_notMoment(Jet* jet){m_constituents.push_back(jet);}
 
   74  int index()
 const {
return m_index;}  
 
   75  void set_index(
int i){m_index= i;}
 
   79  LorentzVector hlv() {
return *
this;}
 
   86  constit_vect_t m_constituents;
 
   92void find_jet_in_list(Jet* j);
 
   97  bool operator()(Jet* j1, Jet* j2){
 
   99    if(fabs( j1->et() - j2->et())<0.001 ) 
return 0;
 
  100    else return j1->et() > j2->et();
 
  107  bool operator()(Jet* j1, Jet* j2){
 
  108    return (j1->pt() > j2->pt());
 
  114  bool operator()(Jet* j1, Jet* j2){
 
  115    return (j1->eta() > j2->eta());
 
  121  bool operator()(Jet* j1, Jet* j2){
 
  122    return (j1->e() > j2->e());
 
  129inline void sort_jet_list(Jet::jet_list_t &list){
 
  130  std::stable_sort(list.begin(),list.end(), T());
 
  132inline void sort_list_et(Jet::jet_list_t &list){
 
  134  std::stable_sort(list.begin(),list.end(), JetSorter_Et());
 
  136inline void sort_list_pt(Jet::jet_list_t &list){
 
  137  std::stable_sort(list.begin(),list.end(),JetSorter_Pt());
 
  140Jet* jet_from_overlap(Jet* j1, Jet* j2);