Cluster.h

Go to the documentation of this file.
00001 // ================================================
00002 // Cluster class description
00003 // ================================================
00004 //
00005 // THIS TEXT TO BE REPLACED BY ATLAS STANDARD FORMAT
00006 //
00007 // Namespace Atlfast::
00008 //
00009 // class: Cluster
00010 //
00011 // Authors: P.Clarke, H.Phillips, E.Richter-Was, P.Sherwood, R.Steward
00012 //
00013 // Description: 
00014 //
00015 //   Class to represent Clusters constructed from calorimeter Cells
00016 //
00017 //   It implements an "IKinematic" interface which is
00018 //   designed to standardise kinematic attribute query method names.
00019 //
00020 //   Ongoing points during development:
00021 //
00022 //   1 It was developed during the first phase of ATLFAST++ re-engineering
00023 //     and inclusion in the ATLAS (Gaudi/Athena) analysis framework. 
00024 //     It is therefore one of the first implementations of such analysis classes,
00025 //     and as such should be seen as a prototype which may be superceeded
00026 //     in concept.
00027 // 
00028 //   3 At the present time we have not solved the association/relationship
00029 //     to other entities. This is a deep problem which is wider than
00030 //     Atlfast which is under study.
00031 //  
00032 //
00033 //..................................................
00034 
00035 
00036 #ifndef ATLFAST_CLUSTER_H
00037 #define ATLFAST_CLUSTER_H
00038 
00039 // Kinematic classes.
00040 #include "CLHEP/Vector/LorentzVector.h"
00041 #include "AtlfastEvent/ICluster.h"
00042 
00043 //#ifndef ATLFAST_IKINEMATICBASE_H
00044 //#include "AtlfastEvent/IKinematicBase.h"
00045 //#endif
00046 
00047 #ifndef ATLFAST_AODNAVIGATIONIMP_H
00048 #include "AtlfastEvent/AODNavigationImp.h"
00049 #endif
00050 
00051 //******************************************
00052 //              Cluster class
00053 //
00054 // See description at head of this file 
00055 //******************************************
00056 
00057 
00058 namespace boost{class any;}
00059 class INavigationToken;
00060 
00061 namespace Atlfast {
00062   using ::HepLorentzVector;
00070   class Cluster : 
00071     virtual public ICluster, 
00072     protected AODNavigationImp{
00073       
00074     private:
00075     
00076     // Kinematic information assocated with this cluster  
00077     HepLorentzVector m_momentum ;
00078     
00079     public:
00082     template <class CellIter>
00083       Cluster( const HepLorentzVector& vec, CellIter first, CellIter last  );
00084     Cluster( const Cluster& src );
00085     Cluster& operator=( const Cluster& src );
00086     Cluster();
00087     virtual ~Cluster() {}
00088     
00089     
00092     virtual HepLorentzVector momentum() const;
00093     virtual double  eta()               const;
00094     virtual double  phi()               const;
00095     virtual double  pT()                const;
00096     virtual double  eT()                const;
00097     virtual double  mT()                const;
00098     virtual IKinematic* clone()         const;
00099     //================================
00100     void setMomentum(const HepLorentzVector&);
00101     
00102     //IAOO interface
00103     virtual void accept(IAOOvisitor* iaPtr) const;
00104     virtual void print(const std::string& coor, std::string t="")const;
00105     //AOD Navigation: override inherited NavigableTerminalNode behaviour
00106     // by supplying all IAOO obejects seen as I4Momenta
00107     virtual void fillToken(INavigationToken&) const;
00108     virtual void fillToken(INavigationToken&, const boost::any&) const;
00109     
00110   };
00112   //  inline methods                                //
00114   
00115   template <class CellIter>
00116     inline
00117     Cluster::Cluster( const HepLorentzVector& vec, CellIter first, CellIter last  ): 
00118     ICluster(), AODNavigationImp(), m_momentum(vec){
00119 
00121     IAOO* iaoo = this;
00122     for ( CellIter i=first; i != last; ++i ) {iaoo->associate(*i);}
00123   }
00124 
00125   
00126 } // end of namespace 
00127 #endif
00128 
00129 
00130 
00131 
00132 
00133 
00134 
00135 
00136 
00137 
00138 
00139 

Generated on Fri Sep 21 13:00:08 2007 for AtlfastEvent by  doxygen 1.5.1