00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef ATLFAST_CLUSTERCONESTRATEGY_H
00019 #define ATLFAST_CLUSTERCONESTRATEGY_H
00020
00021
00022 #include <vector>
00023 #include <list>
00024
00025
00026 #include "CLHEP/Vector/LorentzVector.h"
00027
00028
00029 #include "AtlfastEvent/CollectionDefs.h"
00030
00031 #include "AtlfastUtils/KinematicHelper.h"
00032 #include "AtlfastUtils/IClusterStrategy.h"
00033
00034 class MsgStream;
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045 namespace Atlfast {
00046 using ::HepLorentzVector;
00047
00048 class IKinematic;
00049 class Cluster;
00050 typedef std::vector<IKinematic*> 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 const std::vector<IKinematic*>& storedCells,
00083 std::vector<IKinematic*>& unusedCells,
00084 ClusterCollection* clusters
00085 ) const;
00086
00087 private:
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00102 double m_rConeBarrel;
00104 double m_rConeForward;
00105
00107 double m_minInitiatorET ;
00108
00110 double m_minClusterET;
00111 bool m_masslessJets;
00112
00113
00114
00115
00116
00118 KinematicHelper m_kinehelp ;
00119
00121
00122
00123
00124
00125
00127 double rCone() const;
00128
00129
00130
00131
00132
00135 class PreCluster {
00136
00137 private:
00138
00139 double m_eT_total ;
00140 double m_eta_weighted ;
00141 bool m_masslessJets;
00142 HepLorentzVector m_momentum_sum ;
00143 public:
00144
00145
00146 PreCluster( localCellIterator start, localCellIterator end, bool masslessJets ) ;
00147
00149 double eT() ;
00151 double eta() ;
00153 double phi() ;
00154
00156 operator HepLorentzVector () ;
00157 };
00158
00159
00164 Cluster * lnkCluster;
00165 };
00166
00167 }
00168
00169
00170 #endif
00171
00172
00173
00174
00175