#ifndef MVDCALCPIXEL_HH #define MVDCALCPIXEL_HH #include "MvdHit.h" #include "MvdPixel.h" #include "CbmGeoVector.h" #include #include //#include //#include "CLHEP/Vector/TwoVector.h" class MvdCalcPixel { public : MvdCalcPixel(){ _CperL = -1; _quad = QuadUNDEF; _nextPixel = PixelUNDEF; _verboseLevel = 1; }; MvdCalcPixel(double w, double l, double threshold, double noise){ _pixelWidth = w; _pixelLength= l; _threshold = threshold; _noise = noise; _verboseLevel = 1; }; MvdCalcPixel(double w, double l) { _pixelWidth = w; _pixelLength= l; _threshold = 0; _noise = 0; _verboseLevel = 1; }; std::vector GetPixels (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 _pixels; double _pixelWidth; double _pixelLength; double _threshold; double _noise; double _energy; int _verboseLevel; typedef enum {QuadUNDEF, UR, UL, DL, DR} EQuadrantType; typedef enum {PixelUNDEF, U, D, L, R} ENextPixelType; EQuadrantType _quad; ENextPixelType _nextPixel; CbmGeoVector _in; CbmGeoVector _out; CbmGeoVector _dir; CbmGeoVector _pos; CbmGeoVector _con; MvdPixel _activePixel; double _CperL; //Charge per Tracklength; bool _stop; void CalcConMatrix(); void ApplyConMatrix(); void CalcQuadrant(); void CalcCperL(double Energy); void CalcStartPixel(); //pixel 0,0 is in lower left corner void CalcPixel(); void ConvertPixels(); }; #endif