/Home/aooliver/hepsoft/lcdroot/LCDRootApps/PhUtil/inc/LCDJetFinder.h

Go to the documentation of this file.
00001 // ----------------------------------------------------------------------------
00002 // $Id: LCDJetFinder.h,v 1.3 2001/10/08 17:51:45 toshi Exp $
00003 // ----------------------------------------------------------------------------
00004 
00005 #ifndef LCDJETFINDER_H
00006 #define LCDJETFINDER_H
00007 
00008 // Virtual JetFinder base class
00009 //
00010 // V0.0 Mar 01/99 : R. Shanks  Derived from Java routines written by G.Bower. 
00011 // V1.0 May 15/00 : M.Iwasaki  Make necessary modifications, and change classes
00012 //                             Merge JadeEJetFinder, JadeJetFinder, 
00013 //                             DurhamJetfinder, and JetFinder
00014 //                             into one JetFinder.
00015 // V1.1 Aug 15 00 : M.Iwasaki  Change calcinvmass. Remove DurhamJetFinder, 
00016 //                             JadeJetFinder, and JadeEJetFinder classes.
00017 //                             Add SetDURHAM, SetJADE, or SetJADEE. 
00018 // V1.2 Apr 17 01 : T.Abe      Use TClonesArray
00019 
00020 #include "TLorentzVector.h"
00021 #include "TVector3.h"
00022 #include "TObjArray.h"
00023 #include "TClonesArray.h"
00024 #include "TArrayI.h"
00025 #include "TClass.h"
00026 
00027 //_____________________________________________________________________
00028 //  ----------------------
00029 //   JetFinder Base Class
00030 //  ----------------------
00031 //
00032 class LCDJetFinder : public TObject {
00033   //class LCDJetFinder {
00034 public:
00035   LCDJetFinder();
00036   LCDJetFinder(Double_t ycut);
00037   ~LCDJetFinder();
00038   
00039   void SetPartList(TObjArray* e);    
00040   // Input the particle 4(3)-vector list
00041   // e: 4-vector  TLorentzVector ..(px,py,pz,E) or
00042   //    3-vector  TVector3       ..(px,py,pz) 
00043   // If you input TVector3, the energy of particle
00044   // will be E = sqrt(px**2 + py**2 + pz**2) 
00045 
00046   void SetYCut(Double_t ycut);
00047   // Set the YCut value
00048 
00049   void doFindJets();
00050   void doFindJets(Double_t ycut);
00051   // Clustering the particles into Jets  
00052     
00053   Int_t doFindJets(Int_t njet);
00054   // Clustering the particles into Jets to force to make given # of jets.
00055     
00056   Int_t njets(){ return m_njets; };
00057   // The number of jets found.  
00058 
00059   TLorentzVector* jet4vec(Int_t index);
00060   // Return the 4 vector of a jet (particle sum).
00061   // index: The index of the jet of interest  
00062 
00063   Int_t nParticlesPerJet(Int_t index);
00064   // Number of particles in a particular jet
00065   // index: The index of the jet of interest  
00066 
00067   TArrayI GetPartIndex(){ return m_ipart_jet_assoc; };
00068   Int_t   GetPartIndexAt(Int_t a){ return m_ipart_jet_assoc[a]; };
00069   TArrayI* GetPartIndexPtr(){ return &m_ipart_jet_assoc; };
00070   // Return the particle index array.
00071   // m_ipart_jet_assoc[i] = j means 
00072   // particle i is placed in jet j.  
00073 
00074   Double_t GetYmin() { return m_ymin; }
00075 
00076   Int_t fewestParts(){ return m_ifewest_parts; };
00077   // minimum number of particles to make a jet.  
00078 
00079   Double_t GetYCut() { return m_dycut; };
00080   // Obtain the current ycut
00081   
00082   void SetDURHAM(); // Select DURHAM algorithm
00083   void SetJADE();   //        JADE   algorithm
00084   void SetJADEE();  //        JADE E algorithm
00085 
00086   Double_t calcinvmass(const TLorentzVector &jet1, 
00087                        const TLorentzVector &jet2);
00088 
00089 private:
00090   Int_t m_njets;
00091   // Number of jets found  
00092 
00093   Double_t m_ymin;
00094   // minimum value of ycut.
00095 
00096   TClonesArray* m_jet;
00097   // m_jet[i] is the 4 vector sum of all the particles in jet i.  
00098 
00099   TArrayI m_ipart_jet_assoc; 
00100   // m_ipart_jet_assoc[i] = j means particle i was placed in jet j.  
00101 
00102   TArrayI m_inparts_per_jet; 
00103   // m_inparts_per_jet[i] = j means jet i has j particles in it.  
00104 
00105   Int_t m_ifewest_parts;
00106   // m_ifewest_parts is number of particles in the jet 
00107   // with the fewest particles.  
00108 
00109   Double_t m_evis;
00110   Double_t m_dycut;  
00111   Int_t m_algorithm; // Algorithm used in Jet clustering
00112 
00113   const static Int_t UNASSOC;
00114   const static Int_t DURHAM;
00115   const static Int_t JADE;  
00116   const static Int_t JADEE;
00117 
00118   //protected:  
00119   TObjArray*    m_4vec;
00120   TClonesArray* m_part;
00121 
00122 public:
00123   ClassDef(LCDJetFinder,3) // Jetfinder base class          
00124 };       
00125 
00126 
00127 #endif

Generated on Tue Jul 18 18:33:57 2006 for LCDROOT by  doxygen 1.4.6