BOSS 6.6.4.p01
BESIII Offline Software System
Loading...
Searching...
No Matches
MucGeoMgr Class Reference

#include <MucGeoMgr.h>

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)
 

Detailed Description

Definition at line 46 of file MucGeoMgr.h.

Constructor & Destructor Documentation

◆ MucGeoMgr()

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

Definition at line 26 of file MucGeoMgr.cxx.

27{
28 m_CreateFlag = createFlag;
29 m_AlignFlag = alignFlag;
30 m_AlignFile = alignFile;
31
32 Gaudi::svcLocator() -> service("MessageSvc", msgSvc);
33
34 InitOffset();
35}
StatusCode InitOffset()
Definition: MucGeoMgr.cxx:56
IMessageSvc * msgSvc
Definition: MucGeoMgr.h:66

◆ ~MucGeoMgr()

MucGeoMgr::~MucGeoMgr ( )

Definition at line 38 of file MucGeoMgr.cxx.

39{
40 delete []m_BoxOffset;
41 delete []m_StripPlaneOffset;
42
43 delete m_MucAbsorber;
44 delete m_MucGap;
45 delete m_MucBox;
46 delete m_MucStripPlane;
47 delete m_MucStrip;
48 delete m_MucRpc;
49 delete m_MucGas;
50 delete m_MucBakelite;
51 delete m_MucBoxCover;
52}

Member Function Documentation

◆ CheckBoxOffset()

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

Definition at line 143 of file MucGeoMgr.cxx.

144{
145 int outRangeFlag = 0;
146
147 if( part == BRID )
148 {
149 switch( axis )
150 {
151 case 0: // x
152 int layerFlag;
153
154 if( layer == 0 ) layerFlag = 0;
155 else if( layer%2 == 1 ) layerFlag = 1;
156 else layerFlag = 2;
157
158 if( B_X_MAX[layerFlag] - fabs(offset) >= 0.0 ) // |offset|<=B_X_MAX
159 m_BoxOffset[part][segment][layer][axis] = offset;
160 else
161 {
162 outRangeFlag ++;
163 m_BoxOffset[part][segment][layer][axis] = B_X_MAX[layerFlag] * MAX_FRACTION;
164 }
165 break;
166 case 1: // y
167 if( B_Y_MAX - fabs(offset) >= 0.0 ) // |offset|<=B_Y_MAX
168 m_BoxOffset[part][segment][layer][axis] = offset;
169 else
170 {
171 outRangeFlag ++;
172 m_BoxOffset[part][segment][layer][axis] = B_Y_MAX * MAX_FRACTION;
173 }
174 break;
175 case 2: // z
176 if( B_Z_MAX - fabs(offset) >= 0.0 ) // |offset|<=B_Y_MAX
177 m_BoxOffset[part][segment][layer][axis] = offset;
178 else
179 {
180 outRangeFlag ++;
181 m_BoxOffset[part][segment][layer][axis] = B_Z_MAX * MAX_FRACTION;
182 }
183 break;
184 default: ;
185 }
186 }
187 else
188 {
189 if( E_OFFSET_MAX[axis] - fabs(offset) >= 0.0 ) // |offset|<=B_Y_MAX
190 m_BoxOffset[part][segment][layer][axis] = offset;
191 else
192 {
193 outRangeFlag ++;
194 m_BoxOffset[part][segment][layer][axis] = E_OFFSET_MAX[axis] * MAX_FRACTION;
195 }
196 }
197
198 if( outRangeFlag > 0 ) return false;
199 else return true;
200}

Referenced by InitOffset().

◆ CheckStripPlaneOffset()

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

Definition at line 202 of file MucGeoMgr.cxx.

203{
204 int outRangeFlag = 0;
205
206 if( STR_OFFSET_MAX[axis] - fabs(offset) >= 0.0 ) // |offset|<=STR_OFFSET_MAX
207 m_StripPlaneOffset[part][segment][layer][axis] = offset;
208 else
209 {
210 outRangeFlag ++;
211 m_StripPlaneOffset[part][segment][layer][axis] = STR_OFFSET_MAX[axis] * MAX_FRACTION;
212 }
213
214 if( outRangeFlag > 0 ) return false;
215 else return true;
216}

Referenced by InitOffset().

◆ CreateAbsorber()

StatusCode MucGeoMgr::CreateAbsorber ( )
protected

Definition at line 453 of file MucGeoMgr.cxx.

454{
455 MsgStream log(msgSvc, "MucGeoMgr");
456
457 ofstream fOrigin("MucAbsorberOrigin.dat", ios::out);
458 ofstream fPanel("MucAbsorberPanel.dat", ios::out);
459 ofstream fPos("MucAbsorberPanelPos.dat", ios::out);
460
461 if( fOrigin.bad() || fPanel.bad() || fPos.bad() )
462 {
463 log << MSG::INFO << "Absorber: create ouput file error!" << endreq;
464 return StatusCode::FAILURE;
465 }
466 fOrigin << "part\tsegment\tlayer\tW\tH\tL\tBes_x\tBes_y\tBes_z\tRot_x\tRot_y\tRot_z" << endl;
467 fPanel << "part\tsegment\tlayer\tpanel\tWu\tWd\tH\tL\tLoc_x\tLoc_y\tLoc_z" << endl;
468 fPos << "part\tsegment\tlayer\tpanel\tLBes_x\tLBes_y\tLBes_z\tOBes_x\tOBes_y\tOBes_z\tLoc_x\tLoc_y\tLoc_z" << endl;
469
470 int totalObject = 0;
471
472 for( int i=0; i<PART_MAX; i++ )
473 {
474 if( i == BRID )
475 {
476 for( int j=0; j<B_SEG_NUM; j++ )
477 {
478 for( int k=0; k<B_LAY_NUM; k++ )
479 {
480 for( int n=0; n<B_AS_NUM; n++ )
481 {
482 MucAbsorber *aMucAbsorber = new MucAbsorber( i, j, k, n );
483 fOrigin << i << "\t" << j << "\t" << k << "\t"
484 << aMucAbsorber->GetW() <<"\t"
485 << aMucAbsorber->GetH() <<"\t"
486 << aMucAbsorber->GetL() <<"\t"
487 << aMucAbsorber->GetLocOrgInBes(1) <<"\t"
488 << aMucAbsorber->GetLocOrgInBes(2) <<"\t"
489 << aMucAbsorber->GetLocOrgInBes(3) <<"\t"
490 << aMucAbsorber->GetObjRotToMot(1) <<"\t"
491 << aMucAbsorber->GetObjRotToMot(2) <<"\t"
492 << aMucAbsorber->GetObjRotToMot(3) <<"\t"
493 << endl;
494 fPanel << i << "\t" << j << "\t" << k << "\t" << n << "\t"
495 << aMucAbsorber->GetWu() <<"\t"
496 << aMucAbsorber->GetWd() <<"\t"
497 << aMucAbsorber->GetH() <<"\t"
498 << aMucAbsorber->GetL() <<"\t"
499 << aMucAbsorber->GetObjOrgInLoc(1) <<"\t"
500 << aMucAbsorber->GetObjOrgInLoc(2) <<"\t"
501 << aMucAbsorber->GetObjOrgInLoc(3) <<"\t"
502 << endl;
503 fPos << i << "\t" << j << "\t" << k << "\t" << n << "\t"
504 << aMucAbsorber->GetLocOrgInBes(1) <<"\t"
505 << aMucAbsorber->GetLocOrgInBes(2) <<"\t"
506 << aMucAbsorber->GetLocOrgInBes(3) <<"\t"
507 << aMucAbsorber->GetObjOrgInBes(1) <<"\t"
508 << aMucAbsorber->GetObjOrgInBes(2) <<"\t"
509 << aMucAbsorber->GetObjOrgInBes(3) <<"\t"
510 << aMucAbsorber->GetObjOrgInLoc(1) <<"\t"
511 << aMucAbsorber->GetObjOrgInLoc(2) <<"\t"
512 << aMucAbsorber->GetObjOrgInLoc(3) <<"\t"
513 << endl;
514
515 totalObject++;
516 // delete aMucAbsorber;
517 }
518 } // layer
519 } // segment
520 } // barrel
521 else
522 {
523 for( int j=0; j<E_SEG_NUM; j++ )
524 {
525 for( int k=0; k<E_ASLAY_NUM; k++ )
526 {
527 for( int n=-1; n<E_PANEL_NUM; n++ )
528 {
529 MucAbsorber *aMucAbsorber = new MucAbsorber( i, j, k, n );
530 if( n == -1 )
531 {
532 fOrigin<< i << "\t" << j << "\t" << k << "\t"
533 << aMucAbsorber->GetW() <<"\t"
534 << aMucAbsorber->GetH() <<"\t"
535 << aMucAbsorber->GetL() <<"\t"
536 << aMucAbsorber->GetLocOrgInBes(1) <<"\t"
537 << aMucAbsorber->GetLocOrgInBes(2) <<"\t"
538 << aMucAbsorber->GetLocOrgInBes(3) <<"\t"
539 << aMucAbsorber->GetObjRotToMot(1) <<"\t"
540 << aMucAbsorber->GetObjRotToMot(2) <<"\t"
541 << aMucAbsorber->GetObjRotToMot(3) <<"\t"
542 << endl;
543
544 totalObject ++;
545 // delete aMucAbsorber;
546 }
547 else
548 {
549 fPanel<< i << "\t" << j << "\t" << k << "\t" << n << "\t"
550 << aMucAbsorber->GetWu() <<"\t"
551 << aMucAbsorber->GetWd() <<"\t"
552 << aMucAbsorber->GetH() <<"\t"
553 << aMucAbsorber->GetL() <<"\t"
554 << aMucAbsorber->GetObjOrgInLoc(1) <<"\t"
555 << aMucAbsorber->GetObjOrgInLoc(2) <<"\t"
556 << aMucAbsorber->GetObjOrgInLoc(3) <<"\t"
557 << endl;
558
559 fPos << i << "\t" << j << "\t" << k << "\t" << n << "\t"
560 << aMucAbsorber->GetLocOrgInBes(1) <<"\t"
561 << aMucAbsorber->GetLocOrgInBes(2) <<"\t"
562 << aMucAbsorber->GetLocOrgInBes(3) <<"\t"
563 << aMucAbsorber->GetObjOrgInBes(1) <<"\t"
564 << aMucAbsorber->GetObjOrgInBes(2) <<"\t"
565 << aMucAbsorber->GetObjOrgInBes(3) <<"\t"
566 << aMucAbsorber->GetObjOrgInLoc(1) <<"\t"
567 << aMucAbsorber->GetObjOrgInLoc(2) <<"\t"
568 << aMucAbsorber->GetObjOrgInLoc(3) <<"\t"
569 << endl;
570 // delete aMucAbsorber;
571 }
572 }
573 } // layer
574 } // segment
575 } // endcap
576 } // for
577
578 fOrigin.close();
579 fPanel.close();
580 fPos.close();
581
582 log << MSG::INFO << totalObject << "\tabsorbers created." << endreq;
583
584 return StatusCode::SUCCESS;
585} // MucAbsorber
const Int_t n
double GetWu()
Definition: MucEntity.cxx:148
double GetW()
Definition: MucEntity.cxx:145
double GetObjRotToMot(int i)
Definition: MucEntity.cxx:158
double GetObjOrgInBes(int i)
Definition: MucEntity.cxx:164
double GetLocOrgInBes(int i)
Definition: MucEntity.cxx:152
double GetWd()
Definition: MucEntity.cxx:149
double GetH()
Definition: MucEntity.cxx:146
double GetL()
Definition: MucEntity.cxx:147
double GetObjOrgInLoc(int i)
Definition: MucEntity.cxx:170
std::ofstream ofstream
Definition: bpkt_streams.h:42

Referenced by CreateEntities().

◆ CreateBakelite()

StatusCode MucGeoMgr::CreateBakelite ( )
protected

Definition at line 1586 of file MucGeoMgr.cxx.

1587{
1588 MsgStream log(msgSvc, "MucGeoMgr");
1589
1590 //-------------------------- ideal geometry----------------------
1591
1592 ofstream fOrigin("MucBakelite.dat", ios::out);
1593 ofstream fPos("MucBakelitePos.dat", ios::out);
1594
1595 if( fOrigin.bad() || fPos.bad() )
1596 {
1597 log << MSG::INFO << "Bakelite: create ouput file error!" << endl;
1598 return StatusCode::FAILURE;
1599 }
1600 fOrigin << "part\tsegment\tlayer\tupDown\trpcId\tBKLT\t"
1601 << "Wu\tWd\tH\tL\tLoc_x\tLoc_y\tLoc_z\tBes_x\tBes_y\tBes_z" << endl;
1602 fPos << "part\tsegment\tlayer\tupDown\trpcId\tBKLT\t"
1603 << "LBes_x\tLBes_y\tLBes_z\tOBes_x\tOBes_y\tOBes_z\tLoc_x\tLoc_y\tLoc_z" << endl;
1604
1605 int totalObject = 0;
1606
1607 for( int i=0; i<PART_MAX; i++ )
1608 {
1609 if( i == BRID )
1610 {
1611 for( int j=0; j<B_SEG_NUM; j++ )
1612 {
1613 // Set maximum rpc number
1614 int maxRpc;
1615 if( j ==B_TOP )
1616 maxRpc = B_TOP_RPC_NUM; // top segment
1617 else
1618 maxRpc = B_RPC_NUM; // not top segment
1619
1620 for( int k=0; k<B_LAY_NUM; k++ )
1621 {
1622 for( int m=0; m<SL_NUM; m++ )
1623 {
1624 for( int n=0; n<maxRpc; n++ )
1625 {
1626 for( int t=0; t<BKLT_NUM; t++)
1627 {
1628 MucBakelite *aMucBakelite = new MucBakelite( i, j, k, m, n, t );
1629
1630 fOrigin<< i << "\t" << j << "\t" << k << "\t"
1631 << m << "\t" << n << "\t" << t << "\t"
1632 << aMucBakelite->GetWu() <<"\t"
1633 << aMucBakelite->GetWd() <<"\t"
1634 << aMucBakelite->GetH() <<"\t"
1635 << aMucBakelite->GetL() <<"\t"
1636 << aMucBakelite->GetObjOrgInLoc(1) <<"\t"
1637 << aMucBakelite->GetObjOrgInLoc(2) <<"\t"
1638 << aMucBakelite->GetObjOrgInLoc(3) <<"\t"
1639 << aMucBakelite->GetObjOrgInBes(1) <<"\t"
1640 << aMucBakelite->GetObjOrgInBes(2) <<"\t"
1641 << aMucBakelite->GetObjOrgInBes(3) <<"\t"
1642 << endl;
1643
1644 fPos << i << "\t" << j << "\t" << k << "\t"
1645 << m << "\t" << n << "\t" << t << "\t"
1646 << aMucBakelite->GetLocOrgInBes(1) <<"\t"
1647 << aMucBakelite->GetLocOrgInBes(2) <<"\t"
1648 << aMucBakelite->GetLocOrgInBes(3) <<"\t"
1649 << aMucBakelite->GetObjOrgInBes(1) <<"\t"
1650 << aMucBakelite->GetObjOrgInBes(2) <<"\t"
1651 << aMucBakelite->GetObjOrgInBes(3) <<"\t"
1652 << aMucBakelite->GetObjOrgInLoc(1) <<"\t"
1653 << aMucBakelite->GetObjOrgInLoc(2) <<"\t"
1654 << aMucBakelite->GetObjOrgInLoc(3) <<"\t"
1655 << endl;
1656
1657 totalObject++;
1658 // delete aMucBakelite;
1659 } // bakelite
1660 } // rpc
1661 } // super layer
1662 } // layer
1663 } // segment
1664 } // barrel
1665 else
1666 {
1667 for( int j=0; j<E_SEG_NUM; j++ )
1668 {
1669 for( int k=0; k<E_LAY_NUM; k++ )
1670 {
1671 for( int m=0; m<SL_NUM; m++ )
1672 {
1673 for( int n=0; n<E_RPC_NUM[m]; n++ )
1674 {
1675 for( int t=0; t<BKLT_NUM; t++ )
1676 {
1677 MucBakelite *aMucBakelite = new MucBakelite( i, j, k, m, n, t );
1678
1679 fOrigin<< i << "\t" << j << "\t" << k << "\t"
1680 << m << "\t" << n << "\t" << t << "\t"
1681 << aMucBakelite->GetWu() <<"\t"
1682 << aMucBakelite->GetWd() <<"\t"
1683 << aMucBakelite->GetH() <<"\t"
1684 << aMucBakelite->GetL() <<"\t"
1685 << aMucBakelite->GetObjOrgInLoc(1) <<"\t"
1686 << aMucBakelite->GetObjOrgInLoc(2) <<"\t"
1687 << aMucBakelite->GetObjOrgInLoc(3) <<"\t"
1688 << aMucBakelite->GetObjOrgInBes(1) <<"\t"
1689 << aMucBakelite->GetObjOrgInBes(2) <<"\t"
1690 << aMucBakelite->GetObjOrgInBes(3) <<"\t"
1691 << endl;
1692
1693 fPos << i << "\t" << j << "\t" << k << "\t"
1694 << m << "\t" << n << "\t" << t << "\t"
1695 << aMucBakelite->GetLocOrgInBes(1) <<"\t"
1696 << aMucBakelite->GetLocOrgInBes(2) <<"\t"
1697 << aMucBakelite->GetLocOrgInBes(3) <<"\t"
1698 << aMucBakelite->GetObjOrgInBes(1) <<"\t"
1699 << aMucBakelite->GetObjOrgInBes(2) <<"\t"
1700 << aMucBakelite->GetObjOrgInBes(3) <<"\t"
1701 << aMucBakelite->GetObjOrgInLoc(1) <<"\t"
1702 << aMucBakelite->GetObjOrgInLoc(2) <<"\t"
1703 << aMucBakelite->GetObjOrgInLoc(3) <<"\t"
1704 << endl;
1705
1706 totalObject++;
1707 // delete aMucBakelite;
1708 } // bakelite
1709 } // rpc
1710 } // super layer
1711 } // layer
1712 } // segment
1713 } // endcap
1714 } // for, part
1715
1716 fOrigin.close();
1717 fPos.close();
1718
1719 log << MSG::INFO << totalObject << "\tbakelites created." << endreq;
1720
1721 return StatusCode::SUCCESS;
1722
1723} // MucBakelite
int t()
Definition: t.c:1

Referenced by CreateEntities().

◆ CreateBox()

StatusCode MucGeoMgr::CreateBox ( )
protected

Definition at line 739 of file MucGeoMgr.cxx.

740{
741 MsgStream log(msgSvc, "MucGeoMgr");
742
743 //-------------------------- ideal geometry----------------------
744 ofstream fOrigin("MucBoxOrigin.dat", ios::out);
745 ofstream fPanel("MucBoxPanel.dat", ios::out);
746 ofstream fPos("MucBoxPanelPos.dat", ios::out);
747
748 if( fOrigin.bad() || fPanel.bad() || fPos.bad() )
749 {
750 log << MSG::INFO << "Box: create ouput file error!" << endl;
751 return StatusCode::FAILURE;
752 }
753 fOrigin << "part\tsegment\tlayer\tW\tH\tL\tLoc_x\tLoc_y\tLoc_z" << endl;
754 fPanel << "part\tsegment\tlayer\tpanel\tWu\tWd\tH\tL\tLoc_x\tLoc_y\tLoc_z" << endl;
755 fPos << "part\tsegment\tlayer\tpanel\tLBes_x\tLBes_y\tLBes_z\tOBes_x\tOBes_y\tOBes_z\tLoc_x\tLoc_y\tLoc_z" << endl;
756
757 int totalObject = 0;
758 for( int i=0; i<PART_MAX; i++ )
759 {
760 if( i == BRID )
761 {
762 for( int j=0; j<B_SEG_NUM; j++ )
763 {
764 // set panel number
765 int idMin, idMax;
766 if( j != B_TOP ) { idMin = 0; idMax = B_GP_NUM; }
767 else { idMin = -1; idMax = 3; }
768
769 for( int k=0; k<B_LAY_NUM; k++ )
770 {
771 for( int n=idMin; n<idMax; n++ )
772 {
773 MucBox *aMucBox = new MucBox( i, j, k, n );
774
775 if( j == B_TOP && n != -1 ) // barrel top segment panels
776 {
777 fPanel<< i << "\t" << j << "\t" << k << "\t" << n << "\t"
778 << aMucBox->GetWu() <<"\t"
779 << aMucBox->GetWd() <<"\t"
780 << aMucBox->GetH() <<"\t"
781 << aMucBox->GetL() <<"\t"
782 << aMucBox->GetObjOrgInLoc(1) <<"\t"
783 << aMucBox->GetObjOrgInLoc(2) <<"\t"
784 << aMucBox->GetObjOrgInLoc(3) <<"\t"
785 << endl;
786 }
787
788 if( j !=B_TOP || n == -1 ) // box
789 {
790 fOrigin << i << "\t" << j << "\t" << k << "\t"
791 << aMucBox->GetW() <<"\t"
792 << aMucBox->GetH() <<"\t"
793 << aMucBox->GetL() <<"\t"
794 << aMucBox->GetObjOrgInLoc(1) <<"\t"
795 << aMucBox->GetObjOrgInLoc(2) <<"\t"
796 << aMucBox->GetObjOrgInLoc(3) <<"\t"
797 << endl;
798
799 totalObject++;
800 // delete aMucBox;
801 }
802
803 fPos << i << "\t" << j << "\t" << k << "\t" << n << "\t"
804 << aMucBox->GetLocOrgInBes(1) <<"\t"
805 << aMucBox->GetLocOrgInBes(2) <<"\t"
806 << aMucBox->GetLocOrgInBes(3) <<"\t"
807 << aMucBox->GetObjOrgInBes(1) <<"\t"
808 << aMucBox->GetObjOrgInBes(2) <<"\t"
809 << aMucBox->GetObjOrgInBes(3) <<"\t"
810 << aMucBox->GetObjOrgInLoc(1) <<"\t"
811 << aMucBox->GetObjOrgInLoc(2) <<"\t"
812 << aMucBox->GetObjOrgInLoc(3) <<"\t"
813 << endl;
814 // delete aMucBox;
815 } // panel
816 } // layer
817 } // segment
818 } // barrel
819 else
820 {
821 for( int j=0; j<E_SEG_NUM; j++ )
822 {
823 for( int k=0; k<E_LAY_NUM; k++ )
824 {
825 for( int n=-1; n<E_PANEL_NUM; n++ )
826 {
827 MucBox *aMucBox = new MucBox( i, j, k, n );
828 if( n == -1 )
829 {
830 fOrigin<< i << "\t" << j << "\t" << k << "\t"
831 << aMucBox->GetW() <<"\t"
832 << aMucBox->GetH() <<"\t"
833 << aMucBox->GetL() <<"\t"
834 << aMucBox->GetObjOrgInLoc(1) <<"\t"
835 << aMucBox->GetObjOrgInLoc(2) <<"\t"
836 << aMucBox->GetObjOrgInLoc(3) <<"\t"
837 << endl;
838
839 totalObject++;
840 // delete aMucBox;
841 }
842 else
843 {
844 fPanel<< i << "\t" << j << "\t" << k << "\t" << n << "\t"
845 << aMucBox->GetWu() <<"\t"
846 << aMucBox->GetWd() <<"\t"
847 << aMucBox->GetH() <<"\t"
848 << aMucBox->GetL() <<"\t"
849 << aMucBox->GetObjOrgInLoc(1) <<"\t"
850 << aMucBox->GetObjOrgInLoc(2) <<"\t"
851 << aMucBox->GetObjOrgInLoc(3) <<"\t"
852 << endl;
853 // delete aMucBox;
854 }
855
856 fPos << i << "\t" << j << "\t" << k << "\t" << n << "\t"
857 << aMucBox->GetLocOrgInBes(1) <<"\t"
858 << aMucBox->GetLocOrgInBes(2) <<"\t"
859 << aMucBox->GetLocOrgInBes(3) <<"\t"
860 << aMucBox->GetObjOrgInBes(1) <<"\t"
861 << aMucBox->GetObjOrgInBes(2) <<"\t"
862 << aMucBox->GetObjOrgInBes(3) <<"\t"
863 << aMucBox->GetObjOrgInLoc(1) <<"\t"
864 << aMucBox->GetObjOrgInLoc(2) <<"\t"
865 << aMucBox->GetObjOrgInLoc(3) <<"\t"
866 << endl;
867 // delete aMucBox;
868 }
869 } // layer
870 } // segment
871 } // endcap
872 } // for
873
874 fOrigin.close();
875 fPanel.close();
876 fPos.close();
877
878 //-----------------------------real geometry-------------------------
879
880 if( m_AlignFlag )
881 {
882 ofstream fOrgAlign("MucBoxOriginAligned.dat", ios::out);
883 fOrgAlign << "part\tsegment\tlayer\tW\tH\tL\tLoc_x\tLoc_y\tLoc_z" << endl;
884 double offset[3];
885 for( int i=0; i<PART_MAX; i++ )
886 {
887 if( i == BRID )
888 {
889 for( int j=0; j<B_SEG_NUM; j++ )
890 {
891 for( int k=0; k<B_LAY_NUM; k++ )
892 {
893 MucBox *aMucBox = new MucBox( i, j, k, ((j==B_TOP)?-1:0) );
894 offset[0] =m_BoxOffset[i][j][k][0];
895 offset[1] =m_BoxOffset[i][j][k][1];
896 offset[2] =m_BoxOffset[i][j][k][2];
897 aMucBox->SetAlignment( offset[0], offset[1], offset[2] );
898
899 fOrgAlign << i << "\t" << j << "\t" << k << "\t"
900 << aMucBox->GetW() <<"\t"
901 << aMucBox->GetH() <<"\t"
902 << aMucBox->GetL() <<"\t"
903 << aMucBox->GetObjOrgInLoc(1) <<"\t"
904 << aMucBox->GetObjOrgInLoc(2) <<"\t"
905 << aMucBox->GetObjOrgInLoc(3) <<"\t"
906 << endl;
907 // delete aMucBox;
908 } // layer
909 } // segment
910 } // barrel
911 else
912 {
913 for( int j=0; j<E_SEG_NUM; j++ )
914 {
915 for( int k=0; k<E_LAY_NUM; k++ )
916 {
917 MucBox *aMucBox = new MucBox( i, j, k, -1 );
918 offset[0] =m_BoxOffset[i][j][k][0];
919 offset[1] =m_BoxOffset[i][j][k][1];
920 offset[2] =m_BoxOffset[i][j][k][2];
921 aMucBox->SetAlignment( offset[0], offset[1], offset[2] );
922
923 fOrgAlign<< i << "\t" << j << "\t" << k << "\t"
924 << aMucBox->GetW() <<"\t"
925 << aMucBox->GetH() <<"\t"
926 << aMucBox->GetL() <<"\t"
927 << aMucBox->GetObjOrgInLoc(1) <<"\t"
928 << aMucBox->GetObjOrgInLoc(2) <<"\t"
929 << aMucBox->GetObjOrgInLoc(3) <<"\t"
930 << endl;
931 // delete aMucBox;
932 } // layer
933 } // segment
934 } // endcap
935 } // for
936
937 fOrgAlign.close();
938 } // if
939
940
941 log << MSG::INFO << totalObject << "\tboxes created." << endreq;
942
943 return StatusCode::SUCCESS;
944} // MucBox
Definition: MucBox.h:21
virtual void SetAlignment(double dx, double dy, double dz)
Definition: MucBox.cxx:436

Referenced by CreateEntities().

◆ CreateBoxCover()

StatusCode MucGeoMgr::CreateBoxCover ( )
protected

Definition at line 1726 of file MucGeoMgr.cxx.

1727{
1728 MsgStream log(msgSvc, "MucGeoMgr");
1729
1730 //-------------------------- ideal geometry----------------------
1731 ofstream fOrigin("MucBoxCoverOrigin.dat", ios::out);
1732 ofstream fPanel("MucBoxCoverPanel.dat", ios::out);
1733 ofstream fPos("MucBoxCoverPanelPos.dat", ios::out);
1734
1735 if( fOrigin.bad() || fPanel.bad() || fPos.bad() )
1736 {
1737 log << MSG::INFO << "BoxCover: create ouput file error!" << endl;
1738 return StatusCode::FAILURE;
1739 }
1740 fOrigin << "part\tsegment\tlayer\tU/D\tW\tH\tL\tLoc_x\tLoc_y\tLoc_z" << endl;
1741 fPanel << "part\tsegment\tlayer\tU/D\tpanel\tWu\tWd\tH\tL\tLoc_x\tLoc_y\tLoc_z" << endl;
1742 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;
1743
1744 int totalObject = 0;
1745
1746 for( int i=0; i<PART_MAX; i++ )
1747 {
1748 if( i == BRID )
1749 {
1750 for( int j=0; j<B_SEG_NUM; j++ )
1751 {
1752 // set panel number
1753 int idMin, idMax;
1754 if( j != B_TOP ) { idMin = 0; idMax = B_GP_NUM; }
1755 else { idMin = -1; idMax = 3; }
1756
1757 for( int k=0; k<B_LAY_NUM; k++ )
1758 {
1759 for( int m=0; m<SL_NUM; m++ )
1760 {
1761 for( int n = idMin; n<idMax; n++ )
1762 {
1763 MucBoxCover *aMucBoxCover = new MucBoxCover( i, j, k, m, n );
1764 if( j == B_TOP || n != -1 ) // barrel top segment panels
1765 {
1766 fPanel << i << "\t" << j << "\t" << k << "\t"
1767 << m << "\t" << n << "\t"
1768 << aMucBoxCover->GetW() <<"\t"
1769 << aMucBoxCover->GetW() <<"\t"
1770 << aMucBoxCover->GetH() <<"\t"
1771 << aMucBoxCover->GetL() <<"\t"
1772 << aMucBoxCover->GetObjOrgInLoc(1) <<"\t"
1773 << aMucBoxCover->GetObjOrgInLoc(2) <<"\t"
1774 << aMucBoxCover->GetObjOrgInLoc(3) <<"\t"
1775 << endl;
1776 // delete aMucBoxCover;
1777 }
1778
1779 if( j != B_TOP || n == -1 ) // box cover
1780 {
1781 fOrigin << i << "\t" << j << "\t" << k << "\t"
1782 << m << "\t"
1783 << aMucBoxCover->GetW() <<"\t"
1784 << aMucBoxCover->GetH() <<"\t"
1785 << aMucBoxCover->GetL() <<"\t"
1786 << aMucBoxCover->GetObjOrgInLoc(1) <<"\t"
1787 << aMucBoxCover->GetObjOrgInLoc(2) <<"\t"
1788 << aMucBoxCover->GetObjOrgInLoc(3) <<"\t"
1789 << endl;
1790
1791 totalObject++;
1792 // delete aMucBoxCover;
1793 }
1794
1795 fPos << i << "\t" << j << "\t" << k << "\t"
1796 << m << "\t" << n << "\t"
1797 << aMucBoxCover->GetLocOrgInBes(1) <<"\t"
1798 << aMucBoxCover->GetLocOrgInBes(2) <<"\t"
1799 << aMucBoxCover->GetLocOrgInBes(3) <<"\t"
1800 << aMucBoxCover->GetObjOrgInBes(1) <<"\t"
1801 << aMucBoxCover->GetObjOrgInBes(2) <<"\t"
1802 << aMucBoxCover->GetObjOrgInBes(3) <<"\t"
1803 << aMucBoxCover->GetObjOrgInLoc(1) <<"\t"
1804 << aMucBoxCover->GetObjOrgInLoc(2) <<"\t"
1805 << aMucBoxCover->GetObjOrgInLoc(3) <<"\t"
1806 << endl;
1807 // delete aMucBoxCover;
1808 } // panel
1809 }// super layer
1810 } // layer
1811 } // segment
1812 } // barrel
1813 else
1814 {
1815 for( int j=0; j<E_SEG_NUM; j++ )
1816 {
1817 for( int k=0; k<E_LAY_NUM; k++ )
1818 {
1819 for( int m=0; m<SL_NUM; m++ )
1820 {
1821 for( int n=-1; n<E_PANEL_NUM; n++ )
1822 {
1823 MucBoxCover *aMucBoxCover = new MucBoxCover( i, j, k, m, n );
1824 if( n == -1 )
1825 {
1826 fOrigin<< i << "\t" << j << "\t" << k << "\t"
1827 << m << "\t"
1828 << aMucBoxCover->GetW() <<"\t"
1829 << aMucBoxCover->GetH() <<"\t"
1830 << aMucBoxCover->GetL() <<"\t"
1831 << aMucBoxCover->GetObjOrgInLoc(1) <<"\t"
1832 << aMucBoxCover->GetObjOrgInLoc(2) <<"\t"
1833 << aMucBoxCover->GetObjOrgInLoc(3) <<"\t"
1834 << endl;
1835 totalObject++;
1836 // delete aMucBoxCover;
1837 }
1838 else
1839 {
1840 fPanel<< i << "\t" << j << "\t" << k << "\t"
1841 << m << "\t" << n << "\t"
1842 << aMucBoxCover->GetWu() <<"\t"
1843 << aMucBoxCover->GetWd() <<"\t"
1844 << aMucBoxCover->GetH() <<"\t"
1845 << aMucBoxCover->GetL() <<"\t"
1846 << aMucBoxCover->GetObjOrgInLoc(1) <<"\t"
1847 << aMucBoxCover->GetObjOrgInLoc(2) <<"\t"
1848 << aMucBoxCover->GetObjOrgInLoc(3) <<"\t"
1849 << endl;
1850 // delete aMucBoxCover;
1851 }
1852
1853 fPos << i << "\t" << j << "\t" << k << "\t"
1854 << m << "\t" << n << "\t"
1855 << aMucBoxCover->GetLocOrgInBes(1) <<"\t"
1856 << aMucBoxCover->GetLocOrgInBes(2) <<"\t"
1857 << aMucBoxCover->GetLocOrgInBes(3) <<"\t"
1858 << aMucBoxCover->GetObjOrgInBes(1) <<"\t"
1859 << aMucBoxCover->GetObjOrgInBes(2) <<"\t"
1860 << aMucBoxCover->GetObjOrgInBes(3) <<"\t"
1861 << aMucBoxCover->GetObjOrgInLoc(1) <<"\t"
1862 << aMucBoxCover->GetObjOrgInLoc(2) <<"\t"
1863 << aMucBoxCover->GetObjOrgInLoc(3) <<"\t"
1864 << endl;
1865 // delete aMucBoxCover;
1866 } // panel
1867 } // super layer
1868 } // layer
1869 } // segment
1870 } // endcap
1871 } // for
1872
1873 fOrigin.close();
1874 fPanel.close();
1875 fPos.close();
1876
1877 log << MSG::INFO << totalObject << "\tbox_covers created." << endreq;
1878
1879 return StatusCode::SUCCESS;
1880
1881} // MucBoxCover

Referenced by CreateEntities().

◆ CreateEntities()

StatusCode MucGeoMgr::CreateEntities ( )

Definition at line 222 of file MucGeoMgr.cxx.

223{
224 MsgStream log(msgSvc, "MucGeoMgr");
225
226 StatusCode sc;
227
228 if( m_CreateFlag.size() < ENTITY_NUM )
229 {
230 for( unsigned int i=m_CreateFlag.size(); i<ENTITY_NUM; i++ )
231 m_CreateFlag += '0';
232 }
233
234 int entity = 0;
235 for( unsigned int i=0; i< ENTITY_NUM; i++ )
236 if( m_CreateFlag[i] == '1' ) entity++;
237 log << MSG::INFO << entity << "\tentities should be created." << endreq << endreq;
238
239 if( m_CreateFlag[0] == '1' )
240 {
241 sc = CreateAbsorber();
242 if( sc == StatusCode::SUCCESS )
243 log << MSG::INFO << "Create absorber successfully!" << endreq << endreq;
244 else
245 log << MSG::INFO << "Create absorber failure!" << endreq << endreq;
246 }
247
248 if( m_CreateFlag[1] == '1' )
249 {
250 sc = CreateGap();
251 if( sc == StatusCode::SUCCESS )
252 log << MSG::INFO << "Create gap successfully!" << endreq << endreq;
253 else
254 log << MSG::INFO << "Create gap failure!" << endreq << endreq;
255 }
256
257 if( m_CreateFlag[2] == '1' )
258 {
259 sc = CreateBox();
260 if( sc == StatusCode::SUCCESS )
261 log << MSG::INFO << "Create box successfully!" << endreq << endreq;
262 else
263 log << MSG::INFO << "Create box failure!" << endreq << endreq;
264 }
265
266 if( m_CreateFlag[3] == '1' )
267 {
268 sc = CreateStripPlane();
269 if( sc == StatusCode::SUCCESS )
270 log << MSG::INFO << "Create strip_plane successfully!" << endreq << endreq;
271 else
272 log << MSG::INFO << "Create strip_plane failure!" << endreq << endreq;
273 }
274
275 if( m_CreateFlag[4] == '1' )
276 {
277 sc = CreateStrip();
278 if( sc == StatusCode::SUCCESS )
279 log << MSG::INFO << "Create strip successfully!" << endreq << endreq;
280 else
281 log << MSG::INFO << "Create strip failure!" << endreq << endreq;
282 }
283
284 if( m_CreateFlag[5] == '1' )
285 {
286 sc = CreateRpc();
287 if( sc == StatusCode::SUCCESS )
288 log << MSG::INFO << "Create RPC successfully!" << endreq << endreq;
289 else
290 log << MSG::INFO << "Create RPC failure!" << endreq << endreq;
291 }
292
293 if( m_CreateFlag[6] == '1' )
294 {
295 sc = CreateGas();
296 if( sc == StatusCode::SUCCESS )
297 log << MSG::INFO << "Create gas mixture successfully!" << endreq << endreq;
298 else
299 log << MSG::INFO << "Create gas mixture failure!" << endreq << endreq;
300 }
301
302 if( m_CreateFlag[7] == '1' )
303 {
304 sc = CreateBakelite();
305 if( sc == StatusCode::SUCCESS )
306 log << MSG::INFO << "Create bakelite successfully!" << endreq << endreq;
307 else
308 log << MSG::INFO << "Create bakelite failure!" << endreq << endreq;
309 }
310
311 if( m_CreateFlag[8] == '1' )
312 {
313 sc = CreateBoxCover();
314 if( sc == StatusCode::SUCCESS )
315 log << MSG::INFO << "Create box cover successfully!" << endreq << endreq;
316 else
317 log << MSG::INFO << "Create box cover failure!" << endreq << endreq;
318 }
319
320
321 return StatusCode::SUCCESS;
322}
const unsigned int ENTITY_NUM
Definition: MucGeoMgr.h:44
StatusCode CreateRpc()
Definition: MucGeoMgr.cxx:1325
StatusCode CreateGas()
Definition: MucGeoMgr.cxx:1456
StatusCode CreateGap()
Definition: MucGeoMgr.cxx:589
StatusCode CreateAbsorber()
Definition: MucGeoMgr.cxx:453
StatusCode CreateBoxCover()
Definition: MucGeoMgr.cxx:1726
StatusCode CreateBakelite()
Definition: MucGeoMgr.cxx:1586
StatusCode CreateStripPlane()
Definition: MucGeoMgr.cxx:949
StatusCode CreateStrip()
Definition: MucGeoMgr.cxx:1200
StatusCode CreateBox()
Definition: MucGeoMgr.cxx:739

Referenced by MucGeoCreateAlg::finalize().

◆ CreateGap()

StatusCode MucGeoMgr::CreateGap ( )
protected

Definition at line 589 of file MucGeoMgr.cxx.

590{
591 MsgStream log(msgSvc, "MucGeoMgr");
592
593 ofstream fOrigin("MucGapOrigin.dat", ios::out);
594 ofstream fPanel("MucGapPanel.dat", ios::out);
595 ofstream fPos("MucGapPanelPos.dat", ios::out);
596
597 if( fOrigin.bad() || fPanel.bad() || fPos.bad() )
598 {
599 log << MSG::INFO << "Gap: create ouput file error!" << endreq;
600 return StatusCode::FAILURE;
601 }
602 fOrigin << "part\tsegment\tlayer\tW\tH\tL\tBes_x\tBes_y\tBes_z\tRot_x\tRot_y\tRot_z" << endl;
603 fPanel << "part\tsegment\tlayer\tpanel\tWu\tWd\tH\tL\tLoc_x\tLoc_y\tLoc_z" << endl;
604 fPos << "part\tsegment\tlayer\tpanel\tLBes_x\tLBes_y\tLBes_z\tOBes_x\tOBes_y\tOBes_z\tLoc_x\tLoc_y\tLoc_z" << endl;
605
606 int totalObject = 0;
607
608 for( int i=0; i<PART_MAX; i++ )
609 {
610 if( i == BRID )
611 {
612 for( int j=0; j<B_SEG_NUM; j++ )
613 {
614 // set panel number
615 int idMin, idMax;
616 if( j != B_TOP ) { idMin = 0; idMax = B_GP_NUM; }
617 else { idMin = -1; idMax = 3; }
618
619 for( int k=0; k<B_LAY_NUM; k++ )
620 {
621 for( int n=idMin; n<idMax; n++ )
622 {
623 MucGap *aMucGap = new MucGap( i, j, k, n );
624
625 if( j == B_TOP && n != -1 ) // barrel top segment panels
626 {
627 fPanel<< i << "\t" << j << "\t" << k << "\t" << n << "\t"
628 << aMucGap->GetWu() <<"\t"
629 << aMucGap->GetWd() <<"\t"
630 << aMucGap->GetH() <<"\t"
631 << aMucGap->GetL() <<"\t"
632 << aMucGap->GetObjOrgInLoc(1) <<"\t"
633 << aMucGap->GetObjOrgInLoc(2) <<"\t"
634 << aMucGap->GetObjOrgInLoc(3) <<"\t"
635 << endl;
636 }
637
638 if( j !=B_TOP || n == -1 )
639 {
640 fOrigin<< i << "\t" << j << "\t" << k << "\t"
641 << aMucGap->GetW() <<"\t"
642 << aMucGap->GetH() <<"\t"
643 << aMucGap->GetL() <<"\t"
644 << aMucGap->GetLocOrgInBes(1) <<"\t"
645 << aMucGap->GetLocOrgInBes(2) <<"\t"
646 << aMucGap->GetLocOrgInBes(3) <<"\t"
647 << aMucGap->GetObjRotToMot(1) <<"\t"
648 << aMucGap->GetObjRotToMot(2) <<"\t"
649 << aMucGap->GetObjRotToMot(3) <<"\t"
650 << endl;
651
652 totalObject++;
653 // delete aMucGap;
654 }
655
656 fPos << i << "\t" << j << "\t" << k << "\t" << n << "\t"
657 << aMucGap->GetLocOrgInBes(1) <<"\t"
658 << aMucGap->GetLocOrgInBes(2) <<"\t"
659 << aMucGap->GetLocOrgInBes(3) <<"\t"
660 << aMucGap->GetObjOrgInBes(1) <<"\t"
661 << aMucGap->GetObjOrgInBes(2) <<"\t"
662 << aMucGap->GetObjOrgInBes(3) <<"\t"
663 << aMucGap->GetObjOrgInLoc(1) <<"\t"
664 << aMucGap->GetObjOrgInLoc(2) <<"\t"
665 << aMucGap->GetObjOrgInLoc(3) <<"\t"
666 << endl;
667 }
668 } // layer
669 } // segment
670 } // barrel
671 else
672 {
673 for( int j=0; j<E_SEG_NUM; j++ )
674 {
675 for( int k=0; k<E_LAY_NUM; k++ )
676 {
677 for( int n=-1; n<E_PANEL_NUM; n++ )
678 {
679 MucGap *aMucGap = new MucGap( i, j, k, n );
680
681 if( n == -1 )
682 {
683 fOrigin<< i << "\t" << j << "\t" << k << "\t"
684 << aMucGap->GetW() <<"\t"
685 << aMucGap->GetH() <<"\t"
686 << aMucGap->GetL() <<"\t"
687 << aMucGap->GetLocOrgInBes(1) <<"\t"
688 << aMucGap->GetLocOrgInBes(2) <<"\t"
689 << aMucGap->GetLocOrgInBes(3) <<"\t"
690 << aMucGap->GetObjRotToMot(1) <<"\t"
691 << aMucGap->GetObjRotToMot(2) <<"\t"
692 << aMucGap->GetObjRotToMot(3) <<"\t"
693 << endl;
694
695 totalObject++;
696 }
697 else
698 {
699 fPanel<< i << "\t" << j << "\t" << k << "\t" << n << "\t"
700 << aMucGap->GetWu() <<"\t"
701 << aMucGap->GetWd() <<"\t"
702 << aMucGap->GetH() <<"\t"
703 << aMucGap->GetL() <<"\t"
704 << aMucGap->GetObjOrgInLoc(1) <<"\t"
705 << aMucGap->GetObjOrgInLoc(2) <<"\t"
706 << aMucGap->GetObjOrgInLoc(3) <<"\t"
707 << endl;
708
709 fPos << i << "\t" << j << "\t" << k << "\t" << n << "\t"
710 << aMucGap->GetLocOrgInBes(1) <<"\t"
711 << aMucGap->GetLocOrgInBes(2) <<"\t"
712 << aMucGap->GetLocOrgInBes(3) <<"\t"
713 << aMucGap->GetObjOrgInBes(1) <<"\t"
714 << aMucGap->GetObjOrgInBes(2) <<"\t"
715 << aMucGap->GetObjOrgInBes(3) <<"\t"
716 << aMucGap->GetObjOrgInLoc(1) <<"\t"
717 << aMucGap->GetObjOrgInLoc(2) <<"\t"
718 << aMucGap->GetObjOrgInLoc(3) <<"\t"
719 << endl;
720 // delete aMucGap;
721 }
722 }
723 } // layer
724 } // segment
725 } // endcap
726 } // for
727
728 fOrigin.close();
729 fPanel.close();
730 fPos.close();
731
732 log << MSG::INFO << totalObject << "\tgaps created." << endreq;
733
734 return StatusCode::SUCCESS;
735} // MucGap
Definition: MucGap.h:19

Referenced by CreateEntities().

◆ CreateGas()

StatusCode MucGeoMgr::CreateGas ( )
protected

Definition at line 1456 of file MucGeoMgr.cxx.

1457{
1458 MsgStream log(msgSvc, "MucGeoMgr");
1459
1460 //-------------------------- ideal geometry----------------------
1461
1462 ofstream fOrigin("MucGas.dat", ios::out);
1463 ofstream fPos("MucGasPos.dat", ios::out);
1464
1465 if( fOrigin.bad() || fPos.bad() )
1466 {
1467 log << MSG::INFO << "Gas: create ouput file error!" << endl;
1468 return StatusCode::FAILURE;
1469 }
1470 fOrigin << "part\tsegment\tlayer\tupDown\tgas\tWu\tWd\tH\tL\tLoc_x\tLoc_y\tLoc_z\tBes_x\tBes_y\tBes_z" << endl;
1471 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;
1472
1473 int totalObject = 0;
1474
1475 for( int i=0; i<PART_MAX; i++ )
1476 {
1477 if( i == BRID )
1478 {
1479 for( int j=0; j<B_SEG_NUM; j++ )
1480 {
1481 // Set maximum gas
1482 int maxRpc;
1483 if( j ==B_TOP )
1484 maxRpc = B_TOP_RPC_NUM; // top segment
1485 else
1486 maxRpc = B_RPC_NUM; // not top segment
1487
1488 for( int k=0; k<B_LAY_NUM; k++ )
1489 {
1490 for( int m=0; m<SL_NUM; m++ )
1491 {
1492 for( int n=0; n<maxRpc; n++ )
1493 {
1494 MucGas *aMucGas = new MucGas( i, j, k, m, n, 0);
1495
1496 fOrigin << i << "\t" << j << "\t" << k << "\t"
1497 << m << "\t" << n << "\t"
1498 << aMucGas->GetWu() <<"\t"
1499 << aMucGas->GetWd() <<"\t"
1500 << aMucGas->GetH() <<"\t"
1501 << aMucGas->GetL() <<"\t"
1502 << aMucGas->GetObjOrgInLoc(1) <<"\t"
1503 << aMucGas->GetObjOrgInLoc(2) <<"\t"
1504 << aMucGas->GetObjOrgInLoc(3) <<"\t"
1505 << aMucGas->GetObjOrgInBes(1) <<"\t"
1506 << aMucGas->GetObjOrgInBes(2) <<"\t"
1507 << aMucGas->GetObjOrgInBes(3) <<"\t"
1508 << endl;
1509
1510 fPos << i << "\t" << j << "\t" << k << "\t" << n << "\t"
1511 << aMucGas->GetLocOrgInBes(1) <<"\t"
1512 << aMucGas->GetLocOrgInBes(2) <<"\t"
1513 << aMucGas->GetLocOrgInBes(3) <<"\t"
1514 << aMucGas->GetObjOrgInBes(1) <<"\t"
1515 << aMucGas->GetObjOrgInBes(2) <<"\t"
1516 << aMucGas->GetObjOrgInBes(3) <<"\t"
1517 << aMucGas->GetObjOrgInLoc(1) <<"\t"
1518 << aMucGas->GetObjOrgInLoc(2) <<"\t"
1519 << aMucGas->GetObjOrgInLoc(3) <<"\t"
1520 << endl;
1521
1522 totalObject++;
1523 // delete aMucGas;
1524 } // for
1525 } // super layer
1526 } // layer
1527 } // segment
1528 } // barrel
1529 else
1530 {
1531 for( int j=0; j<E_SEG_NUM; j++ )
1532 {
1533 for( int k=0; k<E_LAY_NUM; k++ )
1534 {
1535 for( int m=0; m<SL_NUM; m++ )
1536 {
1537 for( int n=0; n<E_RPC_NUM[m]; n++ )
1538 {
1539 MucGas *aMucGas = new MucGas( i, j, k, m, n, 0 );
1540
1541 fOrigin << i << "\t" << j << "\t" << k << "\t"
1542 << m << "\t" << n << "\t"
1543 << aMucGas->GetWu() <<"\t"
1544 << aMucGas->GetWd() <<"\t"
1545 << aMucGas->GetH() <<"\t"
1546 << aMucGas->GetL() <<"\t"
1547 << aMucGas->GetObjOrgInLoc(1) <<"\t"
1548 << aMucGas->GetObjOrgInLoc(2) <<"\t"
1549 << aMucGas->GetObjOrgInLoc(3) <<"\t"
1550 << aMucGas->GetObjOrgInBes(1) <<"\t"
1551 << aMucGas->GetObjOrgInBes(2) <<"\t"
1552 << aMucGas->GetObjOrgInBes(3) <<"\t"
1553 << endl;
1554
1555 fPos << i << "\t" << j << "\t" << k << "\t"
1556 << m << "\t" << n << "\t"
1557 << aMucGas->GetLocOrgInBes(1) <<"\t"
1558 << aMucGas->GetLocOrgInBes(2) <<"\t"
1559 << aMucGas->GetLocOrgInBes(3) <<"\t"
1560 << aMucGas->GetObjOrgInBes(1) <<"\t"
1561 << aMucGas->GetObjOrgInBes(2) <<"\t"
1562 << aMucGas->GetObjOrgInBes(3) <<"\t"
1563 << aMucGas->GetObjOrgInLoc(1) <<"\t"
1564 << aMucGas->GetObjOrgInLoc(2) <<"\t"
1565 << aMucGas->GetObjOrgInLoc(3) <<"\t"
1566 << endl;
1567 totalObject++;
1568 // delete aMucGas;
1569 } // for
1570 } // super layer
1571 } // layer
1572 } // segment
1573 } // endcap
1574 } // for, part
1575
1576 fOrigin.close();
1577 fPos.close();
1578
1579 log << MSG::INFO << totalObject << "\tgases created." << endreq;
1580
1581 return StatusCode::SUCCESS;
1582
1583} // MucGas
Definition: MucGas.h:19

Referenced by CreateEntities().

◆ CreateOnlineStripGeo()

StatusCode MucGeoMgr::CreateOnlineStripGeo ( )

Definition at line 336 of file MucGeoMgr.cxx.

337{
338 MsgStream log(msgSvc, "MucGeoMgr");
339 //StatusCode sc;
340
341 //-------------------------- ideal geometry----------------------
342 ofstream fEast("EastEndStripGeo.dat", ios::out);
343 ofstream fBarrel("BarrelStripGeo.dat", ios::out);
344 ofstream fWest("WestEndStripGeo.dat", ios::out);
345
346 if( fEast.bad() || fBarrel.bad() || fWest.bad() )
347 {
348 log << MSG::INFO << "Strip: create ouput file error!" << endl;
349 return StatusCode::FAILURE;
350 }
351
352 for( int i=0; i<PART_MAX; i++ )
353 {
354 if( i == BRID )
355 {
356 for( int j=0; j<B_SEG_NUM; j++ )
357 {
358 for( int k=0; k<B_LAY_NUM; k++ )
359 {
360 // Set maximum strip
361 int maxStrip;
362 if( ( k+1 )%2 == 1 )
363 maxStrip = B_ZSTR_NUM; // odd layer
364 else if( j != B_TOP )
365 maxStrip = B_PHISTR_NUM; // even layer not top segment
366 else
367 maxStrip = B_TOPSTR_NUM; // even layer top segment
368
369 for( int n=0; n<maxStrip; n++ )
370 {
371 MucStrip *aMucStrip = new MucStrip( i, j, k, n );
372
373 fBarrel << i << "\t" << j << "\t" << k << "\t" << n << "\t"
374 << aMucStrip->GetType()-2 << "\t"
375 << aMucStrip->GetL() <<"\t"
376 << aMucStrip->GetW() << "\t"
377 << aMucStrip->GetH() << "\t"
378 << aMucStrip->GetObjOrgInBes(1) <<"\t"
379 << aMucStrip->GetObjOrgInBes(2) <<"\t"
380 << aMucStrip->GetObjOrgInBes(3) <<"\t"
381 << endl;
382 // delete aMucStrip;
383 } // for
384 } // layer
385 } // segment
386 } // barrel
387 else if( i == EEID )
388 {
389 for( int j=0; j<E_SEG_NUM; j++ )
390 {
391 for( int k=0; k<E_LAY_NUM; k++ )
392 {
393 for( int n=0; n<E_STR_NUM; n++ )
394 {
395 MucStrip *aMucStrip = new MucStrip( i, j, k, n );
396
397 fEast << i << "\t" << j << "\t" << k << "\t" << n << "\t"
398 << aMucStrip->GetType() << "\t"
399 << aMucStrip->GetL() <<"\t"
400 << aMucStrip->GetW() <<"\t"
401 << aMucStrip->GetH() <<"\t"
402 << aMucStrip->GetObjOrgInBes(1) <<"\t"
403 << aMucStrip->GetObjOrgInBes(2) <<"\t"
404 << aMucStrip->GetObjOrgInBes(3) <<"\t"
405 << endl;
406 // delete aMucStrip;
407 } // strip
408 } // layer
409 } // segment
410 } // east endcap
411 else
412 {
413 for( int j=0; j<E_SEG_NUM; j++ )
414 {
415 for( int k=0; k<E_LAY_NUM; k++ )
416 {
417 for( int n=0; n<E_STR_NUM; n++ )
418 {
419 MucStrip *aMucStrip = new MucStrip( i, j, k, n );
420
421 fWest << i << "\t" << j << "\t" << k << "\t" << n << "\t"
422 << aMucStrip->GetType() << "\t"
423 << aMucStrip->GetL() <<"\t"
424 << aMucStrip->GetW() <<"\t"
425 << aMucStrip->GetH() <<"\t"
426 << aMucStrip->GetObjOrgInBes(1) <<"\t"
427 << aMucStrip->GetObjOrgInBes(2) <<"\t"
428 << aMucStrip->GetObjOrgInBes(3) <<"\t"
429 << endl;
430 // delete aMucStrip;
431 } // strip
432 } // layer
433 } // segment
434 } // west endcap
435
436 } // part
437
438 fEast.close();
439 fBarrel.close();
440 fWest.close();
441
442 log << MSG::INFO << "Online display strips created." << endreq;
443
444 return StatusCode::SUCCESS;
445}
int GetType()
Definition: MucStrip.cxx:92

Referenced by MucGeoCreateAlg::finalize().

◆ CreateRootGeo()

StatusCode MucGeoMgr::CreateRootGeo ( )

Definition at line 325 of file MucGeoMgr.cxx.

326{
327 MsgStream log(msgSvc, "MucGeoMgr");
328 //StatusCode sc;
329
330
331 return StatusCode::SUCCESS;
332}

Referenced by MucGeoCreateAlg::finalize().

◆ CreateRpc()

StatusCode MucGeoMgr::CreateRpc ( )
protected

Definition at line 1325 of file MucGeoMgr.cxx.

1326{
1327 MsgStream log(msgSvc, "MucGeoMgr");
1328
1329 //-------------------------- ideal geometry----------------------
1330
1331 ofstream fOrigin("MucRpc.dat", ios::out);
1332 ofstream fPos("MucRpcPos.dat", ios::out);
1333
1334 if( fOrigin.bad() || fPos.bad() )
1335 {
1336 log << MSG::INFO << "Rpc: create ouput file error!" << endl;
1337 return StatusCode::FAILURE;
1338 }
1339 fOrigin << "part\tsegment\tlayer\tupDown\trpc\tWu\tWd\tH\tL\tLoc_x\tLoc_y\tLoc_z\tBes_x\tBes_y\tBes_z" << endl;
1340 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;
1341
1342 int totalObject = 0;
1343
1344 for( int i=0; i<PART_MAX; i++ )
1345 {
1346 if( i == BRID )
1347 {
1348 for( int j=0; j<B_SEG_NUM; j++ )
1349 {
1350 // Set maximum rpc
1351 int maxRpc;
1352 if( j ==B_TOP )
1353 maxRpc = B_TOP_RPC_NUM; // top segment
1354 else
1355 maxRpc = B_RPC_NUM; // not top segment
1356
1357 for( int k=0; k<B_LAY_NUM; k++ )
1358 {
1359 for( int m=0; m<SL_NUM; m++ )
1360 {
1361 for( int n=0; n<maxRpc; n++ )
1362 {
1363 MucRpc *aMucRpc = new MucRpc( i, j, k, m, n );
1364
1365 fOrigin << i << "\t" << j << "\t" << k << "\t"
1366 << m << "\t" << n << "\t"
1367 << aMucRpc->GetWu() << "\t"
1368 << aMucRpc->GetWd() << "\t"
1369 << aMucRpc->GetH() << "\t"
1370 << aMucRpc->GetL() <<"\t"
1371 << aMucRpc->GetObjOrgInLoc(1) <<"\t"
1372 << aMucRpc->GetObjOrgInLoc(2) <<"\t"
1373 << aMucRpc->GetObjOrgInLoc(3) <<"\t"
1374 << aMucRpc->GetObjOrgInBes(1) <<"\t"
1375 << aMucRpc->GetObjOrgInBes(2) <<"\t"
1376 << aMucRpc->GetObjOrgInBes(3) <<"\t"
1377 << endl;
1378
1379 fPos << i << "\t" << j << "\t" << k << "\t"
1380 << m << "\t" << n << "\t"
1381 << aMucRpc->GetLocOrgInBes(1) <<"\t"
1382 << aMucRpc->GetLocOrgInBes(2) <<"\t"
1383 << aMucRpc->GetLocOrgInBes(3) <<"\t"
1384 << aMucRpc->GetObjOrgInBes(1) <<"\t"
1385 << aMucRpc->GetObjOrgInBes(2) <<"\t"
1386 << aMucRpc->GetObjOrgInBes(3) <<"\t"
1387 << aMucRpc->GetObjOrgInLoc(1) <<"\t"
1388 << aMucRpc->GetObjOrgInLoc(2) <<"\t"
1389 << aMucRpc->GetObjOrgInLoc(3) <<"\t"
1390 << endl;
1391
1392 totalObject++;
1393 // delete aMucRpc;
1394 } // for
1395 } // super layer
1396 } // layer
1397 } // segment
1398 } // barrel
1399 else
1400 {
1401 for( int j=0; j<E_SEG_NUM; j++ )
1402 {
1403 for( int k=0; k<E_LAY_NUM; k++ )
1404 {
1405 for( int m=0; m<SL_NUM; m++ )
1406 {
1407 for( int n=0; n<E_RPC_NUM[m]; n++ )
1408 {
1409 MucRpc *aMucRpc = new MucRpc( i, j, k, m, n );
1410
1411 fOrigin << i << "\t" << j << "\t" << k << "\t"
1412 << m << "\t" << n << "\t"
1413 << aMucRpc->GetWu() <<"\t"
1414 << aMucRpc->GetWd() <<"\t"
1415 << aMucRpc->GetH() <<"\t"
1416 << aMucRpc->GetL() <<"\t"
1417 << aMucRpc->GetObjOrgInLoc(1) <<"\t"
1418 << aMucRpc->GetObjOrgInLoc(2) <<"\t"
1419 << aMucRpc->GetObjOrgInLoc(3) <<"\t"
1420 << aMucRpc->GetObjOrgInBes(1) <<"\t"
1421 << aMucRpc->GetObjOrgInBes(2) <<"\t"
1422 << aMucRpc->GetObjOrgInBes(3) <<"\t"
1423 << endl;
1424
1425 fPos << i << "\t" << j << "\t" << k << "\t"
1426 << m << "\t" << n << "\t"
1427 << aMucRpc->GetLocOrgInBes(1) <<"\t"
1428 << aMucRpc->GetLocOrgInBes(2) <<"\t"
1429 << aMucRpc->GetLocOrgInBes(3) <<"\t"
1430 << aMucRpc->GetObjOrgInBes(1) <<"\t"
1431 << aMucRpc->GetObjOrgInBes(2) <<"\t"
1432 << aMucRpc->GetObjOrgInBes(3) <<"\t"
1433 << aMucRpc->GetObjOrgInLoc(1) <<"\t"
1434 << aMucRpc->GetObjOrgInLoc(2) <<"\t"
1435 << aMucRpc->GetObjOrgInLoc(3) <<"\t"
1436 << endl;
1437 totalObject++;
1438 // delete aMucRpc;
1439 } // for
1440 } // super layer
1441 } // layer
1442 } // segment
1443 } // endcap
1444 } // for, part
1445
1446 fOrigin.close();
1447 fPos.close();
1448
1449 log << MSG::INFO << totalObject << "\t RPCs created." << endreq;
1450
1451 return StatusCode::SUCCESS;
1452
1453} // MucRpc
Definition: MucRpc.h:21

Referenced by CreateEntities().

◆ CreateStrip()

StatusCode MucGeoMgr::CreateStrip ( )
protected

Definition at line 1200 of file MucGeoMgr.cxx.

1201{
1202 MsgStream log(msgSvc, "MucGeoMgr");
1203
1204 //-------------------------- ideal geometry----------------------
1205 ofstream fOrigin("MucStrip.dat", ios::out);
1206 ofstream fPos("MucStripPos.dat", ios::out);
1207
1208 if( fOrigin.bad() || fPos.bad() )
1209 {
1210 log << MSG::INFO << "Strip: create ouput file error!" << endl;
1211 return StatusCode::FAILURE;
1212 }
1213 fOrigin << "part\tsegment\tlayer\tstrip\ttype\tW\tH\tL\tLoc_x\tLoc_y\tLoc_z\tBes_x\tBes_y\tBes_z" << endl;
1214 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;
1215
1216 int totalObject = 0;
1217
1218 for( int i=0; i<PART_MAX; i++ )
1219 {
1220 if( i == BRID )
1221 {
1222 for( int j=0; j<B_SEG_NUM; j++ )
1223 {
1224 for( int k=0; k<B_LAY_NUM; k++ )
1225 {
1226 // Set maximum strip
1227 int maxStrip;
1228 if( ( k+1 )%2 == 1 )
1229 maxStrip = B_ZSTR_NUM; // odd layer
1230 else if( j != B_TOP )
1231 maxStrip = B_PHISTR_NUM; // even layer not top segment
1232 else
1233 maxStrip = B_TOPSTR_NUM; // even layer top segment
1234
1235 for( int n=0; n<maxStrip; n++ )
1236 {
1237 MucStrip *aMucStrip = new MucStrip( i, j, k, n );
1238
1239 fOrigin << i << "\t" << j << "\t" << k << "\t" << n << "\t"
1240 << aMucStrip->GetType() << "\t"
1241 << aMucStrip->GetW() << "\t"
1242 << aMucStrip->GetH() << "\t"
1243 << aMucStrip->GetL() <<"\t"
1244 << aMucStrip->GetObjOrgInLoc(1) <<"\t"
1245 << aMucStrip->GetObjOrgInLoc(2) <<"\t"
1246 << aMucStrip->GetObjOrgInLoc(3) <<"\t"
1247 << aMucStrip->GetObjOrgInBes(1) <<"\t"
1248 << aMucStrip->GetObjOrgInBes(2) <<"\t"
1249 << aMucStrip->GetObjOrgInBes(3) <<"\t"
1250 << endl;
1251
1252 fPos << i << "\t" << j << "\t" << k << "\t" << n << "\t"
1253 << aMucStrip->GetType() <<"\t"
1254 << aMucStrip->GetLocOrgInBes(1) <<"\t"
1255 << aMucStrip->GetLocOrgInBes(2) <<"\t"
1256 << aMucStrip->GetLocOrgInBes(3) <<"\t"
1257 << aMucStrip->GetObjOrgInBes(1) <<"\t"
1258 << aMucStrip->GetObjOrgInBes(2) <<"\t"
1259 << aMucStrip->GetObjOrgInBes(3) <<"\t"
1260 << aMucStrip->GetObjOrgInLoc(1) <<"\t"
1261 << aMucStrip->GetObjOrgInLoc(2) <<"\t"
1262 << aMucStrip->GetObjOrgInLoc(3) <<"\t"
1263 << endl;
1264
1265 totalObject++;
1266 // delete aMucStrip;
1267 } // for
1268 } // layer
1269 } // segment
1270 } // barrel
1271 else
1272 {
1273 for( int j=0; j<E_SEG_NUM; j++ )
1274 {
1275 for( int k=0; k<E_LAY_NUM; k++ )
1276 {
1277 for( int n=0; n<E_STR_NUM; n++ )
1278 {
1279 MucStrip *aMucStrip = new MucStrip( i, j, k, n );
1280
1281 fOrigin << i << "\t" << j << "\t" << k << "\t" << n << "\t"
1282 << aMucStrip->GetType() << "\t"
1283 << aMucStrip->GetW() <<"\t"
1284 << aMucStrip->GetH() <<"\t"
1285 << aMucStrip->GetL() <<"\t"
1286 << aMucStrip->GetObjOrgInLoc(1) <<"\t"
1287 << aMucStrip->GetObjOrgInLoc(2) <<"\t"
1288 << aMucStrip->GetObjOrgInLoc(3) <<"\t"
1289 << aMucStrip->GetObjOrgInBes(1) <<"\t"
1290 << aMucStrip->GetObjOrgInBes(2) <<"\t"
1291 << aMucStrip->GetObjOrgInBes(3) <<"\t"
1292 << endl;
1293
1294 fPos << i << "\t" << j << "\t" << k << "\t" << n << "\t"
1295 << aMucStrip->GetType() << "\t"
1296 << aMucStrip->GetLocOrgInBes(1) <<"\t"
1297 << aMucStrip->GetLocOrgInBes(2) <<"\t"
1298 << aMucStrip->GetLocOrgInBes(3) <<"\t"
1299 << aMucStrip->GetObjOrgInBes(1) <<"\t"
1300 << aMucStrip->GetObjOrgInBes(2) <<"\t"
1301 << aMucStrip->GetObjOrgInBes(3) <<"\t"
1302 << aMucStrip->GetObjOrgInLoc(1) <<"\t"
1303 << aMucStrip->GetObjOrgInLoc(2) <<"\t"
1304 << aMucStrip->GetObjOrgInLoc(3) <<"\t"
1305 << endl;
1306 totalObject++;
1307 // delete aMucStrip;
1308 } // for
1309 } // layer
1310 } // segment
1311 } // endcap
1312 } // for
1313
1314 fOrigin.close();
1315 fPos.close();
1316
1317 log << MSG::INFO << totalObject << "\tstrips created." << endreq;
1318
1319 return StatusCode::SUCCESS;
1320
1321} // MucStrip

Referenced by CreateEntities().

◆ CreateStripPlane()

StatusCode MucGeoMgr::CreateStripPlane ( )
protected

Definition at line 949 of file MucGeoMgr.cxx.

950{
951 MsgStream log(msgSvc, "MucGeoMgr");
952
953 //-------------------------- ideal geometry----------------------
954 ofstream fOrigin("MucStripPlaneOrigin.dat", ios::out);
955 ofstream fPanel("MucStripPlanePanel.dat", ios::out);
956 ofstream fPos("MucStripPlanePanelPos.dat", ios::out);
957
958 if( fOrigin.bad() || fPanel.bad() || fPos.bad() )
959 {
960 log << MSG::INFO << "StripPlane: create ouput file error!" << endl;
961 return StatusCode::FAILURE;
962 }
963 fOrigin << "part\tsegment\tlayer\tW\tH\tL\tLoc_x\tLoc_y\tLoc_z" << endl;
964 fPanel << "part\tsegment\tlayer\tpanel\tWu\tWd\tH\tL\tLoc_x\tLoc_y\tLoc_z" << endl;
965 fPos << "part\tsegment\tlayer\tpanel\tLBes_x\tLBes_y\tLBes_z\tOBes_x\tOBes_y\tOBes_z\tLoc_x\tLoc_y\tLoc_z" << endl;
966
967 int totalObject = 0;
968
969 for( int i=0; i<PART_MAX; i++ )
970 {
971 if( i == BRID )
972 {
973 for( int j=0; j<B_SEG_NUM; j++ )
974 {
975 for( int k=0; k<B_LAY_NUM; k++ )
976 {
977 if( j==B_TOP )
978 {
979 for( int n=-1; n<B_STR_PANEL_NUM; n++ )
980 {
981 MucStripPlane *aMucStripPlane = new MucStripPlane( i, j, k, n );
982 if( n == -1 )
983 {
984 fOrigin << i << "\t" << j << "\t" << k << "\t"
985 << aMucStripPlane->GetW() <<"\t"
986 << aMucStripPlane->GetH() <<"\t"
987 << aMucStripPlane->GetL() <<"\t"
988 << aMucStripPlane->GetObjOrgInLoc(1) <<"\t"
989 << aMucStripPlane->GetObjOrgInLoc(2) <<"\t"
990 << aMucStripPlane->GetObjOrgInLoc(3) <<"\t"
991 << endl;
992 fPos << i << "\t" << j << "\t" << k << "\t" << n << "\t"
993 << aMucStripPlane->GetLocOrgInBes(1) <<"\t"
994 << aMucStripPlane->GetLocOrgInBes(2) <<"\t"
995 << aMucStripPlane->GetLocOrgInBes(3) <<"\t"
996 << aMucStripPlane->GetObjOrgInBes(1) <<"\t"
997 << aMucStripPlane->GetObjOrgInBes(2) <<"\t"
998 << aMucStripPlane->GetObjOrgInBes(3) <<"\t"
999 << aMucStripPlane->GetObjOrgInLoc(1) <<"\t"
1000 << aMucStripPlane->GetObjOrgInLoc(2) <<"\t"
1001 << aMucStripPlane->GetObjOrgInLoc(3) <<"\t"
1002 << endl;
1003 totalObject++;
1004 // delete aMucStripPlane;
1005 }
1006 else
1007 {
1008 fPanel<< i << "\t" << j << "\t" << k << "\t" << n << "\t"
1009 << aMucStripPlane->GetWu() <<"\t"
1010 << aMucStripPlane->GetWd() <<"\t"
1011 << aMucStripPlane->GetH() <<"\t"
1012 << aMucStripPlane->GetL() <<"\t"
1013 << aMucStripPlane->GetObjOrgInLoc(1) <<"\t"
1014 << aMucStripPlane->GetObjOrgInLoc(2) <<"\t"
1015 << aMucStripPlane->GetObjOrgInLoc(3) <<"\t"
1016 << endl;
1017
1018 fPos << i << "\t" << j << "\t" << k << "\t" << n << "\t"
1019 << aMucStripPlane->GetLocOrgInBes(1) <<"\t"
1020 << aMucStripPlane->GetLocOrgInBes(2) <<"\t"
1021 << aMucStripPlane->GetLocOrgInBes(3) <<"\t"
1022 << aMucStripPlane->GetObjOrgInBes(1) <<"\t"
1023 << aMucStripPlane->GetObjOrgInBes(2) <<"\t"
1024 << aMucStripPlane->GetObjOrgInBes(3) <<"\t"
1025 << aMucStripPlane->GetObjOrgInLoc(1) <<"\t"
1026 << aMucStripPlane->GetObjOrgInLoc(2) <<"\t"
1027 << aMucStripPlane->GetObjOrgInLoc(3) <<"\t"
1028 << endl;
1029 // delete aMucStripPlane;
1030 }
1031 }// for
1032 }// B_TOP
1033 else
1034 {
1035 MucStripPlane *aMucStripPlane = new MucStripPlane( i, j, k, 0 );
1036 fOrigin << i << "\t" << j << "\t" << k << "\t"
1037 << aMucStripPlane->GetW() <<"\t"
1038 << aMucStripPlane->GetH() <<"\t"
1039 << aMucStripPlane->GetL() <<"\t"
1040 << aMucStripPlane->GetObjOrgInLoc(1) <<"\t"
1041 << aMucStripPlane->GetObjOrgInLoc(2) <<"\t"
1042 << aMucStripPlane->GetObjOrgInLoc(3) <<"\t"
1043 << endl;
1044 fPos << i << "\t" << j << "\t" << k << "\t" << "\t"
1045 << aMucStripPlane->GetLocOrgInBes(1) <<"\t"
1046 << aMucStripPlane->GetLocOrgInBes(2) <<"\t"
1047 << aMucStripPlane->GetLocOrgInBes(3) <<"\t"
1048 << aMucStripPlane->GetObjOrgInBes(1) <<"\t"
1049 << aMucStripPlane->GetObjOrgInBes(2) <<"\t"
1050 << aMucStripPlane->GetObjOrgInBes(3) <<"\t"
1051 << aMucStripPlane->GetObjOrgInLoc(1) <<"\t"
1052 << aMucStripPlane->GetObjOrgInLoc(2) <<"\t"
1053 << aMucStripPlane->GetObjOrgInLoc(3) <<"\t"
1054 << endl;
1055 totalObject++;
1056 // delete aMucStripPlane;
1057 }
1058 } // layer
1059 } // segment
1060 } // barrel
1061 else
1062 {
1063 for( int j=0; j<E_SEG_NUM; j++ )
1064 {
1065 for( int k=0; k<E_LAY_NUM; k++ )
1066 {
1067 for( int n=-1; n<E_PANEL_NUM; n++ )
1068 {
1069 MucStripPlane *aMucStripPlane = new MucStripPlane( i, j, k, n );
1070 if( n == -1 )
1071 {
1072 fOrigin<< i << "\t" << j << "\t" << k << "\t"
1073 << aMucStripPlane->GetW() <<"\t"
1074 << aMucStripPlane->GetH() <<"\t"
1075 << aMucStripPlane->GetL() <<"\t"
1076 << aMucStripPlane->GetObjOrgInLoc(1) <<"\t"
1077 << aMucStripPlane->GetObjOrgInLoc(2) <<"\t"
1078 << aMucStripPlane->GetObjOrgInLoc(3) <<"\t"
1079 << endl;
1080
1081 fPos << i << "\t" << j << "\t" << k << "\t" << n << "\t"
1082 << aMucStripPlane->GetLocOrgInBes(1) <<"\t"
1083 << aMucStripPlane->GetLocOrgInBes(2) <<"\t"
1084 << aMucStripPlane->GetLocOrgInBes(3) <<"\t"
1085 << aMucStripPlane->GetObjOrgInBes(1) <<"\t"
1086 << aMucStripPlane->GetObjOrgInBes(2) <<"\t"
1087 << aMucStripPlane->GetObjOrgInBes(3) <<"\t"
1088 << aMucStripPlane->GetObjOrgInLoc(1) <<"\t"
1089 << aMucStripPlane->GetObjOrgInLoc(2) <<"\t"
1090 << aMucStripPlane->GetObjOrgInLoc(3) <<"\t"
1091 << endl;
1092 totalObject++;
1093 // delete aMucStripPlane;
1094 }
1095 else
1096 {
1097 fPanel<< i << "\t" << j << "\t" << k << "\t" << n << "\t"
1098 << aMucStripPlane->GetWu() <<"\t"
1099 << aMucStripPlane->GetWd() <<"\t"
1100 << aMucStripPlane->GetH() <<"\t"
1101 << aMucStripPlane->GetL() <<"\t"
1102 << aMucStripPlane->GetObjOrgInLoc(1) <<"\t"
1103 << aMucStripPlane->GetObjOrgInLoc(2) <<"\t"
1104 << aMucStripPlane->GetObjOrgInLoc(3) <<"\t"
1105 << endl;
1106
1107 fPos << i << "\t" << j << "\t" << k << "\t" << n << "\t"
1108 << aMucStripPlane->GetLocOrgInBes(1) <<"\t"
1109 << aMucStripPlane->GetLocOrgInBes(2) <<"\t"
1110 << aMucStripPlane->GetLocOrgInBes(3) <<"\t"
1111 << aMucStripPlane->GetObjOrgInBes(1) <<"\t"
1112 << aMucStripPlane->GetObjOrgInBes(2) <<"\t"
1113 << aMucStripPlane->GetObjOrgInBes(3) <<"\t"
1114 << aMucStripPlane->GetObjOrgInLoc(1) <<"\t"
1115 << aMucStripPlane->GetObjOrgInLoc(2) <<"\t"
1116 << aMucStripPlane->GetObjOrgInLoc(3) <<"\t"
1117 << endl;
1118 // delete aMucStripPlane;
1119 }
1120 }
1121 } // layer
1122 } // segment
1123 } // endcap
1124 } // for
1125
1126 fOrigin.close();
1127 fPanel.close();
1128 fPos.close();
1129
1130 //-----------------------------real geometry-------------------------
1131
1132 if( m_AlignFlag )
1133 {
1134 ofstream fOrgAlign("MucStripPlaneOriginAligned.dat", ios::out);
1135 fOrgAlign << "part\tsegment\tlayer\tW\tH\tL\tLoc_x\tLoc_y\tLoc_z" << endl;
1136 double offset[3];
1137 for( int i=0; i<PART_MAX; i++ )
1138 {
1139 if( i == BRID )
1140 {
1141 for( int j=0; j<B_SEG_NUM; j++ )
1142 {
1143 for( int k=0; k<B_LAY_NUM; k++ )
1144 {
1145 MucStripPlane *aMucStripPlane = new MucStripPlane( i, j, k, 0 );
1146 offset[0] =m_StripPlaneOffset[i][j][k][0];
1147 offset[1] =m_StripPlaneOffset[i][j][k][1];
1148 offset[2] =m_StripPlaneOffset[i][j][k][2];
1149 aMucStripPlane->SetAlignment( offset[0], offset[1], offset[2] );
1150
1151 fOrgAlign << i << "\t" << j << "\t" << k << "\t"
1152 << aMucStripPlane->GetW() <<"\t"
1153 << aMucStripPlane->GetH() <<"\t"
1154 << aMucStripPlane->GetL() <<"\t"
1155 << aMucStripPlane->GetObjOrgInLoc(1) <<"\t"
1156 << aMucStripPlane->GetObjOrgInLoc(2) <<"\t"
1157 << aMucStripPlane->GetObjOrgInLoc(3) <<"\t"
1158 << endl;
1159 // delete aMucStripPlane;
1160 } // layer
1161 } // segment
1162 } // barrel
1163 else
1164 {
1165 for( int j=0; j<E_SEG_NUM; j++ )
1166 {
1167 for( int k=0; k<E_LAY_NUM; k++ )
1168 {
1169 MucStripPlane *aMucStripPlane = new MucStripPlane( i, j, k, -1 );
1170 offset[0] =m_StripPlaneOffset[i][j][k][0];
1171 offset[1] =m_StripPlaneOffset[i][j][k][1];
1172 offset[2] =m_StripPlaneOffset[i][j][k][2];
1173 aMucStripPlane->SetAlignment( offset[0], offset[1], offset[2] );
1174
1175 fOrgAlign<< i << "\t" << j << "\t" << k << "\t"
1176 << aMucStripPlane->GetW() <<"\t"
1177 << aMucStripPlane->GetH() <<"\t"
1178 << aMucStripPlane->GetL() <<"\t"
1179 << aMucStripPlane->GetObjOrgInLoc(1) <<"\t"
1180 << aMucStripPlane->GetObjOrgInLoc(2) <<"\t"
1181 << aMucStripPlane->GetObjOrgInLoc(3) <<"\t"
1182 << endl;
1183 // delete aMucStripPlane;
1184 } // layer
1185 } // segment
1186 } // endcap
1187 } // for
1188
1189 fOrgAlign.close();
1190 } // if
1191
1192
1193 log << MSG::INFO << totalObject << "\tstrip_planes created." << endreq;
1194
1195 return StatusCode::SUCCESS;
1196
1197} // MucStripPlane
virtual void SetAlignment(double dx, double dy, double dz)

Referenced by CreateEntities().

◆ GetAbsorber()

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

Definition at line 1886 of file MucGeoMgr.cxx.

1887{
1888 if( m_MucAbsorber != NULL ) delete m_MucAbsorber;
1889
1890 return ( m_MucAbsorber = new MucAbsorber(part, segment, layer, id) );
1891}

◆ GetBakelite()

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

Definition at line 1935 of file MucGeoMgr.cxx.

1936{
1937 if( m_MucBakelite != NULL ) delete m_MucBakelite;
1938
1939 return ( m_MucBakelite = new MucBakelite(part, segment, layer, upDown, rpcId, id) );
1940}

◆ GetBox()

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

Definition at line 1900 of file MucGeoMgr.cxx.

1901{
1902 if( m_MucBox != NULL ) delete m_MucBox;
1903
1904 return ( m_MucBox = new MucBox(part, segment, layer, id) );
1905}

◆ GetBoxCover()

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

Definition at line 1942 of file MucGeoMgr.cxx.

1943{
1944 if( m_MucBoxCover != NULL ) delete m_MucBoxCover;
1945
1946 return ( m_MucBoxCover = new MucBoxCover(part, segment, layer, upDown, id) );
1947}

◆ GetGap()

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

Definition at line 1893 of file MucGeoMgr.cxx.

1894{
1895 if( m_MucGap != NULL ) delete m_MucGap;
1896
1897 return ( m_MucGap = new MucGap(part, segment, layer, id) );
1898}

◆ GetGas()

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

Definition at line 1928 of file MucGeoMgr.cxx.

1929{
1930 if( m_MucGas != NULL ) delete m_MucGas;
1931
1932 return ( m_MucGas = new MucGas(part, segment, layer, upDown, rpcId, id) );
1933}

◆ GetRpc()

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

Definition at line 1921 of file MucGeoMgr.cxx.

1922{
1923 if( m_MucRpc != NULL ) delete m_MucRpc;
1924
1925 return ( m_MucRpc = new MucRpc(part, segment, layer, upDown, id) );
1926}

◆ GetStrip()

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

Definition at line 1914 of file MucGeoMgr.cxx.

1915{
1916 if( m_MucStrip != NULL ) delete m_MucStrip;
1917
1918 return ( m_MucStrip = new MucStrip(part, segment, layer, id) );
1919}

◆ GetStripPlane()

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

Definition at line 1907 of file MucGeoMgr.cxx.

1908{
1909 if( m_MucStripPlane != NULL ) delete m_MucStripPlane;
1910
1911 return ( m_MucStripPlane = new MucStripPlane(part, segment, layer, id) );
1912}

◆ InitOffset()

StatusCode MucGeoMgr::InitOffset ( )
protected

Definition at line 56 of file MucGeoMgr.cxx.

57{
58 MsgStream log(msgSvc, "MucGeoMgr");
59
60 m_IdTr = new MucIdTransform();
61
62 if( m_AlignFlag == true )
63 {
64 log << MSG::INFO << "MucGeoMgr::initOffset()" << endreq;
65
66 TFile* froot = new TFile(m_AlignFile.c_str(), "read");
67 if( froot->IsZombie() )
68 {
69 log << MSG:: ERROR << "Open alignment data error!" << endreq;
70 return StatusCode::FAILURE;
71 }
72
73 const char OFFSET_NAME[3][5] = {"dx", "dy", "dz"};
74 double box_offset[3];
75 double strpln_offset[3];
76
77 TTree* tr_Offset;
78
79 tr_Offset = (TTree*)froot->Get("Offset");
80 tr_Offset->SetBranchAddress("box_dx", &box_offset[0]);
81 tr_Offset->SetBranchAddress("box_dy", &box_offset[1]);
82 tr_Offset->SetBranchAddress("box_dz", &box_offset[2]);
83 tr_Offset->SetBranchAddress("strpln_dx", &strpln_offset[0]);
84 tr_Offset->SetBranchAddress("strpln_dy", &strpln_offset[1]);
85 tr_Offset->SetBranchAddress("strpln_dz", &strpln_offset[2]);
86
87 int part, segment, layer;
88 part = segment = layer = 0;
89
90 log << MSG::INFO << "------------------------- offset data--------------------------" << endreq;
91 log << MSG::INFO << "Part\tSegment\tLayer\tdx0\tdy0\tdz0\tdx1\tdy1\tdz1" << endreq;
92 for( int i=0; i<BOX_MAX; i++)
93 {
94 m_IdTr->SetBoxPos(i, &part, &segment, &layer);
95 tr_Offset->GetEntry(i);
96
97 log << MSG::INFO << part << "\t" << segment << "\t" << layer << "\t";
98 for( int j=0; j<3; j++ )
99 {
100 log << MSG::INFO << box_offset[j] << "\t";
101
102 if( !CheckBoxOffset(part, segment, layer, j, box_offset[j]) )
103 {
104 log << MSG::INFO << endreq << "Box offset P" << part << "S" << segment << "L" << layer
105 << "_" << OFFSET_NAME[j] << "\tout range!" << endreq;
106 box_offset[j] = B_X_MAX[j];
107 }
108 }
109
110 for( int j=0; j<3; j++ )
111 {
112 log << MSG::INFO << strpln_offset[j] << "\t";
113
114 if( !CheckStripPlaneOffset(part, segment, layer, j, strpln_offset[j]) )
115 {
116 log << MSG::INFO << endreq << "Strip plane offset P" << part << "S" << segment << "L" << layer
117 << "_" << OFFSET_NAME[j] << "\tout range!" << endreq;
118 strpln_offset[j] = STR_OFFSET_MAX[j];
119 }
120 }
121
122 log << MSG::INFO << endreq;
123 } // end box
124
125 froot->Close();
126 log << MSG::INFO << "---------------------------------------------------------------" << endreq;
127 } // end alignflag
128 else
129 {
130 for(int i=0; i<PART_MAX; i++)
131 for(int j=0; j<B_SEG_NUM; j++)
132 for(int k=0; k<B_LAY_NUM; k++)
133 for(int m=0; m<3; m++)
134 {
135 m_BoxOffset[i][j][k][m] = 0.0;
136 m_StripPlaneOffset[i][j][k][m] = 0.0;
137 }
138 }
139
140 return StatusCode::SUCCESS;
141}
bool CheckStripPlaneOffset(int part, int segment, int layer, int axis, double offset)
Definition: MucGeoMgr.cxx:202
bool CheckBoxOffset(int part, int segment, int layer, int axis, double offset)
Definition: MucGeoMgr.cxx:143
bool SetBoxPos(int boxid, int *part, int *segment, int *layer)

Referenced by MucGeoMgr().

Member Data Documentation

◆ msgSvc


The documentation for this class was generated from the following files: