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/CellCollection.h"
00030 #include "AtlfastEvent/ClusterCollection.h"
00031 
00032 #include "AtlfastUtils/KinematicHelper.h"
00033 #include "AtlfastUtils/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   using ::HepLorentzVector;
00048   class Cell;
00049   class Cluster;
00050   typedef std::vector<Cell*>                       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                               std::vector<Cell*> storedCells,
00083                               CellCollection* unusedCells,
00084                               ClusterCollection* clusters) const;
00085  
00086   private:
00087     
00088     //------------------------------------
00089     // Types used internally by this class
00090     //------------------------------------
00091     // For local mutable copies of collections needed for algorithm operation
00092     std::list<Cell*> m_cells;       
00093         
00094     
00095     
00096     //---------------------------------------------------
00097     // Parameters of this algorithm 
00098     //---------------------------------------------------
00099     
00101     double        m_rConeBarrel;   
00103     double        m_rConeForward;   
00104     
00106     double        m_minInitiatorET ;
00107     
00109     double        m_minClusterET;     
00110     bool m_masslessJets;
00111   
00112     //-------------------------------
00113     // Objects used by this class to do its job
00114     //-------------------------------
00115     
00117     KinematicHelper m_kinehelp ; 
00118     
00120     /*#  Cell lnkCell; */
00121     //-------------------------------
00122     // Private methods
00123     //-------------------------------
00124     
00126     double rCone() const;
00127     //-------------------------------
00128     // Private helper class
00129     // For accumulating weighted kinematic quantities
00130     //-------------------------------
00131     
00134     class PreCluster {
00135       
00136     private:
00137       
00138       double m_eT_total ;
00139       double m_eta_weighted ;
00140       bool m_masslessJets;
00141       HepLorentzVector m_momentum_sum ;
00142     public:
00143       
00144       // Construct
00145       PreCluster( localCellIterator start, localCellIterator end, bool masslessJets )  ;
00146       
00148       double eT()  ;
00150       double eta() ;
00152       double phi() ;
00153       
00155       operator HepLorentzVector () ;
00156     };
00157     
00158     
00163     Cluster * lnkCluster;
00164   };
00165   
00166 } // end of namespace bracket
00167 
00168 
00169 #endif
00170 
00171 
00172 
00173 
00174 

Generated on Wed May 1 14:11:31 2002 for AtlfastAlgs by doxygen1.2.13.1 written by Dimitri van Heesch, © 1997-2001