]>
Commit | Line | Data |
---|---|---|
402a4145 | 1 | |
2 | ||
3 | void epsilonScanFineBinningForPerformanceNote(Int_t radiusScale=1, Int_t epsScale=1,Int_t iOmegaTau = 0, Double_t x = 85., Double_t y = 0., Double_t z = 10.,Double_t integrateStep = 0.,Bool_t bLowE = kFALSE){ | |
4 | // | |
5 | // do for one gas (with omegaTau values accordingly) the correction | |
6 | // use the integrate along drift line option if integrateStep > 0 | |
7 | // else old method | |
8 | // | |
9 | // 1. Initialzation form space charge maps | |
10 | // | |
11 | AliTPCSpaceCharge3D *spaceCharge = new AliTPCSpaceCharge3D; | |
12 | ||
13 | // omega tau parameters and TF1 | |
14 | const Int_t nOmegaTau = 1; | |
15 | Double_t omegaTau[nOmegaTau] = {0.32}; | |
16 | TString tGas[nOmegaTau] = {"NeCO2_2"}; | |
17 | TString tGasOut[nOmegaTau] = {"NeCO2_2"}; | |
18 | TString sGas[nOmegaTau] = {"Ne-CO_{2}-N_{2} (90-10-5)"}; | |
19 | TString sLowE = ""; | |
20 | //if(bLowE) sLowE = "_lowE"; | |
21 | if(bLowE) sLowE = "_lowE2"; //second iteration | |
22 | ||
23 | const Int_t nEps = 51; | |
24 | Double_t epsilon[nEps]; | |
25 | for(Int_t iEps = 0; iEps < nEps; iEps++){ | |
26 | epsilon[iEps] = (Double_t)iEps; | |
27 | } | |
28 | TH1F *hR = new TH1F("hR",Form("distortion at x = %.0f, y = %.0f, z = %.0f",x,y,z),nEps,epsilon[0],epsilon[nEps-1]+1); | |
29 | TH1F *hPhiR = new TH1F("hPhiR",Form("distortion at x = %.0f, y = %.0f, z = %.0f",x,y,z),nEps,epsilon[0],epsilon[nEps-1]+1); | |
30 | ||
31 | //use always the integrate option here | |
32 | Double_t rate = 50.; | |
33 | ||
34 | for(Int_t iEps = 0; iEps < nEps; iEps++){ | |
35 | ||
36 | // select gas | |
37 | // 0 = NeCO2N2 | |
38 | cout<<"Open file = "<<Form("/Users/physics/ALICE/TPCupgrade/SpaceCharge/Maps/SC_%s_eps%.0f_50kHz_radiusScaling%d_epsScaling%d/SpaceChargeMap.root",tGas[iOmegaTau].Data(),epsilon[iEps],radiusScale,epsScale)<<endl; | |
39 | spaceCharge->SetSCDataFileName(Form("/Users/physics/ALICE/TPCupgrade/SpaceCharge/Maps/SC_%s_eps%.0f_50kHz_radiusScaling%d_epsScaling%d/SpaceChargeMap.root",tGas[iOmegaTau].Data(),epsilon[iEps],radiusScale,epsScale)); | |
40 | ||
41 | // select omegaTau value | |
42 | if(iOmegaTau == 0){ | |
43 | spaceCharge->SetOmegaTauT1T2(omegaTau[iOmegaTau],1,0.99); // Ne CO2 N2 | |
44 | } | |
45 | ||
46 | // | |
47 | // init and add to corrections | |
48 | spaceCharge->InitSpaceCharge3DDistortion(); | |
49 | spaceCharge->AddVisualCorrection(spaceCharge,1); | |
50 | ||
51 | // | |
52 | // 2. get TH1F with differences | |
53 | // | |
54 | // get corrections (at x, y and z) for visual correction 1 (last argument) | |
55 | // 0 = dR | |
56 | // 1 = dPhiR | |
57 | // 2 = dZ? | |
58 | if(integrateStep < 0.0001){// == 0. --> old method | |
59 | hR->Fill(epsilon[iEps],AliTPCCorrection::GetDistXYZ(x,y,z,0,1)); | |
60 | hPhiR->Fill(epsilon[iEps],AliTPCCorrection::GetDistXYZ(x,y,z,1,1)); | |
61 | } | |
62 | else{// > 0. --> following driftlines | |
63 | hR->Fill(epsilon[iEps],AliTPCCorrection::GetDistXYZIntegrateZ(x,y,z,0,1,integrateStep)); | |
64 | hPhiR->Fill(epsilon[iEps],AliTPCCorrection::GetDistXYZIntegrateZ(x,y,z,1,1,integrateStep)); | |
65 | } | |
66 | } | |
67 | ||
68 | ||
69 | // | |
70 | // 3. Plot and store TH1Fs | |
71 | // | |
72 | ||
73 | TCanvas *cEpsilon = new TCanvas("cEpsilon","cEpsilon",1200,500); | |
74 | cEpsilon->Divide(2,1); | |
75 | ||
76 | TLegend *legend = new TLegend(0.6,0.3,0.85,0.75,"","brNDC"); | |
77 | setupLegend(legend,0.04); | |
78 | ||
79 | TString outfilename = Form("epsilonScanFineBinning_performanceNote_radiusScaling%d_epsScaling%d_%s%s_x%0.f_y%.0f_z%.0f_int%.0f.root",radiusScale,epsScale,tGasOut[iOmegaTau].Data(),sLowE.Data(),x,y,z,integrateStep); | |
80 | TFile *fOut = TFile::Open(Form("%s",outfilename.Data()),"recreate"); | |
81 | ||
82 | cEpsilon->cd(1); | |
83 | hR->Draw(); | |
84 | ||
85 | cEpsilon->cd(2); | |
86 | hPhiR->Draw(); | |
87 | ||
88 | ||
89 | cEpsilon->SaveAs(Form("epsilonScanFineBinning_performanceNote_radiusScaling%d_epsScaling%d_%s%s_x%0.f_y%.0f_z%.0f_int%.0f.eps",radiusScale,epsScale,tGasOut[iOmegaTau].Data(),sLowE.Data(),x,y,z,integrateStep)); | |
90 | ||
91 | hR->Write(); | |
92 | hPhiR->Write(); | |
93 | fOut->Close(); | |
94 | } | |
95 | ||
96 | void epsilonScanFineBinningPlotOnly(Int_t radiusScale=1, Int_t epsScale=1,Int_t iOmegaTau = 0, Double_t x = 85., Double_t y = 0., Double_t z = 10.){ | |
97 | // | |
98 | // do for one gas (with omegaTau values accordingly) the correction | |
99 | // use the integrate along drift line option | |
100 | ||
101 | gStyle->SetOptStat(0); | |
102 | ||
103 | // | |
104 | // 1. Plot and store TH1Fs | |
105 | // | |
106 | ||
107 | // omega tau parameters and TF1 | |
108 | const Int_t nOmegaTau = 1; | |
109 | Double_t omegaTau[nOmegaTau] = {0.32}; | |
110 | TString tGas[nOmegaTau] = {"NeCO2_2"}; | |
111 | TString sGas[nOmegaTau] = {"Ne/CO_{2}/N_{2} (90-10-5)"}; | |
112 | ||
113 | ||
114 | TCanvas *cEpsilon = new TCanvas("cEpsilon","cEpsilon",1200,500); | |
115 | cEpsilon->Divide(2,1); | |
116 | ||
117 | TLegend *legend = new TLegend(0.15,0.6,0.6,0.85,Form("%s: 50 kHz",sGas[iOmegaTau].Data(),"brNDC")); | |
118 | setupLegend(legend,0.05); | |
119 | ||
120 | TString infilename0 = Form("epsilonScanFineBinning_performanceNote_radiusScaling%d_epsScaling%d_%s_x%0.f_y%.0f_z%.0f_int0.root",radiusScale,epsScale,tGas[iOmegaTau].Data(),x,y,z); | |
121 | TString infilename1 = Form("epsilonScanFineBinning_performanceNote_radiusScaling%d_epsScaling%d_%s_x%0.f_y%.0f_z%.0f_int1.root",radiusScale,epsScale,tGas[iOmegaTau].Data(),x,y,z); | |
122 | TFile *fIn0 = TFile::Open(Form("%s",infilename0.Data()),"read"); | |
123 | TFile *fIn1 = TFile::Open(Form("%s",infilename1.Data()),"read"); | |
124 | ||
125 | TH1F *hR0 = (TH1F*)fIn0->Get("hR"); | |
126 | TH1F *hPhiR0 = (TH1F*)fIn0->Get("hPhiR"); | |
127 | ||
128 | TH1F *hR1 = (TH1F*)fIn1->Get("hR"); | |
129 | TH1F *hPhiR1 = (TH1F*)fIn1->Get("hPhiR"); | |
130 | ||
131 | hR0->SetTitle(Form("x = %.0f, y = %.0f, z = %.0f",x,y,z)); | |
132 | hPhiR0->SetTitle(Form("x = %.0f, y = %.0f, z = %.0f",x,y,z)); | |
133 | ||
134 | hR1->SetTitle(Form("x = %.0f, y = %.0f, z = %.0f",x,y,z)); | |
135 | hPhiR1->SetTitle(Form("x = %.0f, y = %.0f, z = %.0f",x,y,z)); | |
136 | ||
137 | cEpsilon->cd(1); | |
138 | hR0->GetXaxis()->SetTitle("#varepsilon"); | |
139 | hR0->GetYaxis()->SetTitle("dr (cm)"); | |
140 | hR0->SetLineWidth(2); | |
141 | hR0->DrawCopy("lp"); | |
142 | hR1->SetLineWidth(2); | |
143 | hR1->SetLineColor(2); | |
144 | hR1->DrawCopy("lp,same"); | |
145 | ||
146 | legend->AddEntry(hR0,"linear","l"); | |
147 | legend->AddEntry(hR1,"integrated in z","l"); | |
148 | ||
149 | legend->Draw(); | |
150 | ||
151 | cEpsilon->cd(2); | |
152 | hPhiR0->GetXaxis()->SetTitle("#varepsilon"); | |
153 | hPhiR0->GetYaxis()->SetTitle("d(r#varphi) (cm)"); | |
154 | hPhiR0->SetLineWidth(2); | |
155 | hPhiR0->DrawCopy("lp"); | |
156 | hPhiR1->SetLineWidth(2); | |
157 | hPhiR1->SetLineColor(2); | |
158 | hPhiR1->DrawCopy("lp,same"); | |
159 | ||
160 | ||
161 | cEpsilon->SaveAs(Form("epsilonScanFineBinning_performanceNote_radiusScaling%d_epsScaling%d_%s_x%0.f_y%.0f_z%.0f.eps",radiusScale,epsScale,tGas[iOmegaTau].Data(),x,y,z)); | |
162 | cEpsilon->SaveAs(Form("epsilonScanFineBinning_performanceNote_radiusScaling%d_epsScaling%d_%s_x%0.f_y%.0f_z%.0f.pdf",radiusScale,epsScale,tGas[iOmegaTau].Data(),x,y,z)); | |
163 | cEpsilon->SaveAs(Form("epsilonScanFineBinning_performanceNote_radiusScaling%d_epsScaling%d_%s_x%0.f_y%.0f_z%.0f.png",radiusScale,epsScale,tGas[iOmegaTau].Data(),x,y,z)); | |
164 | ||
165 | fIn0->Close(); | |
166 | fIn1->Close(); | |
167 | } | |
168 | ||
169 | ||
170 | ||
171 | ||
172 | ||
173 | //____________________________________________________________// | |
174 | void setupLegend(TLegend *currentLegend=0,float currentTextSize=0.07){ | |
175 | currentLegend->SetTextFont(42); | |
176 | currentLegend->SetBorderSize(0); | |
177 | currentLegend->SetFillStyle(0); | |
178 | currentLegend->SetFillColor(0); | |
179 | currentLegend->SetMargin(0.25); | |
180 | currentLegend->SetTextSize(currentTextSize); | |
181 | currentLegend->SetEntrySeparation(0.5); | |
182 | return; | |
183 | } |