00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 #ifndef STSVTANALYSIS_HH
00038 #define STSVTANALYSIS_HH
00039 #include <string.h>
00040
00041 #include "TArrayC.h"
00042 #include "myPoint.h"
00043 #include "StSvtHybridCluster.hh"
00044
00045 class StSvtHybridData;
00046 class StSvtHybridBadAnodes;
00047 class StSequence;
00048 class StSvtAnalysisAux
00049 {
00050 public:
00051 int mCluFirstAnode;
00052 int mCluLastAnode;
00053 int mCluFirstTimeBin;
00054 int mCluLastTimeBin;
00055 int mCluFlag;
00056 int m_oneortwo_flag;
00057 int mCluPeakAdc;
00058 int mCluNumPixels;
00059 int mCluNumAnodes;
00060 int mHybridNum;
00061 int mCluID;
00062 int mCluDeconvID;
00063 StSvtClusterMemberInfo* mInfo;
00064 int mTruth;
00065 double mCluCharge;
00066 double mMeanClusterTimeBin;
00067 double mMeanClusterAnode;
00068 double mSecondMomClusterTimeBin;
00069 double mSecondMomClusterAnode;
00070 double mCluXCov;
00071 double mCluYCov;
00072 };
00073 class StSvtAnalysis
00074 {
00075
00076 public:
00077 StSvtAnalysis(int numOfHybrids);
00078 virtual ~StSvtAnalysis();
00079
00080 void SetPointers(StSvtHybridData* hybAdjData,StSvtHybridData* hybRawData,
00081 StSvtHybridCluster* hybClu, StSvtHybridBadAnodes* SvtBadAnode,int numOfHybrids,
00082 int PedOffset);
00083 void setArrays(int TotalNumberOfHybrids);
00084 void setMemory();
00085 void calcMoments(int clu);
00086 void oneOrTwoAnodeMoments(int clu, int peakPosTim);
00087 void finalMoments(int clu , int numAnodes);
00088 void newCluster(int clu, int numAnodes,int igt3);
00089 void FirstAndLastAnodes();
00090 void CluFirstTimeBin();
00091 void CluLastTimeBin();
00092 void MomentAnalysis();
00093 int GetFirstAnode(int clu);
00094 int GetLastAnode(int clu);
00095 int GetFirstTimeBin(int clu);
00096 int GetLastTimeBin(int clu);
00097 int GetCluFlag(int clu);
00098 int GetDeconvFlag(int clu);
00099 int return_oneortwoanode_flag(int clu);
00100 int GetCluPeakAdc(int clu);
00101 int GetCluNumAnodes(int clu);
00102 int GetCluNumPixels(int clu);
00103 int GetnSvtClu();
00104 int GetCluID(int clu);
00105 int GetCluDeconvID(int clu);
00106 int GetTruth(int clu);
00107 double GetCluCharge(int clu);
00108 double GetMeanClusterAnode(int clu);
00109 double GetMeanClusterTimeBin(int clu);
00110 double GetSecondMomClusterAnode(int clu);
00111 double GetSecondMomClusterTimeBin(int clu);
00112 double GetCluXCov(int clu);
00113 double GetCluYCov(int clu);
00114 void Report(int index);
00115
00116 void SetBadAnTb(int numClus);
00117 void LoadAnodeGains();
00118
00119 int Print_Pixels(int iRows, int iCols, int clu);
00120 int Fill_Pixel_Array(int clu);
00121 void free_matrix_d (int**, int);
00122 int **malloc_matrix_d (int iRows, int iCols);
00123 POINT *Find_Peaks (int iRows, int iCols, int *iNumPeaks);
00124 float IsValidPeak (int iRows, int iCols, POINT *Peaks, int iNumPeaks);
00125 int BlockOut (int x, int y);
00126 int Fit_Peaks(int iRows, int iCols, int iNumPeaks, POINT *Peaks, int clu);
00127 int CatagorizeCluster(int iRows, int iCols, int igt3, int clu);
00128 int Deconvolve_Cluster(int iRows, int iCols, int clu);
00129 void SetHybIndex(int index);
00130 int FillRawAdc();
00131 void ClearRawAdc();
00132 void updateTruth();
00133
00134 private:
00135
00136 int m_clu;
00137 int m_row_p;
00138 int m_col_p;
00139 int m_adc_p;
00140 int m_SvtEvt;
00141
00142 int m_deconv;
00143 int m_nWrkBkt;
00144 int m_nGt8;
00145 int m_nUndBkt;
00146 int m_nSig;
00147
00148 int m_hybIndex;
00149
00150 int mHitId;
00151 int mMyflag;
00152 int mNeff;
00153 int mNumOfClusters, mNumOfMembers;
00154 int mNumPixels, mPeakADC, mSumAdc;
00155
00156 double mDriftMom1, mAnodeMom1;
00157 double mDriftMom2, mAnodeMom2, mMom0;
00158 double mX_err, mY_err;
00159 double mAnodeGain[433][241];
00160
00161 StSvtHybridData* mHybridData;
00162 StSvtHybridData* mHybridRawData;
00163 StSvtHybridCluster* mHybridCluster;
00164 StSvtHybridBadAnodes* mSvtBadAnode;
00165 StSequence* mSvtSequence;
00166
00167 TArrayC mAuxArr;
00168 int mMaxClu;
00169 StSvtAnalysisAux *mAux;
00170
00171 int** m_countBadAn;
00172 int** m_countBadTb;
00173
00174 StSvtClusterMemberInfo** tempMemberInfo;
00175
00176 int** m_Pixels;
00177 int** m_Shadow;
00178 int** m_Raw;
00179
00180 int mPedOffset;
00181
00182 };
00183
00184 #endif