73 TMinuit* gmxt =
new TMinuit( 6 );
74 gmxt->SetPrintLevel( -1 );
75 gmxt->SetFCN(
fcnXT );
76 gmxt->SetErrorDef( 1.0 );
77 gmxt->mnparm( 0,
"xtpar0", 0, 0.1, 0, 0, ierflg );
78 gmxt->mnparm( 1,
"xtpar1", 0, 0.1, 0, 0, ierflg );
79 gmxt->mnparm( 2,
"xtpar2", 0, 0.1, 0, 0, ierflg );
80 gmxt->mnparm( 3,
"xtpar3", 0, 0.1, 0, 0, ierflg );
81 gmxt->mnparm( 4,
"xtpar4", 0, 0.1, 0, 0, ierflg );
82 gmxt->mnparm( 5,
"xtpar5", 0, 0.1, 0, 0, ierflg );
84 gmxt->mnexcm(
"SET NOW", arglist, 0, ierflg );
86 TMinuit* gmxtEd =
new TMinuit( 1 );
87 gmxtEd->SetPrintLevel( -1 );
89 gmxtEd->SetErrorDef( 1.0 );
90 gmxtEd->mnparm( 0,
"xtpar0", 0, 0.1, 0, 0, ierflg );
92 gmxtEd->mnexcm(
"SET NOW", arglist, 0, ierflg );
105 ofstream fxtlog(
"xtlog" );
106 for (
int lay = 0; lay < 43; lay++ )
109 for (
int iEntr = 0; iEntr <
gNEntr[lay]; iEntr++ )
111 for (
int iLR = 0; iLR <
NLR; iLR++ )
113 fxtlog <<
"Layer " << setw( 3 ) << lay << setw( 3 ) << iEntr << setw( 3 ) << iLR
115 for (
int ord = 0; ord <
NXTPAR; ord++ )
117 if ( 0 == iEntr ) xtpar = calconst->
getXtpar( lay, 8, iLR, ord );
118 else if ( 1 == iEntr ) xtpar = calconst->
getXtpar( lay, 9, iLR, ord );
126 histEntry = (int)( m_hxt[lay][iEntr][iLR][
bin]->GetEntries() );
127 if ( histEntry > 100 )
129 deltx = m_hxt[lay][iEntr][iLR][
bin]->GetMean();
130 xerr = m_hxt[lay][iEntr][iLR][
bin]->GetRMS();
135 else tbcen = xtini[6];
136 xcor =
xtFun( tbcen, xtini ) - deltx;
141 XMEAS.push_back( xcor );
142 ERR.push_back( xerr );
148 ERRED.push_back( xerr );
150 fxtlog << setw( 3 ) <<
bin << setw( 15 ) << deltx << setw( 15 ) << xcor << setw( 15 )
151 << tbcen << setw( 15 ) << xerr << endl;
154 if (
XMEAS.size() < 12 )
167 for (
int ord = 0; ord <= 5; ord++ )
169 arglist[0] = ord + 1;
170 arglist[1] = xtini[ord];
171 gmxt->mnexcm(
"SET PARameter", arglist, 2, ierflg );
179 gmxt->mnexcm(
"SET PARameter", arglist, 2, ierflg );
180 gmxt->mnexcm(
"FIX", arglist, 1, ierflg );
185 gmxt->mnexcm(
"MIGRAD", arglist, 2, ierflg );
186 gmxt->mnstat( fmin, edm, errdef, nvpar, nparx, istat );
188 fxtlog <<
"Xtpar: " << endl;
189 if ( ( 0 == ierflg ) && ( istat >= 2 ) )
191 for (
int ord = 0; ord <= 5; ord++ )
193 gmxt->GetParameter( ord, xtpar, xterr );
199 for ( i = 0; i < 18; i++ ) calconst->
resetXtpar( lay, i, iLR, ord, xtpar );
201 else if ( 2 ==
gNEntr[lay] )
205 for ( i = 0; i < 9; i++ )
206 calconst->
resetXtpar( lay, i, iLR, ord, xtpar );
210 for ( i = 9; i < 18; i++ )
211 calconst->
resetXtpar( lay, i, iLR, ord, xtpar );
214 fxtlog << setw( 15 ) << xtpar << setw( 15 ) << xterr << endl;
219 for (
int ord = 0; ord <= 5; ord++ )
220 { fxtlog << setw( 15 ) << xtini[ord] << setw( 15 ) <<
"0" << endl; }
222 fxtlog << setw( 15 ) <<
Tmax << setw( 15 ) <<
"0" << endl;
228 gmxt->mnexcm(
"REL", arglist, 1, ierflg );
237 arglist[1] = xtini[7];
238 gmxtEd->mnexcm(
"SET PARameter", arglist, 2, ierflg );
242 gmxtEd->mnexcm(
"MIGRAD", arglist, 2, ierflg );
243 gmxtEd->mnstat( fmin, edm, errdef, nvpar, nparx, istat );
245 if ( ( 0 == ierflg ) && ( istat >= 2 ) )
247 gmxtEd->GetParameter( 0, xtpar, xterr );
248 if ( xtpar < 0.0 ) xtpar = 0.0;
253 for ( i = 0; i < 18; i++ ) calconst->
resetXtpar( lay, i, iLR, 7, xtpar );
255 else if ( 2 ==
gNEntr[lay] )
259 for ( i = 0; i < 9; i++ ) calconst->
resetXtpar( lay, i, iLR, 7, xtpar );
263 for ( i = 9; i < 18; i++ ) calconst->
resetXtpar( lay, i, iLR, 7, xtpar );
266 fxtlog << setw( 15 ) << xtpar << setw( 15 ) << xterr << endl;
268 else { fxtlog << setw( 15 ) << xtini[7] << setw( 15 ) <<
"0" << endl; }
270 else { fxtlog << setw( 15 ) << xtini[7] << setw( 15 ) <<
"0" << endl; }
271 fxtlog <<
"Tm " << setw( 15 ) <<
Tmax <<
" Dmax " << setw( 15 ) <<
Dmax << endl;