00001
00002
00003
00004
00005
00006
00007
00008 #ifndef MUC_GEO_MGR_ALG_H
00009 #define MUC_GEO_MGR_ALG_H
00010
00011 #include<iostream>
00012 #include<string>
00013
00014 #include "GaudiKernel/MsgStream.h"
00015 #include "GaudiKernel/StatusCode.h"
00016 #include "GaudiKernel/IMessageSvc.h"
00017
00018 #include "MucGeoCreateAlg/MucGeoConst.h"
00019 #include "MucGeoCreateAlg/MucEntity.h"
00020 #include "MucGeoCreateAlg/MucAbsorber.h"
00021 #include "MucGeoCreateAlg/MucGap.h"
00022 #include "MucGeoCreateAlg/MucBox.h"
00023 #include "MucGeoCreateAlg/MucStripPlane.h"
00024 #include "MucGeoCreateAlg/MucStrip.h"
00025 #include "MucGeoCreateAlg/MucRpc.h"
00026 #include "MucGeoCreateAlg/MucBoxCover.h"
00027 #include "MucGeoCreateAlg/MucBakelite.h"
00028 #include "MucGeoCreateAlg/MucGas.h"
00029 #include "MucGeoCreateAlg/MucIdTransform.h"
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042 using namespace std;
00043
00044 const unsigned int ENTITY_NUM = 9;
00045
00046 class MucGeoMgr
00047 {
00048 public:
00049 MucGeoMgr( const std::string createFlag, bool alignFlag, const std::string alignFile );
00050 ~MucGeoMgr();
00051
00052 StatusCode CreateEntities();
00053 StatusCode CreateRootGeo();
00054 StatusCode CreateOnlineStripGeo();
00055
00056 MucAbsorber *GetAbsorber( int part, int segment, int layer, int id );
00057 MucGap *GetGap( int part, int segment, int layer, int id );
00058 MucBox *GetBox( int part, int segment, int layer, int id );
00059 MucStripPlane *GetStripPlane( int part, int segment, int layer, int id );
00060 MucStrip *GetStrip( int part, int segment, int layer, int id );
00061 MucRpc *GetRpc( int part, int segment, int layer, int upDown, int id );
00062 MucGas *GetGas( int part, int segment, int layer, int upDown, int rpcId, int id );
00063 MucBakelite *GetBakelite( int part, int segment, int layer, int upDown, int rpcId, int id );
00064 MucBoxCover *GetBoxCover( int part, int segment, int layer, int upDown, int id );
00065
00066 IMessageSvc *msgSvc;
00067
00068 protected:
00069
00070 StatusCode CreateAbsorber();
00071 StatusCode CreateGap();
00072 StatusCode CreateBox();
00073 StatusCode CreateStripPlane();
00074 StatusCode CreateStrip();
00075 StatusCode CreateRpc();
00076 StatusCode CreateGas();
00077 StatusCode CreateBakelite();
00078 StatusCode CreateBoxCover();
00079
00080 StatusCode InitOffset();
00081 bool CheckBoxOffset( int part, int segment, int layer, int axis, double offset);
00082 bool CheckStripPlaneOffset( int part, int segment, int layer, int axis, double offset);
00083
00084 private:
00085
00086 bool m_AlignFlag;
00087 std::string m_CreateFlag;
00088 std::string m_AlignFile;
00089 double m_BoxOffset[PART_MAX][B_SEG_NUM][B_LAY_NUM][3];
00090 double m_StripPlaneOffset[PART_MAX][B_SEG_NUM][B_LAY_NUM][3];
00091
00092 MucIdTransform* m_IdTr;
00093
00094 MucAbsorber *m_MucAbsorber;
00095 MucGap *m_MucGap;
00096 MucBox *m_MucBox;
00097 MucStripPlane *m_MucStripPlane;
00098 MucStrip *m_MucStrip;
00099 MucRpc *m_MucRpc;
00100 MucBoxCover *m_MucBoxCover;
00101 MucBakelite *m_MucBakelite;
00102 MucGas *m_MucGas;
00103
00104
00105
00106 };
00107
00108 #endif