Go to the documentation of this file.00001 #ifndef MEEBGeom_hh
00002 #define MEEBGeom_hh
00003
00004
00005
00006
00007
00008 #include <vector>
00009 #include <map>
00010
00011 #include <TPolyLine.h>
00012 #include <TGraph.h>
00013 #include <TString.h>
00014
00015 class MEEBGeom
00016 {
00017
00018 public:
00019
00020 enum EBUnit { iEcalBarrel, iSuperModule, iDCC, iSide, iLMRegion, iLMModule, iTriggerTower, iCrystal };
00021
00022 typedef int EBLocalCoord;
00023 typedef int EBGlobalCoord;
00024 typedef int EBTTLocalCoord;
00025 typedef std::pair<float,float> EtaPhiPoint;
00026 typedef std::pair<EBGlobalCoord, EBGlobalCoord> EtaPhiCoord;
00027 typedef std::pair<EBLocalCoord, EBLocalCoord> XYCoord;
00028
00029 static int barrel( EBGlobalCoord ieta, EBGlobalCoord iphi );
00030 static int sm( EBGlobalCoord ieta, EBGlobalCoord iphi );
00031 static int dcc( EBGlobalCoord ieta, EBGlobalCoord iphi );
00032 static int side( EBGlobalCoord ieta, EBGlobalCoord iphi );
00033 static int lmr( EBGlobalCoord ieta, EBGlobalCoord iphi );
00034 static int lmmod( EBGlobalCoord ieta, EBGlobalCoord iphi );
00035 static int tt( EBGlobalCoord ieta, EBGlobalCoord iphi );
00036 static int crystal( EBGlobalCoord ieta, EBGlobalCoord iphi );
00037
00038 static TString smName( int ism );
00039 static int smFromDcc( int idcc );
00040 static int dccFromSm( int ism );
00041
00042 static std::pair<int, int> pn( int ilmmod );
00043 static std::pair<int,int> memFromLmr( int ilmr );
00044 static std::vector<int> lmmodFromLmr( int ilmr );
00045
00046 static int apdRefTower( int ilmmod );
00047 static std::vector<int> apdRefChannels( int ilmmod );
00048
00049
00050 static XYCoord localCoord( int icr );
00051
00052
00053 static XYCoord localCoord( EBGlobalCoord ieta, EBGlobalCoord iphi );
00054
00055
00056 static EtaPhiCoord globalCoord( int ism, EBLocalCoord ix, EBLocalCoord iy );
00057 static EtaPhiPoint globalCoord( int ism, float x, float y );
00058 static EtaPhiCoord globalCoord( int ism, int icrystal );
00059
00060
00061 static TGraph* getGraphBoundary( int type, int num, bool global=false );
00062 static int crystal_channel( EBLocalCoord ix, EBLocalCoord iy );
00063 static int electronic_channel( EBLocalCoord ix, EBLocalCoord iy );
00064
00065 static int tt_type( EBTTLocalCoord iX, EBTTLocalCoord iY );
00066 static int hv_channel( EBTTLocalCoord iX, EBTTLocalCoord iY );
00067 static int lv_channel( EBTTLocalCoord iX, EBTTLocalCoord iY );
00068 static int lm_channel( EBTTLocalCoord iX, EBTTLocalCoord iY );
00069 static int tt_channel( EBTTLocalCoord iX, EBTTLocalCoord iY );
00070
00071 virtual ~MEEBGeom() {}
00072
00073 private:
00074
00075
00076 };
00077
00078 #endif
00079