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 "AtlfastCode/IKinematic.h"
00042
00043
00044 #include "AtlfastCode/AssociationManager.h"
00045
00046
00047 #include "GaudiKernel/ContainedObject.h"
00048
00049
00050
00051
00052 static const CLID CLID_ATLFAST_CLUSTER=2302 ;
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062 namespace Atlfast {
00070 class Cluster :
00071 public IKinematic,
00072 public ContainedObject,
00073 public AssociationManager
00074 {
00075
00076 private:
00077
00078
00079 HepLorentzVector m_momentum ;
00080
00082
00083
00084
00085
00086
00087 public:
00088
00089
00090
00091
00097 template <class CellIterator>
00098 Cluster( const HepLorentzVector& vec,
00099 CellIterator first,
00100 CellIterator last ) :
00101 IKinematic(),
00102 ContainedObject(),
00103 AssociationManager(),
00104 m_momentum(vec)
00105 {
00106
00107
00108 for ( CellIterator i=first; i != last; ++i )
00109 {
00110 this->associate(*i);
00111 }
00112 }
00113
00115 Cluster( const Cluster& src ) :
00116 IKinematic(),
00117 ContainedObject(),
00118 AssociationManager( src ),
00119 m_momentum(src.m_momentum)
00120 {}
00121
00122
00124 Cluster() :
00125 IKinematic(),
00126 ContainedObject(),
00127 AssociationManager(),
00128 m_momentum(HepLorentzVector(0.0,0.0,0.0,0.0))
00129 {}
00130
00131 virtual ~Cluster() {}
00132
00133
00134
00135
00136
00138 virtual HepLorentzVector momentum() const {return m_momentum; }
00140 virtual double eta() const { return m_momentum.pseudoRapidity() ;}
00142 virtual double phi() const { return m_momentum.phi() ; }
00144 virtual double pT() const { return m_momentum.perp() ;}
00145
00147 virtual double eT() const {
00148 return m_momentum.e()*m_momentum.perp()/m_momentum.rho() ;}
00150 virtual double mT() const { return m_momentum.mt(); }
00151
00152
00153
00154
00155 static const CLID& classID() { return CLID_ATLFAST_CLUSTER; }
00156 virtual const CLID& clID() const { return CLID_ATLFAST_CLUSTER; }
00157
00161 virtual StreamBuffer& serialize(StreamBuffer& s);
00165 virtual StreamBuffer& serialize(StreamBuffer& s) const;
00166
00167 };
00168
00169
00170
00171
00172
00173
00174
00175
00176
00177
00178
00179
00180
00181
00182
00183 }
00184
00185
00186 #endif
00187
00188
00189
00190
00191
00192
00193
00194
00195
00196
00197
00198