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/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
00039
00040
00041
00042
00043
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
00090
00091
00092 std::list<Cell*> m_cells;
00093
00094
00095
00096
00097
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
00114
00115
00117 KinematicHelper m_kinehelp ;
00118
00120
00121
00122
00123
00124
00126 double rCone() const;
00127
00128
00129
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
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 }
00167
00168
00169 #endif
00170
00171
00172
00173
00174