00001 #ifndef FITTEREM_H
00002 #define FITTEREM_H
00003 #include "RecoBase/CandStripHandle.h"
00004 #include "CandFitShowerEM/CacherEM.h"
00005 #include "CandFitShowerEM/BinCorrelationEM.h"
00006
00007 class FitterEM {
00008
00009 private:
00010
00011 CandStripHandleItr fDataStpItr;
00012 CacherEM *fCache;
00013 BinCorrelationEM *fBinCorrel;
00014
00015 Int_t fNStp;
00016 Double_t fEnergy;
00017 Double_t *fVtx;
00018 Double_t fdudz;
00019 Double_t fdvdz;
00020
00021 Int_t fclosestPlaneToVtx;
00022 Float_t fclosestZedDiff;
00023 Int_t fclosestZedView;
00024 Int_t fclosestUStripToVtx;
00025 Int_t fclosestVStripToVtx;
00026 Float_t fclosestTPosUDiff;
00027 Float_t fclosestTPosVDiff;
00028
00029 Int_t fNPlanes;
00030 Int_t fNStrips;
00031 Int_t fMinBoxPlane;
00032 Int_t fMaxBoxPlane;
00033 Int_t fMinBoxStrip;
00034 Int_t fMaxBoxStrip;
00035
00036 Double_t fTotMip;
00037 Int_t *fPlaneArray;
00038 Int_t *fStripArray;
00039 Int_t *fViewArray;
00040 Double_t *fMipArray;
00041 Double_t *fZedArray;
00042 Double_t *fTPosArray;
00043 Int_t *fBoxPlaneArray;
00044 Int_t *fBoxStripArray;
00045 Double_t *fMips;
00046
00047 Bool_t fPass;
00048 Double_t *fFittedPars;
00049 Double_t *fFittedErr;
00050 Double_t *fStepSize;
00051 Int_t *fNSteps;
00052 Double_t fChi2Min;
00053 Int_t fNDF;
00054 Int_t fNiter;
00055
00056 Double_t fSignStat;
00057 Double_t fBestSignStat;
00058 Double_t fRunStat;
00059 Double_t fKSStat;
00060
00061
00062 Double_t CalculateChi2();
00063 void SetUpStripInfo();
00064 void SetUpFitBox();
00065
00066 public:
00067
00068 FitterEM();
00069 FitterEM(Int_t,CandStripHandleItr);
00070 ~FitterEM();
00071
00072 void SetInputParams(Double_t,Double_t*,Double_t,Double_t);
00073 void QuickInput(Double_t,Double_t,Double_t,Double_t,
00074 Double_t,Double_t,Int_t);
00075 void SetStepSize(Double_t *);
00076 void SetNSteps(Int_t *);
00077
00078 Double_t PredictEMLoss(Int_t,Int_t,Double_t &);
00079 void DoFit();
00080 Bool_t Pass() {return fPass;}
00081 Double_t GetChi2() {return fChi2Min;}
00082 Int_t GetNDF() {return fNDF;}
00083 Double_t *GetFittedPars();
00084 Double_t *GetFittedErr() {return fFittedErr;}
00085 Int_t GetNIterations() {return fNiter;}
00086
00087 void DoTests();
00088 Double_t GetSignTestStat() {return fBestSignStat;}
00089 Double_t GetRunTestStat() {return fRunStat;}
00090 Double_t GetKSTestStat() {return fKSStat;}
00091
00092 };
00093
00094 #endif //FITTEREM_H