25 m_fdXt =
new TFolder(
"mfdxt",
"fdxt" );
28 m_haxis =
new TH2F(
"axis",
"", 50, 0, 300, 50, 0, 9 );
29 m_haxis->SetStats( 0 );
30 m_fdXt->Add( m_haxis );
33 for (
int lay = 0; lay <
NLAYER; lay++ )
35 for (
int iEntr = 0; iEntr <
NENTRXT; iEntr++ )
37 for (
int lr = 0; lr <
NLR; lr++ )
39 m_nhitIn[lay][iEntr][lr] = 0;
40 m_nhitEd[lay][iEntr][lr] = 0;
42 sprintf( hname,
"mgrXt%02d_%02d_lr%01d", lay, iEntr, lr );
43 m_grxt[lay][iEntr][lr] =
new TGraph();
44 m_grxt[lay][iEntr][lr]->SetName( hname );
45 m_grxt[lay][iEntr][lr]->SetMarkerStyle( 10 );
46 m_grxt[lay][iEntr][lr]->SetLineColor( 10 );
47 m_fdXt->Add( m_grxt[lay][iEntr][lr] );
58 TFolder* fd = (TFolder*)fhist->Get(
"fdXtGr" );
59 for (
int lay = 0; lay <
NLAYER; lay++ )
61 for (
int iEntr = 0; iEntr <
NENTRXT; iEntr++ )
63 for (
int lr = 0; lr <
NLR; lr++ )
65 if ( ( m_nhitIn[lay][iEntr][lr] > m_maxNhit ) &&
66 ( m_nhitEd[lay][iEntr][lr] > m_nMaxEd ) )
69 sprintf( hname,
"grXt%02d_%02d_lr%01d", lay, iEntr, lr );
70 TGraph*
gr = (TGraph*)fd->FindObjectAny( hname );
71 int nPoint =
gr->GetN();
72 for (
int i = 0; i < nPoint; i++ )
74 gr->GetPoint( i, tdr, doca );
75 if ( ( tdr < m_tEd[lay] ) && ( m_nhitIn[lay][iEntr][lr] <= m_maxNhit ) )
77 int np = m_grxt[lay][iEntr][lr]->GetN();
78 m_grxt[lay][iEntr][lr]->SetPoint( np, tdr, doca );
79 m_nhitIn[lay][iEntr][lr]++;
81 else if ( ( tdr >= m_tEd[lay] ) && ( m_nhitEd[lay][iEntr][lr] <= m_nMaxEd ) )
83 int np = m_grxt[lay][iEntr][lr]->GetN();
84 m_grxt[lay][iEntr][lr]->SetPoint( np, tdr, doca );
85 m_nhitEd[lay][iEntr][lr]++;
98 TF1* fxtDr =
new TF1(
"fxtDr",
xtFitFun, 0, 300, 6 );
99 TF1* fxtEd =
new TF1(
"fxtEd",
xtFitEdge, 150, 500, 1 );
100 if ( 1 ==
gfixXtC0 ) fxtDr->FixParameter( 0, 0 );
102 for (
int lay = 0; lay <
NLAYER; lay++ )
104 for (
int iEntr = 0; iEntr <
NENTRXT; iEntr++ )
106 for (
int lr = 0; lr <
NLR; lr++ )
108 m_fgFit[lay][iEntr][lr] =
false;
111 if ( m_nhitIn[lay][iEntr][lr] > 1000 )
115 m_grxt[lay][iEntr][lr]->Fit(
"fxtDr",
"Q+",
"", 0,
Tmax );
116 for ( ord = 0; ord < 6; ord++ )
117 { xtpar[lay][iEntr][lr][ord] = fxtDr->GetParameter( ord ); }
118 xtpar[lay][iEntr][lr][6] =
Tmax;
121 for ( ord = 0; ord < 6; ord++ )
122 Dmax += xtpar[lay][iEntr][lr][ord] * pow(
Tmax, ord );
124 if ( m_nhitEd[lay][iEntr][lr] > 300 )
126 m_grxt[lay][iEntr][lr]->Fit(
"fxtEd",
"Q+",
"",
Tmax,
Tmax + 300 );
127 xtpar[lay][iEntr][lr][7] = fxtEd->GetParameter( 0 );
128 if ( xtpar[lay][iEntr][lr][7] < 0.0 ) xtpar[lay][iEntr][lr][7] = 0.0;
130 else { xtpar[lay][iEntr][lr][7] = 0.0; }
132 m_fgFit[lay][iEntr][lr] =
true;
139 ofstream fxtlog(
"xtlog" );
140 for (
int lay = 0; lay <
NLAYER; lay++ )
142 for (
int iEntr = 0; iEntr <
NENTRXT; iEntr++ )
144 for (
int lr = 0; lr <
NLR; lr++ )
146 fxtlog << setw( 3 ) << lay << setw( 3 ) << iEntr << setw( 3 ) << lr;
149 if ( m_fgFit[lay][iEntr][lr] )
152 for ( ord = 0; ord < 8; ord++ )
153 calconst->
resetXtpar( lay, iEntr, lr, ord, xtpar[lay][iEntr][lr][ord] );
157 int iEntrNew = findXtEntr( lay, iEntr, lr );
158 if ( -1 != iEntrNew )
161 for ( ord = 0; ord < 8; ord++ )
162 { calconst->
resetXtpar( lay, iEntr, lr, ord, xtpar[lay][iEntrNew][lr][ord] ); }
165 fxtlog << setw( 3 ) << fgUpdate;
166 for ( ord = 0; ord < 8; ord++ )
168 double par = calconst->
getXtpar( lay, iEntr, lr, ord );
169 if ( 6 == ord ) fxtlog << setw( 9 ) << par;
170 else fxtlog << setw( 14 ) << par;
178 cout <<
"Xt update finished. File xtlog was written." << endl;
sprintf(cut, "kal_costheta0_em>-0.93&&kal_costheta0_em<0.93&&kal_pxy0_em>=0.05+%d*0.1&&kal_" "pxy0_em<0.15+%d*0.1&&NGch>=2", j, j)