Back to home page

sPhenix code displayed by LXR

 
 

    


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 }