#ifndef MVDCALCSTRIP_HH #define MVDCALCSTRIP_HH #include "MvdHit.h" #include "MvdPixel.h" #include "CbmGeoVector.h" #include #include class MvdCalcStrip { public : MvdCalcStrip(){ _CperL = -1; _quad = QuadUNDEF; _nextStrip = StripUNDEF; _verboseLevel = 1; }; MvdCalcStrip(double w, double l, double s, double threshold, double noise){ _stripWidth = w; _stripLength= l; _skew= s; _threshold = threshold; _noise = noise; _verboseLevel = 1; }; MvdCalcStrip(double w, double l) { _stripWidth = w; _stripLength= l; _threshold = 0; _noise = 0; _verboseLevel = 1; }; std::vector GetStrips (double inx, double iny, double inz, double outx, double outy, double outz, double energy); void SetVerboseLevel(int level){ _verboseLevel = level;}; std::ostream& operator<<(std::ostream& out); private : std::vector _allstrips; std::vector _strips; double _stripWidth; double _stripLength; double _skew; double _threshold; double _noise; double _energy; int _verboseLevel; typedef enum {QuadUNDEF, UR, UL, DL, DR} EQuadrantType; typedef enum {StripUNDEF, U, D, L, R} ENextStripType; EQuadrantType _quad; ENextStripType _nextStrip; CbmGeoVector _in; CbmGeoVector _out; CbmGeoVector _dir; CbmGeoVector _pos; CbmGeoVector _con; MvdPixel _activeStrip; double _CperL; //Charge per Tracklength; bool _stop; void CalcOneSideOfStrips(); void CalcConMatrix(); void ApplyConMatrix(); void CalcQuadrant(); void CalcCperL(double Energy); void CalcStartStrip(); //strip 0,0 is in lower left corner void CalcStrip(); void ConvertStrips(); }; #endif