00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef ATLFAST_SHAREDCONESTRATEGY_H
00019 #define ATLFAST_SHAREDCONESTRATEGY_H
00020
00021
00022 #include <vector>
00023 #include <list>
00024 #include <map>
00025
00026
00027 #include "CLHEP/Vector/LorentzVector.h"
00028
00029
00030 #ifndef ATLFAST_COLLECTIONDEFS_H
00031 #include "AtlfastEvent/CollectionDefs.h"
00032 #endif
00033
00034 #include "AtlfastUtils/KinematicHelper.h"
00035 #include "AtlfastUtils/IClusterStrategy.h"
00036
00037 class MsgStream;
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048 namespace Atlfast {
00049 class Cell;
00050 class Cluster;
00051 class IKinematic;
00063 class SharedConeStrategy: public IClusterStrategy {
00064 public:
00065
00066
00067 SharedConeStrategy(
00068 double rConeBarrel,
00069 double rConeForward,
00070 double minInitiatorET,
00071 double minClusterET,
00072 double barrelForwardEta
00073 );
00074
00075 virtual ~SharedConeStrategy();
00076 virtual void makeClusters(
00077 MsgStream& log,
00078 const localCellCollection& storedCells,
00079 localCellCollection& unusedCells,
00080 ClusterCollection* clusters) const;
00081
00082 private:
00083
00084 void CellAssociatedClusterEnergy(std::vector<const Cell*>::const_iterator,
00085 ClusterCollection::iterator,
00086 ClusterCollection::iterator,
00087 std::map<Cluster*,double>&) const;
00088
00090 IClusterStrategy* m_coneStrategy;
00091
00092 double m_rConeBarrel;
00093 double m_rConeForward;
00094 double m_minClusterET;
00095 double m_barrelForwardEta;
00096
00097 class GetBackCells {
00098 private:
00099 localCellCollection& m_unusedCells;
00100 public:
00101 GetBackCells(localCellCollection& unusedCells) : m_unusedCells(unusedCells){}
00102 ~GetBackCells(){}
00103 void operator() ( IAssociationManager* );
00104 void operator() ( IAssociationManager& a){ return this->operator() ( &a) ; }
00105 };
00106
00107 };
00108
00109
00110
00111 }
00112
00113
00114 #endif
00115
00116
00117
00118
00119