192 {
193 MsgStream log(
msgSvc(), name() );
194 log << MSG::INFO << "DedxCalibCostheta::WriteHists()" << endmsg;
195
215
217 {
219
220 chientryNo[i] = m_chi[i]->GetEntries();
221 if ( m_debug )
222 cout << "get results at " << i << " bin with chi entries " << chientryNo[i] << endl;
223 if ( m_chi[i]->GetFunction( "gaus" ) )
224 {
225 chimean[i] = m_chi[i]->GetFunction( "gaus" )->GetParameter( 1 );
226 chimeanerr[i] = m_chi[i]->GetFunction( "gaus" )->GetParError( 1 );
227 chisigma[i] = m_chi[i]->GetFunction( "gaus" )->GetParameter( 2 );
228 chisq[i] = ( m_chi[i]->GetFunction( "gaus" )->GetChisquare() ) /
229 ( m_chi[i]->GetFunction( "gaus" )->GetNDF() );
230 }
231 pos_chientryNo[i] = m_pos_chi[i]->GetEntries();
232 if ( m_debug )
233 cout << "get results at " << i << " bin with pos_chi entries " << pos_chientryNo[i]
234 << endl;
235 if ( m_pos_chi[i]->GetFunction( "gaus" ) )
236 {
237 pos_chimean[i] = m_pos_chi[i]->GetFunction( "gaus" )->GetParameter( 1 );
238 pos_chimeanerr[i] = m_pos_chi[i]->GetFunction( "gaus" )->GetParError( 1 );
239 pos_chisigma[i] = m_pos_chi[i]->GetFunction( "gaus" )->GetParameter( 2 );
240 pos_chisq[i] = ( m_pos_chi[i]->GetFunction( "gaus" )->GetChisquare() ) /
241 ( m_pos_chi[i]->GetFunction( "gaus" )->GetNDF() );
242 }
243 neg_chientryNo[i] = m_neg_chi[i]->GetEntries();
244 if ( m_debug )
245 cout << "get results at " << i << " bin with neg_chi entries " << neg_chientryNo[i]
246 << endl;
247 if ( m_neg_chi[i]->GetFunction( "gaus" ) )
248 {
249 neg_chimean[i] = m_neg_chi[i]->GetFunction( "gaus" )->GetParameter( 1 );
250 neg_chimeanerr[i] = m_neg_chi[i]->GetFunction( "gaus" )->GetParError( 1 );
251 neg_chisigma[i] = m_neg_chi[i]->GetFunction( "gaus" )->GetParameter( 2 );
252 neg_chisq[i] = ( m_neg_chi[i]->GetFunction( "gaus" )->GetChisquare() ) /
253 ( m_neg_chi[i]->GetFunction( "gaus" )->GetNDF() );
254 }
255
256 fitentryNo[i] = m_costheta[i]->GetEntries();
257 if ( m_debug )
258 cout << "get results at " << i << " bin with fit entries " << fitentryNo[i] << endl;
259 if ( m_costheta[i]->GetFunction( "gaus" ) )
260 {
261 fitmean[i] = m_costheta[i]->GetFunction( "gaus" )->GetParameter( 1 );
262 fitmeanerr[i] = m_costheta[i]->GetFunction( "gaus" )->GetParError( 1 );
263 fitsigma[i] = m_costheta[i]->GetFunction( "gaus" )->GetParameter( 2 );
265 fitchisq[i] = ( m_costheta[i]->GetFunction( "gaus" )->GetChisquare() ) /
266 ( m_costheta[i]->GetFunction( "gaus" )->GetNDF() );
267 }
268 pos_fitentryNo[i] = m_pos_costheta[i]->GetEntries();
269 if ( m_debug )
270 cout << "get results at " << i << " bin with pos_fit entries " << pos_fitentryNo[i]
271 << endl;
272 if ( m_pos_costheta[i]->GetFunction( "gaus" ) )
273 {
274 pos_fitmean[i] = m_pos_costheta[i]->GetFunction( "gaus" )->GetParameter( 1 );
275 pos_fitmeanerr[i] = m_pos_costheta[i]->GetFunction( "gaus" )->GetParError( 1 );
276 pos_fitsigma[i] = m_pos_costheta[i]->GetFunction( "gaus" )->GetParameter( 2 );
278 pos_fitchisq[i] = ( m_pos_costheta[i]->GetFunction( "gaus" )->GetChisquare() ) /
279 ( m_pos_costheta[i]->GetFunction( "gaus" )->GetNDF() );
280 }
281 neg_fitentryNo[i] = m_neg_costheta[i]->GetEntries();
282 if ( m_debug )
283 cout << "get results at " << i << " bin with neg_fit entries " << neg_fitentryNo[i]
284 << endl;
285 if ( m_neg_costheta[i]->GetFunction( "gaus" ) )
286 {
287 neg_fitmean[i] = m_neg_costheta[i]->GetFunction( "gaus" )->GetParameter( 1 );
288 neg_fitmeanerr[i] = m_neg_costheta[i]->GetFunction( "gaus" )->GetParError( 1 );
289 neg_fitsigma[i] = m_neg_costheta[i]->GetFunction( "gaus" )->GetParameter( 2 );
291 neg_fitchisq[i] = ( m_neg_costheta[i]->GetFunction( "gaus" )->GetChisquare() ) /
292 ( m_neg_costheta[i]->GetFunction( "gaus" )->GetNDF() );
293 }
294
295 if ( m_ave )
296 {
297 fitmean[i] = ( pos_fitmean[i] + neg_fitmean[i] ) / 2;
298 fitmeanerr[i] = sqrt( pow( pos_fitmeanerr[i], 2 ) + pow( neg_fitmeanerr[i], 2 ) );
299 fitsigma[i] = sqrt( pow( pos_fitsigma[i], 2 ) + pow( neg_fitsigma[i], 2 ) );
301 fitchisq[i] = ( pos_fitchisq[i] + neg_fitchisq[i] ) / 2;
302 }
303
304 if ( fitentryNo[i] > 100 ) m_dEdxVsCostheta->SetBinContent( i + 1, fitmean[i] );
305 if ( pos_fitentryNo[i] > 100 )
306 m_pos_dEdxVsCostheta->SetBinContent( i + 1, pos_fitmean[i] );
307 if ( neg_fitentryNo[i] > 100 )
308 m_neg_dEdxVsCostheta->SetBinContent( i + 1, neg_fitmean[i] );
309 }
310
311 double dedx1[
Size] = { 0 };
312 double costheta1[
Size] = { 0 };
313 cout << "Vec_dedx.size() = " << Vec_dedx.size() << endl;
314 for (
unsigned int i = 0; i <
Size && i < Vec_dedx.size(); i++ )
315 {
316 dedx1[i] = Vec_dedx[i];
317 costheta1[i] = Vec_costheta[i];
318
319 }
320
321 log << MSG::INFO << "begin generating root file!!! " << endmsg;
322 TFile*
f =
new TFile(
m_rootfile.c_str(),
"RECREATE" );
324 {
325 m_chi[i]->Write();
326 m_pos_chi[i]->Write();
327 m_neg_chi[i]->Write();
328 m_costheta[i]->Write();
329 m_pos_costheta[i]->Write();
330 m_neg_costheta[i]->Write();
331 }
332 m_dEdxVsCostheta->Write();
333 m_pos_dEdxVsCostheta->Write();
334 m_neg_dEdxVsCostheta->Write();
335
336 TTree* costhetacalib = new TTree( "costhetacalib", "costhetacalib" );
337 costhetacalib->Branch( "chientryNo", chientryNo, "chientryNo[80]/D" );
338 costhetacalib->Branch( "chimean", chimean, "chimean[80]/D" );
339 costhetacalib->Branch( "chimeanerr", chimeanerr, "chimeanerr[80]/D" );
340 costhetacalib->Branch( "chisigma", chisigma, "chisigma[80]/D" );
341 costhetacalib->Branch( "chisq", chisq, "chisq[80]/D" );
342 costhetacalib->Branch( "pos_chientryNo", pos_chientryNo, "pos_chientryNo[80]/D" );
343 costhetacalib->Branch( "pos_chimean", pos_chimean, "pos_chimean[80]/D" );
344 costhetacalib->Branch( "pos_chimeanerr", pos_chimeanerr, "pos_chimeanerr[80]/D" );
345 costhetacalib->Branch( "pos_chisigma", pos_chisigma, "pos_chisigma[80]/D" );
346 costhetacalib->Branch( "pos_chisq", pos_chisq, "pos_chisq[80]/D" );
347 costhetacalib->Branch( "neg_chientryNo", neg_chientryNo, "neg_chientryNo[80]/D" );
348 costhetacalib->Branch( "neg_chimean", neg_chimean, "neg_chimean[80]/D" );
349 costhetacalib->Branch( "neg_chimeanerr", neg_chimeanerr, "neg_chimeanerr[80]/D" );
350 costhetacalib->Branch( "neg_chisigma", neg_chisigma, "neg_chisigma[80]/D" );
351 costhetacalib->Branch( "neg_chisq", neg_chisq, "neg_chisq[80]/D" );
352 costhetacalib->Branch( "fitentryNo", fitentryNo, "fitentryNo[80]/D" );
353 costhetacalib->Branch( "fitmean", fitmean, "fitmean[80]/D" );
354 costhetacalib->Branch( "fitmeanerr", fitmeanerr, "fitmeanerr[80]/D" );
355 costhetacalib->Branch( "fitsigma", fitsigma, "fitsigma[80]/D" );
356 costhetacalib->Branch( "costheta", gain, "gain[80]/D" );
357 costhetacalib->Branch( "fitchisq", fitchisq, "fitchisq[80]/D" );
358 costhetacalib->Branch( "pos_fitentryNo", pos_fitentryNo, "pos_fitentryNo[80]/D" );
359 costhetacalib->Branch( "pos_fitmean", pos_fitmean, "pos_fitmean[80]/D" );
360 costhetacalib->Branch( "pos_fitmeanerr", pos_fitmeanerr, "pos_fitmeanerr[80]/D" );
361 costhetacalib->Branch( "pos_fitsigma", pos_fitsigma, "pos_fitsigma[80]/D" );
362 costhetacalib->Branch( "pos_gain", pos_gain, "pos_gain[80]/D" );
363 costhetacalib->Branch( "pos_fitchisq", pos_fitchisq, "pos_fitchisq[80]/D" );
364 costhetacalib->Branch( "neg_fitentryNo", neg_fitentryNo, "neg_fitentryNo[80]/D" );
365 costhetacalib->Branch( "neg_fitmean", neg_fitmean, "neg_fitmean[80]/D" );
366 costhetacalib->Branch( "neg_fitmeanerr", neg_fitmeanerr, "neg_fitmeanerr[80]/D" );
367 costhetacalib->Branch( "neg_fitsigma", neg_fitsigma, "neg_fitsigma[80]/D" );
368 costhetacalib->Branch( "neg_gain", neg_gain, "neg_gain[80]/D" );
369 costhetacalib->Branch( "neg_fitchisq", neg_fitchisq, "neg_fitchisq[80]/D" );
370 costhetacalib->Branch( "cosBin", cosBin, "cosBin[80]/D" );
371 costhetacalib->Branch( "costheta1", costheta1, "costheta1[700000]/D" );
372 costhetacalib->Branch( "dedx1", dedx1, "dedx1[700000]/D" );
373 costhetacalib->Fill();
374 costhetacalib->Write();
375
376 TCanvas c1( "c1", "canvas", 500, 400 );
378 costhetacalib->Draw( "dedx1:costheta1", "dedx1>200 && dedx1<1000" );
380 m_dEdxVsCostheta->Draw();
382 m_pos_dEdxVsCostheta->Draw();
384 m_neg_dEdxVsCostheta->Draw();
387 {
388 m_chi[i]->Draw();
390 }
392 {
393 m_pos_chi[i]->Draw();
395 }
397 {
398 m_neg_chi[i]->Draw();
400 }
402 {
403 m_costheta[i]->Draw();
405 }
407 {
408 m_pos_costheta[i]->Draw();
410 }
412 {
413 m_neg_costheta[i]->Draw();
415 }
418
420 {
421 delete m_chi[i];
422 delete m_pos_chi[i];
423 delete m_neg_chi[i];
424 delete m_costheta[i];
425 delete m_pos_costheta[i];
426 delete m_neg_costheta[i];
427 }
428 delete m_dEdxVsCostheta;
429 delete m_pos_dEdxVsCostheta;
430 delete m_neg_dEdxVsCostheta;
431}