00001 #ifndef EMCSCSECTORREC_H
00002 #define EMCSCSECTORREC_H
00003
00004
00005
00006
00007
00008 #include "EmcSectorRec.h"
00009
00010
00011
00016 class EmcScSectorRec: public EmcSectorRec
00017 {
00018
00019 protected:
00020
00021
00022 static float fgEpar00;
00023 static float fgEpar0;
00024 static float fgEpar1;
00025 static float fgEpar2;
00026 static float fgEpar3;
00027 static float fgEpar4;
00028
00029
00030
00031 float fSin4T;
00032 float fSinTx;
00033 float fSinTy;
00034 float fPpar1;
00035 float fPpar2;
00036 float fPpar3;
00037 float fPpar4;
00038 float fPshiftx;
00039 float fPshifty;
00040
00041 public:
00042
00043 EmcScSectorRec():EmcSectorRec(){ SetTowerThreshold(0.05); }
00044 virtual ~EmcScSectorRec(){}
00045
00046
00047 virtual void CorrectPosition(float energy, float x, float y, float *xcorr,
00048 float *ycorr, bool callSetPar=true);
00049 virtual void CorrectEnergy(float energy, float x, float y, float *ecorr);
00050 virtual void CorrectECore(float ecore, float x, float y, float *ecorecorr);
00051 virtual void CalculateErrors(float e, float x, float y, float* pde,
00052 float* pdx, float* pdy, float* pdz);
00053 virtual void SetProfileParameters(int, float, float, float);
00054 virtual float PredictEnergy(float, float, float);
00055 virtual void TwoGamma(int, EmcModule*, float*, float*, float*, float*,
00056 float*, float*, float*);
00057 virtual float ClusterChisq(int, EmcModule*, float, float, float,
00058 int &ndf);
00059 virtual float Chi2Limit(int ndf);
00060 virtual float Chi2Correct(float chi2,int ndf);
00061 virtual void SetTowerThreshold(float Thresh);
00062 virtual void getTowerPos(int ix, int iy, float &x, float & y);
00064 void TowersToSector(float, float, float &, float &);
00066 void TowersToSector(int, int, float &, float &);
00068 void SectorToTowers(float, float, int &, int &);
00069
00070 };
00071
00072 #endif // #ifndef EMCSCSECTORREC_H
00073
00074
00075