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__
00019 #define __Atlfast_ClusterConeStrategy__
00020 
00021 // STL
00022 #include <string>
00023 #include <vector>
00024 #include <list>
00025 
00026 // Gaudi 
00027 #include "GaudiKernel/MsgStream.h"
00028 // Other
00029 #include "CLHEP/Vector/LorentzVector.h"
00030 #include "HepMC/GenParticle.h"
00031 
00032 // Atlfast
00033 #include "AtlfastCode/ReconstructedParticle.h"
00034 #include "AtlfastCode/ReconstructedParticleCollection.h"
00035 #include "AtlfastCode/Cell.h"
00036 #include "AtlfastCode/CellCollection.h"
00037 #include "AtlfastCode/Cluster.h"
00038 #include "AtlfastCode/ClusterCollection.h"
00039 
00040 #include "AtlfastCode/IKinematic.h"
00041 #include "AtlfastCode/KinematicHelper.h"
00042 #include "AtlfastCode/IClusterStrategy.h"
00043 
00044 
00045 //*************************************
00046 //Default parameters for this algorithm
00047 // (descriptions in class declaration)
00048 //*************************************
00049 
00050 //***************************************************************
00051 //                 ClusterConeStrategy class declaration
00052 //****************************************************************
00053 
00054 namespace Atlfast {
00055   typedef std::vector<Cell*>                       localCellCollection ;
00056   typedef localCellCollection::iterator            localCellIterator ;
00068   class ClusterConeStrategy:  public IClusterStrategy {
00069   public:
00070    
00071     
00072     ClusterConeStrategy(
00073                         double rConeBarrel,
00074                         double rConeForward,
00075                         double minInitiatorET, 
00076                         double minClusterET
00077                         ):
00078       m_rConeBarrel(rConeBarrel),
00079       m_rConeForward(rConeForward),
00080       m_minInitiatorET(minInitiatorET), 
00081       m_minClusterET(minClusterET){}
00082     
00083     virtual void makeClusters(
00084                               MsgStream& log, 
00085                               std::vector<Cell*> storedCells,
00086                               CellCollection* unusedCells,
00087                               ClusterCollection* clusters) const;
00088  
00089   private:
00090     
00091     //------------------------------------
00092     // Types used internally by this class
00093     //------------------------------------
00094     // For local mutable copies of collections needed for algorithm operation
00095     std::list<Cell*> m_cells;       
00096     
00097     
00098     
00099     //---------------------------------------------------
00100     // Parameters of this algorithm 
00101     //---------------------------------------------------
00102     
00104     double        m_rConeBarrel;   
00106     double        m_rConeForward;   
00107     
00109     double        m_minInitiatorET ;
00110     
00112     double        m_minClusterET;     
00113     
00114     //-------------------------------
00115     // Objects used by this class to do its job
00116     //-------------------------------
00117     
00119     KinematicHelper m_kinehelp ; 
00120     
00122     /*#  Cell lnkCell; */
00123     //-------------------------------
00124     // Private methods
00125     //-------------------------------
00126     
00128     double rCone() const;
00129     //-------------------------------
00130     // Private helper class
00131     // For accumulating weighted kinematic quantities
00132     //-------------------------------
00133     
00136     class PreCluster {
00137       
00138     private:
00139       
00140       double m_eT_total ;
00141       double m_eta_weighted ;
00142       HepLorentzVector m_momentum_sum ;
00143       
00144     public:
00145       
00146       // Construct
00147       PreCluster( localCellIterator start, localCellIterator end )  ;
00148       
00150       double eT()  ;
00152       double eta() ;
00154       double phi() ;
00155       
00157       operator HepLorentzVector () ;
00158     };
00159     
00160     
00165     Cluster * lnkCluster;
00166   };
00167   
00168 } // end of namespace bracket
00169 
00170 
00171 #endif
00172 
00173 
00174 
00175 

Generated on Wed Jan 23 12:58:31 2002 for Atlfast by doxygen1.2.13.1 written by Dimitri van Heesch, © 1997-2001