00001
00016 #ifndef STAR_St_sls_Maker
00017 #define STAR_St_sls_Maker
00018
00019 #ifndef StMaker_H
00020 #include "StMaker.h"
00021 #include "StThreeVectorF.hh"
00022 #include "StThreeVectorD.hh"
00023 #include "StSsdUtil/StSsdBarrel.hh"
00024 #include "StSsdUtil/StSsdWafer.hh"
00025 #endif
00026 class St_g2t_ssd_hit;
00027 class St_g2t_svt_hit;
00028 class St_sls_strip;
00029 class slsCtrl_st;
00030 class St_slsCtrl;
00031 class St_g2t_track;
00032 class St_ssdDimensions;
00033 class St_ssdWafersPosition;
00034 class StMcEvent;
00035 class StDAQReader;
00036 class StMcSsdHit;
00037
00038 class St_sls_Maker : public StMaker {
00039 private :
00040
00041 slsCtrl_st *m_ctrl;
00042 St_ssdDimensions *m_dimensions;
00043 St_ssdWafersPosition *m_positions;
00044 double mBField;
00045 StMcSsdHit *mHit;
00046 public:
00047 St_sls_Maker(const char *name="sls_strip");
00048 virtual ~St_sls_Maker();
00049 virtual Int_t Init();
00050 virtual Int_t InitRun(Int_t runNumber);
00051 virtual Int_t Make();
00052 virtual Int_t Finish();
00053 virtual void PrintInfo();
00054 virtual void Clear(const char *opt);
00055 Int_t readPointFromTable(St_g2t_ssd_hit *g2t_ssd_hit);
00056 Int_t readPointFromTable(St_g2t_svt_hit *g2t_svt_hit) {return readPointFromTable((St_g2t_ssd_hit *) g2t_svt_hit);}
00057 Int_t removeInactiveHitInTable(St_g2t_ssd_hit *g2t_ssd_hit);
00058 Int_t removeInactiveHitInTable(St_g2t_svt_hit *g2t_svt_hit) {return removeInactiveHitInTable((St_g2t_ssd_hit *) g2t_svt_hit);}
00059 void chargeSharingOverStrip(slsCtrl_st *ctrl);
00060 Int_t writeStripToTable(St_sls_strip *sls_strip);
00061 Int_t readPointFromTableWithEmbedding(St_g2t_ssd_hit *g2t_ssd_hit,St_g2t_track *g2t_track,Int_t N,ssdWafersPosition_st *positions);
00062 void setSsdParameters(ssdDimensions_st *geom_par);
00063 void printSsdParameters();
00064 Int_t idWaferToWaferNumb(Int_t idWafer);
00065 Int_t idWaferToLadderNumb(Int_t idWafer);
00066 Int_t waferNumbToIdWafer(Int_t waferNumb);
00067 Int_t idWaferToWafer(Int_t idWafer) {return (idWafer-7000)/100-1;}
00068 Int_t ideal2RealTranslation(StThreeVector<double> *pos, StThreeVector<double> *mtm, double charge, int wafId, int index, ssdWafersPosition_st *positions,Int_t *IL, Int_t *IW);
00069 int IsOnWafer(const StThreeVector<double>& LocalPosition);
00070 void debugUnPeu();
00071
00072 private :
00073 Int_t mSsdLayer;
00074 Int_t mNLadder;
00075 Int_t mNWaferPerLadder;
00076 Int_t mNStripPerSide;
00077 Int_t mActiveLadders[20];
00078 Float_t mDetectorLargeEdge;
00079 Float_t mDetectorSmallEdge;
00080 Float_t mStripPitch;
00081 Float_t mTheta;
00082 Int_t *counter;
00083 TH1F *hRejected;
00084 ssdDimensions_st *mDimensions;
00085 protected:
00086 StMcEvent *mcEvent;
00087 Int_t N;
00088 ssdWafersPosition_st *positions;
00089
00090 virtual const char *GetCVS() const
00091 {static const char cvs[]="Tag $Name: $ $Id: St_sls_Maker.h,v 1.13 2008/08/12 22:48:38 bouchet Exp $ built "__DATE__" "__TIME__ ; return cvs;}
00092
00093
00094
00095 ClassDef(St_sls_Maker, 1)
00096 };
00097 #endif
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137