76 MsgStream log(
msgSvc(), name() );
77 log << MSG::INFO <<
"MdcCalibAlg initialze() ..." << endmsg;
78 log << MSG::INFO <<
"MdcCalFlg = " << m_mdcCalFlg << endmsg;
80 if (
"NULL" == m_histname )
82 log << MSG::ERROR <<
"not defined histogram file." << endmsg;
83 return StatusCode::FAILURE;
85 if (
"NULL" == m_configFile )
87 log << MSG::ERROR <<
"not defined MdcCalibConfig file." << endmsg;
88 return StatusCode::FAILURE;
91 StatusCode sc = service(
"MdcGeomSvc", m_mdcGeomSvc );
92 if ( sc != StatusCode::SUCCESS ) { log << MSG::ERROR <<
"can not use MdcGeomSvc" << endmsg; }
94 sc = service(
"MdcCalibFunSvc", m_mdcFunSvc );
95 if ( sc != StatusCode::SUCCESS )
96 { log << MSG::FATAL <<
"can not use MdcCalibFunSvc" << endmsg; }
98 sc = service(
"MdcUtilitySvc", m_mdcUtilitySvc );
99 if ( sc.isFailure() ) { log << MSG::FATAL <<
"Could not load MdcUtilitySvc!" << endmsg; }
101 string estver = getenv(
"ESTIMEALGROOT" );
102 cout <<
"EsTimeAlg_ver: " << estver << endl;
110 std::string strconfig;
111 std::string strcomment;
115 for ( i = 0; i < 50; i++ ) fgTes[i] = -999;
116 ifstream fconfig( m_configFile.c_str() );
117 if ( !fconfig.is_open() )
119 log << MSG::ERROR <<
"can not open config file " << m_configFile
120 <<
". Use defalt config parameters" << endmsg;
121 return StatusCode::FAILURE;
125 log << MSG::INFO <<
"Open config file " << m_configFile << endmsg;
126 while ( fconfig >> strconfig )
128 if (
'#' == strconfig[0] ) { getline( fconfig, strcomment ); }
129 else if (
"FillNtuple" == strconfig ) { fconfig >> m_param.fillNtuple; }
130 else if (
"nEvtNtuple" == strconfig ) { fconfig >> m_param.nEvtNtuple; }
131 else if (
"FlagCalDetEffi" == strconfig ) { fconfig >> m_param.fgCalDetEffi; }
132 else if (
"BoostPar" == strconfig )
133 { fconfig >> m_param.boostPar[0] >> m_param.boostPar[1] >> m_param.boostPar[2]; }
134 else if (
"EsTimeCut" == strconfig ) { fconfig >> m_param.esCut; }
135 else if (
"EsTimeFlag" == strconfig )
137 getline( fconfig, strTes );
138 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,
139 fgTes + 1, fgTes + 2, fgTes + 3, fgTes + 4, fgTes + 5, fgTes + 6,
140 fgTes + 7, fgTes + 8, fgTes + 9, fgTes + 10, fgTes + 11, fgTes + 12,
141 fgTes + 13, fgTes + 14, fgTes + 15, fgTes + 16, fgTes + 17, fgTes + 18,
143 for ( i = 0; i <
n; i++ ) m_param.esFlag[i] = fgTes[i];
146 else if (
"TimeShift" == strconfig ) { fconfig >> m_param.timeShift; }
147 else if (
"TesMin" == strconfig ) { fconfig >> m_param.tesMin; }
148 else if (
"TesMax" == strconfig ) { fconfig >> m_param.tesMax; }
149 else if (
"FlagIniCalConst" == strconfig ) { fconfig >> m_param.fgIniCalConst; }
150 else if (
"FlagUpdateTmInPreT0" == strconfig ) { fconfig >> m_param.preT0SetTm; }
151 else if (
"InitT0" == strconfig ) { fconfig >> m_param.initT0; }
152 else if (
"T0Shift" == strconfig ) { fconfig >> m_param.t0Shift; }
153 else if (
"TminFitChindf" == strconfig ) { fconfig >> m_param.tminFitChindf; }
154 else if (
"TmaxFitChindf" == strconfig ) { fconfig >> m_param.tmaxFitChindf; }
155 else if (
"InitSigma" == strconfig ) { fconfig >> m_param.initSigma; }
156 else if (
"UpdateSigma" == strconfig ) { fconfig >> m_param.calSigma; }
157 else if (
"ResidualType" == strconfig ) { fconfig >> m_param.resiType; }
158 else if (
"FixXtC0" == strconfig ) { fconfig >> m_param.fixXtC0; }
159 else if (
"FixXtEdge" == strconfig ) { fconfig >> m_param.fixXtEdge; }
160 else if (
"FlagAdjacLayerCut" == strconfig ) { fconfig >> m_param.fgAdjacLayerCut; }
161 else if (
"FlagBoundLayerCut" == strconfig ) { fconfig >> m_param.fgBoundLayerCut; }
162 else if (
"hitStatCut" == strconfig ) { fconfig >> m_param.hitStatCut; }
163 else if (
"nTrkCut" == strconfig )
164 { fconfig >> m_param.nTrkCut[0] >> m_param.nTrkCut[1]; }
165 else if (
"nHitLayCut" == strconfig ) { fconfig >> m_param.nHitLayCut; }
166 else if (
"nHitCut" == strconfig ) { fconfig >> m_param.nHitCut; }
167 else if (
"noiseCut" == strconfig ) { fconfig >> m_param.noiseCut; }
168 else if (
"cosmicDwTrk" == strconfig ) { fconfig >> m_param.cosmicDwTrk; }
169 else if (
"cosThetaCut" == strconfig )
170 { fconfig >> m_param.costheCut[0] >> m_param.costheCut[1]; }
171 else if (
"pCut" == strconfig ) { fconfig >> m_param.pCut[0] >> m_param.pCut[1]; }
172 else if (
"DrCut" == strconfig ) { fconfig >> m_param.drCut; }
173 else if (
"DzCut" == strconfig ) { fconfig >> m_param.dzCut; }
174 else if (
"MaximalDocaInner" == strconfig ) { fconfig >> m_param.maxDocaInner; }
175 else if (
"MaximalDocaOuter" == strconfig ) { fconfig >> m_param.maxDocaOuter; }
176 else if (
"charge" == strconfig ) { fconfig >> m_param.charge; }
177 else if (
"RawTimeFitRange" == strconfig )
181 fconfig >> strtmp >> m_param.fgCalib[lay] >> m_param.tminFitRange[lay][0] >>
182 m_param.tminFitRange[lay][1] >> m_param.tmaxFitRange[lay][0] >>
183 m_param.tmaxFitRange[lay][1] >> m_param.initTm[lay] >> m_param.resiCut[lay] >>
184 m_param.qmin[lay] >> m_param.qmax[lay];
191 m_param.wpcFile = m_wpcFile;
194 m_param.particle = m_evtType;
199 m_param.fgCombinePlusMinue = m_combPM;
201 cout <<
"EsFlag for Mdc Calibration: ";
202 for (
int iEs = 0; iEs < m_param.nEsFlag; iEs++ ) cout << setw( 6 ) << m_param.esFlag[iEs];
205 ifstream fwirecal( m_fileWireNoCal.c_str() );
206 if ( fwirecal.is_open() )
208 cout <<
"open single wire calibration file: " << m_fileWireNoCal << endl;
210 getline( fwirecal, strtmp );
211 cout << strtmp << endl;
212 while ( fwirecal >> wid )
214 m_param.fgWireCal[wid] = 0;
215 cout <<
"Wire " << wid << endl;
220 m_hlist =
new TObjArray( 0 );
225 m_mdcevt->setParam( m_param );
226 m_mdcevt->setGeomSvc( m_mdcGeomSvc );
227 m_mdcevt->setUtilSvc( m_mdcUtilitySvc );
229 if ( 0 == m_mdcCalFlg ) { m_mdccalib =
new IniMdcCalib(); }
230 else if ( 1 == m_mdcCalFlg ) { m_mdccalib =
new PreXtMdcCalib(); }
231 else if ( 2 == m_mdcCalFlg ) { m_mdccalib =
new PreT0MdcCalib(); }
232 else if ( 3 == m_mdcCalFlg ) { m_mdccalib =
new XtMdcCalib(); }
233 else if ( 4 == m_mdcCalFlg ) { m_mdccalib =
new GrXtMdcCalib(); }
234 else if ( 9 == m_mdcCalFlg ) { m_mdccalib =
new XtInteMdcCalib(); }
235 else if ( 5 == m_mdcCalFlg ) { m_mdccalib =
new T0MdcCalib(); }
236 else if ( 6 == m_mdcCalFlg ) { m_mdccalib =
new WrMdcCalib(); }
237 else if ( 7 == m_mdcCalFlg ) { m_mdccalib =
new Wr2dMdcCalib(); }
238 else if ( 8 == m_mdcCalFlg ) { m_mdccalib =
new QtMdcCalib(); }
240 m_constmgr->init( m_mdcGeomSvc, m_mdcFunSvc );
242 m_mdccalib->setParam( m_param );
243 m_mdccalib->initialize( m_hlist, m_mdcGeomSvc, m_mdcFunSvc, m_mdcUtilitySvc );
247 return StatusCode::SUCCESS;