166{
167 MsgStream log(
msgSvc(), name());
168 log<<MSG::INFO<<"DedxCalibMomentum::WriteHists()"<< endreq;
169
171 double pos_chientryNo[
nbins]={0},pos_chimean[
nbins]={0},pos_chimeanerr[
nbins]={0},pos_chisigma[
nbins]={0},pos_chisq[
nbins]={0};
172 double neg_chientryNo[
nbins]={0},neg_chimean[
nbins]={0},neg_chimeanerr[
nbins]={0},neg_chisigma[
nbins]={0},neg_chisq[
nbins]={0};
174 double pos_fitentryNo[
nbins]={0},pos_fitmean[
nbins]={0},pos_fitmeanerr[
nbins]={0},pos_fitsigma[
nbins]={0},pos_fitchisq[
nbins]={0};
175 double neg_fitentryNo[
nbins]={0},neg_fitmean[
nbins]={0},neg_fitmeanerr[
nbins]={0},neg_fitsigma[
nbins]={0},neg_fitchisq[
nbins]={0};
176 double hits_mean[
nbins]={0},hits_sigma[
nbins]={0};
177 double pBin[
nbins]={0};
178
179 for(
int i=0;i<
nbins;i++)
180 {
181 pBin[i] = (i+0.5)*bin_step + pMin;
182
183 chientryNo[i] = m_chi[i]->Integral();
184 if(chientryNo[i]>100)
185 {
186 chimean[i] = m_chi[i]->GetFunction("gaus")->GetParameter(1);
187 chimeanerr[i] = m_chi[i]->GetFunction("gaus")->GetParError(1);
188 chisigma[i] = m_chi[i]->GetFunction("gaus")->GetParameter(2);
189 chisq[i] = (m_chi[i]->GetFunction("gaus")->GetChisquare())/(m_chi[i]->GetFunction("gaus")->GetNDF());
190 }
191 pos_chientryNo[i] = m_pos_chi[i]->Integral();
192 if(pos_chientryNo[i]>100)
193 {
194 pos_chimean[i] = m_pos_chi[i]->GetFunction("gaus")->GetParameter(1);
195 pos_chimeanerr[i] = m_pos_chi[i]->GetFunction("gaus")->GetParError(1);
196 pos_chisigma[i] = m_pos_chi[i]->GetFunction("gaus")->GetParameter(2);
197 pos_chisq[i] = (m_pos_chi[i]->GetFunction("gaus")->GetChisquare())/(m_pos_chi[i]->GetFunction("gaus")->GetNDF());
198 }
199 neg_chientryNo[i] = m_neg_chi[i]->Integral();
200 if(neg_chientryNo[i]>100)
201 {
202 neg_chimean[i] = m_neg_chi[i]->GetFunction("gaus")->GetParameter(1);
203 neg_chimeanerr[i] = m_neg_chi[i]->GetFunction("gaus")->GetParError(1);
204 neg_chisigma[i] = m_neg_chi[i]->GetFunction("gaus")->GetParameter(2);
205 neg_chisq[i] = (m_neg_chi[i]->GetFunction("gaus")->GetChisquare())/(m_neg_chi[i]->GetFunction("gaus")->GetNDF());
206 }
207
208 fitentryNo[i] = m_dedx[i]->Integral();
209 if(fitentryNo[i]>100)
210 {
211 fitmean[i] = m_dedx[i]->GetFunction("gaus")->GetParameter(1);
212 fitmeanerr[i] = m_dedx[i]->GetFunction("gaus")->GetParError(1);
213 fitsigma[i] = m_dedx[i]->GetFunction("gaus")->GetParameter(2);
214 fitchisq[i] = (m_dedx[i]->GetFunction("gaus")->GetChisquare())/(m_dedx[i]->GetFunction("gaus")->GetNDF());
215 }
216 pos_fitentryNo[i] = m_pos_dedx[i]->Integral();
217 if(pos_fitentryNo[i]>100)
218 {
219 pos_fitmean[i] = m_pos_dedx[i]->GetFunction("gaus")->GetParameter(1);
220 pos_fitmeanerr[i] = m_pos_dedx[i]->GetFunction("gaus")->GetParError(1);
221 pos_fitsigma[i] = m_pos_dedx[i]->GetFunction("gaus")->GetParameter(2);
222 pos_fitchisq[i] = (m_pos_dedx[i]->GetFunction("gaus")->GetChisquare())/(m_pos_dedx[i]->GetFunction("gaus")->GetNDF());
223 }
224 neg_fitentryNo[i] = m_neg_dedx[i]->Integral();
225 if(neg_fitentryNo[i]>100)
226 {
227 neg_fitmean[i] = m_neg_dedx[i]->GetFunction("gaus")->GetParameter(1);
228 neg_fitmeanerr[i] = m_neg_dedx[i]->GetFunction("gaus")->GetParError(1);
229 neg_fitsigma[i] = m_neg_dedx[i]->GetFunction("gaus")->GetParameter(2);
230 neg_fitchisq[i] = (m_neg_dedx[i]->GetFunction("gaus")->GetChisquare())/(m_neg_dedx[i]->GetFunction("gaus")->GetNDF());
231 }
232
233 hits_mean[i] = m_hits[i]->GetMean();
234 hits_sigma[i] = m_hits[i]->GetRMS();
235 }
236
237 double dedx1[
Size] = {0};
238 double ptrk1[
Size] = {0};
239 cout << "Vec_dedx.size() = " << Vec_dedx.size() << endl;
240 for(
int i=0;i<
Size && i< Vec_dedx.size();i++)
241 {
242 dedx1[i] = Vec_dedx[i];
243 ptrk1[i] = Vec_ptrk[i];
244
245 }
246
247 log<<MSG::INFO<<"begin generating root file!!! "<<endreq;
248 TFile*
f =
new TFile(
m_rootfile.c_str(),
"RECREATE");
249 for(
int i=0;i<
nbins;i++)
250 {
251 m_chi[i]->Write();
252 m_pos_chi[i]->Write();
253 m_neg_chi[i]->Write();
254 m_dedx[i]->Write();
255 m_pos_dedx[i]->Write();
256 m_neg_dedx[i]->Write();
257 m_hits[i]->Write();
258 }
259
260 TTree* momInfor = new TTree("momInfor","momInfor");
261 momInfor->Branch("chientryNo",chientryNo,"chientryNo[50]/D");
262 momInfor->Branch("chimean",chimean,"chimean[50]/D");
263 momInfor->Branch("chimeanerr",chimeanerr,"chimeanerr[50]/D");
264 momInfor->Branch("chisigma",chisigma,"chisigma[50]/D");
265 momInfor->Branch("chisq",chisq,"chisq[50]/D");
266 momInfor->Branch("pos_chientryNo",pos_chientryNo,"pos_chientryNo[50]/D");
267 momInfor->Branch("pos_chimean",pos_chimean,"pos_chimean[50]/D");
268 momInfor->Branch("pos_chimeanerr",pos_chimeanerr,"pos_chimeanerr[50]/D");
269 momInfor->Branch("pos_chisigma",pos_chisigma,"pos_chisigma[50]/D");
270 momInfor->Branch("pos_chisq",pos_chisq,"pos_chisq[50]/D");
271 momInfor->Branch("neg_chientryNo",neg_chientryNo,"neg_chientryNo[50]/D");
272 momInfor->Branch("neg_chimean",neg_chimean,"neg_chimean[50]/D");
273 momInfor->Branch("neg_chimeanerr",neg_chimeanerr,"neg_chimeanerr[50]/D");
274 momInfor->Branch("neg_chisigma",neg_chisigma,"neg_chisigma[50]/D");
275 momInfor->Branch("neg_chisq",neg_chisq,"neg_chisq[50]/D");
276 momInfor->Branch("fitentryNo",fitentryNo,"fitentryNo[50]/D");
277 momInfor->Branch("fitmean",fitmean,"fitmean[50]/D");
278 momInfor->Branch("fitmeanerr",fitmeanerr,"fitmeanerr[50]/D");
279 momInfor->Branch("fitsigma",fitsigma,"fitsigma[50]/D");
280 momInfor->Branch("fitchisq",fitchisq,"fitchisq[50]/D");
281 momInfor->Branch("pos_fitentryNo",pos_fitentryNo,"pos_fitentryNo[50]/D");
282 momInfor->Branch("pos_fitmean",pos_fitmean,"pos_fitmean[50]/D");
283 momInfor->Branch("pos_fitmeanerr",pos_fitmeanerr,"pos_fitmeanerr[50]/D");
284 momInfor->Branch("pos_fitsigma",pos_fitsigma,"pos_fitsigma[50]/D");
285 momInfor->Branch("pos_fitchisq",pos_fitchisq,"pos_fitchisq[50]/D");
286 momInfor->Branch("neg_fitentryNo",neg_fitentryNo,"neg_fitentryNo[50]/D");
287 momInfor->Branch("neg_fitmean",neg_fitmean,"neg_fitmean[50]/D");
288 momInfor->Branch("neg_fitmeanerr",neg_fitmeanerr,"neg_fitmeanerr[50]/D");
289 momInfor->Branch("neg_fitsigma",neg_fitsigma,"neg_fitsigma[50]/D");
290 momInfor->Branch("neg_fitchisq",neg_fitchisq,"neg_fitchisq[50]/D");
291 momInfor->Branch("hits_mean",hits_mean,"hits_mean[50]/D");
292 momInfor->Branch("hits_sigma",hits_sigma,"hits_sigma[50]/D");
293 momInfor->Branch("pBin",pBin,"pBin[50]/D");
294 momInfor->
Branch(
"ptrk1",ptrk1,
"ptrk1[700000]/D");
295 momInfor->
Branch(
"dedx1",dedx1,
"dedx1[700000]/D");
296 momInfor->Fill();
297 momInfor->Write();
298
299 TCanvas c1("c1", "canvas", 500, 400);
301 momInfor ->
Draw(
"dedx1:ptrk1",
"dedx1>200 && dedx1<1200");
303 for(Int_t i=0;i<
nbins;i++)
304 {
305 m_chi[i]->Draw();
307 }
308 for(Int_t i=0;i<
nbins;i++)
309 {
310 m_pos_chi[i]->Draw();
312 }
313 for(Int_t i=0;i<
nbins;i++)
314 {
315 m_neg_chi[i]->Draw();
317 }
318 for(Int_t i=0;i<
nbins;i++)
319 {
320 m_dedx[i]->Draw();
322 }
323 for(Int_t i=0;i<
nbins;i++)
324 {
325 m_pos_dedx[i]->Draw();
327 }
328 for(Int_t i=0;i<
nbins;i++)
329 {
330 m_neg_dedx[i]->Draw();
332 }
335
336 for(
int i=0;i<
nbins;i++)
337 {
338 delete m_chi[i];
339 delete m_pos_chi[i];
340 delete m_neg_chi[i];
341 delete m_dedx[i];
342 delete m_pos_dedx[i];
343 delete m_neg_dedx[i];
344 delete m_hits[i];
345 }
346}
curve Branch("CurveSize",&CurveSize,"CurveSize/I")