201 {
202 MsgStream log(
msgSvc(), name() );
203 log << MSG::INFO << "DedxCalibTzero::WriteHists()" << endmsg;
204
215
216
217 double avegain( 550. );
218
220 {
221 t0[i] = tzero_bin_value[i];
222 fitentryNo[i] = m_tzero[i]->Integral();
223 if ( m_debug ) cout << "num of bin " << i << " with events " << fitentryNo[i] << endl;
224 if ( fitentryNo[i] <=
numcut )
continue;
225 if ( m_debug )
226 cout << "get results at " << i << " bin with fit entries " << fitentryNo[i] << endl;
227 if ( m_tzero[i]->GetFunction( "gaus" ) )
228 {
229 fitmean[i] = m_tzero[i]->GetFunction( "gaus" )->GetParameter( 1 );
230 fitmeanerr[i] = m_tzero[i]->GetFunction( "gaus" )->GetParError( 1 );
231 fitsigma[i] = m_tzero[i]->GetFunction( "gaus" )->GetParameter( 2 );
232 gain[i] = fitmean[i] / avegain;
233 fakegain[i] = 1.0;
234 fitchisq[i] = ( m_tzero[i]->GetFunction( "gaus" )->GetChisquare() ) /
235 ( m_tzero[i]->GetFunction( "gaus" )->GetNDF() );
236 }
237 pos_fitentryNo[i] = m_pos_tzero[i]->Integral();
238 if ( pos_fitentryNo[i] <=
numcut )
continue;
239 if ( m_debug )
240 cout << "get results at " << i << " bin with pos_fit entries " << pos_fitentryNo[i]
241 << endl;
242 if ( m_pos_tzero[i]->GetFunction( "gaus" ) )
243 {
244 pos_fitmean[i] = m_pos_tzero[i]->GetFunction( "gaus" )->GetParameter( 1 );
245 pos_fitmeanerr[i] = m_pos_tzero[i]->GetFunction( "gaus" )->GetParError( 1 );
246 pos_fitsigma[i] = m_pos_tzero[i]->GetFunction( "gaus" )->GetParameter( 2 );
247 pos_gain[i] = pos_fitmean[i] / avegain;
248 pos_fitchisq[i] = ( m_pos_tzero[i]->GetFunction( "gaus" )->GetChisquare() ) /
249 ( m_pos_tzero[i]->GetFunction( "gaus" )->GetNDF() );
250 }
251 neg_fitentryNo[i] = m_neg_tzero[i]->Integral();
252 if ( neg_fitentryNo[i] <=
numcut )
continue;
253 if ( m_debug )
254 cout << "get results at " << i << " bin with neg_fit entries " << neg_fitentryNo[i]
255 << endl;
256 if ( m_neg_tzero[i]->GetFunction( "gaus" ) )
257 {
258 neg_fitmean[i] = m_neg_tzero[i]->GetFunction( "gaus" )->GetParameter( 1 );
259 neg_fitmeanerr[i] = m_neg_tzero[i]->GetFunction( "gaus" )->GetParError( 1 );
260 neg_fitsigma[i] = m_neg_tzero[i]->GetFunction( "gaus" )->GetParameter( 2 );
261 neg_gain[i] = neg_fitmean[i] / avegain;
262 neg_fitchisq[i] = ( m_neg_tzero[i]->GetFunction( "gaus" )->GetChisquare() ) /
263 ( m_neg_tzero[i]->GetFunction( "gaus" )->GetNDF() );
264 }
265 }
266
267 log << MSG::INFO << "begin generating root file!!! " << endmsg;
268 TFile*
f =
new TFile(
m_rootfile.c_str(),
"RECREATE" );
270 {
271 m_chi[i]->Write();
272 m_pos_chi[i]->Write();
273 m_neg_chi[i]->Write();
274 m_tzero[i]->Write();
275 m_pos_tzero[i]->Write();
276 m_neg_tzero[i]->Write();
277 }
278 m_dEdxVsTzero->Write();
279 m_pos_dEdxVsTzero->Write();
280 m_neg_dEdxVsTzero->Write();
281
282 TTree* tzerocalib = new TTree( "gaincalib", "gaincalib" );
283 tzerocalib->Branch( "gain", &avegain, "gain/D" );
284 tzerocalib->Branch( "t0", t0, "t0[35]/D" );
285 tzerocalib->Branch( "dedx", gain, "dedx[35]/D" );
286 tzerocalib->Branch( "fakededx", fakegain, "fakededx[35]/D" );
287 tzerocalib->Branch( "fitmean", fitmean, "fitmean[35]/D" );
288 tzerocalib->Branch( "fitmeanerr", fitmeanerr, "fitmeanerr[35]/D" );
289 tzerocalib->Branch( "fitsigma", fitsigma, "fitsigma[35]/D" );
290 tzerocalib->Branch( "fitchisq", fitchisq, "fitchisq[35]/D" );
291 tzerocalib->Fill();
292 tzerocalib->Write();
293
294 TCanvas c1( "c1", "canvas", 500, 400 );
296 tzerocalib->Draw( "dedx:t0" );
298
300 m_dEdxVsTzero->Draw();
302 m_pos_dEdxVsTzero->Draw();
304 m_neg_dEdxVsTzero->Draw();
307 {
308 m_tzero[i]->Draw();
310 }
312 {
313 m_pos_tzero[i]->Draw();
315 }
317 {
318 m_neg_tzero[i]->Draw();
320 }
322 if ( m_debug ) cout << "before delete" << endl;
324 {
325 delete m_chi[i];
326 delete m_pos_chi[i];
327 delete m_neg_chi[i];
328 delete m_tzero[i];
329 delete m_pos_tzero[i];
330 delete m_neg_tzero[i];
331 }
332 delete m_dEdxVsTzero;
333 delete m_pos_dEdxVsTzero;
334 delete m_neg_dEdxVsTzero;
335}