File indexing completed on 2025-08-06 08:12:51
0001 int
0002 makePlot_track_pscan()
0003 {
0004 gStyle->SetOptStat(0);
0005
0006 TCut cut_primary( "gtrackID==1" );
0007 TCut cut_eta( "abs( (-1*log( tan( atan2( sqrt(px*px+py*py), pz ) / 2.0 ) )) - (-1*log( tan( atan2( sqrt(gpx*gpx+gpy*gpy), gpz ) / 2.0 ) ) ) ) < 1 ");
0008 TCut cut_p( "abs( sqrt(px*px+py*py+pz*pz) - sqrt(gpx*gpx+gpy*gpy+gpz*gpz) ) < 1" );
0009
0010 vector< string > suffixes;
0011 suffixes.push_back( "muon_10GeV_-2.5Eta" );
0012 suffixes.push_back( "muon_11GeV_-2.5Eta" );
0013 suffixes.push_back( "muon_12GeV_-2.5Eta" );
0014 suffixes.push_back( "muon_13GeV_-2.5Eta" );
0015 suffixes.push_back( "muon_14GeV_-2.5Eta" );
0016 suffixes.push_back( "muon_15GeV_-2.5Eta" );
0017 suffixes.push_back( "muon_16GeV_-2.5Eta" );
0018 suffixes.push_back( "muon_17GeV_-2.5Eta" );
0019 suffixes.push_back( "muon_18GeV_-2.5Eta" );
0020 suffixes.push_back( "muon_19GeV_-2.5Eta" );
0021 suffixes.push_back( "muon_1GeV_-2.5Eta" );
0022 suffixes.push_back( "muon_20GeV_-2.5Eta" );
0023 suffixes.push_back( "muon_21GeV_-2.5Eta" );
0024 suffixes.push_back( "muon_22GeV_-2.5Eta" );
0025 suffixes.push_back( "muon_23GeV_-2.5Eta" );
0026 suffixes.push_back( "muon_24GeV_-2.5Eta" );
0027 suffixes.push_back( "muon_25GeV_-2.5Eta" );
0028 suffixes.push_back( "muon_26GeV_-2.5Eta" );
0029 suffixes.push_back( "muon_27GeV_-2.5Eta" );
0030 suffixes.push_back( "muon_28GeV_-2.5Eta" );
0031 suffixes.push_back( "muon_29GeV_-2.5Eta" );
0032 suffixes.push_back( "muon_2GeV_-2.5Eta" );
0033 suffixes.push_back( "muon_30GeV_-2.5Eta" );
0034 suffixes.push_back( "muon_3GeV_-2.5Eta" );
0035 suffixes.push_back( "muon_4GeV_-2.5Eta" );
0036 suffixes.push_back( "muon_5GeV_-2.5Eta" );
0037 suffixes.push_back( "muon_6GeV_-2.5Eta" );
0038 suffixes.push_back( "muon_7GeV_-2.5Eta" );
0039 suffixes.push_back( "muon_8GeV_-2.5Eta" );
0040 suffixes.push_back( "muon_9GeV_-2.5Eta" );
0041
0042 TString base("../../data/data_trackeval_pscan/eval_track_fastsim_");
0043
0044 vector< float > v_ptrue;
0045 vector< float > v_deltap_sigma;
0046 vector< float > v_deltap_over_p_sigma;
0047
0048 for ( unsigned i = 0; i < suffixes.size(); i++ )
0049 {
0050 TString file = base;
0051 file.Append( suffixes.at(i) );
0052 file.Append(".root");
0053
0054 TFile* fin = new TFile(file, "OPEN");
0055 TTree *tin = (TTree*)fin->Get("tracks");
0056
0057 TH1F* h_delta = new TH1F( "h_delta", "", 200, -1, 1 );
0058 TH1F* h_delta_rel = new TH1F( "h_delta_rel", "", 200, -1, 1 );
0059 TH1F* h_ptrue = new TH1F( "h_ptrue", "", 31, -0.5, 30 );
0060
0061 tin->Draw("( sqrt(px*px+py*py+pz*pz) - sqrt(gpx*gpx+gpy*gpy+gpz*gpz) ) >> h_delta", cut_primary );
0062 tin->Draw("( sqrt(px*px+py*py+pz*pz) - sqrt(gpx*gpx+gpy*gpy+gpz*gpz) ) / sqrt(gpx*gpx+gpy*gpy+gpz*gpz) >> h_delta_rel", cut_primary );
0063 tin->Draw("sqrt(gpx*gpx+gpy*gpy+gpz*gpz) >> h_ptrue", cut_primary );
0064
0065 v_ptrue.push_back( h_ptrue->GetMean() );
0066 v_deltap_sigma.push_back( h_delta->GetRMS() );
0067 v_deltap_over_p_sigma.push_back( h_delta_rel->GetRMS() );
0068 }
0069
0070 TGraphErrors *g1 = new TGraphErrors( v_ptrue.size(), &(v_ptrue[0]), &(v_deltap_over_p_sigma[0]) );
0071
0072 TCanvas *c1 = new TCanvas();
0073
0074 TH1F* hframe = new TH1F("hframe","",31,-0.5,30.5);
0075 hframe->GetXaxis()->SetTitle("p_{true} (GeV)");
0076 hframe->GetYaxis()->SetTitle("#sigma ( ( p_{reco} - p_{true} ) / p_{true} )");
0077 hframe->GetYaxis()->SetRangeUser(0,0.15);
0078 hframe->Draw();
0079 g1->Draw("Psame");
0080
0081
0082
0083
0084
0085
0086
0087 return 1;
0088 }