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                         ):
00072       m_rConeBarrel(rConeBarrel),
00073       m_rConeForward(rConeForward),
00074       m_minInitiatorET(minInitiatorET), 
00075       m_minClusterET(minClusterET){}
00076     
00077     virtual void makeClusters(
00078                               MsgStream& log, 
00079                               std::vector<Cell*> storedCells,
00080                               CellCollection* unusedCells,
00081                               ClusterCollection* clusters) const;
00082  
00083   private:
00084     
00085     //------------------------------------
00086     // Types used internally by this class
00087     //------------------------------------
00088     // For local mutable copies of collections needed for algorithm operation
00089     std::list<Cell*> m_cells;       
00090     
00091     
00092     
00093     //---------------------------------------------------
00094     // Parameters of this algorithm 
00095     //---------------------------------------------------
00096     
00098     double        m_rConeBarrel;   
00100     double        m_rConeForward;   
00101     
00103     double        m_minInitiatorET ;
00104     
00106     double        m_minClusterET;     
00107     
00108     //-------------------------------
00109     // Objects used by this class to do its job
00110     //-------------------------------
00111     
00113     KinematicHelper m_kinehelp ; 
00114     
00116     /*#  Cell lnkCell; */
00117     //-------------------------------
00118     // Private methods
00119     //-------------------------------
00120     
00122     double rCone() const;
00123     //-------------------------------
00124     // Private helper class
00125     // For accumulating weighted kinematic quantities
00126     //-------------------------------
00127     
00130     class PreCluster {
00131       
00132     private:
00133       
00134       double m_eT_total ;
00135       double m_eta_weighted ;
00136       HepLorentzVector m_momentum_sum ;
00137       
00138     public:
00139       
00140       // Construct
00141       PreCluster( localCellIterator start, localCellIterator end )  ;
00142       
00144       double eT()  ;
00146       double eta() ;
00148       double phi() ;
00149       
00151       operator HepLorentzVector () ;
00152     };
00153     
00154     
00159     Cluster * lnkCluster;
00160   };
00161   
00162 } // end of namespace bracket
00163 
00164 
00165 #endif
00166 
00167 
00168 
00169 

Generated on Mon Feb 4 15:54:23 2002 for Atlfast by doxygen1.2.13.1 written by Dimitri van Heesch, © 1997-2001