![]() |
|
|||
File indexing completed on 2025-08-06 08:12:56
0001 int 0002 TrackParamEtaDependence( TString csvfile="track_momres_new.csv" ) 0003 { 0004 0005 /* Read data from input file */ 0006 TTree *tres = new TTree(); 0007 //ptrue:etatrue:psig:psig_err:pmean:pmean_err:norm 0008 tres->ReadFile( csvfile, "", ',' ); 0009 0010 /* Print read-in tree */ 0011 tres->Print(); 0012 0013 /* create frame histograms */ 0014 TH1F *hframe_par1 = new TH1F("hframe_par1","",10,-4.1,4.1); 0015 hframe_par1->GetXaxis()->SetTitle("#eta"); 0016 hframe_par1->GetYaxis()->SetTitle("Parameter 1"); 0017 hframe_par1->GetYaxis()->SetRangeUser(0,0.1); 0018 hframe_par1->GetYaxis()->SetNdivisions(505); 0019 0020 TH1F *hframe_par2 = new TH1F("hframe_par2","",10,-4.1,4.1); 0021 hframe_par2->GetXaxis()->SetTitle("#eta"); 0022 hframe_par2->GetYaxis()->SetTitle("Parameter 2"); 0023 hframe_par2->GetYaxis()->SetRangeUser(0,0.01); 0024 hframe_par2->GetYaxis()->SetNdivisions(505); 0025 0026 /* Parameter 1 */ 0027 TCanvas *c1 = new TCanvas(); 0028 tres->Draw("par1:eta:par1err:0"); 0029 0030 /* Create TGraphErrors with selected data from tree */ 0031 TGraphErrors *gpar1 = new TGraphErrors( tres->GetEntries(), 0032 &(tres->GetV2())[0], 0033 &(tres->GetV1())[0], 0034 &(tres->GetV4())[0], 0035 &(tres->GetV3())[0] ); 0036 0037 hframe_par1->Draw(); 0038 gpar1->Draw("Psame"); 0039 0040 TF1* fpar1 = new TF1("fpar1", "[0] + [1] * x**2 + [2] * x**4"); 0041 fpar1->SetLineColor(kBlue); 0042 gpar1->Fit(fpar1, "", "", -2.5, 2.5); 0043 gpar1->Fit(fpar1, "", "", -2.5, 2.5); 0044 gpar1->Fit(fpar1, "", "", -2.5, 2.5); 0045 0046 c1->Print("momres_par1_fit.eps"); 0047 0048 /* Parameter 2 */ 0049 TCanvas *c2 = new TCanvas(); 0050 tres->Draw("par2:eta:par2err:0"); 0051 0052 /* Create TGraphErrors with selected data from tree */ 0053 TGraphErrors *gpar2 = new TGraphErrors( tres->GetEntries(), 0054 &(tres->GetV2())[0], 0055 &(tres->GetV1())[0], 0056 &(tres->GetV4())[0], 0057 &(tres->GetV3())[0] ); 0058 0059 hframe_par2->Draw(); 0060 gpar2->Draw("Psame"); 0061 0062 TF1* fpar2 = new TF1("fpar2", "[0] + [1] * x**2 + [2] * x**3 + [3] * x**4"); 0063 fpar2->SetLineColor(kBlue); 0064 gpar2->Fit(fpar2, "", "", -2.5, 2.5); 0065 gpar2->Fit(fpar2, "", "", -2.5, 2.5); 0066 gpar2->Fit(fpar2, "", "", -2.5, 2.5); 0067 0068 c2->Print("momres_par2_fit.eps"); 0069 0070 0071 // /* Create fit function */ 0072 // //TF1* f_momres = new TF1("f_momres", "[0]*x + [1]*x*x" ); 0073 // TF1* f_momres = new TF1("f_momres", "sqrt( [0]*[0] + [1]*[1]*x*x )" ); 0074 // 0075 // cout << "\nFit function: " << f_momres->GetTitle() << "\n" << endl; 0076 // 0077 // /* Create scratch canvas */ 0078 // TCanvas *cscratch = new TCanvas("cscratch"); 0079 // 0080 // /* Create framehistogram */ 0081 // TH1F* hframe = new TH1F("hframe","",100,0,40); 0082 // hframe->GetYaxis()->SetRangeUser(0,0.15); 0083 // hframe->GetXaxis()->SetTitle("Momentum (GeV/c)"); 0084 // hframe->GetYaxis()->SetTitle("#sigma_{p}/p"); 0085 // 0086 // /* create combined canvas plot */ 0087 // TCanvas *c1 = new TCanvas(); 0088 // hframe->Draw(); 0089 // 0090 // /* Create legend */ 0091 // TLegend* leg_eta = new TLegend( 0.25, 0.40, 0.45, 0.90); 0092 // 0093 // /* Create ofstream to write fit parameter results */ 0094 // ofstream ofsfit("track_momres_new.csv"); 0095 // ofsfit<<"eta,par1,par1err,par2,par2err"<<endl; 0096 // 0097 // /* Create resolution-vs-momentum plot with fits for each selected theta value */ 0098 // for ( int i = 0; i < etas.size(); i++ ) 0099 // { 0100 // /* Switch to scratch canvas */ 0101 // cscratch->cd(); 0102 // 0103 // double eta = etas.at(i); 0104 // 0105 // /* Calculate pseudorapidity eta */ 0106 // //double eta = -1 * log( tan( thetas.at(i) / 2. ) ); 0107 // 0108 // cout << "\n***Eta = " << eta << endl; 0109 // 0110 // /* Define range of theta because float comparison with fixed value doesn't work 0111 // too well for cuts in ROOT trees */ 0112 // double eta_min = eta * 0.999; 0113 // double eta_max = eta * 1.001; 0114 // 0115 // /* Cut for tree */ 0116 // TCut cutx( Form("ptrue > 1 && ( (etatrue > 0 && (etatrue > %f && etatrue < %f)) || (etatrue < 0 && (etatrue < %f && etatrue > %f)) )", eta_min, eta_max, eta_min, eta_max) ); 0117 // 0118 // /* "Draw" tree on scratch canvas to fill V1...V4 arrays */ 0119 // //tres->Draw("psig/pmean:ptrue:psig_err/pmean:0", cutx ); 0120 // tres->Draw("psig:ptrue:psig_err:0", cutx ); 0121 // 0122 // 0123 // gres->SetMarkerColor(colors[i]); 0124 // 0125 // /* Only plot first few lines; if not plotting, still do the fit */ 0126 // if ( i < etas_plotmax ) 0127 // { 0128 // /* Add graph to legend */ 0129 // leg_eta->AddEntry(gres, Form("#eta = %.1f", eta), "P"); 0130 // 0131 // /* Add graph to plot */ 0132 // c1->cd(); 0133 // gres->Draw("Psame"); 0134 // f_momres->SetLineColor(colors[i]); 0135 // gres->Fit(f_momres); 0136 // } 0137 // else 0138 // { 0139 // gres->Fit(f_momres); 0140 // } 0141 // 0142 // /* Write fir results to file */ 0143 // double par1 = f_momres->GetParameter(0); 0144 // double par1err = f_momres->GetParError(0); 0145 // double par2 = f_momres->GetParameter(1); 0146 // double par2err = f_momres->GetParError(1); 0147 // ofsfit << eta << "," << par1 << "," << par1err << "," << par2 << "," << par2err << endl; 0148 // 0149 // } 0150 // 0151 // /* Draw legend */ 0152 // // c1->cd(); 0153 // TCanvas *c2 = new TCanvas(); 0154 // //hframe->Draw(); 0155 // leg_eta->Draw(); 0156 // 0157 // /* Print plots */ 0158 // c1->Print("track_momres_vareta.eps"); 0159 // c2->Print("track_momres_vareta_legend.eps"); 0160 // 0161 // /* Close output stream */ 0162 // ofsfit.close(); 0163 0164 return 0; 0165 }
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
![]() ![]() |