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 "AtlfastCode/CellCollection.h"
00030 #include "AtlfastCode/ClusterCollection.h"
00031 
00032 #include "AtlfastCode/KinematicHelper.h"
00033 #include "AtlfastCode/IClusterStrategy.h"
00034 
00035 class MsgStream;
00036 
00037 //*************************************
00038 //Default parameters for this algorithm
00039 // (descriptions in class declaration)
00040 //*************************************
00041 
00042 //***************************************************************
00043 //                 ClusterConeStrategy class declaration
00044 //****************************************************************
00045 
00046 namespace Atlfast {
00047   class Cell;
00048   class Cluster;
00049   typedef std::vector<Cell*>                       localCellCollection ;
00050   typedef localCellCollection::iterator            localCellIterator ;
00062   class ClusterConeStrategy:  public IClusterStrategy {
00063   public:
00064    
00065     
00066     ClusterConeStrategy(
00067                         double rConeBarrel,
00068                         double rConeForward,
00069                         double minInitiatorET, 
00070                         double minClusterET,
00071                         bool masslessJets
00072                         ):
00073       m_rConeBarrel(rConeBarrel),
00074       m_rConeForward(rConeForward),
00075       m_minInitiatorET(minInitiatorET), 
00076       m_minClusterET(minClusterET),
00077       m_masslessJets(masslessJets){}
00078     
00079     virtual void makeClusters(
00080                               MsgStream& log, 
00081                               std::vector<Cell*> storedCells,
00082                               CellCollection* unusedCells,
00083                               ClusterCollection* clusters) const;
00084  
00085   private:
00086     
00087     //------------------------------------
00088     // Types used internally by this class
00089     //------------------------------------
00090     // For local mutable copies of collections needed for algorithm operation
00091     std::list<Cell*> m_cells;       
00092         
00093     
00094     
00095     //---------------------------------------------------
00096     // Parameters of this algorithm 
00097     //---------------------------------------------------
00098     
00100     double        m_rConeBarrel;   
00102     double        m_rConeForward;   
00103     
00105     double        m_minInitiatorET ;
00106     
00108     double        m_minClusterET;     
00109     bool m_masslessJets;
00110   
00111     //-------------------------------
00112     // Objects used by this class to do its job
00113     //-------------------------------
00114     
00116     KinematicHelper m_kinehelp ; 
00117     
00119     /*#  Cell lnkCell; */
00120     //-------------------------------
00121     // Private methods
00122     //-------------------------------
00123     
00125     double rCone() const;
00126     //-------------------------------
00127     // Private helper class
00128     // For accumulating weighted kinematic quantities
00129     //-------------------------------
00130     
00133     class PreCluster {
00134       
00135     private:
00136       
00137       double m_eT_total ;
00138       double m_eta_weighted ;
00139       bool m_masslessJets;
00140       HepLorentzVector m_momentum_sum ;
00141     public:
00142       
00143       // Construct
00144       PreCluster( localCellIterator start, localCellIterator end, bool masslessJets )  ;
00145       
00147       double eT()  ;
00149       double eta() ;
00151       double phi() ;
00152       
00154       operator HepLorentzVector () ;
00155     };
00156     
00157     
00162     Cluster * lnkCluster;
00163   };
00164   
00165 } // end of namespace bracket
00166 
00167 
00168 #endif
00169 
00170 
00171 
00172 
00173 

Generated on Thu Feb 21 14:30:45 2002 for Atlfast by doxygen1.2.13.1 written by Dimitri van Heesch, © 1997-2001