]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TPC/Upgrade/macros/SCdistortionsForTDRfinalAllGases.C
c3544fcbe973ced66f9a453ed5b76c434eee8335
[u/mrichter/AliRoot.git] / TPC / Upgrade / macros / SCdistortionsForTDRfinalAllGases.C
1 void SCdistortionsForTDRfinalAllGases(Double_t radiusScale=1.5, Int_t epsScale=1){
2   //
3   // do for one file (given by directory) the correction (specify the gas = iOmegaTau)
4   // use the integrate along drift line option
5   //
6   // 1. Initialzation form space charge maps
7   //
8   AliTPCSpaceCharge3D *spaceCharge = new AliTPCSpaceCharge3D;
9   const Double_t fgke0 = 8.854187817e-12; // vacuum permittivity [A·s/(V·m)]
10
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);
26
27   //use always the integrate option here
28   Double_t integrateStep = 1.;
29
30   TCanvas *cMap = new TCanvas("cMap","cMap",1200,900);
31   cMap->Divide(2,2);
32
33   TCanvas *cOmegaTau = new TCanvas("cOmegaTau","cOmegaTau",1200,500);
34   cOmegaTau->Divide(2,1);
35
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);
38
39
40   //loop over gases
41   for(Int_t iOmegaTau = 0; iOmegaTau < nOmegaTau; ++iOmegaTau){
42
43     cMap->cd(iOmegaTau+1)->SetPhi(150);
44     
45     // select gas 
46     // 0 = NeCO2N2 
47
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));
51     }
52     else{
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));
55     }
56
57   // select omegaTau value
58   if(iOmegaTau ==  0){
59     spaceCharge->SetOmegaTauT1T2(omegaTau[iOmegaTau],1.00,0.99); // Ne CO2 N2 (90-10-5)
60   }
61   else if(iOmegaTau ==  1){
62     spaceCharge->SetOmegaTauT1T2(omegaTau[iOmegaTau],0.99,1.03); // Ar CO2 (90-10)
63   }
64   else if(iOmegaTau == 2){
65     spaceCharge->SetOmegaTauT1T2(omegaTau[iOmegaTau],0.41,0.70); // Ne CF4 (90-10)
66   }
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)
69   }
70   else{
71     cout<<"wrong gas (iOmegaTau = "<<iOmegaTau<<")"<<endl;
72     return;
73   }
74     //
75     //
76     // init and add to corrections
77     spaceCharge->InitSpaceCharge3DDistortion();
78     spaceCharge->AddVisualCorrection(spaceCharge,1);
79     
80     // draw the map
81     
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");
92     
93     
94     //
95     // 2. get TF1 with differences 
96     //
97     // get corrections (at y = 0 and z = 10) for visual correction 1 (last argument)
98     // 0 = dR
99     // 1 = dPhiR
100     // 2 = dZ?    
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);
103     
104     hdiffR[iOmegaTau] = (TH1F*)fdiffR[iOmegaTau]->GetHistogram();
105     hdiffPhiR[iOmegaTau] = (TH1F*)fdiffPhiR[iOmegaTau]->GetHistogram();
106     
107     
108     hdiffR[iOmegaTau]->SetName(fdiffR[iOmegaTau]->GetName());
109     hdiffPhiR[iOmegaTau]->SetName(fdiffPhiR[iOmegaTau]->GetName());
110     
111     
112     
113     //
114     // 3. Plot and store TH1Fs
115     //
116     
117     hdiffR[iOmegaTau]->GetXaxis()->SetTitle("r (cm)");
118     hdiffPhiR[iOmegaTau]->GetXaxis()->SetTitle("r (cm)");
119     
120     hdiffR[iOmegaTau]->GetYaxis()->SetTitle("dr (cm)");
121     hdiffPhiR[iOmegaTau]->GetYaxis()->SetTitle("d(r#varphi) (cm)");
122     
123     hdiffR[iOmegaTau]->SetTitle("dr (cm)");
124     hdiffPhiR[iOmegaTau]->SetTitle("d(r#varphi) (cm)");
125   
126     hdiffR[iOmegaTau]->SetMarkerColor(col[iOmegaTau]);
127     hdiffPhiR[iOmegaTau]->SetMarkerColor(col[iOmegaTau]);
128     
129     hdiffR[iOmegaTau]->SetLineColor(col[iOmegaTau]);
130     hdiffPhiR[iOmegaTau]->SetLineColor(col[iOmegaTau]);
131
132     hdiffR[iOmegaTau]->SetLineWidth(2);
133     hdiffPhiR[iOmegaTau]->SetLineWidth(2);
134     
135     hdiffR[iOmegaTau]->SetFillColor(col[iOmegaTau]);
136     hdiffPhiR[iOmegaTau]->SetFillColor(col[iOmegaTau]);
137
138     hdiffR[iOmegaTau]->SetMaximum(35);
139     hdiffR[iOmegaTau]->SetMinimum(-25);
140     hdiffPhiR[iOmegaTau]->SetMaximum(10);
141     hdiffPhiR[iOmegaTau]->SetMinimum(-22);
142
143     hdiffR[iOmegaTau]->SetTitleSize(0.05,"XYZ");
144     hdiffPhiR[iOmegaTau]->SetTitleSize(0.05,"XYZ");
145     
146     legend->AddEntry(hdiffR[iOmegaTau],Form("%s (#varepsilon = %d)",sGas[iOmegaTau].Data(),eps[iOmegaTau]),"lp");
147     
148     cOmegaTau->cd(1);
149     if(iOmegaTau==0)
150       hdiffR[iOmegaTau]->DrawCopy("lf");
151     else{
152       hdiffR[iOmegaTau]->DrawCopy("lf,same");
153     }
154     if(iOmegaTau == nOmegaTau-1)
155       legend->Draw();
156     
157
158     cOmegaTau->cd(2);
159     if(iOmegaTau==0)
160       hdiffPhiR[iOmegaTau]->DrawCopy("fl");
161     else{
162       hdiffPhiR[iOmegaTau]->DrawCopy("fl,same");
163     }
164   }
165   
166   
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()));
171 }
172
173   
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);
183   return;
184 }