MucGeoMgr Class Reference

#include <MucGeoMgr.h>

List of all members.

Public Member Functions

 MucGeoMgr (const std::string createFlag, bool alignFlag, const std::string alignFile)
 ~MucGeoMgr ()
StatusCode CreateEntities ()
StatusCode CreateRootGeo ()
StatusCode CreateOnlineStripGeo ()
MucAbsorberGetAbsorber (int part, int segment, int layer, int id)
MucGapGetGap (int part, int segment, int layer, int id)
MucBoxGetBox (int part, int segment, int layer, int id)
MucStripPlaneGetStripPlane (int part, int segment, int layer, int id)
MucStripGetStrip (int part, int segment, int layer, int id)
MucRpcGetRpc (int part, int segment, int layer, int upDown, int id)
MucGasGetGas (int part, int segment, int layer, int upDown, int rpcId, int id)
MucBakeliteGetBakelite (int part, int segment, int layer, int upDown, int rpcId, int id)
MucBoxCoverGetBoxCover (int part, int segment, int layer, int upDown, int id)

Public Attributes

IMessageSvc * msgSvc

Protected Member Functions

StatusCode CreateAbsorber ()
StatusCode CreateGap ()
StatusCode CreateBox ()
StatusCode CreateStripPlane ()
StatusCode CreateStrip ()
StatusCode CreateRpc ()
StatusCode CreateGas ()
StatusCode CreateBakelite ()
StatusCode CreateBoxCover ()
StatusCode InitOffset ()
bool CheckBoxOffset (int part, int segment, int layer, int axis, double offset)
bool CheckStripPlaneOffset (int part, int segment, int layer, int axis, double offset)

Private Attributes

bool m_AlignFlag
std::string m_CreateFlag
std::string m_AlignFile
double m_BoxOffset [PART_MAX][B_SEG_NUM][B_LAY_NUM][3]
double m_StripPlaneOffset [PART_MAX][B_SEG_NUM][B_LAY_NUM][3]
MucIdTransformm_IdTr
MucAbsorberm_MucAbsorber
MucGapm_MucGap
MucBoxm_MucBox
MucStripPlanem_MucStripPlane
MucStripm_MucStrip
MucRpcm_MucRpc
MucBoxCoverm_MucBoxCover
MucBakelitem_MucBakelite
MucGasm_MucGas


Detailed Description

Definition at line 46 of file MucGeoMgr.h.


Constructor & Destructor Documentation

MucGeoMgr::MucGeoMgr ( const std::string  createFlag,
bool  alignFlag,
const std::string  alignFile 
)

Definition at line 26 of file MucGeoMgr.cxx.

References InitOffset(), m_AlignFile, m_AlignFlag, m_CreateFlag, and msgSvc.

00027 {
00028         m_CreateFlag    = createFlag;
00029         m_AlignFlag     = alignFlag;
00030         m_AlignFile     = alignFile;
00031         
00032   Gaudi::svcLocator() -> service("MessageSvc", msgSvc);
00033 
00034         InitOffset();   
00035 }

MucGeoMgr::~MucGeoMgr (  ) 

Definition at line 38 of file MucGeoMgr.cxx.

References m_BoxOffset, m_MucAbsorber, m_MucBakelite, m_MucBox, m_MucBoxCover, m_MucGap, m_MucGas, m_MucRpc, m_MucStrip, m_MucStripPlane, and m_StripPlaneOffset.

00039 {
00040         delete []m_BoxOffset;
00041         delete []m_StripPlaneOffset;
00042 
00043         delete m_MucAbsorber;
00044         delete m_MucGap;
00045         delete m_MucBox;
00046         delete m_MucStripPlane;
00047         delete m_MucStrip;
00048         delete m_MucRpc;
00049         delete m_MucGas;
00050         delete m_MucBakelite;
00051         delete m_MucBoxCover;
00052 }


Member Function Documentation

bool MucGeoMgr::CheckBoxOffset ( int  part,
int  segment,
int  layer,
int  axis,
double  offset 
) [protected]

Definition at line 143 of file MucGeoMgr.cxx.

References B_X_MAX, B_Y_MAX, B_Z_MAX, BRID, E_OFFSET_MAX, m_BoxOffset, and MAX_FRACTION.

Referenced by InitOffset().

00144 {
00145         int outRangeFlag = 0;
00146 
00147         if( part == BRID )
00148         {
00149                 switch( axis )
00150                 {
00151                  case 0:        // x
00152                         int layerFlag;
00153 
00154                         if( layer == 0 )         layerFlag = 0; 
00155                         else if( layer%2 == 1 )  layerFlag = 1; 
00156                         else                     layerFlag = 2; 
00157 
00158                         if( B_X_MAX[layerFlag] - fabs(offset) >= 0.0 ) // |offset|<=B_X_MAX
00159                                 m_BoxOffset[part][segment][layer][axis] = offset;                       
00160                         else
00161                         {       
00162                                 outRangeFlag ++;        
00163                                 m_BoxOffset[part][segment][layer][axis] = B_X_MAX[layerFlag] * MAX_FRACTION;
00164                         }
00165                         break;
00166                  case 1:        // y
00167                         if( B_Y_MAX - fabs(offset) >= 0.0 ) // |offset|<=B_Y_MAX
00168                                 m_BoxOffset[part][segment][layer][axis] = offset;                          
00169                         else
00170                         {
00171                                 outRangeFlag ++;
00172                                 m_BoxOffset[part][segment][layer][axis] = B_Y_MAX * MAX_FRACTION;                       
00173                         }
00174                         break;
00175                  case 2:        // z
00176                         if( B_Z_MAX - fabs(offset) >= 0.0 ) // |offset|<=B_Y_MAX
00177                                 m_BoxOffset[part][segment][layer][axis] = offset;
00178                         else
00179                         {
00180                                 outRangeFlag ++;
00181                                 m_BoxOffset[part][segment][layer][axis] = B_Z_MAX * MAX_FRACTION;
00182                         }
00183                         break;
00184                  default: ;
00185                 }
00186         }       
00187         else
00188         {
00189                 if( E_OFFSET_MAX[axis] - fabs(offset) >= 0.0 ) // |offset|<=B_Y_MAX
00190                         m_BoxOffset[part][segment][layer][axis] = offset;
00191                 else
00192                 {
00193                         outRangeFlag ++;
00194                         m_BoxOffset[part][segment][layer][axis] = E_OFFSET_MAX[axis] * MAX_FRACTION;
00195                 }
00196         }
00197         
00198         if( outRangeFlag > 0 )  return false;
00199         else                    return true;    
00200 }

bool MucGeoMgr::CheckStripPlaneOffset ( int  part,
int  segment,
int  layer,
int  axis,
double  offset 
) [protected]

Definition at line 202 of file MucGeoMgr.cxx.

References m_StripPlaneOffset, MAX_FRACTION, and STR_OFFSET_MAX.

Referenced by InitOffset().

00203 {
00204         int outRangeFlag = 0;
00205 
00206         if( STR_OFFSET_MAX[axis] - fabs(offset) >= 0.0 ) // |offset|<=STR_OFFSET_MAX
00207                 m_StripPlaneOffset[part][segment][layer][axis] = offset;
00208         else
00209         {
00210                 outRangeFlag ++;
00211                 m_StripPlaneOffset[part][segment][layer][axis] = STR_OFFSET_MAX[axis] * MAX_FRACTION;
00212         }
00213 
00214         if( outRangeFlag > 0 )  return false;
00215         else                    return true;
00216 }

StatusCode MucGeoMgr::CreateAbsorber (  )  [protected]

Definition at line 453 of file MucGeoMgr.cxx.

References B_AS_NUM, B_LAY_NUM, B_SEG_NUM, BRID, E_ASLAY_NUM, E_PANEL_NUM, E_SEG_NUM, genRecEmupikp::i, Bes_Common::INFO, ganga-rec::j, msgSvc, and PART_MAX.

Referenced by CreateEntities().

00454 {
00455   MsgStream log(msgSvc, "MucGeoMgr");
00456 
00457         ofstream fOrigin("MucAbsorberOrigin.dat", ios::out);
00458         ofstream fPanel("MucAbsorberPanel.dat", ios::out);
00459         ofstream fPos("MucAbsorberPanelPos.dat", ios::out);
00460         
00461         if( fOrigin.bad() || fPanel.bad() || fPos.bad() )
00462         {
00463                 log << MSG::INFO << "Absorber: create ouput file error!" << endreq;
00464                 return StatusCode::FAILURE;
00465         }
00466         fOrigin << "part\tsegment\tlayer\tW\tH\tL\tBes_x\tBes_y\tBes_z\tRot_x\tRot_y\tRot_z" << endl;
00467         fPanel  << "part\tsegment\tlayer\tpanel\tWu\tWd\tH\tL\tLoc_x\tLoc_y\tLoc_z" << endl;    
00468         fPos    << "part\tsegment\tlayer\tpanel\tLBes_x\tLBes_y\tLBes_z\tOBes_x\tOBes_y\tOBes_z\tLoc_x\tLoc_y\tLoc_z" << endl;
00469 
00470         int totalObject = 0;
00471 
00472         for( int i=0; i<PART_MAX; i++ )
00473         {
00474                 if( i == BRID )
00475                 {
00476                         for( int j=0; j<B_SEG_NUM; j++ )
00477                         {
00478                                 for( int k=0; k<B_LAY_NUM; k++ )
00479                                 {
00480                                         for( int n=0; n<B_AS_NUM; n++ )
00481                                         {
00482                                                 MucAbsorber *aMucAbsorber = new MucAbsorber( i, j, k, n );
00483                                                 fOrigin << i << "\t" << j << "\t" << k << "\t" 
00484                                                         << aMucAbsorber->GetW() <<"\t"
00485                                                         << aMucAbsorber->GetH() <<"\t"
00486                                                         << aMucAbsorber->GetL() <<"\t"                          
00487                                                         << aMucAbsorber->GetLocOrgInBes(1)   <<"\t"
00488                                                         << aMucAbsorber->GetLocOrgInBes(2)   <<"\t"
00489                                                         << aMucAbsorber->GetLocOrgInBes(3)   <<"\t"
00490                                                         << aMucAbsorber->GetObjRotToMot(1)   <<"\t"
00491                                                         << aMucAbsorber->GetObjRotToMot(2)   <<"\t"
00492                                                         << aMucAbsorber->GetObjRotToMot(3)   <<"\t"
00493                                                         << endl;
00494                                                 fPanel  <<  i << "\t" << j << "\t" << k << "\t" << n << "\t"
00495                                                         << aMucAbsorber->GetWu() <<"\t"
00496                                                         << aMucAbsorber->GetWd() <<"\t"
00497                                                         << aMucAbsorber->GetH()  <<"\t"
00498                                                         << aMucAbsorber->GetL()  <<"\t" 
00499                                                         << aMucAbsorber->GetObjOrgInLoc(1)   <<"\t"
00500                                                         << aMucAbsorber->GetObjOrgInLoc(2)   <<"\t"
00501                                                         << aMucAbsorber->GetObjOrgInLoc(3)   <<"\t"
00502                                                         << endl;
00503                                                 fPos    << i << "\t" << j << "\t" << k << "\t" << n << "\t"
00504                                                         << aMucAbsorber->GetLocOrgInBes(1)   <<"\t"
00505                                                         << aMucAbsorber->GetLocOrgInBes(2)   <<"\t"
00506                                                         << aMucAbsorber->GetLocOrgInBes(3)   <<"\t"
00507                                                         << aMucAbsorber->GetObjOrgInBes(1)   <<"\t"
00508                                                         << aMucAbsorber->GetObjOrgInBes(2)   <<"\t"
00509                                                         << aMucAbsorber->GetObjOrgInBes(3)   <<"\t"
00510                                                         << aMucAbsorber->GetObjOrgInLoc(1)   <<"\t"
00511                                                         << aMucAbsorber->GetObjOrgInLoc(2)   <<"\t"
00512                                                         << aMucAbsorber->GetObjOrgInLoc(3)   <<"\t"
00513                                                         << endl;
00514 
00515                                                 totalObject++;
00516                                         //      delete aMucAbsorber;
00517                                         }
00518                                 } // layer
00519                         } // segment
00520                 } // barrel
00521                 else
00522                 {
00523                         for( int j=0; j<E_SEG_NUM; j++ )
00524                         {
00525                                 for( int k=0; k<E_ASLAY_NUM; k++ )
00526                                 {
00527                                         for( int n=-1; n<E_PANEL_NUM; n++ )
00528                                         {
00529                                                 MucAbsorber *aMucAbsorber = new MucAbsorber( i, j, k, n );
00530                                                 if( n == -1 )
00531                                                 {
00532                                                  fOrigin<< i << "\t" << j << "\t" << k << "\t"
00533                                                         << aMucAbsorber->GetW() <<"\t"
00534                                                         << aMucAbsorber->GetH() <<"\t"
00535                                                         << aMucAbsorber->GetL() <<"\t"
00536                                                         << aMucAbsorber->GetLocOrgInBes(1)   <<"\t"
00537                                                         << aMucAbsorber->GetLocOrgInBes(2)   <<"\t"
00538                                                         << aMucAbsorber->GetLocOrgInBes(3)   <<"\t"
00539                                                         << aMucAbsorber->GetObjRotToMot(1)   <<"\t"
00540                                                         << aMucAbsorber->GetObjRotToMot(2)   <<"\t"
00541                                                         << aMucAbsorber->GetObjRotToMot(3)   <<"\t"
00542                                                         << endl;
00543 
00544                                                         totalObject ++;
00545                                                         // delete aMucAbsorber;
00546                                                 }
00547                                                 else
00548                                                 {
00549                                                   fPanel<< i << "\t" << j << "\t" << k << "\t" << n << "\t"
00550                                                         << aMucAbsorber->GetWu() <<"\t"
00551                                                         << aMucAbsorber->GetWd() <<"\t"
00552                                                         << aMucAbsorber->GetH()  <<"\t"
00553                                                         << aMucAbsorber->GetL()  <<"\t"
00554                                                         << aMucAbsorber->GetObjOrgInLoc(1)   <<"\t"
00555                                                         << aMucAbsorber->GetObjOrgInLoc(2)   <<"\t"
00556                                                         << aMucAbsorber->GetObjOrgInLoc(3)   <<"\t"
00557                                                         << endl;
00558 
00559                                                 fPos    << i << "\t" << j << "\t" << k << "\t" << n << "\t"
00560                                                         << aMucAbsorber->GetLocOrgInBes(1)   <<"\t"
00561                                                         << aMucAbsorber->GetLocOrgInBes(2)   <<"\t"
00562                                                         << aMucAbsorber->GetLocOrgInBes(3)   <<"\t"
00563                                                         << aMucAbsorber->GetObjOrgInBes(1)   <<"\t"
00564                                                         << aMucAbsorber->GetObjOrgInBes(2)   <<"\t"
00565                                                         << aMucAbsorber->GetObjOrgInBes(3)   <<"\t"
00566                                                         << aMucAbsorber->GetObjOrgInLoc(1)   <<"\t"
00567                                                         << aMucAbsorber->GetObjOrgInLoc(2)   <<"\t"
00568                                                         << aMucAbsorber->GetObjOrgInLoc(3)   <<"\t"
00569                                                         << endl;
00570                                                         // delete aMucAbsorber;
00571                                                 }
00572                                         }
00573                                 } // layer
00574                         } // segment
00575                 } // endcap
00576         } // for
00577         
00578         fOrigin.close();
00579         fPanel.close();
00580         fPos.close();
00581         
00582         log << MSG::INFO << totalObject << "\tabsorbers created." << endreq;
00583         
00584         return StatusCode::SUCCESS;
00585 } // MucAbsorber

StatusCode MucGeoMgr::CreateBakelite (  )  [protected]

Definition at line 1586 of file MucGeoMgr.cxx.

References B_LAY_NUM, B_RPC_NUM, B_SEG_NUM, B_TOP, B_TOP_RPC_NUM, BKLT_NUM, BRID, E_LAY_NUM, E_RPC_NUM, E_SEG_NUM, genRecEmupikp::i, Bes_Common::INFO, ganga-rec::j, msgSvc, PART_MAX, SL_NUM, and t().

Referenced by CreateEntities().

01587 {
01588         MsgStream log(msgSvc, "MucGeoMgr");
01589 
01590         //-------------------------- ideal geometry----------------------
01591 
01592         ofstream fOrigin("MucBakelite.dat", ios::out);
01593         ofstream fPos("MucBakelitePos.dat", ios::out);
01594 
01595         if( fOrigin.bad() || fPos.bad() )
01596         {
01597                 log << MSG::INFO << "Bakelite: create ouput file error!" << endl;
01598                 return StatusCode::FAILURE;
01599         }
01600         fOrigin << "part\tsegment\tlayer\tupDown\trpcId\tBKLT\t"
01601                 << "Wu\tWd\tH\tL\tLoc_x\tLoc_y\tLoc_z\tBes_x\tBes_y\tBes_z" << endl;
01602         fPos    << "part\tsegment\tlayer\tupDown\trpcId\tBKLT\t"
01603                 << "LBes_x\tLBes_y\tLBes_z\tOBes_x\tOBes_y\tOBes_z\tLoc_x\tLoc_y\tLoc_z" << endl;
01604 
01605         int totalObject = 0;
01606 
01607         for( int i=0; i<PART_MAX; i++ )
01608         {
01609                 if( i == BRID )
01610                 {
01611                         for( int j=0; j<B_SEG_NUM; j++ )
01612                         {
01613                                 // Set maximum rpc number
01614                                 int maxRpc;
01615                                 if( j ==B_TOP )
01616                                         maxRpc = B_TOP_RPC_NUM;    // top segment
01617                                 else
01618                                         maxRpc = B_RPC_NUM;        // not top segment
01619 
01620                                 for( int k=0; k<B_LAY_NUM; k++ )
01621                                 {
01622                                         for( int m=0; m<SL_NUM; m++ )
01623                                         {
01624                                                 for( int n=0; n<maxRpc; n++ )
01625                                                 {
01626                                                         for( int t=0; t<BKLT_NUM; t++)
01627                                                         {
01628                                                          MucBakelite *aMucBakelite = new MucBakelite( i, j, k, m, n, t );
01629 
01630                                                          fOrigin<< i << "\t" << j << "\t" << k << "\t"
01631                                                                 << m << "\t" << n << "\t" << t << "\t"
01632                                                                 << aMucBakelite->GetWu()             <<"\t"
01633                                                                 << aMucBakelite->GetWd()             <<"\t"
01634                                                                 << aMucBakelite->GetH()              <<"\t"
01635                                                                 << aMucBakelite->GetL()              <<"\t"
01636                                                                 << aMucBakelite->GetObjOrgInLoc(1)   <<"\t"
01637                                                                 << aMucBakelite->GetObjOrgInLoc(2)   <<"\t"
01638                                                                 << aMucBakelite->GetObjOrgInLoc(3)   <<"\t"
01639                                                                 << aMucBakelite->GetObjOrgInBes(1)   <<"\t"
01640                                                                 << aMucBakelite->GetObjOrgInBes(2)   <<"\t"
01641                                                                 << aMucBakelite->GetObjOrgInBes(3)   <<"\t"
01642                                                                 << endl;
01643 
01644                                                          fPos   << i << "\t" << j << "\t" << k << "\t"
01645                                                                 << m << "\t" << n << "\t" << t << "\t"
01646                                                                 << aMucBakelite->GetLocOrgInBes(1)   <<"\t"
01647                                                                 << aMucBakelite->GetLocOrgInBes(2)   <<"\t"
01648                                                                 << aMucBakelite->GetLocOrgInBes(3)   <<"\t"
01649                                                                 << aMucBakelite->GetObjOrgInBes(1)   <<"\t"
01650                                                                 << aMucBakelite->GetObjOrgInBes(2)   <<"\t"
01651                                                                 << aMucBakelite->GetObjOrgInBes(3)   <<"\t"
01652                                                                 << aMucBakelite->GetObjOrgInLoc(1)   <<"\t"
01653                                                                 << aMucBakelite->GetObjOrgInLoc(2)   <<"\t"
01654                                                                 << aMucBakelite->GetObjOrgInLoc(3)   <<"\t"
01655                                                                 << endl;
01656 
01657                                                          totalObject++;
01658                                                          // delete aMucBakelite;        
01659                                                         } // bakelite
01660                                                 } // rpc
01661                                         } // super layer
01662                                 } // layer
01663                         } // segment
01664                 } // barrel
01665                 else
01666                 {
01667                         for( int j=0; j<E_SEG_NUM; j++ )
01668                         {
01669                                 for( int k=0; k<E_LAY_NUM; k++ )
01670                                 {
01671                                         for( int m=0; m<SL_NUM; m++ )
01672                                         {
01673                                                 for( int n=0; n<E_RPC_NUM[m]; n++ )
01674                                                 {
01675                                                         for( int t=0; t<BKLT_NUM; t++ )
01676                                                         {
01677                                                          MucBakelite *aMucBakelite = new MucBakelite( i, j, k, m, n, t );
01678 
01679                                                          fOrigin<< i << "\t" << j << "\t" << k << "\t"
01680                                                                 << m << "\t" << n << "\t" << t << "\t"
01681                                                                 << aMucBakelite->GetWu()             <<"\t"
01682                                                                 << aMucBakelite->GetWd()             <<"\t"
01683                                                                 << aMucBakelite->GetH()              <<"\t"
01684                                                                 << aMucBakelite->GetL()              <<"\t"
01685                                                                 << aMucBakelite->GetObjOrgInLoc(1)   <<"\t"
01686                                                                 << aMucBakelite->GetObjOrgInLoc(2)   <<"\t"
01687                                                                 << aMucBakelite->GetObjOrgInLoc(3)   <<"\t"
01688                                                                 << aMucBakelite->GetObjOrgInBes(1)   <<"\t"
01689                                                                 << aMucBakelite->GetObjOrgInBes(2)   <<"\t"
01690                                                                 << aMucBakelite->GetObjOrgInBes(3)   <<"\t"
01691                                                                 << endl;
01692 
01693                                                          fPos   << i << "\t" << j << "\t" << k << "\t"
01694                                                                 << m << "\t" << n << "\t" << t << "\t"
01695                                                                 << aMucBakelite->GetLocOrgInBes(1)   <<"\t"
01696                                                                 << aMucBakelite->GetLocOrgInBes(2)   <<"\t"
01697                                                                 << aMucBakelite->GetLocOrgInBes(3)   <<"\t"
01698                                                                 << aMucBakelite->GetObjOrgInBes(1)   <<"\t"
01699                                                                 << aMucBakelite->GetObjOrgInBes(2)   <<"\t"
01700                                                                 << aMucBakelite->GetObjOrgInBes(3)   <<"\t"
01701                                                                 << aMucBakelite->GetObjOrgInLoc(1)   <<"\t"
01702                                                                 << aMucBakelite->GetObjOrgInLoc(2)   <<"\t"
01703                                                                 << aMucBakelite->GetObjOrgInLoc(3)   <<"\t"
01704                                                                 << endl;
01705 
01706                                                          totalObject++;
01707                                                          // delete aMucBakelite;
01708                                                         } // bakelite
01709                                                 } // rpc
01710                                         } // super layer
01711                                 } // layer
01712                         } // segment
01713                 } // endcap
01714         } // for, part
01715 
01716         fOrigin.close();
01717         fPos.close();
01718 
01719         log << MSG::INFO << totalObject << "\tbakelites created." << endreq;
01720 
01721         return StatusCode::SUCCESS;
01722 
01723 } // MucBakelite

StatusCode MucGeoMgr::CreateBox (  )  [protected]

Definition at line 739 of file MucGeoMgr.cxx.

References B_GP_NUM, B_LAY_NUM, B_SEG_NUM, B_TOP, BRID, E_LAY_NUM, E_PANEL_NUM, E_SEG_NUM, genRecEmupikp::i, Bes_Common::INFO, ganga-rec::j, m_AlignFlag, m_BoxOffset, msgSvc, and PART_MAX.

Referenced by CreateEntities().

00740 {
00741         MsgStream log(msgSvc, "MucGeoMgr");
00742 
00743         //-------------------------- ideal geometry----------------------
00744         ofstream fOrigin("MucBoxOrigin.dat", ios::out);
00745         ofstream fPanel("MucBoxPanel.dat", ios::out);
00746         ofstream fPos("MucBoxPanelPos.dat", ios::out);
00747 
00748         if( fOrigin.bad() || fPanel.bad() || fPos.bad() )
00749         {
00750                 log << MSG::INFO << "Box: create ouput file error!" << endl;
00751                 return StatusCode::FAILURE;
00752         }
00753         fOrigin << "part\tsegment\tlayer\tW\tH\tL\tLoc_x\tLoc_y\tLoc_z" << endl;
00754         fPanel  << "part\tsegment\tlayer\tpanel\tWu\tWd\tH\tL\tLoc_x\tLoc_y\tLoc_z" << endl;
00755         fPos    << "part\tsegment\tlayer\tpanel\tLBes_x\tLBes_y\tLBes_z\tOBes_x\tOBes_y\tOBes_z\tLoc_x\tLoc_y\tLoc_z" << endl;
00756 
00757         int totalObject = 0;
00758         for( int i=0; i<PART_MAX; i++ )
00759         {
00760                 if( i == BRID )
00761                 {
00762                         for( int j=0; j<B_SEG_NUM; j++ )
00763                         {       
00764                                 // set panel number
00765                                 int idMin, idMax;
00766                                 if( j != B_TOP ) { idMin = 0; idMax = B_GP_NUM; }
00767                                 else             { idMin = -1; idMax = 3;       }
00768 
00769                                 for( int k=0; k<B_LAY_NUM; k++ )
00770                                 {
00771                                         for( int n=idMin; n<idMax; n++ )
00772                                         {
00773                                                 MucBox *aMucBox = new MucBox( i, j, k, n );
00774 
00775                                                 if( j == B_TOP && n != -1 ) // barrel top segment panels
00776                                                 {
00777                                                   fPanel<< i << "\t" << j << "\t" << k << "\t" << n << "\t"
00778                                                         << aMucBox->GetWu() <<"\t"
00779                                                         << aMucBox->GetWd() <<"\t"
00780                                                         << aMucBox->GetH()  <<"\t"
00781                                                         << aMucBox->GetL()  <<"\t"
00782                                                         << aMucBox->GetObjOrgInLoc(1)   <<"\t"
00783                                                         << aMucBox->GetObjOrgInLoc(2)   <<"\t"
00784                                                         << aMucBox->GetObjOrgInLoc(3)   <<"\t"
00785                                                         << endl;
00786                                                 }
00787                                                 
00788                                                 if( j !=B_TOP || n == -1 ) // box
00789                                                 {
00790                                                   fOrigin << i << "\t" << j << "\t" << k << "\t"
00791                                                         << aMucBox->GetW() <<"\t"
00792                                                         << aMucBox->GetH() <<"\t"
00793                                                         << aMucBox->GetL() <<"\t"
00794                                                         << aMucBox->GetObjOrgInLoc(1)   <<"\t"
00795                                                         << aMucBox->GetObjOrgInLoc(2)   <<"\t"
00796                                                         << aMucBox->GetObjOrgInLoc(3)   <<"\t"
00797                                                         << endl;
00798 
00799                                                   totalObject++;
00800                                                   // delete aMucBox;
00801                                                 }
00802 
00803                                                 fPos    << i << "\t" << j << "\t" << k << "\t" << n << "\t"
00804                                                         << aMucBox->GetLocOrgInBes(1)   <<"\t"
00805                                                         << aMucBox->GetLocOrgInBes(2)   <<"\t"
00806                                                         << aMucBox->GetLocOrgInBes(3)   <<"\t"
00807                                                         << aMucBox->GetObjOrgInBes(1)   <<"\t"
00808                                                         << aMucBox->GetObjOrgInBes(2)   <<"\t"
00809                                                         << aMucBox->GetObjOrgInBes(3)   <<"\t"
00810                                                         << aMucBox->GetObjOrgInLoc(1)   <<"\t"
00811                                                         << aMucBox->GetObjOrgInLoc(2)   <<"\t"
00812                                                         << aMucBox->GetObjOrgInLoc(3)   <<"\t"
00813                                                         << endl;
00814                                                 // delete aMucBox;
00815                                         } // panel
00816                                 } // layer
00817                         } // segment
00818                 } // barrel
00819                 else
00820                 {
00821                         for( int j=0; j<E_SEG_NUM; j++ )
00822                         {
00823                                 for( int k=0; k<E_LAY_NUM; k++ )
00824                                 {
00825                                         for( int n=-1; n<E_PANEL_NUM; n++ )
00826                                         {
00827                                                 MucBox *aMucBox = new MucBox( i, j, k, n );
00828                                                 if( n == -1 )
00829                                                 {
00830                                                  fOrigin<< i << "\t" << j << "\t" << k << "\t"
00831                                                         << aMucBox->GetW() <<"\t"
00832                                                         << aMucBox->GetH() <<"\t"
00833                                                         << aMucBox->GetL() <<"\t"
00834                                                         << aMucBox->GetObjOrgInLoc(1)   <<"\t"
00835                                                         << aMucBox->GetObjOrgInLoc(2)   <<"\t"
00836                                                         << aMucBox->GetObjOrgInLoc(3)   <<"\t"
00837                                                         << endl;
00838 
00839                                                  totalObject++;
00840                                                  // delete aMucBox;
00841                                                 }
00842                                                 else
00843                                                 {
00844                                                   fPanel<< i << "\t" << j << "\t" << k << "\t" << n << "\t"
00845                                                         << aMucBox->GetWu() <<"\t"
00846                                                         << aMucBox->GetWd() <<"\t"
00847                                                         << aMucBox->GetH()  <<"\t"
00848                                                         << aMucBox->GetL()  <<"\t"
00849                                                         << aMucBox->GetObjOrgInLoc(1)   <<"\t"
00850                                                         << aMucBox->GetObjOrgInLoc(2)   <<"\t"
00851                                                         << aMucBox->GetObjOrgInLoc(3)   <<"\t"
00852                                                         << endl;
00853                                                   // delete aMucBox;
00854                                                 }
00855 
00856                                                   fPos  << i << "\t" << j << "\t" << k << "\t" << n << "\t"
00857                                                         << aMucBox->GetLocOrgInBes(1)   <<"\t"
00858                                                         << aMucBox->GetLocOrgInBes(2)   <<"\t"
00859                                                         << aMucBox->GetLocOrgInBes(3)   <<"\t"
00860                                                         << aMucBox->GetObjOrgInBes(1)   <<"\t"
00861                                                         << aMucBox->GetObjOrgInBes(2)   <<"\t"
00862                                                         << aMucBox->GetObjOrgInBes(3)   <<"\t"
00863                                                         << aMucBox->GetObjOrgInLoc(1)   <<"\t"
00864                                                         << aMucBox->GetObjOrgInLoc(2)   <<"\t"
00865                                                         << aMucBox->GetObjOrgInLoc(3)   <<"\t"
00866                                                         << endl;
00867                                                   // delete aMucBox;
00868                                         }
00869                                 } // layer
00870                         } // segment
00871                 } // endcap
00872         } // for
00873 
00874         fOrigin.close();
00875         fPanel.close();
00876         fPos.close();
00877 
00878         //-----------------------------real geometry-------------------------
00879 
00880         if( m_AlignFlag )
00881         {
00882                 ofstream fOrgAlign("MucBoxOriginAligned.dat", ios::out);
00883                 fOrgAlign  << "part\tsegment\tlayer\tW\tH\tL\tLoc_x\tLoc_y\tLoc_z" << endl;
00884                 double offset[3];
00885                 for( int i=0; i<PART_MAX; i++ )
00886                 {
00887                         if( i == BRID )
00888                         {
00889                                 for( int j=0; j<B_SEG_NUM; j++ )
00890                                 {
00891                                         for( int k=0; k<B_LAY_NUM; k++ )
00892                                         {
00893                                                 MucBox *aMucBox = new MucBox( i, j, k, ((j==B_TOP)?-1:0) );
00894                                                 offset[0] =m_BoxOffset[i][j][k][0];
00895                                                 offset[1] =m_BoxOffset[i][j][k][1];
00896                                                 offset[2] =m_BoxOffset[i][j][k][2];
00897                                                 aMucBox->SetAlignment( offset[0], offset[1], offset[2] );
00898 
00899                                                 fOrgAlign << i << "\t" << j << "\t" << k << "\t"
00900                                                         << aMucBox->GetW() <<"\t"
00901                                                         << aMucBox->GetH() <<"\t"
00902                                                         << aMucBox->GetL() <<"\t"
00903                                                         << aMucBox->GetObjOrgInLoc(1)   <<"\t"
00904                                                         << aMucBox->GetObjOrgInLoc(2)   <<"\t"
00905                                                         << aMucBox->GetObjOrgInLoc(3)   <<"\t"
00906                                                         << endl;
00907                                                 // delete aMucBox;
00908                                         } // layer
00909                                 } // segment
00910                         } // barrel
00911                         else
00912                         {
00913                                 for( int j=0; j<E_SEG_NUM; j++ )
00914                                 {
00915                                         for( int k=0; k<E_LAY_NUM; k++ )
00916                                         {
00917                                                 MucBox *aMucBox = new MucBox( i, j, k, -1 );
00918                                                 offset[0] =m_BoxOffset[i][j][k][0];
00919                                                 offset[1] =m_BoxOffset[i][j][k][1];
00920                                                 offset[2] =m_BoxOffset[i][j][k][2];
00921                                                 aMucBox->SetAlignment( offset[0], offset[1], offset[2] );
00922                                                 
00923                                                  fOrgAlign<< i << "\t" << j << "\t" << k << "\t"
00924                                                         << aMucBox->GetW() <<"\t"
00925                                                         << aMucBox->GetH() <<"\t"
00926                                                         << aMucBox->GetL() <<"\t"
00927                                                         << aMucBox->GetObjOrgInLoc(1)   <<"\t"
00928                                                         << aMucBox->GetObjOrgInLoc(2)   <<"\t"
00929                                                         << aMucBox->GetObjOrgInLoc(3)   <<"\t"
00930                                                         << endl;
00931                                                 // delete aMucBox;
00932                                         } // layer
00933                                 } // segment
00934                         } // endcap
00935                 } // for
00936                 
00937                 fOrgAlign.close();
00938         } // if
00939 
00940 
00941         log << MSG::INFO << totalObject << "\tboxes created." << endreq;
00942 
00943         return StatusCode::SUCCESS;
00944 } // MucBox

StatusCode MucGeoMgr::CreateBoxCover (  )  [protected]

Definition at line 1726 of file MucGeoMgr.cxx.

References B_GP_NUM, B_LAY_NUM, B_SEG_NUM, B_TOP, BRID, E_LAY_NUM, E_PANEL_NUM, E_SEG_NUM, genRecEmupikp::i, Bes_Common::INFO, ganga-rec::j, msgSvc, PART_MAX, and SL_NUM.

Referenced by CreateEntities().

01727 {
01728         MsgStream log(msgSvc, "MucGeoMgr");
01729 
01730         //-------------------------- ideal geometry----------------------
01731         ofstream fOrigin("MucBoxCoverOrigin.dat", ios::out);
01732         ofstream fPanel("MucBoxCoverPanel.dat", ios::out);
01733         ofstream fPos("MucBoxCoverPanelPos.dat", ios::out);
01734 
01735         if( fOrigin.bad() || fPanel.bad() || fPos.bad() )
01736         {
01737                 log << MSG::INFO << "BoxCover: create ouput file error!" << endl;
01738                 return StatusCode::FAILURE;
01739         }
01740         fOrigin << "part\tsegment\tlayer\tU/D\tW\tH\tL\tLoc_x\tLoc_y\tLoc_z" << endl;
01741         fPanel  << "part\tsegment\tlayer\tU/D\tpanel\tWu\tWd\tH\tL\tLoc_x\tLoc_y\tLoc_z" << endl;
01742         fPos    << "part\tsegment\tlayer\tU/D\tpanel\tLBes_x\tLBes_y\tLBes_z\tOBes_x\tOBes_y\tOBes_z\tLoc_x\tLoc_y\tLoc_z" << endl;
01743 
01744         int totalObject = 0;
01745 
01746         for( int i=0; i<PART_MAX; i++ )
01747         {
01748                 if( i == BRID )
01749                 {
01750                         for( int j=0; j<B_SEG_NUM; j++ )
01751                         {
01752                                 // set panel number
01753                                 int idMin, idMax;
01754                                 if( j != B_TOP ) { idMin = 0; idMax = B_GP_NUM; }
01755                                 else             { idMin = -1; idMax = 3;       }
01756                                 
01757                                 for( int k=0; k<B_LAY_NUM; k++ )
01758                                 {
01759                                         for( int m=0; m<SL_NUM; m++ )
01760                                         {       
01761                                                 for( int n = idMin; n<idMax; n++ )
01762                                                 {
01763                                                         MucBoxCover *aMucBoxCover = new MucBoxCover( i, j, k, m, n );
01764                                                         if( j == B_TOP || n != -1 ) // barrel top segment panels
01765                                                         {
01766                                                           fPanel << i << "\t" << j << "\t" << k << "\t"
01767                                                                 << m << "\t" << n << "\t"
01768                                                                 << aMucBoxCover->GetW() <<"\t"
01769                                                                 << aMucBoxCover->GetW() <<"\t"
01770                                                                 << aMucBoxCover->GetH() <<"\t"
01771                                                                 << aMucBoxCover->GetL() <<"\t"
01772                                                                 << aMucBoxCover->GetObjOrgInLoc(1)   <<"\t"
01773                                                                 << aMucBoxCover->GetObjOrgInLoc(2)   <<"\t"
01774                                                                 << aMucBoxCover->GetObjOrgInLoc(3)   <<"\t"
01775                                                                 << endl;
01776                                                                 // delete aMucBoxCover;
01777                                                          }
01778 
01779                                                          if( j != B_TOP || n == -1 ) // box cover
01780                                                          {
01781                                                           fOrigin << i << "\t" << j << "\t" << k << "\t" 
01782                                                                 << m << "\t"  
01783                                                                 << aMucBoxCover->GetW() <<"\t"
01784                                                                 << aMucBoxCover->GetH() <<"\t"
01785                                                                 << aMucBoxCover->GetL() <<"\t"
01786                                                                 << aMucBoxCover->GetObjOrgInLoc(1)   <<"\t"
01787                                                                 << aMucBoxCover->GetObjOrgInLoc(2)   <<"\t"
01788                                                                 << aMucBoxCover->GetObjOrgInLoc(3)   <<"\t"
01789                                                                 << endl;
01790         
01791                                                                 totalObject++;
01792                                                                 // delete aMucBoxCover;
01793                                                          }
01794 
01795                                                         fPos << i << "\t" << j << "\t" << k << "\t" 
01796                                                                 << m << "\t" << n << "\t"
01797                                                                 << aMucBoxCover->GetLocOrgInBes(1)   <<"\t"
01798                                                                 << aMucBoxCover->GetLocOrgInBes(2)   <<"\t"
01799                                                                 << aMucBoxCover->GetLocOrgInBes(3)   <<"\t"
01800                                                                 << aMucBoxCover->GetObjOrgInBes(1)   <<"\t"
01801                                                                 << aMucBoxCover->GetObjOrgInBes(2)   <<"\t"
01802                                                                 << aMucBoxCover->GetObjOrgInBes(3)   <<"\t"
01803                                                                 << aMucBoxCover->GetObjOrgInLoc(1)   <<"\t"
01804                                                                 << aMucBoxCover->GetObjOrgInLoc(2)   <<"\t"
01805                                                                 << aMucBoxCover->GetObjOrgInLoc(3)   <<"\t"
01806                                                                 << endl;
01807                                                                 // delete aMucBoxCover;
01808                                                 } // panel
01809                                         }// super layer
01810                                 } // layer
01811                         } // segment
01812                 } // barrel
01813                 else
01814                 {
01815                         for( int j=0; j<E_SEG_NUM; j++ )
01816                         {
01817                                 for( int k=0; k<E_LAY_NUM; k++ )
01818                                 {
01819                                         for( int m=0; m<SL_NUM; m++ )
01820                                         {
01821                                                 for( int n=-1; n<E_PANEL_NUM; n++ )
01822                                                 {
01823                                                         MucBoxCover *aMucBoxCover = new MucBoxCover( i, j, k, m, n );
01824                                                         if( n == -1 )
01825                                                         {
01826                                                          fOrigin<< i << "\t" << j << "\t" << k << "\t" 
01827                                                                 << m << "\t" 
01828                                                                 << aMucBoxCover->GetW() <<"\t"
01829                                                                 << aMucBoxCover->GetH() <<"\t"
01830                                                                 << aMucBoxCover->GetL() <<"\t"
01831                                                                 << aMucBoxCover->GetObjOrgInLoc(1)   <<"\t"
01832                                                                 << aMucBoxCover->GetObjOrgInLoc(2)   <<"\t"
01833                                                                 << aMucBoxCover->GetObjOrgInLoc(3)   <<"\t"
01834                                                                 << endl;
01835                                                          totalObject++;
01836                                                          // delete aMucBoxCover;
01837                                                         }
01838                                                         else
01839                                                         {
01840                                                           fPanel<< i << "\t" << j << "\t" << k << "\t" 
01841                                                                 << m << "\t" << n << "\t"
01842                                                                 << aMucBoxCover->GetWu() <<"\t"
01843                                                                 << aMucBoxCover->GetWd() <<"\t"
01844                                                                 << aMucBoxCover->GetH()  <<"\t"
01845                                                                 << aMucBoxCover->GetL()  <<"\t"
01846                                                                 << aMucBoxCover->GetObjOrgInLoc(1)   <<"\t"
01847                                                                 << aMucBoxCover->GetObjOrgInLoc(2)   <<"\t"
01848                                                                 << aMucBoxCover->GetObjOrgInLoc(3)   <<"\t"
01849                                                                 << endl;
01850                                                          // delete aMucBoxCover;
01851                                                         }
01852 
01853                                                           fPos  << i << "\t" << j << "\t" << k << "\t" 
01854                                                                 << m << "\t" << n << "\t"
01855                                                                 << aMucBoxCover->GetLocOrgInBes(1)   <<"\t"
01856                                                                 << aMucBoxCover->GetLocOrgInBes(2)   <<"\t"
01857                                                                 << aMucBoxCover->GetLocOrgInBes(3)   <<"\t"
01858                                                                 << aMucBoxCover->GetObjOrgInBes(1)   <<"\t"
01859                                                                 << aMucBoxCover->GetObjOrgInBes(2)   <<"\t"
01860                                                                 << aMucBoxCover->GetObjOrgInBes(3)   <<"\t"
01861                                                                 << aMucBoxCover->GetObjOrgInLoc(1)   <<"\t"
01862                                                                 << aMucBoxCover->GetObjOrgInLoc(2)   <<"\t"
01863                                                                 << aMucBoxCover->GetObjOrgInLoc(3)   <<"\t"
01864                                                                 << endl;
01865                                                           // delete aMucBoxCover;
01866                                                 } // panel
01867                                         } // super layer
01868                                 } // layer
01869                         } // segment
01870                 } // endcap
01871         } // for
01872 
01873         fOrigin.close();
01874         fPanel.close();
01875         fPos.close();
01876 
01877         log << MSG::INFO << totalObject << "\tbox_covers created." << endreq;
01878 
01879         return StatusCode::SUCCESS;
01880 
01881 } // MucBoxCover

StatusCode MucGeoMgr::CreateEntities (  ) 

Definition at line 222 of file MucGeoMgr.cxx.

References CreateAbsorber(), CreateBakelite(), CreateBox(), CreateBoxCover(), CreateGap(), CreateGas(), CreateRpc(), CreateStrip(), CreateStripPlane(), ENTITY_NUM, genRecEmupikp::i, Bes_Common::INFO, m_CreateFlag, and msgSvc.

Referenced by MucGeoCreateAlg::finalize().

00223 {
00224   MsgStream log(msgSvc, "MucGeoMgr");
00225 
00226         StatusCode sc;
00227 
00228         if( m_CreateFlag.size() < ENTITY_NUM )
00229         {
00230                 for( unsigned int i=m_CreateFlag.size(); i<ENTITY_NUM; i++ )
00231                         m_CreateFlag += '0';
00232         }
00233 
00234         int entity = 0;
00235         for( unsigned int i=0; i< ENTITY_NUM; i++ )
00236                 if( m_CreateFlag[i] == '1' ) entity++;
00237         log << MSG::INFO << entity << "\tentities should be created." << endreq << endreq;
00238 
00239         if( m_CreateFlag[0] == '1' )
00240         {
00241                 sc = CreateAbsorber();
00242                 if( sc == StatusCode::SUCCESS )
00243                         log << MSG::INFO << "Create absorber successfully!" << endreq << endreq;
00244                 else
00245                         log << MSG::INFO << "Create absorber failure!" << endreq << endreq;                     
00246         }
00247 
00248         if( m_CreateFlag[1] == '1' )
00249         {
00250                 sc = CreateGap();
00251                 if( sc == StatusCode::SUCCESS )
00252                         log << MSG::INFO << "Create gap successfully!" << endreq << endreq;
00253                 else
00254                         log << MSG::INFO << "Create gap failure!" << endreq << endreq;       
00255         }
00256 
00257         if( m_CreateFlag[2] == '1' )
00258         {
00259                 sc = CreateBox();
00260                 if( sc == StatusCode::SUCCESS )
00261                         log << MSG::INFO << "Create box successfully!" << endreq << endreq;
00262                 else
00263                         log << MSG::INFO << "Create box failure!" << endreq << endreq;       
00264         }
00265 
00266         if( m_CreateFlag[3] == '1' )
00267         {
00268                 sc = CreateStripPlane();
00269                 if( sc == StatusCode::SUCCESS )
00270                         log << MSG::INFO << "Create strip_plane successfully!" << endreq << endreq;
00271                 else
00272                         log << MSG::INFO << "Create strip_plane failure!" << endreq << endreq;       
00273         }
00274 
00275         if( m_CreateFlag[4] == '1' )
00276         {
00277                 sc = CreateStrip();
00278                 if( sc == StatusCode::SUCCESS )
00279                         log << MSG::INFO << "Create strip successfully!" << endreq << endreq;
00280                 else
00281                         log << MSG::INFO << "Create strip failure!" << endreq << endreq;       
00282         }
00283 
00284         if( m_CreateFlag[5] == '1' )
00285         {
00286                 sc = CreateRpc();
00287                 if( sc == StatusCode::SUCCESS )
00288                         log << MSG::INFO << "Create RPC successfully!" << endreq << endreq;
00289                 else
00290                         log << MSG::INFO << "Create RPC failure!" << endreq << endreq;       
00291         }
00292 
00293         if( m_CreateFlag[6] == '1' )
00294         {
00295                 sc = CreateGas();
00296                 if( sc == StatusCode::SUCCESS )
00297                         log << MSG::INFO << "Create gas mixture successfully!" << endreq << endreq;
00298                 else
00299                         log << MSG::INFO << "Create gas mixture failure!" << endreq << endreq;       
00300         }
00301 
00302         if( m_CreateFlag[7] == '1' )
00303         {
00304                 sc = CreateBakelite();
00305                 if( sc == StatusCode::SUCCESS )
00306                         log << MSG::INFO << "Create bakelite successfully!" << endreq << endreq;
00307                 else
00308                         log << MSG::INFO << "Create bakelite failure!" << endreq << endreq;       
00309         }
00310 
00311         if( m_CreateFlag[8] == '1' )
00312         {
00313                 sc = CreateBoxCover();
00314                 if( sc == StatusCode::SUCCESS )
00315                         log << MSG::INFO << "Create box cover successfully!" << endreq << endreq;
00316                 else
00317                         log << MSG::INFO << "Create box cover failure!" << endreq << endreq;       
00318         }
00319 
00320         
00321         return StatusCode::SUCCESS;
00322 }

StatusCode MucGeoMgr::CreateGap (  )  [protected]

Definition at line 589 of file MucGeoMgr.cxx.

References B_GP_NUM, B_LAY_NUM, B_SEG_NUM, B_TOP, BRID, E_LAY_NUM, E_PANEL_NUM, E_SEG_NUM, genRecEmupikp::i, Bes_Common::INFO, ganga-rec::j, msgSvc, and PART_MAX.

Referenced by CreateEntities().

00590 {
00591         MsgStream log(msgSvc, "MucGeoMgr");
00592 
00593         ofstream fOrigin("MucGapOrigin.dat", ios::out);
00594         ofstream fPanel("MucGapPanel.dat", ios::out);
00595         ofstream fPos("MucGapPanelPos.dat", ios::out);
00596 
00597         if( fOrigin.bad() || fPanel.bad() || fPos.bad() )
00598         {
00599                 log << MSG::INFO << "Gap: create ouput file error!" << endreq;
00600                 return StatusCode::FAILURE;
00601         }
00602         fOrigin << "part\tsegment\tlayer\tW\tH\tL\tBes_x\tBes_y\tBes_z\tRot_x\tRot_y\tRot_z" << endl;
00603         fPanel  << "part\tsegment\tlayer\tpanel\tWu\tWd\tH\tL\tLoc_x\tLoc_y\tLoc_z" << endl;
00604         fPos    << "part\tsegment\tlayer\tpanel\tLBes_x\tLBes_y\tLBes_z\tOBes_x\tOBes_y\tOBes_z\tLoc_x\tLoc_y\tLoc_z" << endl;
00605 
00606         int totalObject = 0;
00607 
00608         for( int i=0; i<PART_MAX; i++ )
00609         {
00610                 if( i == BRID )
00611                 {
00612                         for( int j=0; j<B_SEG_NUM; j++ )
00613                         {
00614                                 // set panel number
00615                                 int idMin, idMax;
00616                                 if( j != B_TOP ) { idMin = 0; idMax = B_GP_NUM; }
00617                                 else             { idMin = -1; idMax = 3;       }
00618 
00619                                 for( int k=0; k<B_LAY_NUM; k++ )
00620                                 {
00621                                         for( int n=idMin; n<idMax; n++ )
00622                                         {
00623                                                 MucGap *aMucGap = new MucGap( i, j, k, n );
00624 
00625                                                 if( j == B_TOP && n != -1 ) // barrel top segment panels
00626                                                 {
00627                                                   fPanel<< i << "\t" << j << "\t" << k << "\t" << n << "\t"
00628                                                         << aMucGap->GetWu() <<"\t"
00629                                                         << aMucGap->GetWd() <<"\t"
00630                                                         << aMucGap->GetH()  <<"\t"
00631                                                         << aMucGap->GetL()  <<"\t"
00632                                                         << aMucGap->GetObjOrgInLoc(1)   <<"\t"
00633                                                         << aMucGap->GetObjOrgInLoc(2)   <<"\t"
00634                                                         << aMucGap->GetObjOrgInLoc(3)   <<"\t"
00635                                                         << endl;
00636                                                 }
00637 
00638                                                 if( j !=B_TOP || n == -1 )
00639                                                 {
00640                                                  fOrigin<< i << "\t" << j << "\t" << k << "\t"
00641                                                         << aMucGap->GetW() <<"\t"
00642                                                         << aMucGap->GetH() <<"\t"
00643                                                         << aMucGap->GetL() <<"\t"       
00644                                                         << aMucGap->GetLocOrgInBes(1)   <<"\t"
00645                                                         << aMucGap->GetLocOrgInBes(2)   <<"\t"
00646                                                         << aMucGap->GetLocOrgInBes(3)   <<"\t"
00647                                                         << aMucGap->GetObjRotToMot(1)   <<"\t"
00648                                                         << aMucGap->GetObjRotToMot(2)   <<"\t"
00649                                                         << aMucGap->GetObjRotToMot(3)   <<"\t"
00650                                                         << endl;
00651 
00652                                                  totalObject++;
00653                                                  // delete aMucGap;
00654                                                 }                                               
00655 
00656                                                 fPos    << i << "\t" << j << "\t" << k << "\t" << n << "\t"
00657                                                         << aMucGap->GetLocOrgInBes(1)   <<"\t"
00658                                                         << aMucGap->GetLocOrgInBes(2)   <<"\t"
00659                                                         << aMucGap->GetLocOrgInBes(3)   <<"\t"
00660                                                         << aMucGap->GetObjOrgInBes(1)   <<"\t"
00661                                                         << aMucGap->GetObjOrgInBes(2)   <<"\t"
00662                                                         << aMucGap->GetObjOrgInBes(3)   <<"\t"
00663                                                         << aMucGap->GetObjOrgInLoc(1)   <<"\t"
00664                                                         << aMucGap->GetObjOrgInLoc(2)   <<"\t"
00665                                                         << aMucGap->GetObjOrgInLoc(3)   <<"\t"
00666                                                         << endl;
00667                                         }
00668                                 } // layer
00669                         } // segment
00670                 } // barrel
00671                 else
00672                 {
00673                         for( int j=0; j<E_SEG_NUM; j++ )
00674                         {
00675                                 for( int k=0; k<E_LAY_NUM; k++ )
00676                                 {
00677                                         for( int n=-1; n<E_PANEL_NUM; n++ )
00678                                         {
00679                                                 MucGap *aMucGap = new MucGap( i, j, k, n );
00680 
00681                                                 if( n == -1 )
00682                                                 {
00683                                                  fOrigin<< i << "\t" << j << "\t" << k << "\t"
00684                                                         << aMucGap->GetW() <<"\t"
00685                                                         << aMucGap->GetH() <<"\t"
00686                                                         << aMucGap->GetL() <<"\t"       
00687                                                         << aMucGap->GetLocOrgInBes(1)   <<"\t"
00688                                                         << aMucGap->GetLocOrgInBes(2)   <<"\t"
00689                                                         << aMucGap->GetLocOrgInBes(3)   <<"\t"
00690                                                         << aMucGap->GetObjRotToMot(1)   <<"\t"
00691                                                         << aMucGap->GetObjRotToMot(2)   <<"\t"
00692                                                         << aMucGap->GetObjRotToMot(3)   <<"\t"
00693                                                         << endl;
00694 
00695                                                  totalObject++;
00696                                                 }
00697                                                 else
00698                                                 {
00699                                                   fPanel<< i << "\t" << j << "\t" << k << "\t" << n << "\t"
00700                                                         << aMucGap->GetWu() <<"\t"
00701                                                         << aMucGap->GetWd() <<"\t"
00702                                                         << aMucGap->GetH()  <<"\t"
00703                                                         << aMucGap->GetL()  <<"\t"
00704                                                         << aMucGap->GetObjOrgInLoc(1)   <<"\t"
00705                                                         << aMucGap->GetObjOrgInLoc(2)   <<"\t"
00706                                                         << aMucGap->GetObjOrgInLoc(3)   <<"\t"
00707                                                         << endl;
00708 
00709                                                   fPos  << i << "\t" << j << "\t" << k << "\t" << n << "\t"
00710                                                         << aMucGap->GetLocOrgInBes(1)   <<"\t"
00711                                                         << aMucGap->GetLocOrgInBes(2)   <<"\t"
00712                                                         << aMucGap->GetLocOrgInBes(3)   <<"\t"
00713                                                         << aMucGap->GetObjOrgInBes(1)   <<"\t"
00714                                                         << aMucGap->GetObjOrgInBes(2)   <<"\t"
00715                                                         << aMucGap->GetObjOrgInBes(3)   <<"\t"
00716                                                         << aMucGap->GetObjOrgInLoc(1)   <<"\t"
00717                                                         << aMucGap->GetObjOrgInLoc(2)   <<"\t"
00718                                                         << aMucGap->GetObjOrgInLoc(3)   <<"\t"
00719                                                         << endl;
00720                                                   // delete aMucGap;
00721                                                 }
00722                                         }
00723                                 } // layer
00724                         } // segment
00725                 } // endcap
00726         } // for
00727 
00728         fOrigin.close();
00729         fPanel.close();
00730         fPos.close();
00731 
00732         log << MSG::INFO << totalObject << "\tgaps created." << endreq;
00733 
00734         return StatusCode::SUCCESS;
00735 } // MucGap

StatusCode MucGeoMgr::CreateGas (  )  [protected]

Definition at line 1456 of file MucGeoMgr.cxx.

References B_LAY_NUM, B_RPC_NUM, B_SEG_NUM, B_TOP, B_TOP_RPC_NUM, BRID, E_LAY_NUM, E_RPC_NUM, E_SEG_NUM, genRecEmupikp::i, Bes_Common::INFO, ganga-rec::j, msgSvc, PART_MAX, and SL_NUM.

Referenced by CreateEntities().

01457 {
01458         MsgStream log(msgSvc, "MucGeoMgr");
01459 
01460         //-------------------------- ideal geometry----------------------
01461 
01462         ofstream fOrigin("MucGas.dat", ios::out);
01463         ofstream fPos("MucGasPos.dat", ios::out);
01464 
01465         if( fOrigin.bad() || fPos.bad() )
01466         {
01467                 log << MSG::INFO << "Gas: create ouput file error!" << endl;
01468                 return StatusCode::FAILURE;
01469         }
01470         fOrigin << "part\tsegment\tlayer\tupDown\tgas\tWu\tWd\tH\tL\tLoc_x\tLoc_y\tLoc_z\tBes_x\tBes_y\tBes_z" << endl;
01471         fPos    << "part\tsegment\tlayer\tupDown\tgas\tLBes_x\tLBes_y\tLBes_z\tOBes_x\tOBes_y\tOBes_z\tLoc_x\tLoc_y\tLoc_z" << endl;
01472 
01473         int totalObject = 0;
01474 
01475         for( int i=0; i<PART_MAX; i++ )
01476         {
01477                 if( i == BRID )
01478                 {
01479                         for( int j=0; j<B_SEG_NUM; j++ )
01480                         {
01481                                 // Set maximum gas
01482                                 int maxRpc;
01483                                 if( j ==B_TOP )
01484                                         maxRpc = B_TOP_RPC_NUM;    // top segment
01485                                 else
01486                                         maxRpc = B_RPC_NUM;        // not top segment
01487 
01488                                 for( int k=0; k<B_LAY_NUM; k++ )
01489                                 {
01490                                         for( int m=0; m<SL_NUM; m++ )
01491                                         {
01492                                                 for( int n=0; n<maxRpc; n++ )
01493                                                 {
01494                                                         MucGas *aMucGas = new MucGas( i, j, k, m, n, 0);
01495 
01496                                                 fOrigin << i << "\t" << j << "\t" << k << "\t"
01497                                                         << m << "\t" << n << "\t"
01498                                                         << aMucGas->GetWu()             <<"\t"
01499                                                         << aMucGas->GetWd()             <<"\t"
01500                                                         << aMucGas->GetH()              <<"\t"
01501                                                         << aMucGas->GetL()              <<"\t"
01502                                                         << aMucGas->GetObjOrgInLoc(1)   <<"\t"
01503                                                         << aMucGas->GetObjOrgInLoc(2)   <<"\t"
01504                                                         << aMucGas->GetObjOrgInLoc(3)   <<"\t"
01505                                                         << aMucGas->GetObjOrgInBes(1)   <<"\t"
01506                                                         << aMucGas->GetObjOrgInBes(2)   <<"\t"
01507                                                         << aMucGas->GetObjOrgInBes(3)   <<"\t"
01508                                                         << endl;
01509 
01510                                                 fPos    << i << "\t" << j << "\t" << k << "\t" << n << "\t"
01511                                                         << aMucGas->GetLocOrgInBes(1)   <<"\t"
01512                                                         << aMucGas->GetLocOrgInBes(2)   <<"\t"
01513                                                         << aMucGas->GetLocOrgInBes(3)   <<"\t"
01514                                                         << aMucGas->GetObjOrgInBes(1)   <<"\t"
01515                                                         << aMucGas->GetObjOrgInBes(2)   <<"\t"
01516                                                         << aMucGas->GetObjOrgInBes(3)   <<"\t"
01517                                                         << aMucGas->GetObjOrgInLoc(1)   <<"\t"
01518                                                         << aMucGas->GetObjOrgInLoc(2)   <<"\t"
01519                                                         << aMucGas->GetObjOrgInLoc(3)   <<"\t"
01520                                                         << endl;
01521 
01522                                                 totalObject++;
01523                                                 // delete aMucGas;
01524                                                 } // for
01525                                         } // super layer
01526                                 } // layer
01527                         } // segment
01528                 } // barrel
01529                 else
01530                 {
01531                         for( int j=0; j<E_SEG_NUM; j++ )
01532                         {
01533                                 for( int k=0; k<E_LAY_NUM; k++ )
01534                                 {
01535                                         for( int m=0; m<SL_NUM; m++ )
01536                                         {
01537                                                 for( int n=0; n<E_RPC_NUM[m]; n++ )
01538                                                 {
01539                                                         MucGas *aMucGas = new MucGas( i, j, k, m, n, 0 );
01540 
01541                                                 fOrigin << i << "\t" << j << "\t" << k << "\t"
01542                                                         << m << "\t" << n << "\t"
01543                                                         << aMucGas->GetWu()              <<"\t"
01544                                                         << aMucGas->GetWd()              <<"\t"
01545                                                         << aMucGas->GetH()              <<"\t"
01546                                                         << aMucGas->GetL()              <<"\t"
01547                                                         << aMucGas->GetObjOrgInLoc(1)   <<"\t"
01548                                                         << aMucGas->GetObjOrgInLoc(2)   <<"\t"
01549                                                         << aMucGas->GetObjOrgInLoc(3)   <<"\t"
01550                                                         << aMucGas->GetObjOrgInBes(1)   <<"\t"
01551                                                         << aMucGas->GetObjOrgInBes(2)   <<"\t"
01552                                                         << aMucGas->GetObjOrgInBes(3)   <<"\t"
01553                                                         << endl;
01554 
01555                                                 fPos    << i << "\t" << j << "\t" << k << "\t"
01556                                                         << m << "\t" << n << "\t"
01557                                                         << aMucGas->GetLocOrgInBes(1)   <<"\t"
01558                                                         << aMucGas->GetLocOrgInBes(2)   <<"\t"
01559                                                         << aMucGas->GetLocOrgInBes(3)   <<"\t"
01560                                                         << aMucGas->GetObjOrgInBes(1)   <<"\t"
01561                                                         << aMucGas->GetObjOrgInBes(2)   <<"\t"
01562                                                         << aMucGas->GetObjOrgInBes(3)   <<"\t"
01563                                                         << aMucGas->GetObjOrgInLoc(1)   <<"\t"
01564                                                         << aMucGas->GetObjOrgInLoc(2)   <<"\t"
01565                                                         << aMucGas->GetObjOrgInLoc(3)   <<"\t"
01566                                                         << endl;
01567                                                 totalObject++;
01568                                                 // delete aMucGas;
01569                                                 } // for
01570                                         } // super layer
01571                                 } // layer
01572                         } // segment
01573                 } // endcap
01574         } // for, part
01575 
01576         fOrigin.close();
01577         fPos.close();
01578 
01579         log << MSG::INFO << totalObject << "\tgases created." << endreq;
01580 
01581         return StatusCode::SUCCESS;
01582 
01583 } // MucGas

StatusCode MucGeoMgr::CreateOnlineStripGeo (  ) 

Definition at line 336 of file MucGeoMgr.cxx.

References B_LAY_NUM, B_PHISTR_NUM, B_SEG_NUM, B_TOP, B_TOPSTR_NUM, B_ZSTR_NUM, BRID, E_LAY_NUM, E_SEG_NUM, E_STR_NUM, EEID, genRecEmupikp::i, Bes_Common::INFO, ganga-rec::j, msgSvc, and PART_MAX.

Referenced by MucGeoCreateAlg::finalize().

00337 {
00338         MsgStream log(msgSvc, "MucGeoMgr");
00339         //StatusCode sc;
00340 
00341   //-------------------------- ideal geometry----------------------
00342   ofstream fEast("EastEndStripGeo.dat", ios::out);
00343   ofstream fBarrel("BarrelStripGeo.dat", ios::out);     
00344   ofstream fWest("WestEndStripGeo.dat", ios::out);      
00345 
00346   if( fEast.bad() || fBarrel.bad() || fWest.bad() )
00347   {
00348         log << MSG::INFO << "Strip: create ouput file error!" << endl;
00349                 return StatusCode::FAILURE;
00350   }
00351   
00352         for( int i=0; i<PART_MAX; i++ )
00353   {
00354         if( i == BRID )
00355     {
00356         for( int j=0; j<B_SEG_NUM; j++ )
00357       {
00358         for( int k=0; k<B_LAY_NUM; k++ )
00359         {
00360                                 // Set maximum strip 
00361           int maxStrip;
00362           if( ( k+1 )%2 == 1 )
00363                 maxStrip = B_ZSTR_NUM;          // odd layer
00364           else if( j != B_TOP )
00365                 maxStrip = B_PHISTR_NUM;        // even layer not top segment
00366           else
00367                 maxStrip = B_TOPSTR_NUM;        // even layer top segment 
00368 
00369           for( int n=0; n<maxStrip; n++ )
00370           {
00371                 MucStrip *aMucStrip = new MucStrip( i, j, k, n );
00372                                                 
00373                                                 fBarrel << i << "\t" << j << "\t" << k << "\t" << n << "\t"
00374                                                         << aMucStrip->GetType()-2                 << "\t"
00375                     << aMucStrip->GetL()                  <<"\t"
00376                                                         << aMucStrip->GetW()              << "\t"
00377                                                         << aMucStrip->GetH()              << "\t"
00378                     << aMucStrip->GetObjOrgInBes(1)   <<"\t"
00379                     << aMucStrip->GetObjOrgInBes(2)   <<"\t"
00380                     << aMucStrip->GetObjOrgInBes(3)   <<"\t"
00381                     << endl;
00382                                                 // delete aMucStrip;
00383           } // for
00384         } // layer
00385       } // segment
00386     } // barrel
00387     else if( i == EEID )
00388     {
00389         for( int j=0; j<E_SEG_NUM; j++ )
00390       {
00391         for( int k=0; k<E_LAY_NUM; k++ )
00392         {
00393                 for( int n=0; n<E_STR_NUM; n++ )
00394           {
00395                 MucStrip *aMucStrip = new MucStrip( i, j, k, n );
00396 
00397                   fEast << i << "\t" << j << "\t" << k << "\t" << n << "\t"
00398                   << aMucStrip->GetType()         << "\t"
00399                   << aMucStrip->GetL()            <<"\t"
00400                   << aMucStrip->GetW()            <<"\t"
00401                   << aMucStrip->GetH()            <<"\t"
00402                   << aMucStrip->GetObjOrgInBes(1)   <<"\t"
00403                   << aMucStrip->GetObjOrgInBes(2)   <<"\t"
00404                   << aMucStrip->GetObjOrgInBes(3)   <<"\t"
00405                   << endl;
00406                                                 // delete aMucStrip;
00407           } // strip
00408         } // layer
00409       } // segment
00410     } // east endcap
00411                 else
00412                 {
00413                 for( int j=0; j<E_SEG_NUM; j++ )
00414       {
00415         for( int k=0; k<E_LAY_NUM; k++ )
00416         {
00417                 for( int n=0; n<E_STR_NUM; n++ )
00418           {
00419                 MucStrip *aMucStrip = new MucStrip( i, j, k, n );
00420 
00421                   fWest << i << "\t" << j << "\t" << k << "\t" << n << "\t"
00422                   << aMucStrip->GetType()         << "\t"
00423                   << aMucStrip->GetL()            <<"\t"
00424                   << aMucStrip->GetW()            <<"\t"
00425                   << aMucStrip->GetH()            <<"\t"
00426                   << aMucStrip->GetObjOrgInBes(1)   <<"\t"
00427                   << aMucStrip->GetObjOrgInBes(2)   <<"\t"
00428                   << aMucStrip->GetObjOrgInBes(3)   <<"\t"
00429                   << endl;
00430                                                 // delete aMucStrip;
00431           } // strip
00432         } // layer
00433       } // segment
00434                 } // west endcap
00435 
00436   } // part
00437 
00438         fEast.close();
00439         fBarrel.close();        
00440         fWest.close();
00441 
00442         log << MSG::INFO << "Online display strips created." << endreq;
00443 
00444         return StatusCode::SUCCESS;
00445 }       

StatusCode MucGeoMgr::CreateRootGeo (  ) 

Definition at line 325 of file MucGeoMgr.cxx.

References msgSvc.

Referenced by MucGeoCreateAlg::finalize().

00326 {
00327    MsgStream log(msgSvc, "MucGeoMgr");
00328         //StatusCode sc;
00329 
00330 
00331         return StatusCode::SUCCESS;
00332 }       

StatusCode MucGeoMgr::CreateRpc (  )  [protected]

Definition at line 1325 of file MucGeoMgr.cxx.

References B_LAY_NUM, B_RPC_NUM, B_SEG_NUM, B_TOP, B_TOP_RPC_NUM, BRID, E_LAY_NUM, E_RPC_NUM, E_SEG_NUM, genRecEmupikp::i, Bes_Common::INFO, ganga-rec::j, msgSvc, PART_MAX, and SL_NUM.

Referenced by CreateEntities().

01326 {
01327         MsgStream log(msgSvc, "MucGeoMgr");
01328 
01329         //-------------------------- ideal geometry----------------------
01330 
01331         ofstream fOrigin("MucRpc.dat", ios::out);
01332         ofstream fPos("MucRpcPos.dat", ios::out);
01333 
01334         if( fOrigin.bad() || fPos.bad() )
01335         {
01336                 log << MSG::INFO << "Rpc: create ouput file error!" << endl;
01337                 return StatusCode::FAILURE;
01338         }
01339         fOrigin << "part\tsegment\tlayer\tupDown\trpc\tWu\tWd\tH\tL\tLoc_x\tLoc_y\tLoc_z\tBes_x\tBes_y\tBes_z" << endl;
01340         fPos    << "part\tsegment\tlayer\tupDown\trpc\tLBes_x\tLBes_y\tLBes_z\tOBes_x\tOBes_y\tOBes_z\tLoc_x\tLoc_y\tLoc_z" << endl;
01341 
01342         int totalObject = 0;
01343 
01344         for( int i=0; i<PART_MAX; i++ )
01345         {
01346                 if( i == BRID )
01347                 {
01348                         for( int j=0; j<B_SEG_NUM; j++ )
01349                         {
01350                                 // Set maximum rpc
01351                                 int maxRpc;
01352                                 if( j ==B_TOP )
01353                                         maxRpc = B_TOP_RPC_NUM;    // top segment
01354                                 else
01355                                         maxRpc = B_RPC_NUM;        // not top segment
01356 
01357                                 for( int k=0; k<B_LAY_NUM; k++ )
01358                                 {
01359                                         for( int m=0; m<SL_NUM; m++ )
01360                                         {
01361                                                 for( int n=0; n<maxRpc; n++ )
01362                                                 {
01363                                                         MucRpc *aMucRpc = new MucRpc( i, j, k, m, n );
01364 
01365                                                 fOrigin << i << "\t" << j << "\t" << k << "\t"
01366                                                         << m << "\t" << n << "\t"
01367                                                         << aMucRpc->GetWu()             << "\t"
01368                                                         << aMucRpc->GetWd()             << "\t"
01369                                                         << aMucRpc->GetH()              << "\t"
01370                                                         << aMucRpc->GetL()              <<"\t"
01371                                                         << aMucRpc->GetObjOrgInLoc(1)   <<"\t"
01372                                                         << aMucRpc->GetObjOrgInLoc(2)   <<"\t"
01373                                                         << aMucRpc->GetObjOrgInLoc(3)   <<"\t"
01374                                                         << aMucRpc->GetObjOrgInBes(1)   <<"\t"
01375                                                         << aMucRpc->GetObjOrgInBes(2)   <<"\t"
01376                                                         << aMucRpc->GetObjOrgInBes(3)   <<"\t"
01377                                                         << endl;
01378 
01379                                                 fPos    << i << "\t" << j << "\t" << k << "\t" 
01380                                                         << m << "\t" << n << "\t"
01381                                                         << aMucRpc->GetLocOrgInBes(1)   <<"\t"
01382                                                         << aMucRpc->GetLocOrgInBes(2)   <<"\t"
01383                                                         << aMucRpc->GetLocOrgInBes(3)   <<"\t"
01384                                                         << aMucRpc->GetObjOrgInBes(1)   <<"\t"
01385                                                         << aMucRpc->GetObjOrgInBes(2)   <<"\t"
01386                                                         << aMucRpc->GetObjOrgInBes(3)   <<"\t"
01387                                                         << aMucRpc->GetObjOrgInLoc(1)   <<"\t"
01388                                                         << aMucRpc->GetObjOrgInLoc(2)   <<"\t"
01389                                                         << aMucRpc->GetObjOrgInLoc(3)   <<"\t"
01390                                                         << endl;
01391 
01392                                                 totalObject++;
01393                                                 // delete aMucRpc;
01394                                                 } // for
01395                                         } // super layer
01396                                 } // layer
01397                         } // segment
01398                 } // barrel
01399                 else
01400                 {
01401                         for( int j=0; j<E_SEG_NUM; j++ )
01402                         {
01403                                 for( int k=0; k<E_LAY_NUM; k++ )
01404                                 {
01405                                         for( int m=0; m<SL_NUM; m++ )
01406                                         {
01407                                                 for( int n=0; n<E_RPC_NUM[m]; n++ )
01408                                                 {
01409                                                         MucRpc *aMucRpc = new MucRpc( i, j, k, m, n );
01410 
01411                                                 fOrigin << i << "\t" << j << "\t" << k << "\t"
01412                                                         << m << "\t" << n << "\t"
01413                                                         << aMucRpc->GetWu()              <<"\t"
01414                                                         << aMucRpc->GetWd()              <<"\t"
01415                                                         << aMucRpc->GetH()              <<"\t"
01416                                                         << aMucRpc->GetL()              <<"\t"
01417                                                         << aMucRpc->GetObjOrgInLoc(1)   <<"\t"
01418                                                         << aMucRpc->GetObjOrgInLoc(2)   <<"\t"
01419                                                         << aMucRpc->GetObjOrgInLoc(3)   <<"\t"
01420                                                         << aMucRpc->GetObjOrgInBes(1)   <<"\t"
01421                                                         << aMucRpc->GetObjOrgInBes(2)   <<"\t"
01422                                                         << aMucRpc->GetObjOrgInBes(3)   <<"\t"
01423                                                         << endl;
01424 
01425                                                 fPos    << i << "\t" << j << "\t" << k << "\t"
01426                                                         << m << "\t" << n << "\t"
01427                                                         << aMucRpc->GetLocOrgInBes(1)   <<"\t"
01428                                                         << aMucRpc->GetLocOrgInBes(2)   <<"\t"
01429                                                         << aMucRpc->GetLocOrgInBes(3)   <<"\t"
01430                                                         << aMucRpc->GetObjOrgInBes(1)   <<"\t"
01431                                                         << aMucRpc->GetObjOrgInBes(2)   <<"\t"
01432                                                         << aMucRpc->GetObjOrgInBes(3)   <<"\t"
01433                                                         << aMucRpc->GetObjOrgInLoc(1)   <<"\t"
01434                                                         << aMucRpc->GetObjOrgInLoc(2)   <<"\t"
01435                                                         << aMucRpc->GetObjOrgInLoc(3)   <<"\t"
01436                                                         << endl;
01437                                                 totalObject++;
01438                                                 // delete aMucRpc;
01439                                                 } // for
01440                                         } // super layer
01441                                 } // layer
01442                         } // segment
01443                 } // endcap
01444         } // for, part
01445 
01446         fOrigin.close();
01447         fPos.close();
01448 
01449         log << MSG::INFO << totalObject << "\t RPCs created." << endreq;
01450 
01451         return StatusCode::SUCCESS;
01452 
01453 } // MucRpc

StatusCode MucGeoMgr::CreateStrip (  )  [protected]

Definition at line 1200 of file MucGeoMgr.cxx.

References B_LAY_NUM, B_PHISTR_NUM, B_SEG_NUM, B_TOP, B_TOPSTR_NUM, B_ZSTR_NUM, BRID, E_LAY_NUM, E_SEG_NUM, E_STR_NUM, genRecEmupikp::i, Bes_Common::INFO, ganga-rec::j, msgSvc, and PART_MAX.

Referenced by CreateEntities().

01201 {
01202         MsgStream log(msgSvc, "MucGeoMgr");
01203 
01204         //-------------------------- ideal geometry----------------------
01205         ofstream fOrigin("MucStrip.dat", ios::out);
01206         ofstream fPos("MucStripPos.dat", ios::out);     
01207 
01208         if( fOrigin.bad() || fPos.bad() )
01209         {
01210                 log << MSG::INFO << "Strip: create ouput file error!" << endl;
01211                 return StatusCode::FAILURE;
01212         }
01213         fOrigin << "part\tsegment\tlayer\tstrip\ttype\tW\tH\tL\tLoc_x\tLoc_y\tLoc_z\tBes_x\tBes_y\tBes_z" << endl;
01214         fPos    << "part\tsegment\tlayer\tstrip\ttype\tLBes_x\tLBes_y\tLBes_z\tOBes_x\tOBes_y\tOBes_z\tLoc_x\tLoc_y\tLoc_z" << endl;
01215         
01216         int totalObject = 0;
01217         
01218         for( int i=0; i<PART_MAX; i++ )
01219         {
01220                 if( i == BRID )
01221                 {
01222                         for( int j=0; j<B_SEG_NUM; j++ )
01223                         {
01224                                 for( int k=0; k<B_LAY_NUM; k++ )
01225                                 {
01226                                         // Set maximum strip 
01227                                         int maxStrip;
01228                                         if( ( k+1 )%2 == 1 )
01229                                                 maxStrip = B_ZSTR_NUM;          // odd layer
01230                                         else if( j != B_TOP )
01231                                                 maxStrip = B_PHISTR_NUM;        // even layer not top segment
01232                                         else
01233                                                 maxStrip = B_TOPSTR_NUM;        // even layer top segment 
01234 
01235                                         for( int n=0; n<maxStrip; n++ )
01236                                         {
01237                                                 MucStrip *aMucStrip = new MucStrip( i, j, k, n );
01238 
01239                                                 fOrigin << i << "\t" << j << "\t" << k << "\t" << n << "\t"
01240                                                         << aMucStrip->GetType()           << "\t"
01241                                                         << aMucStrip->GetW()              << "\t"
01242                                                         << aMucStrip->GetH()              << "\t"
01243                                                         << aMucStrip->GetL()              <<"\t"
01244                                                         << aMucStrip->GetObjOrgInLoc(1)   <<"\t"
01245                                                         << aMucStrip->GetObjOrgInLoc(2)   <<"\t"
01246                                                         << aMucStrip->GetObjOrgInLoc(3)   <<"\t"
01247                                                         << aMucStrip->GetObjOrgInBes(1)   <<"\t"
01248                                                         << aMucStrip->GetObjOrgInBes(2)   <<"\t"
01249                                                         << aMucStrip->GetObjOrgInBes(3)   <<"\t"
01250                                                         << endl;
01251 
01252                                                 fPos    << i << "\t" << j << "\t" << k << "\t" << n << "\t"
01253                                                         << aMucStrip->GetType()           <<"\t"
01254                                                         << aMucStrip->GetLocOrgInBes(1)   <<"\t"
01255                                                         << aMucStrip->GetLocOrgInBes(2)   <<"\t"
01256                                                         << aMucStrip->GetLocOrgInBes(3)   <<"\t"
01257                                                         << aMucStrip->GetObjOrgInBes(1)   <<"\t"
01258                                                         << aMucStrip->GetObjOrgInBes(2)   <<"\t"
01259                                                         << aMucStrip->GetObjOrgInBes(3)   <<"\t"
01260                                                         << aMucStrip->GetObjOrgInLoc(1)   <<"\t"
01261                                                         << aMucStrip->GetObjOrgInLoc(2)   <<"\t"
01262                                                         << aMucStrip->GetObjOrgInLoc(3)   <<"\t"
01263                                                         << endl;
01264 
01265                                                 totalObject++;
01266                                                 // delete aMucStrip;
01267                                         } // for
01268                                 } // layer
01269                         } // segment
01270                 } // barrel
01271                 else
01272                 {
01273                         for( int j=0; j<E_SEG_NUM; j++ )
01274                         {
01275                                 for( int k=0; k<E_LAY_NUM; k++ )
01276                                 {
01277                                         for( int n=0; n<E_STR_NUM; n++ )
01278                                         {
01279                                                 MucStrip *aMucStrip = new MucStrip( i, j, k, n );
01280 
01281                                                 fOrigin << i << "\t" << j << "\t" << k << "\t" << n << "\t"
01282                                                         << aMucStrip->GetType()           << "\t"
01283                                                         << aMucStrip->GetW()              <<"\t"
01284                                                         << aMucStrip->GetH()              <<"\t"
01285                                                         << aMucStrip->GetL()              <<"\t"
01286                                                         << aMucStrip->GetObjOrgInLoc(1)   <<"\t"
01287                                                         << aMucStrip->GetObjOrgInLoc(2)   <<"\t"
01288                                                         << aMucStrip->GetObjOrgInLoc(3)   <<"\t"
01289                                                         << aMucStrip->GetObjOrgInBes(1)   <<"\t"
01290                                                         << aMucStrip->GetObjOrgInBes(2)   <<"\t"
01291                                                         << aMucStrip->GetObjOrgInBes(3)   <<"\t"
01292                                                         << endl;
01293 
01294                                                 fPos    << i << "\t" << j << "\t" << k << "\t" << n << "\t"
01295                                                         << aMucStrip->GetType()           << "\t"
01296                                                         << aMucStrip->GetLocOrgInBes(1)   <<"\t"
01297                                                         << aMucStrip->GetLocOrgInBes(2)   <<"\t"
01298                                                         << aMucStrip->GetLocOrgInBes(3)   <<"\t"
01299                                                         << aMucStrip->GetObjOrgInBes(1)   <<"\t"
01300                                                         << aMucStrip->GetObjOrgInBes(2)   <<"\t"
01301                                                         << aMucStrip->GetObjOrgInBes(3)   <<"\t"
01302                                                         << aMucStrip->GetObjOrgInLoc(1)   <<"\t"
01303                                                         << aMucStrip->GetObjOrgInLoc(2)   <<"\t"
01304                                                         << aMucStrip->GetObjOrgInLoc(3)   <<"\t"
01305                                                         << endl;
01306                                                 totalObject++;
01307                                                 // delete aMucStrip;
01308                                         } // for
01309                                 } // layer
01310                         } // segment
01311                 } // endcap
01312         } // for
01313 
01314         fOrigin.close();
01315         fPos.close();   
01316 
01317         log << MSG::INFO << totalObject << "\tstrips created." << endreq;
01318 
01319         return StatusCode::SUCCESS;
01320 
01321 } // MucStrip

StatusCode MucGeoMgr::CreateStripPlane (  )  [protected]

Definition at line 949 of file MucGeoMgr.cxx.

References B_LAY_NUM, B_SEG_NUM, B_STR_PANEL_NUM, B_TOP, BRID, E_LAY_NUM, E_PANEL_NUM, E_SEG_NUM, MucEntity::GetH(), MucEntity::GetL(), MucEntity::GetLocOrgInBes(), MucEntity::GetObjOrgInBes(), MucEntity::GetObjOrgInLoc(), MucEntity::GetW(), genRecEmupikp::i, Bes_Common::INFO, ganga-rec::j, m_AlignFlag, m_StripPlaneOffset, msgSvc, and PART_MAX.

Referenced by CreateEntities().

00950 {
00951         MsgStream log(msgSvc, "MucGeoMgr");
00952 
00953         //-------------------------- ideal geometry----------------------
00954         ofstream fOrigin("MucStripPlaneOrigin.dat", ios::out);
00955         ofstream fPanel("MucStripPlanePanel.dat", ios::out);
00956         ofstream fPos("MucStripPlanePanelPos.dat", ios::out);
00957 
00958         if( fOrigin.bad() || fPanel.bad() || fPos.bad() )
00959         {
00960                 log << MSG::INFO << "StripPlane: create ouput file error!" << endl;
00961                 return StatusCode::FAILURE;
00962         }
00963         fOrigin << "part\tsegment\tlayer\tW\tH\tL\tLoc_x\tLoc_y\tLoc_z" << endl;
00964         fPanel  << "part\tsegment\tlayer\tpanel\tWu\tWd\tH\tL\tLoc_x\tLoc_y\tLoc_z" << endl;
00965         fPos    << "part\tsegment\tlayer\tpanel\tLBes_x\tLBes_y\tLBes_z\tOBes_x\tOBes_y\tOBes_z\tLoc_x\tLoc_y\tLoc_z" << endl;
00966         
00967         int totalObject = 0;
00968 
00969         for( int i=0; i<PART_MAX; i++ )
00970         {
00971                 if( i == BRID )
00972                 {
00973                         for( int j=0; j<B_SEG_NUM; j++ )
00974                         {
00975                                 for( int k=0; k<B_LAY_NUM; k++ )
00976                                 {       
00977                                         if( j==B_TOP )
00978                                         {
00979                                            for( int n=-1; n<B_STR_PANEL_NUM; n++ )
00980                                            {       
00981                                                 MucStripPlane *aMucStripPlane = new MucStripPlane( i, j, k, n );
00982                                                 if( n == -1 )
00983                                                 {
00984                                                   fOrigin << i << "\t" << j << "\t" << k << "\t"
00985                                                         << aMucStripPlane->GetW() <<"\t"
00986                                                         << aMucStripPlane->GetH() <<"\t"
00987                                                         << aMucStripPlane->GetL() <<"\t"
00988                                                         << aMucStripPlane->GetObjOrgInLoc(1)   <<"\t"
00989                                                         << aMucStripPlane->GetObjOrgInLoc(2)   <<"\t"
00990                                                         << aMucStripPlane->GetObjOrgInLoc(3)   <<"\t"
00991                                                         << endl;
00992                                                   fPos  << i << "\t" << j << "\t" << k << "\t" << n << "\t"
00993                                                         << aMucStripPlane->GetLocOrgInBes(1)   <<"\t"
00994                                                         << aMucStripPlane->GetLocOrgInBes(2)   <<"\t"
00995                                                         << aMucStripPlane->GetLocOrgInBes(3)   <<"\t"
00996                                                         << aMucStripPlane->GetObjOrgInBes(1)   <<"\t"
00997                                                         << aMucStripPlane->GetObjOrgInBes(2)   <<"\t"
00998                                                         << aMucStripPlane->GetObjOrgInBes(3)   <<"\t"
00999                                                         << aMucStripPlane->GetObjOrgInLoc(1)   <<"\t"
01000                                                         << aMucStripPlane->GetObjOrgInLoc(2)   <<"\t"
01001                                                         << aMucStripPlane->GetObjOrgInLoc(3)   <<"\t"
01002                                                         << endl;
01003                                                   totalObject++;
01004                                                   // delete aMucStripPlane;
01005                                                 }
01006                                                 else
01007                                                 {       
01008                                                   fPanel<< i << "\t" << j << "\t" << k << "\t" << n << "\t"
01009                                                         << aMucStripPlane->GetWu() <<"\t"
01010                                                         << aMucStripPlane->GetWd() <<"\t"
01011                                                         << aMucStripPlane->GetH()  <<"\t"
01012                                                         << aMucStripPlane->GetL()  <<"\t"
01013                                                         << aMucStripPlane->GetObjOrgInLoc(1)   <<"\t"
01014                                                         << aMucStripPlane->GetObjOrgInLoc(2)   <<"\t"
01015                                                         << aMucStripPlane->GetObjOrgInLoc(3)   <<"\t"
01016                                                         << endl;
01017 
01018                                                   fPos  << i << "\t" << j << "\t" << k << "\t" << n << "\t"
01019                                                         << aMucStripPlane->GetLocOrgInBes(1)   <<"\t"
01020                                                         << aMucStripPlane->GetLocOrgInBes(2)   <<"\t"
01021                                                         << aMucStripPlane->GetLocOrgInBes(3)   <<"\t"
01022                                                         << aMucStripPlane->GetObjOrgInBes(1)   <<"\t"
01023                                                         << aMucStripPlane->GetObjOrgInBes(2)   <<"\t"
01024                                                         << aMucStripPlane->GetObjOrgInBes(3)   <<"\t"
01025                                                         << aMucStripPlane->GetObjOrgInLoc(1)   <<"\t"
01026                                                         << aMucStripPlane->GetObjOrgInLoc(2)   <<"\t"
01027                                                         << aMucStripPlane->GetObjOrgInLoc(3)   <<"\t"
01028                                                         << endl;
01029                                                   // delete aMucStripPlane;     
01030                                                 }
01031                                            }// for      
01032                                         }// B_TOP
01033                                         else    
01034                                         {
01035                                                 MucStripPlane *aMucStripPlane = new MucStripPlane( i, j, k, 0 );
01036                                                 fOrigin << i << "\t" << j << "\t" << k << "\t"
01037                                                         << aMucStripPlane->GetW() <<"\t"
01038                                                         << aMucStripPlane->GetH() <<"\t"
01039                                                         << aMucStripPlane->GetL() <<"\t"
01040                                                         << aMucStripPlane->GetObjOrgInLoc(1)   <<"\t"
01041                                                         << aMucStripPlane->GetObjOrgInLoc(2)   <<"\t"
01042                                                         << aMucStripPlane->GetObjOrgInLoc(3)   <<"\t"
01043                                                         << endl;
01044                                                 fPos    << i << "\t" << j << "\t" << k << "\t" << "\t"
01045                                                         << aMucStripPlane->GetLocOrgInBes(1)   <<"\t"
01046                                                         << aMucStripPlane->GetLocOrgInBes(2)   <<"\t"
01047                                                         << aMucStripPlane->GetLocOrgInBes(3)   <<"\t"
01048                                                         << aMucStripPlane->GetObjOrgInBes(1)   <<"\t"
01049                                                         << aMucStripPlane->GetObjOrgInBes(2)   <<"\t"
01050                                                         << aMucStripPlane->GetObjOrgInBes(3)   <<"\t"
01051                                                         << aMucStripPlane->GetObjOrgInLoc(1)   <<"\t"
01052                                                         << aMucStripPlane->GetObjOrgInLoc(2)   <<"\t"
01053                                                         << aMucStripPlane->GetObjOrgInLoc(3)   <<"\t"
01054                                                         << endl;
01055                                                 totalObject++;
01056                                                 // delete aMucStripPlane;
01057                                         }
01058                                 } // layer
01059                         } // segment
01060                 } // barrel
01061                 else
01062                 {
01063                         for( int j=0; j<E_SEG_NUM; j++ )
01064                         {
01065                                 for( int k=0; k<E_LAY_NUM; k++ )
01066                                 {
01067                                         for( int n=-1; n<E_PANEL_NUM; n++ )
01068                                         {
01069                                                 MucStripPlane *aMucStripPlane = new MucStripPlane( i, j, k, n );
01070                                                 if( n == -1 )
01071                                                 {
01072                                                  fOrigin<< i << "\t" << j << "\t" << k << "\t"
01073                                                         << aMucStripPlane->GetW() <<"\t"
01074                                                         << aMucStripPlane->GetH() <<"\t"
01075                                                         << aMucStripPlane->GetL() <<"\t"
01076                                                         << aMucStripPlane->GetObjOrgInLoc(1)   <<"\t"
01077                                                         << aMucStripPlane->GetObjOrgInLoc(2)   <<"\t"
01078                                                         << aMucStripPlane->GetObjOrgInLoc(3)   <<"\t"
01079                                                         << endl;
01080 
01081                                                   fPos  << i << "\t" << j << "\t" << k << "\t" << n << "\t"
01082                                                         << aMucStripPlane->GetLocOrgInBes(1)   <<"\t"
01083                                                         << aMucStripPlane->GetLocOrgInBes(2)   <<"\t"
01084                                                         << aMucStripPlane->GetLocOrgInBes(3)   <<"\t"
01085                                                         << aMucStripPlane->GetObjOrgInBes(1)   <<"\t"
01086                                                         << aMucStripPlane->GetObjOrgInBes(2)   <<"\t"
01087                                                         << aMucStripPlane->GetObjOrgInBes(3)   <<"\t"
01088                                                         << aMucStripPlane->GetObjOrgInLoc(1)   <<"\t"
01089                                                         << aMucStripPlane->GetObjOrgInLoc(2)   <<"\t"
01090                                                         << aMucStripPlane->GetObjOrgInLoc(3)   <<"\t"
01091                                                         << endl;
01092                                                  totalObject++;
01093                                                  // delete aMucStripPlane;
01094                                                 }
01095                                                 else
01096                                                 {
01097                                                   fPanel<< i << "\t" << j << "\t" << k << "\t" << n << "\t"
01098                                                         << aMucStripPlane->GetWu() <<"\t"
01099                                                         << aMucStripPlane->GetWd() <<"\t"
01100                                                         << aMucStripPlane->GetH()  <<"\t"
01101                                                         << aMucStripPlane->GetL()  <<"\t"
01102                                                         << aMucStripPlane->GetObjOrgInLoc(1)   <<"\t"
01103                                                         << aMucStripPlane->GetObjOrgInLoc(2)   <<"\t"
01104                                                         << aMucStripPlane->GetObjOrgInLoc(3)   <<"\t"
01105                                                         << endl;
01106 
01107                                                   fPos  << i << "\t" << j << "\t" << k << "\t" << n << "\t"
01108                                                         << aMucStripPlane->GetLocOrgInBes(1)   <<"\t"
01109                                                         << aMucStripPlane->GetLocOrgInBes(2)   <<"\t"
01110                                                         << aMucStripPlane->GetLocOrgInBes(3)   <<"\t"
01111                                                         << aMucStripPlane->GetObjOrgInBes(1)   <<"\t"
01112                                                         << aMucStripPlane->GetObjOrgInBes(2)   <<"\t"
01113                                                         << aMucStripPlane->GetObjOrgInBes(3)   <<"\t"
01114                                                         << aMucStripPlane->GetObjOrgInLoc(1)   <<"\t"
01115                                                         << aMucStripPlane->GetObjOrgInLoc(2)   <<"\t"
01116                                                         << aMucStripPlane->GetObjOrgInLoc(3)   <<"\t"
01117                                                         << endl;
01118                                                   // delete aMucStripPlane;
01119                                                 }
01120                                         }
01121                                 } // layer
01122                         } // segment
01123                 } // endcap
01124         } // for
01125 
01126         fOrigin.close();
01127         fPanel.close();
01128         fPos.close();
01129 
01130         //-----------------------------real geometry-------------------------
01131 
01132         if( m_AlignFlag )
01133         {
01134                 ofstream fOrgAlign("MucStripPlaneOriginAligned.dat", ios::out);
01135                 fOrgAlign  << "part\tsegment\tlayer\tW\tH\tL\tLoc_x\tLoc_y\tLoc_z" << endl;
01136                 double offset[3]; 
01137                 for( int i=0; i<PART_MAX; i++ )
01138                 {
01139                         if( i == BRID )
01140                         {
01141                                 for( int j=0; j<B_SEG_NUM; j++ )
01142                                 {
01143                                         for( int k=0; k<B_LAY_NUM; k++ )
01144                                         {
01145                                                 MucStripPlane *aMucStripPlane = new MucStripPlane( i, j, k, 0 );
01146                                                 offset[0] =m_StripPlaneOffset[i][j][k][0];
01147                                                 offset[1] =m_StripPlaneOffset[i][j][k][1];
01148                                                 offset[2] =m_StripPlaneOffset[i][j][k][2];
01149                                                 aMucStripPlane->SetAlignment( offset[0], offset[1], offset[2] );
01150                                                 
01151                                                 fOrgAlign << i << "\t" << j << "\t" << k << "\t"
01152                                                         << aMucStripPlane->GetW() <<"\t"
01153                                                         << aMucStripPlane->GetH() <<"\t"
01154                                                         << aMucStripPlane->GetL() <<"\t"
01155                                                         << aMucStripPlane->GetObjOrgInLoc(1)   <<"\t"
01156                                                         << aMucStripPlane->GetObjOrgInLoc(2)   <<"\t"
01157                                                         << aMucStripPlane->GetObjOrgInLoc(3)   <<"\t"
01158                                                         << endl;
01159                                                 // delete aMucStripPlane;
01160                                         } // layer
01161                                 } // segment
01162                         } // barrel
01163                         else
01164                         {
01165                                 for( int j=0; j<E_SEG_NUM; j++ )
01166                                 {
01167                                         for( int k=0; k<E_LAY_NUM; k++ )
01168                                         {
01169                                                 MucStripPlane *aMucStripPlane = new MucStripPlane( i, j, k, -1 );
01170                                                 offset[0] =m_StripPlaneOffset[i][j][k][0];
01171                                                 offset[1] =m_StripPlaneOffset[i][j][k][1];
01172                                                 offset[2] =m_StripPlaneOffset[i][j][k][2];
01173                                                 aMucStripPlane->SetAlignment( offset[0], offset[1], offset[2] );
01174 
01175                                                  fOrgAlign<< i << "\t" << j << "\t" << k << "\t"
01176                                                         << aMucStripPlane->GetW() <<"\t"
01177                                                         << aMucStripPlane->GetH() <<"\t"
01178                                                         << aMucStripPlane->GetL() <<"\t"
01179                                                         << aMucStripPlane->GetObjOrgInLoc(1)   <<"\t"
01180                                                         << aMucStripPlane->GetObjOrgInLoc(2)   <<"\t"
01181                                                         << aMucStripPlane->GetObjOrgInLoc(3)   <<"\t"
01182                                                         << endl;
01183                                                 // delete aMucStripPlane;
01184                                         } // layer
01185                                 } // segment
01186                         } // endcap
01187                 } // for
01188 
01189                 fOrgAlign.close();
01190         } // if
01191         
01192 
01193         log << MSG::INFO << totalObject << "\tstrip_planes created." << endreq;
01194 
01195         return StatusCode::SUCCESS;
01196 
01197 } // MucStripPlane

MucAbsorber * MucGeoMgr::GetAbsorber ( int  part,
int  segment,
int  layer,
int  id 
)

Definition at line 1886 of file MucGeoMgr.cxx.

References m_MucAbsorber.

01887 {
01888         if( m_MucAbsorber != NULL ) delete m_MucAbsorber;
01889 
01890         return ( m_MucAbsorber = new MucAbsorber(part, segment, layer, id) );
01891 }

MucBakelite * MucGeoMgr::GetBakelite ( int  part,
int  segment,
int  layer,
int  upDown,
int  rpcId,
int  id 
)

Definition at line 1935 of file MucGeoMgr.cxx.

References m_MucBakelite.

01936 {
01937         if( m_MucBakelite != NULL ) delete m_MucBakelite;
01938 
01939         return ( m_MucBakelite = new MucBakelite(part, segment, layer, upDown, rpcId, id) );
01940 }

MucBox * MucGeoMgr::GetBox ( int  part,
int  segment,
int  layer,
int  id 
)

Definition at line 1900 of file MucGeoMgr.cxx.

References m_MucBox.

01901 {
01902         if( m_MucBox != NULL ) delete m_MucBox;
01903 
01904         return ( m_MucBox = new MucBox(part, segment, layer, id) );
01905 }

MucBoxCover * MucGeoMgr::GetBoxCover ( int  part,
int  segment,
int  layer,
int  upDown,
int  id 
)

Definition at line 1942 of file MucGeoMgr.cxx.

References m_MucBoxCover.

01943 {
01944         if( m_MucBoxCover != NULL ) delete m_MucBoxCover;
01945 
01946         return ( m_MucBoxCover = new MucBoxCover(part, segment, layer, upDown, id) );
01947 }

MucGap * MucGeoMgr::GetGap ( int  part,
int  segment,
int  layer,
int  id 
)

Definition at line 1893 of file MucGeoMgr.cxx.

References m_MucGap.

01894 {
01895         if( m_MucGap != NULL ) delete m_MucGap;
01896 
01897         return ( m_MucGap = new MucGap(part, segment, layer, id) );
01898 }

MucGas * MucGeoMgr::GetGas ( int  part,
int  segment,
int  layer,
int  upDown,
int  rpcId,
int  id 
)

Definition at line 1928 of file MucGeoMgr.cxx.

References m_MucGas.

01929 {
01930         if( m_MucGas != NULL ) delete m_MucGas;
01931 
01932         return ( m_MucGas = new MucGas(part, segment, layer, upDown, rpcId, id) );
01933 }

MucRpc * MucGeoMgr::GetRpc ( int  part,
int  segment,
int  layer,
int  upDown,
int  id 
)

Definition at line 1921 of file MucGeoMgr.cxx.

References m_MucRpc.

01922 {
01923         if( m_MucRpc != NULL ) delete m_MucRpc;
01924 
01925         return ( m_MucRpc = new MucRpc(part, segment, layer, upDown, id) );
01926 }

MucStrip * MucGeoMgr::GetStrip ( int  part,
int  segment,
int  layer,
int  id 
)

Definition at line 1914 of file MucGeoMgr.cxx.

References m_MucStrip.

01915 {
01916         if( m_MucStrip != NULL ) delete m_MucStrip;
01917 
01918         return ( m_MucStrip = new MucStrip(part, segment, layer, id) );
01919 }

MucStripPlane * MucGeoMgr::GetStripPlane ( int  part,
int  segment,
int  layer,
int  id 
)

Definition at line 1907 of file MucGeoMgr.cxx.

References m_MucStripPlane.

01908 {
01909         if( m_MucStripPlane != NULL ) delete m_MucStripPlane;
01910 
01911         return ( m_MucStripPlane = new MucStripPlane(part, segment, layer, id) );
01912 }

StatusCode MucGeoMgr::InitOffset (  )  [protected]

Definition at line 56 of file MucGeoMgr.cxx.

References B_LAY_NUM, B_SEG_NUM, B_X_MAX, BOX_MAX, CheckBoxOffset(), CheckStripPlaneOffset(), calibUtil::ERROR, genRecEmupikp::i, Bes_Common::INFO, ganga-rec::j, m_AlignFile, m_AlignFlag, m_BoxOffset, m_IdTr, m_StripPlaneOffset, msgSvc, PART_MAX, MucIdTransform::SetBoxPos(), and STR_OFFSET_MAX.

Referenced by MucGeoMgr().

00057 {
00058         MsgStream log(msgSvc, "MucGeoMgr");
00059 
00060   m_IdTr = new MucIdTransform();
00061 
00062         if( m_AlignFlag == true )
00063         {
00064                 log << MSG::INFO << "MucGeoMgr::initOffset()" << endreq;
00065 
00066     TFile* froot = new TFile(m_AlignFile.c_str(), "read");
00067     if( froot->IsZombie() ) 
00068     {
00069       log << MSG:: ERROR << "Open alignment data error!" << endreq;
00070       return StatusCode::FAILURE;
00071     }
00072 
00073     const char OFFSET_NAME[3][5] = {"dx", "dy", "dz"};
00074     double box_offset[3];
00075     double strpln_offset[3];
00076    
00077     TTree* tr_Offset;
00078     
00079     tr_Offset = (TTree*)froot->Get("Offset");
00080     tr_Offset->SetBranchAddress("box_dx", &box_offset[0]);
00081     tr_Offset->SetBranchAddress("box_dy", &box_offset[1]);
00082     tr_Offset->SetBranchAddress("box_dz", &box_offset[2]);
00083     tr_Offset->SetBranchAddress("strpln_dx", &strpln_offset[0]);
00084     tr_Offset->SetBranchAddress("strpln_dy", &strpln_offset[1]);
00085     tr_Offset->SetBranchAddress("strpln_dz", &strpln_offset[2]);
00086 
00087     int part, segment, layer;
00088         part = segment = layer = 0;
00089     
00090                 log << MSG::INFO << "------------------------- offset data--------------------------" << endreq;
00091     log << MSG::INFO << "Part\tSegment\tLayer\tdx0\tdy0\tdz0\tdx1\tdy1\tdz1" << endreq;
00092     for( int i=0; i<BOX_MAX; i++)
00093     {
00094       m_IdTr->SetBoxPos(i, &part, &segment, &layer);
00095       tr_Offset->GetEntry(i);
00096             
00097       log << MSG::INFO << part << "\t" << segment << "\t" << layer << "\t";
00098       for( int j=0; j<3; j++ )
00099       {
00100         log << MSG::INFO << box_offset[j] << "\t";
00101 
00102         if( !CheckBoxOffset(part, segment, layer, j, box_offset[j]) )
00103         {
00104           log << MSG::INFO << endreq << "Box offset P" << part << "S" << segment << "L" << layer
00105               << "_" << OFFSET_NAME[j] << "\tout range!" << endreq;
00106           box_offset[j] = B_X_MAX[j];
00107         }
00108       }
00109 
00110       for( int j=0; j<3; j++ )
00111       {
00112         log << MSG::INFO << strpln_offset[j] << "\t";
00113 
00114         if( !CheckStripPlaneOffset(part, segment, layer, j, strpln_offset[j]) )
00115         {
00116           log << MSG::INFO << endreq << "Strip plane offset P" << part << "S" << segment << "L" << layer
00117               << "_" << OFFSET_NAME[j] << "\tout range!" << endreq;
00118           strpln_offset[j] = STR_OFFSET_MAX[j];
00119         }
00120       }  
00121     
00122       log << MSG::INFO << endreq;   
00123     } // end box    
00124 
00125     froot->Close(); 
00126     log << MSG::INFO << "---------------------------------------------------------------" << endreq;
00127         } // end alignflag
00128         else
00129         {
00130                 for(int i=0; i<PART_MAX; i++)
00131                   for(int j=0; j<B_SEG_NUM; j++)
00132                     for(int k=0; k<B_LAY_NUM; k++)
00133                       for(int m=0; m<3; m++)
00134           {
00135             m_BoxOffset[i][j][k][m] = 0.0;
00136                               m_StripPlaneOffset[i][j][k][m] = 0.0;
00137           }                                                     
00138         } 
00139 
00140         return StatusCode::SUCCESS;
00141 }


Member Data Documentation

std::string MucGeoMgr::m_AlignFile [private]

Definition at line 88 of file MucGeoMgr.h.

Referenced by InitOffset(), and MucGeoMgr().

bool MucGeoMgr::m_AlignFlag [private]

Definition at line 86 of file MucGeoMgr.h.

Referenced by CreateBox(), CreateStripPlane(), InitOffset(), and MucGeoMgr().

double MucGeoMgr::m_BoxOffset[PART_MAX][B_SEG_NUM][B_LAY_NUM][3] [private]

Definition at line 89 of file MucGeoMgr.h.

Referenced by CheckBoxOffset(), CreateBox(), InitOffset(), and ~MucGeoMgr().

std::string MucGeoMgr::m_CreateFlag [private]

Definition at line 87 of file MucGeoMgr.h.

Referenced by CreateEntities(), and MucGeoMgr().

MucIdTransform* MucGeoMgr::m_IdTr [private]

Definition at line 92 of file MucGeoMgr.h.

Referenced by InitOffset().

MucAbsorber* MucGeoMgr::m_MucAbsorber [private]

Definition at line 94 of file MucGeoMgr.h.

Referenced by GetAbsorber(), and ~MucGeoMgr().

MucBakelite* MucGeoMgr::m_MucBakelite [private]

Definition at line 101 of file MucGeoMgr.h.

Referenced by GetBakelite(), and ~MucGeoMgr().

MucBox* MucGeoMgr::m_MucBox [private]

Definition at line 96 of file MucGeoMgr.h.

Referenced by GetBox(), and ~MucGeoMgr().

MucBoxCover* MucGeoMgr::m_MucBoxCover [private]

Definition at line 100 of file MucGeoMgr.h.

Referenced by GetBoxCover(), and ~MucGeoMgr().

MucGap* MucGeoMgr::m_MucGap [private]

Definition at line 95 of file MucGeoMgr.h.

Referenced by GetGap(), and ~MucGeoMgr().

MucGas* MucGeoMgr::m_MucGas [private]

Definition at line 102 of file MucGeoMgr.h.

Referenced by GetGas(), and ~MucGeoMgr().

MucRpc* MucGeoMgr::m_MucRpc [private]

Definition at line 99 of file MucGeoMgr.h.

Referenced by GetRpc(), and ~MucGeoMgr().

MucStrip* MucGeoMgr::m_MucStrip [private]

Definition at line 98 of file MucGeoMgr.h.

Referenced by GetStrip(), and ~MucGeoMgr().

MucStripPlane* MucGeoMgr::m_MucStripPlane [private]

Definition at line 97 of file MucGeoMgr.h.

Referenced by GetStripPlane(), and ~MucGeoMgr().

double MucGeoMgr::m_StripPlaneOffset[PART_MAX][B_SEG_NUM][B_LAY_NUM][3] [private]

Definition at line 90 of file MucGeoMgr.h.

Referenced by CheckStripPlaneOffset(), CreateStripPlane(), InitOffset(), and ~MucGeoMgr().

IMessageSvc* MucGeoMgr::msgSvc

Definition at line 66 of file MucGeoMgr.h.

Referenced by CreateAbsorber(), CreateBakelite(), CreateBox(), CreateBoxCover(), CreateEntities(), CreateGap(), CreateGas(), CreateOnlineStripGeo(), CreateRootGeo(), CreateRpc(), CreateStrip(), CreateStripPlane(), InitOffset(), and MucGeoMgr().


Generated on Tue Nov 29 23:20:28 2016 for BOSS_7.0.2 by  doxygen 1.4.7