CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_4_5_patch3/src/DQM/DTMonitorModule/interface/DTTrigGeomUtils.h

Go to the documentation of this file.
00001 #ifndef DTTrigGeomUtils_H
00002 #define DTTrigGeomUtils_H
00003 
00004 /*
00005  * \file DTTrigGeomUtils.h
00006  *
00007  * $Date: 2009/08/03 16:08:37 $
00008  * $Revision: 1.2 $
00009  * \author C. Battilana - CIEMAT
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]; // 0=4/13 - 1=10/14
00060 
00061 };
00062 
00063 #endif