#ifndef HMDCDEDX_H #define HMDCDEDX_H #include "TArrayF.h" #include "TH2.h" #include "TCanvas.h" #include "TGraph.h" #include "hparcond.h" #include "hlocation.h" class HParamList; class HLocation; class HCategory; class HMdcSeg; class HMdcSizesCells; class HGeantKine; class HMdcDeDx : public HParCond { protected: HMdcSizesCells *sizescells; //! pointer to HMdcSizesCells container Float_t shift[6][4][18][100]; // sector,module,angle,distance Float_t shiftsigma[6][4][18][100]; // sector,module,angle,distance Double_t ref_dedx; // reference value for electrons (for scaling) Double_t shift_dedx[6][4]; // shift theoretical dedx (in betagamma axis) Double_t scale_dedx[6][4]; // scale theoretical dedx (in dedx axis) Double_t hefr; // fraction of helium of the gas mix HCategory* catcal ; //! pointer to mdc cal1 HCategory* cathit ; //! pointer to mdc hit HCategory* catclusinf; //! pointer to mdc clusinf HCategory* catclusfit; //! pointer to mdc clusfit HCategory* catwirefit; //! pointer to mdc wirefit HLocation loccal; //! location object of cal1 Int_t minimumWires; // minimum required wires Float_t window; // window for truncating arround mean (units of sigma) Bool_t isInitialized; // flag after init Int_t method; //! method switch for filling input Int_t module; //! method switch for filling input for module 1/2 of segment Float_t measurements[50]; //! array of measurements Bool_t useShifts; //! use/don't use normaization table Int_t ctskipmod0; //! counter for wires skipped with t2<=-998 in mod0 of seg Int_t ctskipmod1; //! counter for wires skipped with t2<=-998 in mod1 of seg void sort(Int_t,Float_t*); UChar_t fillingInput(HMdcSeg* seg,Float_t* ); UChar_t fillingInputClusFit(HMdcSeg* seg,Float_t* ); Float_t calcMean(Float_t*,UChar_t); Float_t calcSigma(Float_t*,UChar_t,Float_t); UChar_t select(Float_t*,Float_t,Float_t,UChar_t); void calcSegPoints(HMdcSeg *,Double_t&,Double_t&,Double_t&,Double_t&,Double_t&,Double_t&); void initArray(){for(UInt_t i=0;i