00001 #ifndef __StEEmcClusterMaker_h__
00002 #define __StEEmcClusterMaker_h__
00003
00004 #include "StMaker.h"
00005 #include "StEEmcCluster.h"
00006 #include "StEEmcSmdCluster.h"
00007 #include "StEEmcA2EMaker.h"
00008 #include "TString.h"
00009 #include "StEEmcUtil/EEmcGeom/EEmcGeomSimple.h"
00010 #include "StEEmcUtil/EEmcSmdMap/EEmcSmdMap.h"
00011 #include "StEEmcUtil/StEEmcSmd/EEmcSmdGeom.h"
00012
00013 #include <map>
00014
00015 class StEEmcClusterMaker : public StMaker {
00016
00017 public:
00018
00019 StEEmcClusterMaker( const Char_t *name = "mEEclusters" );
00020 ~StEEmcClusterMaker(){ };
00021
00022 Int_t Init();
00023 Int_t Make();
00024 void Clear(Option_t *opts="");
00025
00027 void analysis ( const Char_t *name );
00028
00031 void seedEnergy( Float_t energy, Int_t layer=0 );
00032
00034 void setMaxExtent( Int_t m );
00035
00038 void setSeedFloor( Float_t f=2.0 );
00039
00041 Int_t numberOfClusters(Int_t sec, Int_t layer);
00043 Int_t numberOfSmdClusters(Int_t sec, Int_t plane);
00044
00046 StEEmcCluster cluster(Int_t sec, Int_t layer, Int_t index);
00048 StEEmcSmdCluster smdcluster(Int_t sec, Int_t plane, Int_t index);
00049
00050
00053 StEEmcCluster cluster( StEmcCluster *cl ){ return mEtoEE[ cl ]; }
00056 StEEmcSmdCluster smdcluster( StEmcCluster *cl ){ return mEtoEEsmd[ cl ]; }
00057
00059 StEEmcClusterVec_t clusters( Int_t sec, Int_t layer );
00061 StEEmcSmdClusterVec_t smdclusters( Int_t sec, Int_t plane );
00062
00065 void setFillStEvent(){ mFillStEvent=true; }
00066
00068 void suppress(){ mSuppress=true; }
00069
00070 void print();
00071
00072 private:
00073 protected:
00074
00075 Int_t mClusterId;
00076
00077 Bool_t mSuppress;
00078
00081 std::vector< std::vector< StEEmcTowerVec_t > > mSeedTowers;
00082
00086 std::vector< std::vector< StEEmcClusterVec_t > > mTowerClusters;
00089 std::vector< std::vector< StEEmcSmdClusterVec_t > > mSmdClusters;
00090
00092 Int_t mNumberOfClusters[6];
00093
00095 Float_t mSeedEnergy[6];
00097 Int_t mMaxExtent;
00099 Float_t mSeedFloor;
00100
00102 Bool_t buildTowerClusters();
00103
00105 Bool_t buildSmdClusters();
00106
00108 void fillStEvent();
00109
00112 Bool_t verifyStEvent();
00113
00115 EEmcGeomSimple *mEEtow;
00116 EEmcSmdGeom *mEEsmd;
00117 EEmcSmdMap *mEEmap;
00118
00120 TString mAnalysisName;
00122 StEEmcA2EMaker *mEEanalysis;
00123
00124 Bool_t mFillStEvent;
00125
00127 std::map< StEmcCluster *, StEEmcCluster > mEtoEE;
00128
00129 std::map< StEmcCluster *, StEEmcSmdCluster > mEtoEEsmd;
00130
00131 ClassDef(StEEmcClusterMaker,1);
00132
00133 };
00134
00135 inline void StEEmcClusterMaker::analysis( const Char_t *name ){ mAnalysisName=name; }
00136 inline void StEEmcClusterMaker::seedEnergy(Float_t energy, Int_t layer){ mSeedEnergy[layer]=energy; }
00137
00138 inline void StEEmcClusterMaker::setMaxExtent(Int_t m){ mMaxExtent=m; }
00139 inline void StEEmcClusterMaker::setSeedFloor(Float_t f){ mSeedFloor=f; }
00140
00141 inline Int_t StEEmcClusterMaker::numberOfClusters(Int_t s, Int_t l)
00142 { return (Int_t)mTowerClusters[s][l].size(); }
00143 inline Int_t StEEmcClusterMaker::numberOfSmdClusters(Int_t s, Int_t p)
00144 { return (Int_t)mSmdClusters[s][p].size(); }
00145
00146 inline StEEmcCluster StEEmcClusterMaker::cluster(Int_t s, Int_t l, Int_t i)
00147 { return mTowerClusters[s][l][i]; }
00148 inline StEEmcSmdCluster StEEmcClusterMaker::smdcluster(Int_t s,Int_t p,Int_t i)
00149 { return mSmdClusters[s][p][i]; }
00150
00151 inline StEEmcClusterVec_t StEEmcClusterMaker::clusters(Int_t s, Int_t l)
00152 { return mTowerClusters[s][l]; }
00153
00154 inline StEEmcSmdClusterVec_t StEEmcClusterMaker::smdclusters(Int_t s, Int_t l)
00155 { return mSmdClusters[s][l]; }
00156
00157 #endif