130 TF1* ftminCosm[
NLAYER][2];
131 double t0FitCosm[
NLAYER][2];
133 bool fgT0Ini =
false;
135 ifstream fparIni(
"fitT0_inival.txt" );
136 if ( fparIni.is_open() )
139 for (
int lay = 0; lay <
NLAYER; lay++ )
141 fparIni >> strtmp >> strtmp;
142 for (
int i = 0; i < 6; i++ ) fparIni >> t0ParIni[lay][2][i];
146 cout <<
"read initial values of T0 fit from fitT0_inival.txt" << endl;
148 if ( !fgT0Ini ) cout <<
"set initial values of T0 fit to default values" << endl;
151 for (
int lay = 0; lay <
NLAYER; lay++ )
153 for (
int lr = 0; lr <
NLR; lr++ )
155 fitTminFg[lay][lr] = 0;
156 chindfTmin[lay][lr] = -1;
157 sprintf( funname,
"ftmin%02d_%d", lay, lr );
158 ftmin[lay][lr] =
new TF1( funname, funTmin, 0, 150, 6 );
159 if ( lr < 2 )
continue;
169 double c1Ini = ( m_hTrec[lay][lr]->GetMaximum() );
173 for (
int i = 0; i < 6; i++ )
175 if ( fabs( t0ParIni[lay][2][i] + 9999 ) < 0.01 )
continue;
176 ftmin[lay][lr]->SetParameter( i, t0ParIni[lay][2][i] );
181 ftmin[lay][lr]->SetParameter( 0, 0 );
182 ftmin[lay][lr]->SetParameter( 1, c1Ini );
183 ftmin[lay][lr]->SetParameter( 2, 0 );
184 ftmin[lay][lr]->SetParameter( 4, initT0 );
185 if ( lay < 4 ) ftmin[lay][lr]->SetParameter( 5, 4 );
186 else ftmin[lay][lr]->SetParameter( 5, 1.5 );
189 if ( lay < 4 ) m_hTrec[lay][lr]->Fit( funname,
"Q",
"", 0, 140 );
191 m_hTrec[lay][lr]->Fit( funname,
"Q",
"",
gTminFitRange[lay][0],
193 gStyle->SetOptFit( 11 );
194 chisq = ftmin[lay][lr]->GetChisquare();
195 ndf = ftmin[lay][lr]->GetNDF();
196 chindfTmin[lay][lr] = chisq / ndf;
208 fitTminFg[lay][lr] = 1;
209 t0Fit[lay][lr] = ftmin[lay][lr]->GetParameter( 4 );
212 for (
int i = 0; i < 6; i++ )
213 t0FitPar[lay][lr][i] = ftmin[lay][lr]->GetParameter( i );
217 if ( 0 == fitTminFg[lay][lr] )
219 int wir = m_pGeom->getWire( lay, 0 )->getWireId();
220 t0Cal[lay][lr] = calconst->
getT0( wir );
225 for (
int iud = 0; iud < 2; iud++ )
227 sprintf( funname,
"ftminCosm_%02d_%d", lay, iud );
228 ftminCosm[lay][iud] =
new TF1( funname, funTmin, 0, 150, 6 );
229 ftminCosm[lay][iud]->SetParameter( 0, 0 );
230 ftminCosm[lay][iud]->SetParameter( 4, initT0 );
231 ftminCosm[lay][iud]->SetParameter( 5, 1 );
232 m_hTrecCosm[lay][iud]->Fit( funname,
"Q",
"",
gTminFitRange[lay][0],
234 gStyle->SetOptFit( 11 );
236 t0FitCosm[lay][iud] = ftminCosm[lay][iud]->GetParameter( 4 );
242 for (
int lay = 0; lay <
NLAYER; lay++ )
244 for (
int lr = 0; lr <
NLR; lr++ )
246 fitTmaxFg[lay][lr] = 0;
247 chindfTmax[lay][lr] = -1;
248 sprintf( funname,
"ftmax%02d_%d", lay, lr );
249 ftmax[lay][lr] =
new TF1( funname, funTmax, 250, 500, 4 );
253 ftmax[lay][lr]->SetParameter( 2,
gInitTm[lay] );
254 ftmax[lay][lr]->SetParameter( 3, 10 );
255 m_hTrec[lay][lr]->Fit( funname,
"Q+",
"",
gTmaxFitRange[lay][0],
257 gStyle->SetOptFit( 11 );
258 chisq = ftmax[lay][lr]->GetChisquare();
259 ndf = ftmax[lay][lr]->GetNDF();
260 chindfTmax[lay][lr] = chisq / ndf;
263 fitTmaxFg[lay][lr] = 1;
264 tmax[lay][lr] = ftmax[lay][lr]->GetParameter( 2 );
268 if ( 0 == fitTmaxFg[lay][lr] )
269 { tmax[lay][lr] = ( calconst->
getXtpar( lay, 0, lr, 6 ) ) + t0Fit[lay][2]; }
274 ofstream ft0(
"preT0.dat" );
275 for (
int lay = 0; lay <
NLAYER; lay++ )
277 ft0 << setw( 5 ) << lay << setw( 3 ) << fitTminFg[lay][2] << setw( 15 ) << t0Cal[lay][2]
278 << setw( 15 ) << t0Fit[lay][2] << setw( 15 ) << chindfTmin[lay][2] << endl;
281 for (
int lay = 0; lay <
NLAYER; lay++ )
283 ft0 << setw( 5 ) << lay << setw( 3 ) << fitTmaxFg[lay][0] << setw( 10 ) << tmax[lay][0]
284 << setw( 10 ) << chindfTmax[lay][0] << setw( 3 ) << fitTmaxFg[lay][1] << setw( 10 )
285 << tmax[lay][1] << setw( 10 ) << chindfTmax[lay][1] << setw( 3 ) << fitTmaxFg[lay][2]
286 << setw( 10 ) << tmax[lay][2] << setw( 10 ) << chindfTmax[lay][2] << setw( 10 )
287 << tmax[lay][0] - t0Fit[lay][2] << setw( 10 ) << tmax[lay][1] - t0Fit[lay][2]
288 << setw( 10 ) << tmax[lay][2] - t0Fit[lay][2] << endl;
291 for (
int lay = 0; lay <
NLAYER; lay++ )
293 ft0 << setw( 5 ) << lay << setw( 15 ) << chindfTmin[lay][2];
294 for (
int i = 0; i < 6; i++ ) ft0 << setw( 15 ) << t0FitPar[lay][2][i];
298 cout <<
"preT0.dat was written." << endl;
301 ofstream ft0cosm(
"cosmicT0.dat" );
302 for (
int lay = 0; lay <
NLAYER; lay++ )
304 ft0cosm << setw( 5 ) << lay << setw( 15 ) << t0Fit[lay][2] << setw( 15 )
305 << t0FitCosm[lay][0] << setw( 15 ) << t0FitCosm[lay][1] << endl;
310 for (
int i = 0; i <
NWIRE; i++ )
312 int lay = m_pGeom->getWire( i )->getLayerId();
315 calconst->
resetT0( i, t0Cal[lay][2] );
324 for (
int lay = 0; lay <
NLAYER; lay++ )
328 for (
int iEntr = 0; iEntr <
NENTRXT; iEntr++ )
330 for (
int lr = 0; lr <
NLR; lr++ )
332 tm = tmax[lay][lr] - t0Fit[lay][2];
335 { calconst->
resetXtpar( lay, iEntr, lr, 6, tm ); }
342 for (
int lay = 0; lay <
NLAYER; lay++ )
344 for (
int lr = 0; lr <
NLR; lr++ )
346 delete ftmin[lay][lr];
347 delete ftmax[lay][lr];