00001 #ifndef __StEEmcPointMaker_h__
00002 #define __StEEmcPointMaker_h__
00003
00004 #include "StMaker.h"
00005 #include "TString.h"
00006 #include "StEEmcCluster.h"
00007 #include "StEEmcSmdCluster.h"
00008 #include "StEEmcPoint.h"
00009
00010 #include "StEEmcPointUtils.h"
00011
00012 #include <map>
00013
00014 class StEEmcA2EMaker;
00015 class StEEmcClusterMaker;
00016
00017 class EEmcGeomSimple;
00018 class EEmcSmdMap;
00019 class EEmcSmdGeom;
00020
00021 class StEEmcPointMaker : public StMaker, public StEEmcPointUtils {
00022
00023 public:
00024
00025 StEEmcPointMaker( const Char_t *name );
00026 ~StEEmcPointMaker(){ };
00027
00028 Int_t Init();
00029 Int_t Make();
00030
00031 void Clear(Option_t *opts="");
00032
00033 void analysis(const Char_t *name);
00034 void clusters(const Char_t *name);
00035
00040 void towerThreshold( Float_t t) { mTowerThreshold=t; }
00041
00043 StEEmcPointVec_t points();
00045 Int_t numberOfPoints();
00047 StEEmcPoint point(Int_t ipoint);
00048
00050 Float_t energySeen(){ return mEseen; }
00051
00054 void setFillStEvent(){ mFillStEvent=true; }
00055
00058 void setEnergyMode(Int_t mode){ mEnergyMode=mode; }
00059 void setLimit(Int_t l){ mLimit=l; }
00060
00061
00064 StEEmcPoint point( StEmcPoint *p ){ return mEtoEE[p]; }
00065
00066
00067 private:
00068 protected:
00069
00070 TString mNameAnalysis;
00071 TString mNameClusters;
00072
00073 StEEmcA2EMaker *mEEanalysis;
00074 StEEmcClusterMaker *mEEclusters;
00075
00076 EEmcGeomSimple *mEEtow;
00077 EEmcSmdGeom *mEEsmd;
00078 EEmcSmdMap *mEEmap;
00079
00081 void fillStEvent();
00082 void verifyStEvent();
00083
00085 StEEmcPointVec_t mPoints;
00086
00088 StEEmcPointVec_t mSmdPoints;
00089
00090 std::map< StEEmcSmdCluster, StEEmcPointVec_t > mUclusters2points;
00091 std::map< StEEmcSmdCluster, StEEmcPointVec_t > mVclusters2points;
00092
00094 StEEmcPointVec_t buildSmdPoints( Int_t sector, StEEmcSmdClusterVec_t &u, StEEmcSmdClusterVec_t &v );
00096 Bool_t findPoints ( Int_t sector,
00097 StEEmcSmdClusterVec_t u,
00098 StEEmcSmdClusterVec_t v,
00099 StEEmcPointVec_t &p );
00100
00102 void shareEnergy();
00103 void shareEnergySimple();
00104 void shareEnergySmd();
00105 void countRelatives();
00106
00107 void removeCluster( StEEmcSmdClusterVec_t &clusters, Int_t key );
00108
00112 Float_t fracp2t( StEEmcPoint &p, StEEmcTower &t );
00113
00114 Float_t mTowerThreshold;
00115
00116 Float_t mEseen;
00117
00118 Bool_t mFillStEvent;
00119 Int_t mEnergyMode;
00120 Int_t mLimit;
00121
00123 std::map<StEmcPoint *, StEEmcPoint> mEtoEE;
00124
00125
00126 ClassDef(StEEmcPointMaker,1);
00127
00128 };
00129
00130 inline void StEEmcPointMaker::analysis(const Char_t *n){ mNameAnalysis=n; }
00131 inline void StEEmcPointMaker::clusters(const Char_t *n){ mNameClusters=n; }
00132
00133 inline StEEmcPointVec_t StEEmcPointMaker::points(){ return mPoints ; }
00134
00135 inline Int_t StEEmcPointMaker::numberOfPoints(){ return mPoints.size(); }
00136 inline StEEmcPoint StEEmcPointMaker::point(Int_t ip){ return mPoints[ip]; }
00137 #endif