Go to the documentation of this file.00001 #ifndef DTTrigGeomUtils_H
00002 #define DTTrigGeomUtils_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #include "FWCore/Framework/interface/ESHandle.h"
00014 #include "DataFormats/GeometryVector/interface/Pi.h"
00015
00016 #include<cmath>
00017
00018 class DTGeometry;
00019 class DTRecSegment4D;
00020 class DTChamberId;
00021 class L1MuDTChambPhDigi;
00022
00023 class DTTrigGeomUtils {
00024
00025 public:
00026
00028 DTTrigGeomUtils(edm::ESHandle<DTGeometry> muonGeom, bool dirInDeg=true);
00029
00031 virtual ~DTTrigGeomUtils();
00032
00034 void phiRange(const DTChamberId& id, float& min, float& max, int&nbins, float step=15);
00035
00037 void thetaRange(const DTChamberId& id, float& min, float& max, int& nbins, float step=15);
00038
00040 void computeSCCoordinates(const DTRecSegment4D* track, int& scsec, float& x, float& xdir, float& y, float& ydir);
00041
00043 float trigPos(const L1MuDTChambPhDigi* trig);
00044
00046 float trigDir(const L1MuDTChambPhDigi* trig);
00047
00049 void trigToSeg(int st, float& x, float dir) { x -= tan(dir/radToDeg_)*zcn_[st-1]; };
00050
00052 bool hasPosRF(int wh, int sec) { return wh>0 || (wh==0 && sec%4>1); };
00053
00054 private:
00055
00056 edm::ESHandle<DTGeometry> muonGeom_;
00057 float zcn_[4];
00058 float radToDeg_;
00059 float xCenter_[2];
00060
00061 };
00062
00063 #endif