24 { numGraphs = numGraphs + ( *iter ); }
27 cout <<
"tofcalgsec::calib_endcap_sigma: the number of Graphs is NOT reasonable!!!"
32 m_name = string(
"calib_endcap_sigma" );
35 const double tbegin = -1.5;
36 const double tend = 1.5;
40 for (
unsigned int i = 0; i <
NEndcap; i++ )
43 for (
unsigned int j = 0; j <
nKind; j++ )
47 sprintf( hname,
"tleft-tofid%i-r%i", i, k );
48 m_histograms.push_back(
new TH1F( hname, hname, tbin, tbegin, tend ) );
50 m_fitresult.push_back( HepVector(
nParEcSigma, 0 ) );
60 rpos[i] =
rtofbegin + ( i + 0.5 ) * rstep;
61 rposerr[i] = 0.5 * rstep;
73 std::cout << setiosflags( ios::left ) << setw( 10 ) << icounter << setw( 8 ) <<
data->size()
74 << setw( 30 ) <<
name() << std::endl;
76 if (
data->size() > 0 )
78 std::vector<Record*>::iterator
iter =
data->begin();
81 fitHistogram( icounter );
82 fillGraph( icounter );
88void calib_endcap_sigma::fillRecord(
const Record* r,
unsigned int icounter ) {
90 double rhit = r->
zrhit();
91 if ( rhit < rtofbegin || rhit >
rtofend )
return;
92 int rbin =
static_cast<int>( ( rhit -
rtofbegin ) / rstep );
93 if ( rbin < 0 ) { rbin = 0; }
96 cout <<
"tofcalgsec::calib_endcap_sigma:fillRecord: rhit is out of range, rhit=" << rhit
97 <<
" rbin=" << rbin << endl;
101 std::vector<TH1F*>::iterator
iter =
103 ( *iter )->Fill( r->
tleft() );
108void calib_endcap_sigma::fitHistogram(
unsigned int icounter ) {
109 TF1* g =
new TF1(
"g",
"gaus" );
110 g->SetLineColor( 2 );
111 g->SetLineWidth( 1 );
113 std::vector<TH1F*>::iterator iter1 =
115 std::vector<HepVector>::iterator iter2 =
117 for (
unsigned int j = 0; j <
nBinPerCounter; j++, iter1++, iter2++ )
119 ( *iter1 )->Fit( g,
"Q" );
120 ( *iter2 )[0] = g->GetParameter( 1 );
121 ( *iter2 )[1] = g->GetParError( 1 );
122 ( *iter2 )[2] = g->GetParameter( 2 );
123 ( *iter2 )[3] = g->GetParError( 2 );
129void calib_endcap_sigma::fillGraph(
unsigned int icounter ) {
131 char gname1[256], gname2[256];
137 std::vector<double> toffset, toffseterr;
138 std::vector<double> tsigma, tsigmaerr;
144 std::vector<HepVector>::iterator
iter =
148 toffset[k] = ( *(
iter + k ) )[0];
149 toffseterr[k] = ( *(
iter + k ) )[1];
150 tsigma[k] = ( *(
iter + k ) )[2];
151 tsigmaerr[k] = ( *(
iter + k ) )[3];
154 sprintf( gname1,
"endcap-offset-tofid-%i", icounter );
156 std::vector<TH1F*>::iterator itgraph =
m_graphs.end() - 1;
157 ( *itgraph )->SetMarkerSize( 1.5 );
158 ( *itgraph )->SetMarkerStyle( 20 );
159 ( *itgraph )->SetMarkerColor( 2 );
162 ( *itgraph )->SetBinContent( k + 1, toffset[k] );
163 ( *itgraph )->SetBinError( k + 1, toffseterr[k] );
166 sprintf( gname2,
"endcap-sigma-tofid-%i", icounter );
169 ( *itgraph )->SetMarkerSize( 1.5 );
170 ( *itgraph )->SetMarkerStyle( 21 );
171 ( *itgraph )->SetMarkerColor( 4 );
174 ( *itgraph )->SetBinContent( k + 1, tsigma[k] );
175 ( *itgraph )->SetBinError( k + 1, tsigmaerr[k] );
181void calib_endcap_sigma::fitGraph(
unsigned int icounter ) {
188 ( *itgraph )->Fit(
"p2",
"Q" );
190 X[0] =
p2->GetParameter( 0 );
191 X[1] =
p2->GetParameter( 1 );
192 X[2] =
p2->GetParameter( 2 );
194 std::vector<HepVector>::iterator
iter =
m_result.begin() + icounter;
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)
std::vector< Record * > RecordSet
const unsigned int NEndcap
std::vector< HepVector > m_result
const std::string & name() const
std::vector< TH1F * > m_histograms
unsigned int nBinPerCounter
std::vector< unsigned int > nGraphPerCanvasPerCounter
unsigned int nCanvasPerCounter
unsigned int nHistPerCounter
std::vector< TH1F * > m_graphs
TofCalibFit(bool isbarrel, const int npar)
std::vector< string > CanvasPerCounterName
calib_endcap_sigma(const unsigned int nrbin)
void calculate(RecordSet *&data, unsigned int icounter)