]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TPC/Upgrade/macros/toyMCRecPlots.C
o implement seeding
[u/mrichter/AliRoot.git] / TPC / Upgrade / 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
15   // parameters
16   const Int_t nT0          = 2;
17   const Int_t nT02D        = 2;
18   const Int_t nZ0          = 2;
19   const Int_t nTrackParams = 9;
20   const Int_t nEff         = 1;
21
22   Int_t col = kBlack;
23
24   TString sT0[nT0] = {"fTime0-t0","fTime0-t0+z0*TMath::Sign(1,tOrig.Eta())/vDrift"};
25   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]"};
26   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]"};
27   TString sZ0[nZ0] = {"(fTime0-t0)*vDrift","(fTime0-t0+z0*TMath::Sign(1,tOrig.Eta())/vDrift)*vDrift"};
28   TString sEff[nEff] = {"nSeedClustersID/nClustersMC:nSeedClusters/nClustersMC"};
29
30
31   TString tT0[nT0] = {"T_{0} resolution","intrinsic T_{0} resolution"};
32   TString tT02D[nT0] = {"intrinsic T_{0} resolution vs. tan#lambda","intrinsic T_{0} resolution vs. 1/p_{T}"};
33   TString tTrackParams[nTrackParams] = {"local y","z","sin inclination angle","tan#lambda","1/p_{T}","#alpha","X","Y","Z"};
34   TString tZ0[nZ0] = {"Z_{0} resolution","intrinsic Z_{0} resolution"};
35   TString tEff[nEff] = {"nSeedClustersID/nClustersMC:nSeedClusters/nClustersMC"};
36
37
38   TString sSel = "fTime0>-1"; // seeding successful
39
40   // retrieve configuration string
41   TPRegexp reg(".*([0-9]_[0-9]_[0-9]_[0-9]{3}_[0-9]{2}).*debug.root");
42   TObjArray *arrMatch=0x0;
43   arrMatch=reg.MatchS(inFileName);
44   TString sConfig = arrMatch->At(1)->GetName();
45    
46   // get file
47   TFile *fIn  = TFile::Open(inFileName.Data(),"READ");
48   if(!fIn){
49     Printf("No file %s found",inFileName.Data());
50     return;
51   }
52
53   // get tree
54   TTree *Tracks = fIn->Get("Tracks");
55   if(!Tracks){
56     Printf("No TTree found");
57     return;
58   }
59
60  // output canvases
61   TCanvas *cT0 = new TCanvas(Form("cT0_%s",sConfig.Data()),Form("cT0_%s",sConfig.Data()),1200,500);
62   cT0->Divide(2,1);
63
64   TCanvas *cT02D = new TCanvas(Form("cT02D_%s",sConfig.Data()),Form("cT02D_%s",sConfig.Data()),1200,500);
65   cT02D->Divide(2,1);
66
67   TCanvas *cZ0 = new TCanvas(Form("cZ0_%s",sConfig.Data()),Form("cZ0_%s",sConfig.Data()),1200,500);
68   cZ0->Divide(2,1);
69
70   TCanvas *cTrackParams = new TCanvas(Form("cTrackParams_%s",sConfig.Data()),Form("cTrackParams_%s",sConfig.Data()),1200,900);
71   cTrackParams->Divide(3,3);
72
73   TCanvas *cEff = new TCanvas(Form("cEff_%s",sConfig.Data()),Form("cEff_%s",sConfig.Data()),1200,900);
74   //cEff->Divide(2,1);
75
76  
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);
86     TStatToolkit::DrawHistogram(Tracks,sT0[iT0].Data(),sSel.Data(),Form("hT0_%s_%d",sConfig.Data(),iT0),Form("%s",tT0[iT0].Data()),3);
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
100
101     cT02D->cd(iT02D+1);
102     TStatToolkit::DrawHistogram(Tracks,sT02D[iT02D].Data(),sSel.Data(),Form("hT02D_%s_%d",sConfig.Data(),iT02D),Form("%s",tT02D[iT02D].Data()),3);
103
104   }
105
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   }
113
114   // draw track parameters
115   for(Int_t iTrackParams = 0; iTrackParams < nTrackParams; iTrackParams ++){
116
117     cTrackParams->cd(iTrackParams+1);
118     if(inFileName.Contains("allClusters") && iTrackParams==nTrackParams-1) 
119       TStatToolkit::DrawHistogram(Tracks,sTrackParams[iTrackParams].Data(),sSel.Data(),Form("hTrackParams_%s_%d",sConfig.Data(),iTrackParams),Form("%s",tTrackParams[iTrackParams].Data()),5);
120     else
121       TStatToolkit::DrawHistogram(Tracks,sTrackParams[iTrackParams].Data(),sSel.Data(),Form("hTrackParams_%s_%d",sConfig.Data(),iTrackParams),Form("%s",tTrackParams[iTrackParams].Data()),3);
122
123   }
124
125   // draw cluster efficiency
126   for(Int_t iEff = 0; iEff < nEff; iEff ++){
127     
128     //cEff->cd(iEff+1);
129     cEff->cd();
130     TStatToolkit::DrawHistogram(Tracks,sEff[iEff].Data(),sSel.Data(),Form("hEff_%s_%d",sConfig.Data(),iEff),Form("%s",tEff[iEff].Data()),3);
131     
132
133   }
134   
135   // plots
136   if(doPlots){
137     TString outFileName = gSystem->BaseName(inFileName.Data());
138     outFileName.ReplaceAll(".root","");
139     cT0->SaveAs(Form("%s_T0.eps",outFileName.Data()));
140     cZ0->SaveAs(Form("%s_Z0.eps",outFileName.Data()));
141     cT02D->SaveAs(Form("%s_T02D.eps",outFileName.Data()));
142     cTrackParams->SaveAs(Form("%s_TrackParams.eps",outFileName.Data()));
143     cEff->SaveAs(Form("%s_Eff.eps",outFileName.Data()));
144
145     cT0->SaveAs(Form("%s_T0.png",outFileName.Data()));
146     cZ0->SaveAs(Form("%s_Z0.png",outFileName.Data()));
147     cT02D->SaveAs(Form("%s_T02D.png",outFileName.Data()));
148     cTrackParams->SaveAs(Form("%s_TrackParams.png",outFileName.Data()));
149     cEff->SaveAs(Form("%s_Eff.eps",outFileName.Data()));
150
151   }
152 }
153
154 void myLegendSetUp(TLegend *currentLegend = NULL,Float_t currentTextSize=0.07){
155   currentLegend->SetTextFont(42);
156   currentLegend->SetBorderSize(0);
157   currentLegend->SetFillStyle(1);
158   currentLegend->SetFillColor(0);
159   currentLegend->SetMargin(0.25);
160   currentLegend->SetTextSize(currentTextSize);
161   currentLegend->SetEntrySeparation(0.5);
162   return;
163 }
164
165 void myHistoSetUp( TH1 *h = NULL, Int_t col = kBlack, Int_t mar = 20){
166
167   h->SetLineColor(col);
168   h->SetMarkerColor(col);
169   h->SetMarkerStyle(mar);
170
171 }
172