Main Page   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members   File Members  

ClusterConeStrategy.h

Go to the documentation of this file.
00001 // ================================================
00002 // ClusterConeStrategy class description
00003 // ================================================
00004 //
00005 // THIS TEXT TO BE REPLACED BY ATLAS STANDARD FORMAT
00006 //
00007 //
00008 // Namespace Atlfast::
00009 //
00010 // class: ClusterConeStrategy
00011 //
00012 // Authors: P.Clarke, H.Phillips, E.Richter-Was, P.Sherwood, R.Steward
00013 //
00014 // ................................................................
00015 //
00016 
00017 
00018 #ifndef ATLFAST_CLUSTERCONESTRATEGY_H
00019 #define ATLFAST_CLUSTERCONESTRATEGY_H
00020 
00021 // STL
00022 #include <vector>
00023 #include <list>
00024 
00025 // Other
00026 #include "CLHEP/Vector/LorentzVector.h"
00027 
00028 // Atlfast
00029 #include "AtlfastEvent/CollectionDefs.h"
00030 
00031 #include "AtlfastUtils/KinematicHelper.h"
00032 #include "AtlfastUtils/IClusterStrategy.h"
00033 
00034 class MsgStream;
00035 
00036 //*************************************
00037 //Default parameters for this algorithm
00038 // (descriptions in class declaration)
00039 //*************************************
00040 
00041 //***************************************************************
00042 //                 ClusterConeStrategy class declaration
00043 //****************************************************************
00044 
00045 namespace Atlfast {
00046   using ::HepLorentzVector;
00047   //  class Cell;
00048   class IKinematic;
00049   class Cluster;
00050   typedef std::vector<IKinematic*>           localCellCollection ;
00051   typedef localCellCollection::iterator      localCellIterator ;
00063   class ClusterConeStrategy:  public IClusterStrategy {
00064   public:
00065    
00066     
00067     ClusterConeStrategy(
00068                         double rConeBarrel,
00069                         double rConeForward,
00070                         double minInitiatorET, 
00071                         double minClusterET,
00072                         bool masslessJets
00073                         ):
00074       m_rConeBarrel(rConeBarrel),
00075       m_rConeForward(rConeForward),
00076       m_minInitiatorET(minInitiatorET), 
00077       m_minClusterET(minClusterET),
00078       m_masslessJets(masslessJets){}
00079     
00080     virtual void makeClusters(
00081                               MsgStream&                      log, 
00082                               const std::vector<IKinematic*>& storedCells,
00083                               std::vector<IKinematic*>&       unusedCells,
00084                               ClusterCollection*              clusters
00085                               ) const;
00086  
00087   private:
00088     
00089     //------------------------------------
00090     // Types used internally by this class
00091     //------------------------------------
00092     // For local mutable copies of collections needed for algorithm operation
00093     //    std::list<Cell*> m_cells;       
00094         
00095     
00096     
00097     //---------------------------------------------------
00098     // Parameters of this algorithm 
00099     //---------------------------------------------------
00100     
00102     double        m_rConeBarrel;   
00104     double        m_rConeForward;   
00105     
00107     double        m_minInitiatorET ;
00108     
00110     double        m_minClusterET;     
00111     bool m_masslessJets;
00112   
00113     //-------------------------------
00114     // Objects used by this class to do its job
00115     //-------------------------------
00116     
00118     KinematicHelper m_kinehelp ; 
00119     
00121     /*#  Cell lnkCell; */
00122     //-------------------------------
00123     // Private methods
00124     //-------------------------------
00125     
00127     double rCone() const;
00128     //-------------------------------
00129     // Private helper class
00130     // For accumulating weighted kinematic quantities
00131     //-------------------------------
00132     
00135     class PreCluster {
00136       
00137     private:
00138       
00139       double m_eT_total ;
00140       double m_eta_weighted ;
00141       bool m_masslessJets;
00142       HepLorentzVector m_momentum_sum ;
00143     public:
00144       
00145       // Construct
00146       PreCluster( localCellIterator start, localCellIterator end, bool masslessJets )  ;
00147       
00149       double eT()  ;
00151       double eta() ;
00153       double phi() ;
00154       
00156       operator HepLorentzVector () ;
00157     };
00158     
00159     
00164     Cluster * lnkCluster;
00165   };
00166   
00167 } // end of namespace bracket
00168 
00169 
00170 #endif
00171 
00172 
00173 
00174 
00175 

Generated on Tue Mar 18 11:18:23 2003 for AtlfastAlgs by doxygen1.3-rc1