44 MsgStream log(
msgSvc(), name() );
45 log << MSG::INFO <<
"MdcAlignAlg initialze() ..." << endmsg;
46 log << MSG::INFO <<
"MdcAlignFlg = " << m_alignMeth << endmsg;
48 StatusCode sc = service(
"MdcGeomSvc", m_mdcGeomSvc );
49 if ( sc != StatusCode::SUCCESS ) { log << MSG::ERROR <<
"can not use MdcGeomSvc" << endmsg; }
51 sc = service(
"MdcCalibFunSvc", m_mdcFunSvc );
52 if ( sc != StatusCode::SUCCESS )
53 { log << MSG::FATAL <<
"can not use MdcCalibFunSvc" << endmsg; }
55 sc = service(
"MdcUtilitySvc", m_mdcUtilitySvc );
56 if ( sc != StatusCode::SUCCESS )
57 { log << MSG::FATAL <<
"can not use MdcUtilitySvc" << endmsg; }
64 std::string strconfig;
65 std::string strcomment;
68 for ( i = 0; i < 50; i++ ) fgTes[i] = -999;
69 ifstream fconfig( m_configFile.c_str() );
70 if ( !fconfig.is_open() )
72 log << MSG::WARNING <<
"can not open config file " << m_configFile
73 <<
". Use defalt config parameters" << endmsg;
77 log << MSG::INFO <<
"Open config file " << m_configFile << endmsg;
78 while ( fconfig >> strconfig )
80 if (
'#' == strconfig[0] ) { getline( fconfig, strcomment ); }
81 else if (
"EsTimeFlag" == strconfig )
83 getline( fconfig, strTes );
84 int n = sscanf( strTes.c_str(),
"%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d", fgTes + 0,
85 fgTes + 1, fgTes + 2, fgTes + 3, fgTes + 4, fgTes + 5, fgTes + 6,
86 fgTes + 7, fgTes + 8, fgTes + 9, fgTes + 10, fgTes + 11, fgTes + 12,
87 fgTes + 13, fgTes + 14, fgTes + 15, fgTes + 16, fgTes + 17, fgTes + 18,
89 for ( i = 0; i <
n; i++ ) m_param.esFlag[i] = fgTes[i];
92 else if (
"TesMin" == strconfig ) { fconfig >> m_param.tesMin; }
93 else if (
"TesMax" == strconfig ) { fconfig >> m_param.tesMax; }
94 else if (
"ResidualType" == strconfig ) { fconfig >> m_param.resiType; }
95 else if (
"FlagAdjacLayerCut" == strconfig ) { fconfig >> m_param.fgAdjacLayerCut; }
96 else if (
"FlagBoundLayerCut" == strconfig ) { fconfig >> m_param.fgBoundLayerCut; }
97 else if (
"hitStatCut" == strconfig ) { fconfig >> m_param.hitStatCut; }
98 else if (
"nTrkCut" == strconfig )
99 { fconfig >> m_param.nTrkCut[0] >> m_param.nTrkCut[1]; }
100 else if (
"nHitLayCut" == strconfig ) { fconfig >> m_param.nHitLayCut; }
101 else if (
"nHitCut" == strconfig ) { fconfig >> m_param.nHitCut; }
102 else if (
"ptCut" == strconfig ) { fconfig >> m_param.ptCut[0] >> m_param.ptCut[1]; }
103 else if (
"cosThetaCut" == strconfig )
104 { fconfig >> m_param.costheCut[0] >> m_param.costheCut[1]; }
105 else if (
"DrCut" == strconfig ) { fconfig >> m_param.drCut; }
106 else if (
"DzCut" == strconfig ) { fconfig >> m_param.dzCut; }
107 else if (
"MaximalDocaInner" == strconfig ) { fconfig >> m_param.maxDocaInner; }
108 else if (
"MaximalDocaOuter" == strconfig ) { fconfig >> m_param.maxDocaOuter; }
109 else if (
"MaximalResidual" == strconfig ) { fconfig >> m_param.maxResi; }
115 m_param.particle = m_evtType;
117 cout <<
"EsFlag for Mdc Alignment: ";
118 for (
int iEs = 0; iEs < m_param.nEsFlag; iEs++ ) cout << setw( 6 ) << m_param.esFlag[iEs];
125 m_alignPar->rdAlignPar( m_alignFile );
128 m_mdcevt->setParam( m_param );
130 m_hlist =
new TObjArray();
132 if ( 0 == m_alignMeth ) { m_pAlign =
new ResiAlign(); }
133 else if ( 1 == m_alignMeth )
136 m_pAlign->fixMomLab = m_fixMomLab;
138 m_pAlign->setParam( m_param );
139 m_pAlign->initialize( m_hlist, m_mdcGeomSvc, m_mdcFunSvc, m_mdcUtilitySvc );
141 return StatusCode::SUCCESS;