00001 void vtxFit() {
00002
00003 Double_t chik, kvx, kvy, kvz, ndofk, probk;
00004 TChain* t = new TChain("kalvtx");
00005 t->Add("run_0009903_dst_pvtx2.root");
00006 t->Add("run_0009903_dst_pvtx3.root");
00007 t->SetBranchAddress("chik", &chik );
00008 t->SetBranchAddress("kvx", &kvx );
00009 t->SetBranchAddress("kvy", &kvy );
00010 t->SetBranchAddress("kvz", &kvz );
00011 t->SetBranchAddress("ndofk", &ndofk );
00012 t->SetBranchAddress("probk", &probk );
00013
00014 Int_t nentries = (Int_t) t->GetEntries();
00015
00016 TH1D* m_vertex_x_kal = new TH1D("x of vertex in kal", "x of vertex in kal", 60, -0.6, 0.6);
00017 TH1D* m_vertex_y_kal = new TH1D("y of vertex in kal", "y of vertex in kal", 60, -0.6, 0.1);
00018 TH1D* m_vertex_z_kal = new TH1D("z of vertex in kal", "z of vertex in kal", 60, -6, 6);
00019
00020 for( Int_t i=0; i<nentries; i++ ) {
00021 t->GetEntry(i);
00022 m_vertex_x_kal->Fill(kvx);
00023 m_vertex_y_kal->Fill(kvy);
00024 m_vertex_z_kal->Fill(kvz);
00025 }
00026
00027
00028 TCanvas *myC = new TCanvas("myC", "myC", 1200, 400);
00029 TPad *background = (TPad*)gPad;
00030 background->SetFillColor(10);
00031 myC->Divide(3,1);
00032 myC->cd(1);
00033
00034 TF1 *func = new TF1("func", "gaus", -0.6, 0.6);
00035 m_vertex_x_kal->Fit("func", "R+");
00036 Double_t MeanXKal = func->GetParameter(1);
00037 Double_t SigmaXKal = func->GetParameter(2);
00038 Double_t ErrMeanXKal = func->GetParError(1);
00039 Double_t ErrSigmaXKal = func->GetParError(2);
00040
00041 myC->cd(2);
00042 TF1 *funcY = new TF1("funcY", "gaus", -0.6, 0.1);
00043 m_vertex_y_kal->Fit("funcY", "R+");
00044 Double_t MeanYKal = funcY->GetParameter(1);
00045 Double_t SigmaYKal = funcY->GetParameter(2);
00046 Double_t ErrMeanYKal = funcY->GetParError(1);
00047 Double_t ErrSigmaYKal = funcY->GetParError(2);
00048
00049 myC->cd(3);
00050 TF1 *funcZ = new TF1("funcZ", "gaus", -6, 6);
00051 m_vertex_z_kal->Fit("funcZ", "R+");
00052 Double_t MeanZKal = funcZ->GetParameter(1);
00053 Double_t SigmaZKal = funcZ->GetParameter(2);
00054 Double_t ErrMeanZKal = funcZ->GetParError(1);
00055 Double_t ErrSigmaZKal = funcZ->GetParError(2);
00056
00057 cout << "Kal: Mean X, Y, Z = "<<MeanXKal << " " << MeanYKal << " " << MeanZKal << endl;
00058 cout << "Kal: Sigma X, Y, Z = "<<SigmaXKal<<" " <<SigmaYKal <<" " << SigmaZKal << endl;
00059
00060 figs_name = "figs.ps";
00061 myC->SaveAs(figs_name);
00062
00063
00064
00065 cout << MeanXKal << " "<< MeanYKal << " "<< MeanZKal << " "<< SigmaXKal << " " << SigmaYKal << " " << SigmaZKal << endl;
00066 cout << ErrMeanXKal << " " << ErrMeanYKal<< " " << ErrMeanZKal << " " << ErrSigmaXKal << " " << ErrSigmaYKal << " " << ErrSigmaZKal << endl;
00067
00068
00069 return;
00070
00071 }