00001
00002
00003
00004
00005
00006
00007
00008
00009
00011
00012 #ifndef STAR_StGammaRawMaker
00013 #define STAR_StGammaRawMaker
00014
00015 #include "StMaker.h"
00016
00017 #include "StGammaTrack.h"
00018 #include "StGammaTower.h"
00019 #include "StGammaStrip.h"
00020 #include "StGammaEvent.h"
00021 #include "StGammaEventMaker.h"
00022
00023 #include "StEmcUtil/database/StBemcTables.h"
00024 #include "StEEmcUtil/EEmcGeom/EEmcGeomDefs.h"
00025
00026 #include <vector>
00027
00028 class EEmcGeomSimple;
00029 class StBemcTables;
00030 class StMuTrack;
00031
00032 class StGammaRawMaker: public StMaker
00033 {
00034
00035 public:
00036
00037 StGammaRawMaker(const char *name = "gammaRawMaker");
00038 ~StGammaRawMaker();
00039
00040 virtual const char* GetCVS() const
00041 {static const char cvs[] = "Tag $Name: $ $Id: StGammaRawMaker.h,v 1.8 2011/03/04 19:39:15 betan Exp $ built "__DATE__" "__TIME__; return cvs; }
00042
00043
00044 Int_t Init();
00045 Int_t Make();
00046 Int_t Finish() { return kStOK; }
00047 void Clear(Option_t *opts="");
00048
00049
00050 const StGammaTrackVec_t &tracks(){ return mTracks; }
00051 const StGammaTowerVec_t &towers(){ return mTowers; }
00052 const StGammaTowerVec_t &preshower1(){ return mPreshower1; }
00053 const StGammaTowerVec_t &preshower2(){ return mPreshower2; }
00054 const StGammaTowerVec_t &postshower(){ return mPostshower; }
00055 const StGammaStripVec_t &strips(){ return mStrips; }
00056
00057 StGammaTower *tower(Int_t id, Int_t layer);
00058 StGammaStrip *strip(Int_t sector, Int_t plane, Int_t index);
00059
00060
00061 void SetTowerCutoff( Float_t t );
00062 void SetTrackCutoff( Float_t t );
00063
00064 void useBemc() { mUseBemc = true; }
00065 void useEemc() { mUseEemc = true; }
00066
00067 void AddEtaStrip(StGammaStrip *strip);
00068 void AddPhiStrip(StGammaStrip *strip);
00069
00070 void excludeBemcTower(int softId) { mExcludedBemcTowers.push_back(softId); }
00071 void shiftBemcGains(double shift) { mBemcGainShift = shift; }
00072
00073 protected:
00074
00075 Float_t mTowerCutoff;
00076 Float_t mTrackCutoff;
00077
00078 StGammaTrackVec_t mTracks;
00079 StGammaTowerVec_t mTowers;
00080 StGammaStripVec_t mStrips;
00081
00082 StGammaTowerVec_t mPreshower1;
00083 StGammaTowerVec_t mPreshower2;
00084 StGammaTowerVec_t mPostshower;
00085
00086 void GetTracks();
00087 void GetBarrel();
00088 void GetEndcap();
00089
00090 Bool_t Accept( StGammaTrack &track );
00091 Bool_t Accept( StGammaTower &tower );
00092 Bool_t Accept( StGammaStrip &strip );
00093 Bool_t Accept( StMuTrack *track );
00094
00095 EEmcGeomSimple *mEEmcGeometry;
00096
00097 StBemcTables *mTables;
00098 Bool_t mCorrupt;
00099
00100
00101 StGammaTower *mEEtowers[ kEEmcNumSectors * kEEmcNumSubSectors * kEEmcNumEtas ][ 4 ];
00102 StGammaStrip *mEEstrips[ kEEmcNumSectors ][ kEEmcNumSmdUVs ][ kEEmcNumStrips ];
00103
00104 StGammaTower* mBarrelEmcTower[4801];
00105 StGammaTower* mBarrelEmcPreshower[4801];
00106
00107 map<int, StGammaStrip*> mBarrelSmdEtaStrip;
00108 map<int, StGammaStrip*> mBarrelSmdPhiStrip;
00109
00110 private:
00111
00112 bool mUseBemc;
00113 bool mUseEemc;
00114
00115 double mBemcGainShift;
00116
00117 vector<int> mExcludedBemcTowers;
00118
00119 StMuDstMaker *mMuDstMaker;
00120 StGammaEventMaker *mGammaMaker;
00121 StGammaEvent *mGammaEvent;
00122
00123 ClassDef(StGammaRawMaker, 3);
00124
00125 };
00126
00127 inline void StGammaRawMaker::SetTowerCutoff(Float_t t){ mTowerCutoff = t; }
00128 inline void StGammaRawMaker::SetTrackCutoff(Float_t t){ mTrackCutoff = t; }
00129
00130 #endif