00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 #ifndef ATLFAST_CLUSTER_H
00037 #define ATLFAST_CLUSTER_H
00038
00039
00040 #include "CLHEP/Vector/LorentzVector.h"
00041 #include "AtlfastEvent/ICluster.h"
00042
00043
00044
00045
00046
00047 #ifndef ATLFAST_AODNAVIGATIONIMP_H
00048 #include "AtlfastEvent/AODNavigationImp.h"
00049 #endif
00050
00051
00052
00053
00054
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
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
00103 virtual void accept(IAOOvisitor* iaPtr) const;
00104 virtual void print(const std::string& coor, std::string t="")const;
00105
00106
00107 virtual void fillToken(INavigationToken&) const;
00108 virtual void fillToken(INavigationToken&, const boost::any&) const;
00109
00110 };
00112
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 }
00127 #endif
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139