]>
Commit | Line | Data |
---|---|---|
376089b6 | 1 | /* |
2 | ||
3 | root.exe -l $ALICE_ROOT/TPC/Upgrade/macros/{loadlibs.C,ConfigOCDB.C} | |
4 | .x $ALICE_ROOT/TPC/Upgrade/macros/toyMCRecPlots.C | |
5 | ||
6 | */ | |
7 | ||
642d0249 | 8 | void toyMCRecPlots(TString inFileName = "toyMC.debug.root",Bool_t doPlots = kFALSE){ |
376089b6 | 9 | // |
10 | // do all the plots for Toy MC Reconstruction for the TDR | |
11 | // | |
12 | ||
13 | //gStyle->SetOptStat(0); | |
14 | ||
15 | // parameters | |
16 | const Int_t nT0 = 2; | |
17 | const Int_t nT02D = 2; | |
642d0249 | 18 | const Int_t nZ0 = 2; |
376089b6 | 19 | const Int_t nTrackParams = 9; |
20 | ||
21 | Int_t col = kBlack; | |
22 | ||
23 | TString sT0[nT0] = {"fTime0-t0","fTime0-t0+z0*TMath::Sign(1,tOrig.Eta())/vdrift"}; | |
24 | TString sT02D[nT02D] = {"fTime0-t0+z0*TMath::Sign(1,tOrig.Eta())/vdrift:tOrig.fP[3]","fTime0-t0+z0*TMath::Sign(1,tOrig.Eta())/vdrift:tOrig.fP[4]"}; | |
25 | TString sTrackParams[nTrackParams] = {"track.fP[0]-tOrig.fP[0]","track.fP[1]-tOrig.fP[1]","track.fP[2]-tOrig.fP[2]","track.fP[3]-tOrig.fP[3]","track.fP[4]-tOrig.fP[4]","track.fAlpha-tOrig.fAlpha","track.fX/tOrig.fX","track.fY/tOrig.fY","track.fZ/tOrig.fZ"}; | |
642d0249 | 26 | TString sZ0[nZ0] = {"(fTime0-t0)*vdrift","(fTime0-t0+z0*TMath::Sign(1,tOrig.Eta())/vdrift)*vdrift"}; |
27 | ||
376089b6 | 28 | |
29 | TString tT0[nT0] = {"T_{0} resolution","intrinsic T_{0} resolution"}; | |
30 | TString tT02D[nT0] = {"intrinsic T_{0} resolution vs. tan#lambda","intrinsic T_{0} resolution vs. 1/p_{T}"}; | |
31 | TString tTrackParams[nTrackParams] = {"local y","z","sin inclination angle","tan#lambda","1/p_{T}","#alpha","X","Y","Z"}; | |
642d0249 | 32 | TString tZ0[nZ0] = {"Z_{0} resolution","intrinsic Z_{0} resolution"}; |
33 | ||
376089b6 | 34 | |
35 | TString sSel = "fTime0>-1"; // seeding successful | |
36 | ||
c0ebc0e0 | 37 | // special settings for all clusters reconstruction |
38 | if(inFileName.Contains("allClusters")){ | |
39 | sSel.Append("&& nClus>-1"); // only tracks with enough clusters (not yet used)! | |
40 | sTrackParams[nTrackParams-1] = "nClus"; | |
41 | tTrackParams[nTrackParams-1] = "Number of used clusters"; | |
42 | } | |
642d0249 | 43 | // retrieve configuration string |
c0ebc0e0 | 44 | TPRegexp reg(".*([0-9]_[0-9]_[0-9]_[0-9]{3}_[0-9]{2}).*debug.root"); |
642d0249 | 45 | TObjArray *arrMatch=0x0; |
46 | arrMatch=reg.MatchS(inFileName); | |
47 | TString sConfig = arrMatch->At(1)->GetName(); | |
48 | ||
376089b6 | 49 | // get file |
50 | TFile *fIn = TFile::Open(inFileName.Data(),"READ"); | |
51 | if(!fIn){ | |
52 | Printf("No file %s found",inFileName.Data()); | |
53 | return; | |
54 | } | |
55 | ||
56 | // get tree | |
57 | TTree *Tracks = fIn->Get("Tracks"); | |
58 | if(!Tracks){ | |
59 | Printf("No TTree found"); | |
60 | return; | |
61 | } | |
642d0249 | 62 | |
376089b6 | 63 | // output canvases |
642d0249 | 64 | TCanvas *cT0 = new TCanvas(Form("cT0_%s",sConfig.Data()),Form("cT0_%s",sConfig.Data()),1200,500); |
376089b6 | 65 | cT0->Divide(2,1); |
66 | ||
642d0249 | 67 | TCanvas *cT02D = new TCanvas(Form("cT02D_%s",sConfig.Data()),Form("cT02D_%s",sConfig.Data()),1200,500); |
376089b6 | 68 | cT02D->Divide(2,1); |
69 | ||
642d0249 | 70 | TCanvas *cZ0 = new TCanvas(Form("cZ0_%s",sConfig.Data()),Form("cZ0_%s",sConfig.Data()),1200,500); |
71 | cZ0->Divide(2,1); | |
72 | ||
73 | TCanvas *cTrackParams = new TCanvas(Form("cTrackParams_%s",sConfig.Data()),Form("cTrackParams_%s",sConfig.Data()),1200,900); | |
376089b6 | 74 | cTrackParams->Divide(3,3); |
75 | ||
3240a856 | 76 | |
376089b6 | 77 | // legends |
78 | TLegend *l[nT0]; | |
79 | ||
80 | ||
81 | ||
82 | // draw T0 resolution | |
83 | for(Int_t iT0 = 0; iT0 < nT0; iT0 ++){ | |
84 | ||
85 | cT0->cd(iT0+1); | |
642d0249 | 86 | TStatToolkit::DrawHistogram(Tracks,sT0[iT0].Data(),sSel.Data(),Form("hT0_%s_%d",sConfig.Data(),iT0),Form("%s",tT0[iT0].Data()),3); |
376089b6 | 87 | |
88 | //hT0[iT0]->Fit("gaus","",""); | |
89 | //l[iT0]= new TLegend(0.55,0.7,0.8,0.8,Form("")); | |
90 | //myLegendSetUp(l[iT0],0.03); | |
91 | //l[iT0]->AddEntry( hT0[iT0], Form("#sigma = (%.2f #pm %.2f) #mus",hT0[iT0]->GetFunction("gaus")->GetParameter(2)*1e6,hT0[iT0]->GetFunction("gaus")->GetParError(2)*1e6)); | |
92 | //l[iT0]->Draw(); | |
93 | ||
94 | } | |
95 | ||
96 | ||
97 | // draw T0 resolution (2D) | |
98 | for(Int_t iT02D = 0; iT02D < nT02D; iT02D ++){ | |
99 | ||
376089b6 | 100 | |
101 | cT02D->cd(iT02D+1); | |
642d0249 | 102 | TStatToolkit::DrawHistogram(Tracks,sT02D[iT02D].Data(),sSel.Data(),Form("hT02D_%s_%d",sConfig.Data(),iT02D),Form("%s",tT02D[iT02D].Data()),3); |
376089b6 | 103 | |
104 | } | |
105 | ||
642d0249 | 106 | // draw Z0 resolution |
107 | for(Int_t iZ0 = 0; iZ0 < nZ0; iZ0 ++){ | |
108 | ||
109 | cZ0->cd(iZ0+1); | |
110 | TStatToolkit::DrawHistogram(Tracks,sZ0[iZ0].Data(),sSel.Data(),Form("hZ0_%s_%d",sConfig.Data(),iZ0),Form("%s",tZ0[iZ0].Data()),3); | |
111 | ||
112 | } | |
376089b6 | 113 | |
114 | // draw track parameters | |
115 | for(Int_t iTrackParams = 0; iTrackParams < nTrackParams; iTrackParams ++){ | |
116 | ||
117 | cTrackParams->cd(iTrackParams+1); | |
642d0249 | 118 | TStatToolkit::DrawHistogram(Tracks,sTrackParams[iTrackParams].Data(),sSel.Data(),Form("hTrackParams_%s_%d",sConfig.Data(),iTrackParams),Form("%s",tTrackParams[iTrackParams].Data()),3); |
c0ebc0e0 | 119 | if(inFileName.Contains("allClusters")) TStatToolkit::DrawHistogram(Tracks,sTrackParams[iTrackParams].Data(),sSel.Data(),Form("hTrackParams_%s_%d",sConfig.Data(),iTrackParams),Form("%s",tTrackParams[iTrackParams].Data()),5); |
376089b6 | 120 | |
121 | } | |
122 | ||
123 | ||
124 | // plots | |
642d0249 | 125 | if(doPlots){ |
126 | TString outFileName = inFileName; | |
127 | outFileName.ReplaceAll(".root",""); | |
128 | cT0->SaveAs(Form("%s_T0.eps",outFileName.Data())); | |
129 | cT02D->SaveAs(Form("%s_T02D.eps",outFileName.Data())); | |
130 | cTrackParams->SaveAs(Form("%s_TrackParams.eps",outFileName.Data())); | |
131 | } | |
376089b6 | 132 | } |
133 | ||
134 | void myLegendSetUp(TLegend *currentLegend = NULL,Float_t currentTextSize=0.07){ | |
135 | currentLegend->SetTextFont(42); | |
136 | currentLegend->SetBorderSize(0); | |
137 | currentLegend->SetFillStyle(1); | |
138 | currentLegend->SetFillColor(0); | |
139 | currentLegend->SetMargin(0.25); | |
140 | currentLegend->SetTextSize(currentTextSize); | |
141 | currentLegend->SetEntrySeparation(0.5); | |
142 | return; | |
143 | } | |
144 | ||
145 | void myHistoSetUp( TH1 *h = NULL, Int_t col = kBlack, Int_t mar = 20){ | |
146 | ||
147 | h->SetLineColor(col); | |
148 | h->SetMarkerColor(col); | |
149 | h->SetMarkerStyle(mar); | |
150 | ||
151 | } | |
152 |