]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TPC/TPCupgrade/macros/toyMCRecPlots.C
Install macros
[u/mrichter/AliRoot.git] / TPC / TPCupgrade / macros / toyMCRecPlots.C
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
8 void toyMCRecPlots(TString inFileName = "toyMC.debug.root",Bool_t doPlots = kFALSE){
9   //
10   // do all the plots for Toy MC Reconstruction for the TDR 
11   //
12
13   //gStyle->SetOptStat(0);
14   st->SetTitleX(0.17);
15   st->SetTitleW(0.73);
16   
17   // parameters
18   const Int_t nT0          = 2;
19   const Int_t nT02D        = 2;
20   const Int_t nZ0          = 2;
21   const Int_t nTrackParams = 9;
22   const Int_t nTrackParamsITS = 9;
23   const Int_t nEff         = 1;
24   Int_t nTrackParamsPlot=5;
25   Int_t ydiv=2;  //divisions in y for track parameters plot, usually 3
26   Int_t col = kBlack;
27
28   TString sT0[nT0] = {"fTime0-t0","fTime0-t0+z0*TMath::Sign(1,tOrig.Eta())/vDrift"};
29   //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]"};
30   TString sT02D[nT02D] = {"(fTime0-t0+z0*TMath::Sign(1,tOrig.Eta())/vDrift)*vDrift:tOrig.fP[3]","(fTime0-t0+z0*TMath::Sign(1,tOrig.Eta())/vDrift)*vDrift:tOrig.fP[4]"};
31   //TString sT02D[nT02D] = {"(fTime0-t0)*vDrift:tOrig.fP[3]","(fTime0-t0)*vDrift:tOrig.fP[4]"};
32   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.fP[0]/tOrig.fP[0]","track.fP[1]/tOrig.fP[1]"};
33   TString sTrackParamsITS[nTrackParamsITS] = {"trackITS.fP[0]-tOrigITS.fP[0]","trackITS.fP[1]-tOrigITS.fP[1]","trackITS.fP[2]-tOrigITS.fP[2]","trackITS.fP[3]-tOrigITS.fP[3]","trackITS.fP[4]-tOrigITS.fP[4]","trackITS.fAlpha-tOrigITS.fAlpha","trackITS.fX/tOrigITS.fX","trackITS.fP[0]/tOrigITS.fP[0]","trackITS.fP[1]/tOrigITS.fP[1]"};
34   TString sTrackParamsITS1[nTrackParamsITS] = {"trackITS1.fP[0]-tOrigITS1.fP[0]","trackITS1.fP[1]-tOrigITS1.fP[1]","trackITS1.fP[2]-tOrigITS1.fP[2]","trackITS1.fP[3]-tOrigITS1.fP[3]","trackITS1.fP[4]-tOrigITS1.fP[4]","trackITS1.fAlpha-tOrigITS1.fAlpha","trackITS1.fX/tOrigITS1.fX","trackITS1.fP[0]/tOrigITS1.fP[0]","trackITS1.fP[1]/tOrigITS1.fP[1]"};
35   TString sTrackParamsITS2[nTrackParamsITS] = {"trackITS2.fP[0]-tOrigITS2.fP[0]","trackITS2.fP[1]-tOrigITS2.fP[1]","trackITS2.fP[2]-tOrigITS2.fP[2]","trackITS2.fP[3]-tOrigITS2.fP[3]","trackITS2.fP[4]-tOrigITS2.fP[4]","trackITS2.fAlpha-tOrigITS2.fAlpha","trackITS2.fX/tOrigITS2.fX","trackITS2.fP[0]/tOrigITS2.fP[0]","trackITS2.fP[1]/tOrigITS2.fP[1]"};
36   TString sZ0[nZ0] = {"(fTime0-t0)*vDrift","(fTime0-t0+z0*TMath::Sign(1,tOrig.Eta())/vDrift)*vDrift"};
37   TString sEff[nEff] = {"nSeedClustersID/nClustersMC:nSeedClusters/nClustersMC"};
38
39
40   TString tT0[nT0] = {"T_{0} resolution","intrinsic T_{0} resolution"};
41   TString tT02D[nT0] = {"intrinsic T_{0} resolution vs. tan#lambda","intrinsic T_{0} resolution vs. 1/p_{T}"};
42   TString tTrackParams[nTrackParams] = {"local y","z","sin inclination angle","tan#lambda","1/p_{T}","#alpha","X","Y","Z"};
43   TString tTrackParamsITS[nTrackParamsITS] = {"local y","z","sin inclination angle","tan#lambda","1/p_{T}","#alpha","X","Y","Z"};
44   TString tZ0[nZ0] = {"Z_{0} resolution","intrinsic Z_{0} resolution"};
45   TString tEff[nEff] = {"nSeedClustersID/nClustersMC:nSeedClusters/nClustersMC"};
46
47
48   TString sSel = "fTime0>-1"; // seeding successful
49
50   // retrieve configuration string
51   TPRegexp reg(".*([0-9]_[0-9]_[0-9]_[0-9]{3}_[0-9]{2}).*debug.root");
52   TObjArray *arrMatch=0x0;
53   arrMatch=reg.MatchS(inFileName);
54   TString sConfig = arrMatch->At(1)->GetName();
55    
56   // get file
57   TFile *fIn  = TFile::Open(inFileName.Data(),"READ");
58   if(!fIn){
59     Printf("No file %s found",inFileName.Data());
60     return;
61   }
62
63   // get tree
64   TTree *Tracks = fIn->Get("Tracks");
65   if(!Tracks){
66     Printf("No TTree found");
67     return;
68   }
69
70  // output canvases
71   TCanvas *cT0 = new TCanvas(Form("cT0_%s",sConfig.Data()),Form("cT0_%s",sConfig.Data()),1200,500);
72   cT0->Divide(2,1);
73
74   TCanvas *cT02D = new TCanvas(Form("cT02D_%s",sConfig.Data()),Form("cT02D_%s",sConfig.Data()),1200,500);
75   cT02D->Divide(2,1);
76
77   TCanvas *cZ0 = new TCanvas(Form("cZ0_%s",sConfig.Data()),Form("cZ0_%s",sConfig.Data()),1200,500);
78   cZ0->Divide(2,1);
79
80   //TCanvas *cTrackParams = new TCanvas(Form("cTrackParams_%s",sConfig.Data()),Form("cTrackParams_%s",sConfig.Data()),1200,900/3.*ydiv);
81   //cTrackParams->Divide(3,ydiv);
82   TCanvas *cTrackParams = new TCanvas(Form("cTrackParams_%s",sConfig.Data()),Form("cTrackParams_%s",sConfig.Data()),4800,3600);
83   cTrackParams->Divide(3,3);
84
85   //TCanvas *cTrackParamsITS = new TCanvas(Form("cTrackParamsITS_%s",sConfig.Data()),Form("cTrackParamsITS_%s",sConfig.Data()),1200,900/3.*ydiv);
86   //cTrackParamsITS->Divide(3,ydiv);
87   
88   TCanvas *cTrackParamsITS1 = new TCanvas(Form("cTrackParamsITS1_%s",sConfig.Data()),Form("cTrackParamsITS1_%s",sConfig.Data()),1200,900/3.*ydiv);
89   cTrackParamsITS1->Divide(3,ydiv);
90   TCanvas *cTrackParamsITS = new TCanvas(Form("cTrackParamsITS_%s",sConfig.Data()),Form("cTrackParamsITS_%s",sConfig.Data()),4800,3600);
91   cTrackParamsITS->Divide(3,3);
92
93   TCanvas *cTrackParamsITS2 = new TCanvas(Form("cTrackParamsITS2_%s",sConfig.Data()),Form("cTrackParamsITS2_%s",sConfig.Data()),1200,900/3.*ydiv);
94   cTrackParamsITS2->Divide(3,ydiv);
95   
96   TCanvas *cEff = new TCanvas(Form("cEff_%s",sConfig.Data()),Form("cEff_%s",sConfig.Data()),1200,900);
97   //cEff->Divide(2,1);
98
99  
100   // legends
101   TLegend *l[nT0];
102
103
104
105   // draw T0 resolution
106   for(Int_t iT0 = 0; iT0 < nT0; iT0 ++){
107
108     cT0->cd(iT0+1);
109     TStatToolkit::DrawHistogram(Tracks,sT0[iT0].Data(),sSel.Data(),Form("hT0_%s_%d",sConfig.Data(),iT0),Form("%s",tT0[iT0].Data()),3);
110
111     //hT0[iT0]->Fit("gaus","","");
112     //l[iT0]= new TLegend(0.55,0.7,0.8,0.8,Form(""));
113     //myLegendSetUp(l[iT0],0.03);
114     //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));
115     //l[iT0]->Draw();
116
117   }
118
119
120   // draw T0 resolution (2D)
121   for(Int_t iT02D = 0; iT02D < nT02D; iT02D ++){
122
123
124     cT02D->cd(iT02D+1);
125     TStatToolkit::DrawHistogram(Tracks,sT02D[iT02D].Data(),sSel.Data(),Form("hT02D_%s_%d",sConfig.Data(),iT02D),Form("%s",tT02D[iT02D].Data()),3);
126
127   }
128
129   // draw Z0 resolution
130   for(Int_t iZ0 = 0; iZ0 < nZ0; iZ0 ++){
131
132     cZ0->cd(iZ0+1);
133     TStatToolkit::DrawHistogram(Tracks,sZ0[iZ0].Data(),sSel.Data(),Form("hZ0_%s_%d",sConfig.Data(),iZ0),Form("%s",tZ0[iZ0].Data()),3);
134
135   }
136
137   // draw track parameters
138   for(Int_t iTrackParams = 0; iTrackParams < nTrackParamsPlot ; iTrackParams ++){
139
140     cTrackParams->cd(iTrackParams+1);
141     if(inFileName.Contains("allClusters") && iTrackParams==nTrackParams-1) 
142       TStatToolkit::DrawHistogram(Tracks,sTrackParams[iTrackParams].Data(),sSel.Data(),Form("hTrackParams_%s_%d",sConfig.Data(),iTrackParams),Form("%s",tTrackParams[iTrackParams].Data()),5);
143     else
144       TStatToolkit::DrawHistogram(Tracks,sTrackParams[iTrackParams].Data(),sSel.Data(),Form("hTrackParams_%s_%d",sConfig.Data(),iTrackParams),Form("%s",tTrackParams[iTrackParams].Data()),6);
145
146   }
147
148
149   // draw track parameters at ITS outer layer
150   for(Int_t iTrackParamsITS = 0; iTrackParamsITS < nTrackParamsPlot; iTrackParamsITS ++){
151
152     cTrackParamsITS->cd(iTrackParamsITS+1);
153     TStatToolkit::DrawHistogram(Tracks,sTrackParamsITS[iTrackParamsITS].Data(),sSel.Data(),Form("hTrackParamsITS_%s_%d",sConfig.Data(),iTrackParamsITS),Form("%s",tTrackParamsITS[iTrackParamsITS].Data()),6);
154
155     cTrackParamsITS1->cd(iTrackParamsITS+1);
156     TStatToolkit::DrawHistogram(Tracks,sTrackParamsITS1[iTrackParamsITS].Data(),sSel.Data(),Form("hTrackParamsITS1_%s_%d",sConfig.Data(),iTrackParamsITS),Form("%s",tTrackParamsITS[iTrackParamsITS].Data()),6);
157
158     cTrackParamsITS2->cd(iTrackParamsITS+1);
159     TStatToolkit::DrawHistogram(Tracks,sTrackParamsITS2[iTrackParamsITS].Data(),sSel.Data(),Form("hTrackParamsITS2_%s_%d",sConfig.Data(),iTrackParamsITS),Form("%s",tTrackParamsITS[iTrackParamsITS].Data()),6);
160     
161   }
162
163
164   // draw cluster efficiency
165   if(inFileName.Contains("allClusters")){  
166     for(Int_t iEff = 0; iEff < nEff; iEff ++){
167       
168       //cEff->cd(iEff+1);
169       cEff->cd();
170       TStatToolkit::DrawHistogram(Tracks,sEff[iEff].Data(),sSel.Data(),Form("hEff_%s_%d",sConfig.Data(),iEff),Form("%s",tEff[iEff].Data()),3);   
171       
172     }
173   }
174   
175   // plots
176   if(doPlots){
177     TString outFileName = gSystem->BaseName(inFileName.Data());
178     outFileName.ReplaceAll(".root","");
179 //     cT0->SaveAs(Form("%s_T0.eps",outFileName.Data()));
180 //     cZ0->SaveAs(Form("%s_Z0.eps",outFileName.Data()));
181 //     cT02D->SaveAs(Form("%s_T02D.eps",outFileName.Data()));
182 //     cTrackParams->SaveAs(Form("%s_TrackParams.eps",outFileName.Data()));
183 //     cTrackParamsITS->SaveAs(Form("%s_TrackParamsITS.eps",outFileName.Data()));
184 //     if(inFileName.Contains("allClusters"))
185 //       cEff->SaveAs(Form("%s_Eff.eps",outFileName.Data()));
186
187     cT0->SaveAs(Form("%s_T0.png",outFileName.Data()));
188     cZ0->SaveAs(Form("%s_Z0.png",outFileName.Data()));
189     cT02D->SaveAs(Form("%s_T02D.png",outFileName.Data()));
190     cTrackParams->SaveAs(Form("%s_TrackParams.png",outFileName.Data()));
191     cTrackParamsITS->SaveAs(Form("%s_TrackParamsITS.png",outFileName.Data()));
192     cTrackParamsITS1->SaveAs(Form("%s_TrackParamsITS1.png",outFileName.Data()));
193     cTrackParamsITS2->SaveAs(Form("%s_TrackParamsITS2.png",outFileName.Data()));
194     if(inFileName.Contains("allClusters"))
195       cEff->SaveAs(Form("%s_Eff.eps",outFileName.Data()));
196
197   }
198 }
199
200 void myLegendSetUp(TLegend *currentLegend = NULL,Float_t currentTextSize=0.07){
201   currentLegend->SetTextFont(42);
202   currentLegend->SetBorderSize(0);
203   currentLegend->SetFillStyle(1);
204   currentLegend->SetFillColor(0);
205   currentLegend->SetMargin(0.25);
206   currentLegend->SetTextSize(currentTextSize);
207   currentLegend->SetEntrySeparation(0.5);
208   return;
209 }
210
211 void myHistoSetUp( TH1 *h = NULL, Int_t col = kBlack, Int_t mar = 20){
212
213   h->SetLineColor(col);
214   h->SetMarkerColor(col);
215   h->SetMarkerStyle(mar);
216
217 }
218