#ifndef _THORRECONSTRUCT_H_ #define _THORRECONSTRUCT_H_ #include "TReconstruct.h" #include "Ec.h" #include "Er.h" /** @file THorReconstruct.h */ #define NBINTH 10 #define NBINMUSIG 5 #define NSAMPLESIG 5000 #define NLEGENDREDEG 5 #define NFOURIERPHIDEG 5 #define NFOURIERPSIDEG 7 class MuonParamSignal { private: double Value(int, int, double); public: MuonParamSignal(); ~MuonParamSignal(); double GetSignalProb(double theta, double sig_tank, int k); double Signal[NBINTH][NBINMUSIG][NSAMPLESIG]; double Occurence[NBINTH][NBINMUSIG][NSAMPLESIG]; int NBinSig[NBINTH][NBINMUSIG]; double CoeffMeanPente[NBINTH]; double CoeffMeanOffset[NBINTH]; double CoeffSigma[NBINTH]; }; class MuonParamTable { private: double _CurrentThetaRad; double _CurrentPhiRad; public: MuonParamTable(); ~MuonParamTable(); void BuildCurrentMaps(double, double, int flag=0); double NMuAtGround(double x, double y, double dphi=0.); double ThetaAtGround(double x, double y); double MeanMuEnerAtGround(double x, double y); double AlphaNMu[NBINTH][NLEGENDREDEG][NFOURIERPSIDEG][NFOURIERPHIDEG]; double BetaNMu[NBINTH][NLEGENDREDEG][NFOURIERPSIDEG][NFOURIERPHIDEG]; double CurrentAlphaNMu[NLEGENDREDEG][NFOURIERPSIDEG]; double CurrentBetaNMu[NLEGENDREDEG][NFOURIERPSIDEG]; // not yet ready // double AlphaAngSpread[NBINTH][NFOURIERPHIDEG][NLEGENDREDEG][NFOURIERPSIDEG]; // double BetaAngSpread[NBINTH][NFOURIERPHIDEG][NLEGENDREDEG][NFOURIERPSIDEG]; // double AlphaMeanMuEner[NBINTH][NFOURIERPHIDEG][NLEGENDREDEG][NFOURIERPSIDEG]; // double BetaMeanMuEner[NBINTH][NFOURIERPHIDEG][NLEGENDREDEG][NFOURIERPSIDEG]; }; class THorReconstruct : virtual public TReconstruct { private: int _EDPlot; public: THorReconstruct(); ~THorReconstruct(); bool _Reconstruct(); ///< manage reconstruction void FillInputs(double, double, double, double); void SetEDPlot(int); int Step1(); int Step2(); int Step3(); double FCNStep1(double *); double FCNStep2(double *); double FCNStep3(double *); static MuonParamSignal *MuParamSigP; static MuonParamTable *MuParamTabP; double Theta, Phi; double XCore, YCore; double DXCore, DYCore, dDXCore, dDYCore; double DPhi, dDPhi; double EDMapMu[52][52], EDMapE[52][52], EDdxmax, EDdymax; int Verbose; }; #endif