1 void SCdistortionsForTDRfinalAllGases(Double_t radiusScale=1.5, Int_t epsScale=1){
3 // do for one file (given by directory) the correction (specify the gas = iOmegaTau)
4 // use the integrate along drift line option
6 // 1. Initialzation form space charge maps
8 AliTPCSpaceCharge3D *spaceCharge = new AliTPCSpaceCharge3D;
9 const Double_t fgke0 = 8.854187817e-12; // vacuum permittivity [A·s/(V·m)]
11 // omega tau parameters and TF1
12 const Int_t nOmegaTau = 4;
13 Double_t omegaTau[nOmegaTau] = {0.32};
14 Double_t omegaTau[nOmegaTau] = {0.32,0.43,1.77,1.84};
15 TString tGas[nOmegaTau] = {"NeCO2_2","ArCO2","NeCF4","NeCF4_2"}; // CF4 is the same as CO2 here, but different omegaTau
16 TString sGas[nOmegaTau] = {"Ne-CO_{2}-N_{2} (90-10-5)","Ar-CO_{2} (90-10)","Ne-CF_{4} (90-10)","Ne-CF_{4} (80-20)"};
17 Int_t eps[nOmegaTau] = {20,10,20,20};
18 Int_t col[nOmegaTau] = {kBlack,kRed,kOrange-3,kGreen+2};
19 TF1 * fdiffR[nOmegaTau];
20 TF1 * fdiffPhiR[nOmegaTau];
21 TH1F * hdiffR[nOmegaTau];
22 TH1F * hdiffPhiR[nOmegaTau];
23 TH2F * hMap[nOmegaTau];
24 TLegend *legend = new TLegend(0.25,0.6,0.85,0.85,Form("#rho_{SC} ~ r^{-%.1f} for 50 kHz",radiusScale),"brNDC");
25 setupLegend(legend,0.05);
27 //use always the integrate option here
28 Double_t integrateStep = 1.;
30 TCanvas *cMap = new TCanvas("cMap","cMap",1200,900);
33 TCanvas *cOmegaTau = new TCanvas("cOmegaTau","cOmegaTau",1200,500);
34 cOmegaTau->Divide(2,1);
36 TString outfilename = Form("SCdistortions_SC_NeCO2_50kHz_radiusScaling%.0f_epsScaling%d",radiusScale,epsScale);
37 if(radiusScale>1.1 && radiusScale < 1.9) outfilename = Form("SCdistortions_SC_NeCO2_50kHz_radiusScaling%.1f_epsScaling%d",radiusScale,epsScale);
41 for(Int_t iOmegaTau = 0; iOmegaTau < nOmegaTau; ++iOmegaTau){
43 cMap->cd(iOmegaTau+1)->SetPhi(150);
48 if(radiusScale>1.1 && radiusScale < 1.9){
49 cout<<"Open file = "<<Form("/Users/physics/ALICE/TPCupgrade/SpaceCharge/Maps/SC_%s_eps%d_50kHz_radiusScaling%.1f_epsScaling%d/SpaceChargeMap.root",tGas[iOmegaTau].Data(),eps[iOmegaTau],radiusScale,epsScale)<<endl;
50 spaceCharge->SetSCDataFileName(Form("/Users/physics/ALICE/TPCupgrade/SpaceCharge/Maps/SC_%s_eps%d_50kHz_radiusScaling%.1f_epsScaling%d/SpaceChargeMap.root",tGas[iOmegaTau].Data(),eps[iOmegaTau],radiusScale,epsScale));
53 cout<<"Open file = "<<Form("/Users/physics/ALICE/TPCupgrade/SpaceCharge/Maps/SC_%s_eps%d_50kHz_radiusScaling%.0f_epsScaling%d/SpaceChargeMap.root",tGas[iOmegaTau].Data(),eps[iOmegaTau],radiusScale,epsScale)<<endl;
54 spaceCharge->SetSCDataFileName(Form("/Users/physics/ALICE/TPCupgrade/SpaceCharge/Maps/SC_%s_eps%d_50kHz_radiusScaling%.0f_epsScaling%d/SpaceChargeMap.root",tGas[iOmegaTau].Data(),eps[iOmegaTau],radiusScale,epsScale));
57 // select omegaTau value
59 spaceCharge->SetOmegaTauT1T2(omegaTau[iOmegaTau],1.00,0.99); // Ne CO2 N2 (90-10-5)
61 else if(iOmegaTau == 1){
62 spaceCharge->SetOmegaTauT1T2(omegaTau[iOmegaTau],0.99,1.03); // Ar CO2 (90-10)
64 else if(iOmegaTau == 2){
65 spaceCharge->SetOmegaTauT1T2(omegaTau[iOmegaTau],0.41,0.70); // Ne CF4 (90-10)
67 else if(iOmegaTau == 3){
68 spaceCharge->SetOmegaTauT1T2(omegaTau[iOmegaTau],0.41,0.70); // Ne CF4 (80-20) (not in table use same as for other)
71 cout<<"wrong gas (iOmegaTau = "<<iOmegaTau<<")"<<endl;
76 // init and add to corrections
77 spaceCharge->InitSpaceCharge3DDistortion();
78 spaceCharge->AddVisualCorrection(spaceCharge,1);
82 hMap[iOmegaTau] = (TH2F*)spaceCharge->CreateHistoSCinZR(0.);
83 hMap[iOmegaTau]->Scale(fgke0/1e6*1e15); // C/m^3/e0 --> fC/cm^3
84 hMap[iOmegaTau]->GetXaxis()->SetTitle("z (cm)");
85 hMap[iOmegaTau]->GetYaxis()->SetTitle("r (cm)");
86 hMap[iOmegaTau]->GetZaxis()->SetTitle("#rho_{SC} (fC/cm^{3})");
87 hMap[iOmegaTau]->SetTitleSize(0.05,"XYZ");
88 hMap[iOmegaTau]->SetTitleOffset(1.5,"XY");
89 hMap[iOmegaTau]->SetTitleOffset(0.9,"Z");
90 hMap[iOmegaTau]->SetTitle(Form("%s: 50 kHz, #varepsilon = %d",sGas[iOmegaTau].Data(),eps[iOmegaTau]));
91 hMap[iOmegaTau]->DrawCopy("surf2fb");
95 // 2. get TF1 with differences
97 // get corrections (at y = 0 and z = 10) for visual correction 1 (last argument)
101 fdiffR[iOmegaTau] = new TF1(Form("fdiffR%d",iOmegaTau), Form("AliTPCCorrection::GetDistXYZIntegrateZ(x,0,10,0,1,%f)",integrateStep),85,245);
102 fdiffPhiR[iOmegaTau] = new TF1(Form("fdiffPhiR%d",iOmegaTau), Form("AliTPCCorrection::GetDistXYZIntegrateZ(x,0,10,1,1,%f)",integrateStep),85,245);
104 hdiffR[iOmegaTau] = (TH1F*)fdiffR[iOmegaTau]->GetHistogram();
105 hdiffPhiR[iOmegaTau] = (TH1F*)fdiffPhiR[iOmegaTau]->GetHistogram();
108 hdiffR[iOmegaTau]->SetName(fdiffR[iOmegaTau]->GetName());
109 hdiffPhiR[iOmegaTau]->SetName(fdiffPhiR[iOmegaTau]->GetName());
114 // 3. Plot and store TH1Fs
117 hdiffR[iOmegaTau]->GetXaxis()->SetTitle("r (cm)");
118 hdiffPhiR[iOmegaTau]->GetXaxis()->SetTitle("r (cm)");
120 hdiffR[iOmegaTau]->GetYaxis()->SetTitle("dr (cm)");
121 hdiffPhiR[iOmegaTau]->GetYaxis()->SetTitle("d(r#varphi) (cm)");
123 hdiffR[iOmegaTau]->SetTitle("dr (cm)");
124 hdiffPhiR[iOmegaTau]->SetTitle("d(r#varphi) (cm)");
126 hdiffR[iOmegaTau]->SetMarkerColor(col[iOmegaTau]);
127 hdiffPhiR[iOmegaTau]->SetMarkerColor(col[iOmegaTau]);
129 hdiffR[iOmegaTau]->SetLineColor(col[iOmegaTau]);
130 hdiffPhiR[iOmegaTau]->SetLineColor(col[iOmegaTau]);
132 hdiffR[iOmegaTau]->SetLineWidth(2);
133 hdiffPhiR[iOmegaTau]->SetLineWidth(2);
135 hdiffR[iOmegaTau]->SetFillColor(col[iOmegaTau]);
136 hdiffPhiR[iOmegaTau]->SetFillColor(col[iOmegaTau]);
138 hdiffR[iOmegaTau]->SetMaximum(35);
139 hdiffR[iOmegaTau]->SetMinimum(-25);
140 hdiffPhiR[iOmegaTau]->SetMaximum(10);
141 hdiffPhiR[iOmegaTau]->SetMinimum(-22);
143 hdiffR[iOmegaTau]->SetTitleSize(0.05,"XYZ");
144 hdiffPhiR[iOmegaTau]->SetTitleSize(0.05,"XYZ");
146 legend->AddEntry(hdiffR[iOmegaTau],Form("%s (#varepsilon = %d)",sGas[iOmegaTau].Data(),eps[iOmegaTau]),"lp");
150 hdiffR[iOmegaTau]->DrawCopy("lf");
152 hdiffR[iOmegaTau]->DrawCopy("lf,same");
154 if(iOmegaTau == nOmegaTau-1)
160 hdiffPhiR[iOmegaTau]->DrawCopy("fl");
162 hdiffPhiR[iOmegaTau]->DrawCopy("fl,same");
167 cMap->SaveAs(Form("%s_SC_TDRallGases.eps",outfilename.Data()));
168 cMap->SaveAs(Form("%s_SC_TDRallGases.pdf",outfilename.Data()));
169 cOmegaTau->SaveAs(Form("%s_Distortions_TDRallGases.eps",outfilename.Data()));
170 cOmegaTau->SaveAs(Form("%s_Distortions_TDRallGases.pdf",outfilename.Data()));
174 //____________________________________________________________//
175 void setupLegend(TLegend *currentLegend=0,float currentTextSize=0.07){
176 currentLegend->SetTextFont(42);
177 currentLegend->SetBorderSize(0);
178 currentLegend->SetFillStyle(0);
179 currentLegend->SetFillColor(0);
180 currentLegend->SetMargin(0.25);
181 currentLegend->SetTextSize(currentTextSize);
182 currentLegend->SetEntrySeparation(0.5);