14 CanvasName.push_back(
static_cast<string>(
"Offset" ) );
15 CanvasName.push_back(
static_cast<string>(
"Offset-PlusMinus" ) );
16 CanvasName.push_back(
static_cast<string>(
"Sigma" ) );
17 CanvasName.push_back(
static_cast<string>(
"Sigma-TCorrelation" ) );
28 cout <<
"tofcalgsec::calib_barrel_common: the number of Graphs is NOT reasonable!!!"
33 m_name = string(
"calib_barrel_common" );
36 const double tbegin = -1.5;
37 const double tend = 1.5;
41 for (
unsigned int j = 0; j <
nKind; j++ )
45 if ( j == 0 ) {
sprintf( hname,
"tleft-z%i", k ); }
46 else if ( j == 1 ) {
sprintf( hname,
"tright-z%i", k ); }
47 else if ( j == 2 ) {
sprintf( hname,
"tplus-z%i", k ); }
48 else if ( j == 3 ) {
sprintf( hname,
"tminus-z%i", k ); }
49 m_fitresult.push_back( HepVector(
nParCommon, 0 ) );
50 m_histograms.push_back(
new TH1F( hname, hname, tbin, tbegin, tend ) );
54 m_fitresult.push_back( HepVector(
nParCommon, 0 ) );
55 m_histograms.push_back(
new TH1F( hname, hname, tbin, tbegin, tend ) );
62 zpos[i] =
zbegin + ( i + 0.5 ) * zstep;
63 zposerr[i] = 0.5 * zstep;
75 std::cout << setiosflags( ios::left ) << setw( 10 ) << icounter << setw( 8 ) <<
data->size()
76 << setw( 30 ) <<
name() << std::endl;
78 if (
data->size() > 0 )
80 std::vector<Record*>::iterator
iter =
data->begin();
84 if ( icounter == (
NBarrel - 1 ) )
94void calib_barrel_common::fillRecord(
const Record* r ) {
95 double zhit = r->
zrhit();
96 if ( zhit < zbegin || zhit >
zend )
return;
97 int zbin =
static_cast<int>( ( zhit -
zbegin ) / zstep );
98 if ( ( zbin < 0 ) || ( zbin >
static_cast<int>(
nBinPerCounter - 1 ) ) )
100 cout <<
"tofcalgsec::calib_barrel_common: zhit is out of range, zhit=" << zhit
101 <<
" zbin=" << zbin << endl;
106 ( *(
iter + zbin ) )->Fill( r->
tleft() );
116void calib_barrel_common::fitHistogram() {
117 TF1* g =
new TF1(
"g",
"gaus" );
118 g->SetLineColor( 2 );
119 g->SetLineWidth( 1 );
121 std::vector<TH1F*>::iterator iter1 =
m_histograms.begin();
122 std::vector<HepVector>::iterator iter2 = m_fitresult.begin();
125 ( *iter1 )->Fit( g,
"Q" );
126 ( *iter2 )[0] = g->GetParameter( 1 );
127 ( *iter2 )[1] = g->GetParError( 1 );
128 ( *iter2 )[2] = g->GetParameter( 2 );
129 ( *iter2 )[3] = g->GetParError( 2 );
132 iter2 = m_fitresult.end() - 1;
133 X[2] = ( *iter2 )[0];
134 X[3] = ( *iter2 )[1];
139void calib_barrel_common::fillGraph() {
141 char gname1[256], gname2[256];
151 std::vector<double> toffset, toffseterr;
152 std::vector<double> tsigma, tsigmaerr;
158 unsigned int number = 0;
159 std::vector<HepVector>::iterator
iter = m_fitresult.begin();
160 for (
unsigned int j = 0; j <
nKind; j++ )
164 sprintf( gname1,
"tlefttright-offset" );
165 sprintf( gname2,
"tlefttright-sigma" );
169 sprintf( gname1,
"tcommon-offset" );
170 sprintf( gname2,
"tcommon-sigma" );
174 sprintf( gname1,
"tplusminus-offset" );
175 sprintf( gname2,
"tplusminus-sigma" );
179 sprintf( gname1,
"tcorrelation-offset" );
180 sprintf( gname2,
"tcorrelation-sigma" );
189 toffset[k] = ( *(
iter + number ) )[0];
190 toffseterr[k] = ( *(
iter + number ) )[1];
191 tsigma[k] = ( *(
iter + number ) )[2];
192 tsigmaerr[k] = ( *(
iter + number ) )[3];
193 gra[j]->SetBinContent( k + 1, toffset[k] );
194 gra[j]->SetBinError( k + 1, toffseterr[k] );
195 gra[j + 4]->SetBinContent( k + 1, tsigma[k] );
196 gra[j + 4]->SetBinError( k + 1, tsigmaerr[k] );
205 double sigMinus = ( *(
iter + number ) )[2];
207 double sigErrMinus = ( *(
iter + number ) )[3];
208 if ( sigPlus > sigMinus ) { tsigma[k] = sqrt( sigPlus * sigPlus - sigMinus * sigMinus ); }
209 else { tsigma[k] = 0.0 - sqrt( sigMinus * sigMinus - sigPlus * sigPlus ); }
210 tsigmaerr[k] = sqrt( sigErrPlus * sigErrPlus + sigErrMinus * sigErrMinus );
218 gra[j]->SetMarkerSize( 1.5 );
219 gra[j]->SetMarkerStyle( 20 );
220 gra[j]->SetMarkerColor( 2 );
223 gra[j]->SetMaximum( 0.22 );
224 gra[j]->SetMinimum( 0.07 );
228 gra[j]->SetMaximum( 0.20 );
229 gra[j]->SetMinimum( -0.02 );
234 gra[j]->SetMarkerSize( 1.5 );
235 gra[j]->SetMarkerStyle( 21 );
236 gra[j]->SetMarkerColor( 4 );
246void calib_barrel_common::fitGraph() {
247 TF1* p0 =
new TF1(
"p0",
"pol0" );
248 p0->SetLineColor( 1 );
249 p0->SetLineWidth( 1 );
252 ( *iter )->Fit(
"p0",
"Q" );
253 X[0] = p0->GetParameter( 0 );
254 X[1] = p0->GetParError( 0 );
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 NBarrel
const int nGraphTotalCommon
std::vector< HepVector > m_result
const std::string & name() const
std::vector< TH1F * > m_histograms
unsigned int nBinPerCounter
unsigned int nCanvasPerCounter
unsigned int nHistPerCounter
std::vector< unsigned int > nGraphPerCanvas
std::vector< string > CanvasName
std::vector< TH1F * > m_graphs
TofCalibFit(bool isbarrel, const int npar)
calib_barrel_common(const unsigned int nzbin)
void calculate(RecordSet *&data, unsigned int icounter)