ROOT logo
void SCdistortionsForTDRfinalAllGases(Double_t radiusScale=1.5, Int_t epsScale=1){
  //
  // do for one file (given by directory) the correction (specify the gas = iOmegaTau)
  // use the integrate along drift line option
  //
  // 1. Initialzation form space charge maps
  //
  AliTPCSpaceCharge3D *spaceCharge = new AliTPCSpaceCharge3D;
  const Double_t fgke0 = 8.854187817e-12; // vacuum permittivity [A·s/(V·m)]

  // omega tau parameters and TF1
  const Int_t nOmegaTau = 4;
  Double_t omegaTau[nOmegaTau] = {0.32};
  Double_t omegaTau[nOmegaTau] = {0.32,0.43,1.77,1.84};
  TString tGas[nOmegaTau] = {"NeCO2_2","ArCO2","NeCF4","NeCF4_2"}; // CF4 is the same as CO2 here, but different omegaTau
  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)"};
  Int_t eps[nOmegaTau] = {20,10,20,20};
  Int_t col[nOmegaTau] = {kBlack,kRed,kOrange-3,kGreen+2};
  TF1 * fdiffR[nOmegaTau];
  TF1 * fdiffPhiR[nOmegaTau];
  TH1F * hdiffR[nOmegaTau];
  TH1F * hdiffPhiR[nOmegaTau];
  TH2F * hMap[nOmegaTau];
  TLegend *legend = new TLegend(0.25,0.6,0.85,0.85,Form("#rho_{SC} ~ r^{-%.1f} for 50 kHz",radiusScale),"brNDC");
  setupLegend(legend,0.05);

  //use always the integrate option here
  Double_t integrateStep = 1.;

  TCanvas *cMap = new TCanvas("cMap","cMap",1200,900);
  cMap->Divide(2,2);

  TCanvas *cOmegaTau = new TCanvas("cOmegaTau","cOmegaTau",1200,500);
  cOmegaTau->Divide(2,1);

  TString outfilename = Form("SCdistortions_SC_NeCO2_50kHz_radiusScaling%.0f_epsScaling%d",radiusScale,epsScale);
  if(radiusScale>1.1 && radiusScale < 1.9) outfilename = Form("SCdistortions_SC_NeCO2_50kHz_radiusScaling%.1f_epsScaling%d",radiusScale,epsScale);


  //loop over gases
  for(Int_t iOmegaTau = 0; iOmegaTau < nOmegaTau; ++iOmegaTau){

    cMap->cd(iOmegaTau+1)->SetPhi(150);
    
    // select gas 
    // 0 = NeCO2N2 

    if(radiusScale>1.1 && radiusScale < 1.9){
      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;
      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));
    }
    else{
      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;
      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));
    }

  // select omegaTau value
  if(iOmegaTau ==  0){
    spaceCharge->SetOmegaTauT1T2(omegaTau[iOmegaTau],1.00,0.99); // Ne CO2 N2 (90-10-5)
  }
  else if(iOmegaTau ==  1){
    spaceCharge->SetOmegaTauT1T2(omegaTau[iOmegaTau],0.99,1.03); // Ar CO2 (90-10)
  }
  else if(iOmegaTau == 2){
    spaceCharge->SetOmegaTauT1T2(omegaTau[iOmegaTau],0.41,0.70); // Ne CF4 (90-10)
  }
  else if(iOmegaTau == 3){
    spaceCharge->SetOmegaTauT1T2(omegaTau[iOmegaTau],0.41,0.70); // Ne CF4 (80-20) (not in table use same as for other)
  }
  else{
    cout<<"wrong gas (iOmegaTau = "<<iOmegaTau<<")"<<endl;
    return;
  }
    //
    //
    // init and add to corrections
    spaceCharge->InitSpaceCharge3DDistortion();
    spaceCharge->AddVisualCorrection(spaceCharge,1);
    
    // draw the map
    
    hMap[iOmegaTau] = (TH2F*)spaceCharge->CreateHistoSCinZR(0.);
    hMap[iOmegaTau]->Scale(fgke0/1e6*1e15); // C/m^3/e0 --> fC/cm^3
    hMap[iOmegaTau]->GetXaxis()->SetTitle("z (cm)");
    hMap[iOmegaTau]->GetYaxis()->SetTitle("r (cm)");
    hMap[iOmegaTau]->GetZaxis()->SetTitle("#rho_{SC} (fC/cm^{3})");
    hMap[iOmegaTau]->SetTitleSize(0.05,"XYZ");
    hMap[iOmegaTau]->SetTitleOffset(1.5,"XY");
    hMap[iOmegaTau]->SetTitleOffset(0.9,"Z");
    hMap[iOmegaTau]->SetTitle(Form("%s: 50 kHz, #varepsilon = %d",sGas[iOmegaTau].Data(),eps[iOmegaTau]));
    hMap[iOmegaTau]->DrawCopy("surf2fb");
    
    
    //
    // 2. get TF1 with differences 
    //
    // get corrections (at y = 0 and z = 10) for visual correction 1 (last argument)
    // 0 = dR
    // 1 = dPhiR
    // 2 = dZ?    
    fdiffR[iOmegaTau]       = new TF1(Form("fdiffR%d",iOmegaTau), Form("AliTPCCorrection::GetDistXYZIntegrateZ(x,0,10,0,1,%f)",integrateStep),85,245);
    fdiffPhiR[iOmegaTau]    = new TF1(Form("fdiffPhiR%d",iOmegaTau), Form("AliTPCCorrection::GetDistXYZIntegrateZ(x,0,10,1,1,%f)",integrateStep),85,245);
    
    hdiffR[iOmegaTau] = (TH1F*)fdiffR[iOmegaTau]->GetHistogram();
    hdiffPhiR[iOmegaTau] = (TH1F*)fdiffPhiR[iOmegaTau]->GetHistogram();
    
    
    hdiffR[iOmegaTau]->SetName(fdiffR[iOmegaTau]->GetName());
    hdiffPhiR[iOmegaTau]->SetName(fdiffPhiR[iOmegaTau]->GetName());
    
    
    
    //
    // 3. Plot and store TH1Fs
    //
    
    hdiffR[iOmegaTau]->GetXaxis()->SetTitle("r (cm)");
    hdiffPhiR[iOmegaTau]->GetXaxis()->SetTitle("r (cm)");
    
    hdiffR[iOmegaTau]->GetYaxis()->SetTitle("dr (cm)");
    hdiffPhiR[iOmegaTau]->GetYaxis()->SetTitle("d(r#varphi) (cm)");
    
    hdiffR[iOmegaTau]->SetTitle("dr (cm)");
    hdiffPhiR[iOmegaTau]->SetTitle("d(r#varphi) (cm)");
  
    hdiffR[iOmegaTau]->SetMarkerColor(col[iOmegaTau]);
    hdiffPhiR[iOmegaTau]->SetMarkerColor(col[iOmegaTau]);
    
    hdiffR[iOmegaTau]->SetLineColor(col[iOmegaTau]);
    hdiffPhiR[iOmegaTau]->SetLineColor(col[iOmegaTau]);

    hdiffR[iOmegaTau]->SetLineWidth(2);
    hdiffPhiR[iOmegaTau]->SetLineWidth(2);
    
    hdiffR[iOmegaTau]->SetFillColor(col[iOmegaTau]);
    hdiffPhiR[iOmegaTau]->SetFillColor(col[iOmegaTau]);

    hdiffR[iOmegaTau]->SetMaximum(35);
    hdiffR[iOmegaTau]->SetMinimum(-25);
    hdiffPhiR[iOmegaTau]->SetMaximum(10);
    hdiffPhiR[iOmegaTau]->SetMinimum(-22);

    hdiffR[iOmegaTau]->SetTitleSize(0.05,"XYZ");
    hdiffPhiR[iOmegaTau]->SetTitleSize(0.05,"XYZ");
    
    legend->AddEntry(hdiffR[iOmegaTau],Form("%s (#varepsilon = %d)",sGas[iOmegaTau].Data(),eps[iOmegaTau]),"lp");
    
    cOmegaTau->cd(1);
    if(iOmegaTau==0)
      hdiffR[iOmegaTau]->DrawCopy("lf");
    else{
      hdiffR[iOmegaTau]->DrawCopy("lf,same");
    }
    if(iOmegaTau == nOmegaTau-1)
      legend->Draw();
    

    cOmegaTau->cd(2);
    if(iOmegaTau==0)
      hdiffPhiR[iOmegaTau]->DrawCopy("fl");
    else{
      hdiffPhiR[iOmegaTau]->DrawCopy("fl,same");
    }
  }
  
  
  cMap->SaveAs(Form("%s_SC_TDRallGases.eps",outfilename.Data()));
  cMap->SaveAs(Form("%s_SC_TDRallGases.pdf",outfilename.Data()));
  cOmegaTau->SaveAs(Form("%s_Distortions_TDRallGases.eps",outfilename.Data()));
  cOmegaTau->SaveAs(Form("%s_Distortions_TDRallGases.pdf",outfilename.Data()));
}

  
//____________________________________________________________//
void setupLegend(TLegend *currentLegend=0,float currentTextSize=0.07){
  currentLegend->SetTextFont(42);
  currentLegend->SetBorderSize(0);
  currentLegend->SetFillStyle(0);
  currentLegend->SetFillColor(0);
  currentLegend->SetMargin(0.25);
  currentLegend->SetTextSize(currentTextSize);
  currentLegend->SetEntrySeparation(0.5);
  return;
}
 SCdistortionsForTDRfinalAllGases.C:1
 SCdistortionsForTDRfinalAllGases.C:2
 SCdistortionsForTDRfinalAllGases.C:3
 SCdistortionsForTDRfinalAllGases.C:4
 SCdistortionsForTDRfinalAllGases.C:5
 SCdistortionsForTDRfinalAllGases.C:6
 SCdistortionsForTDRfinalAllGases.C:7
 SCdistortionsForTDRfinalAllGases.C:8
 SCdistortionsForTDRfinalAllGases.C:9
 SCdistortionsForTDRfinalAllGases.C:10
 SCdistortionsForTDRfinalAllGases.C:11
 SCdistortionsForTDRfinalAllGases.C:12
 SCdistortionsForTDRfinalAllGases.C:13
 SCdistortionsForTDRfinalAllGases.C:14
 SCdistortionsForTDRfinalAllGases.C:15
 SCdistortionsForTDRfinalAllGases.C:16
 SCdistortionsForTDRfinalAllGases.C:17
 SCdistortionsForTDRfinalAllGases.C:18
 SCdistortionsForTDRfinalAllGases.C:19
 SCdistortionsForTDRfinalAllGases.C:20
 SCdistortionsForTDRfinalAllGases.C:21
 SCdistortionsForTDRfinalAllGases.C:22
 SCdistortionsForTDRfinalAllGases.C:23
 SCdistortionsForTDRfinalAllGases.C:24
 SCdistortionsForTDRfinalAllGases.C:25
 SCdistortionsForTDRfinalAllGases.C:26
 SCdistortionsForTDRfinalAllGases.C:27
 SCdistortionsForTDRfinalAllGases.C:28
 SCdistortionsForTDRfinalAllGases.C:29
 SCdistortionsForTDRfinalAllGases.C:30
 SCdistortionsForTDRfinalAllGases.C:31
 SCdistortionsForTDRfinalAllGases.C:32
 SCdistortionsForTDRfinalAllGases.C:33
 SCdistortionsForTDRfinalAllGases.C:34
 SCdistortionsForTDRfinalAllGases.C:35
 SCdistortionsForTDRfinalAllGases.C:36
 SCdistortionsForTDRfinalAllGases.C:37
 SCdistortionsForTDRfinalAllGases.C:38
 SCdistortionsForTDRfinalAllGases.C:39
 SCdistortionsForTDRfinalAllGases.C:40
 SCdistortionsForTDRfinalAllGases.C:41
 SCdistortionsForTDRfinalAllGases.C:42
 SCdistortionsForTDRfinalAllGases.C:43
 SCdistortionsForTDRfinalAllGases.C:44
 SCdistortionsForTDRfinalAllGases.C:45
 SCdistortionsForTDRfinalAllGases.C:46
 SCdistortionsForTDRfinalAllGases.C:47
 SCdistortionsForTDRfinalAllGases.C:48
 SCdistortionsForTDRfinalAllGases.C:49
 SCdistortionsForTDRfinalAllGases.C:50
 SCdistortionsForTDRfinalAllGases.C:51
 SCdistortionsForTDRfinalAllGases.C:52
 SCdistortionsForTDRfinalAllGases.C:53
 SCdistortionsForTDRfinalAllGases.C:54
 SCdistortionsForTDRfinalAllGases.C:55
 SCdistortionsForTDRfinalAllGases.C:56
 SCdistortionsForTDRfinalAllGases.C:57
 SCdistortionsForTDRfinalAllGases.C:58
 SCdistortionsForTDRfinalAllGases.C:59
 SCdistortionsForTDRfinalAllGases.C:60
 SCdistortionsForTDRfinalAllGases.C:61
 SCdistortionsForTDRfinalAllGases.C:62
 SCdistortionsForTDRfinalAllGases.C:63
 SCdistortionsForTDRfinalAllGases.C:64
 SCdistortionsForTDRfinalAllGases.C:65
 SCdistortionsForTDRfinalAllGases.C:66
 SCdistortionsForTDRfinalAllGases.C:67
 SCdistortionsForTDRfinalAllGases.C:68
 SCdistortionsForTDRfinalAllGases.C:69
 SCdistortionsForTDRfinalAllGases.C:70
 SCdistortionsForTDRfinalAllGases.C:71
 SCdistortionsForTDRfinalAllGases.C:72
 SCdistortionsForTDRfinalAllGases.C:73
 SCdistortionsForTDRfinalAllGases.C:74
 SCdistortionsForTDRfinalAllGases.C:75
 SCdistortionsForTDRfinalAllGases.C:76
 SCdistortionsForTDRfinalAllGases.C:77
 SCdistortionsForTDRfinalAllGases.C:78
 SCdistortionsForTDRfinalAllGases.C:79
 SCdistortionsForTDRfinalAllGases.C:80
 SCdistortionsForTDRfinalAllGases.C:81
 SCdistortionsForTDRfinalAllGases.C:82
 SCdistortionsForTDRfinalAllGases.C:83
 SCdistortionsForTDRfinalAllGases.C:84
 SCdistortionsForTDRfinalAllGases.C:85
 SCdistortionsForTDRfinalAllGases.C:86
 SCdistortionsForTDRfinalAllGases.C:87
 SCdistortionsForTDRfinalAllGases.C:88
 SCdistortionsForTDRfinalAllGases.C:89
 SCdistortionsForTDRfinalAllGases.C:90
 SCdistortionsForTDRfinalAllGases.C:91
 SCdistortionsForTDRfinalAllGases.C:92
 SCdistortionsForTDRfinalAllGases.C:93
 SCdistortionsForTDRfinalAllGases.C:94
 SCdistortionsForTDRfinalAllGases.C:95
 SCdistortionsForTDRfinalAllGases.C:96
 SCdistortionsForTDRfinalAllGases.C:97
 SCdistortionsForTDRfinalAllGases.C:98
 SCdistortionsForTDRfinalAllGases.C:99
 SCdistortionsForTDRfinalAllGases.C:100
 SCdistortionsForTDRfinalAllGases.C:101
 SCdistortionsForTDRfinalAllGases.C:102
 SCdistortionsForTDRfinalAllGases.C:103
 SCdistortionsForTDRfinalAllGases.C:104
 SCdistortionsForTDRfinalAllGases.C:105
 SCdistortionsForTDRfinalAllGases.C:106
 SCdistortionsForTDRfinalAllGases.C:107
 SCdistortionsForTDRfinalAllGases.C:108
 SCdistortionsForTDRfinalAllGases.C:109
 SCdistortionsForTDRfinalAllGases.C:110
 SCdistortionsForTDRfinalAllGases.C:111
 SCdistortionsForTDRfinalAllGases.C:112
 SCdistortionsForTDRfinalAllGases.C:113
 SCdistortionsForTDRfinalAllGases.C:114
 SCdistortionsForTDRfinalAllGases.C:115
 SCdistortionsForTDRfinalAllGases.C:116
 SCdistortionsForTDRfinalAllGases.C:117
 SCdistortionsForTDRfinalAllGases.C:118
 SCdistortionsForTDRfinalAllGases.C:119
 SCdistortionsForTDRfinalAllGases.C:120
 SCdistortionsForTDRfinalAllGases.C:121
 SCdistortionsForTDRfinalAllGases.C:122
 SCdistortionsForTDRfinalAllGases.C:123
 SCdistortionsForTDRfinalAllGases.C:124
 SCdistortionsForTDRfinalAllGases.C:125
 SCdistortionsForTDRfinalAllGases.C:126
 SCdistortionsForTDRfinalAllGases.C:127
 SCdistortionsForTDRfinalAllGases.C:128
 SCdistortionsForTDRfinalAllGases.C:129
 SCdistortionsForTDRfinalAllGases.C:130
 SCdistortionsForTDRfinalAllGases.C:131
 SCdistortionsForTDRfinalAllGases.C:132
 SCdistortionsForTDRfinalAllGases.C:133
 SCdistortionsForTDRfinalAllGases.C:134
 SCdistortionsForTDRfinalAllGases.C:135
 SCdistortionsForTDRfinalAllGases.C:136
 SCdistortionsForTDRfinalAllGases.C:137
 SCdistortionsForTDRfinalAllGases.C:138
 SCdistortionsForTDRfinalAllGases.C:139
 SCdistortionsForTDRfinalAllGases.C:140
 SCdistortionsForTDRfinalAllGases.C:141
 SCdistortionsForTDRfinalAllGases.C:142
 SCdistortionsForTDRfinalAllGases.C:143
 SCdistortionsForTDRfinalAllGases.C:144
 SCdistortionsForTDRfinalAllGases.C:145
 SCdistortionsForTDRfinalAllGases.C:146
 SCdistortionsForTDRfinalAllGases.C:147
 SCdistortionsForTDRfinalAllGases.C:148
 SCdistortionsForTDRfinalAllGases.C:149
 SCdistortionsForTDRfinalAllGases.C:150
 SCdistortionsForTDRfinalAllGases.C:151
 SCdistortionsForTDRfinalAllGases.C:152
 SCdistortionsForTDRfinalAllGases.C:153
 SCdistortionsForTDRfinalAllGases.C:154
 SCdistortionsForTDRfinalAllGases.C:155
 SCdistortionsForTDRfinalAllGases.C:156
 SCdistortionsForTDRfinalAllGases.C:157
 SCdistortionsForTDRfinalAllGases.C:158
 SCdistortionsForTDRfinalAllGases.C:159
 SCdistortionsForTDRfinalAllGases.C:160
 SCdistortionsForTDRfinalAllGases.C:161
 SCdistortionsForTDRfinalAllGases.C:162
 SCdistortionsForTDRfinalAllGases.C:163
 SCdistortionsForTDRfinalAllGases.C:164
 SCdistortionsForTDRfinalAllGases.C:165
 SCdistortionsForTDRfinalAllGases.C:166
 SCdistortionsForTDRfinalAllGases.C:167
 SCdistortionsForTDRfinalAllGases.C:168
 SCdistortionsForTDRfinalAllGases.C:169
 SCdistortionsForTDRfinalAllGases.C:170
 SCdistortionsForTDRfinalAllGases.C:171
 SCdistortionsForTDRfinalAllGases.C:172
 SCdistortionsForTDRfinalAllGases.C:173
 SCdistortionsForTDRfinalAllGases.C:174
 SCdistortionsForTDRfinalAllGases.C:175
 SCdistortionsForTDRfinalAllGases.C:176
 SCdistortionsForTDRfinalAllGases.C:177
 SCdistortionsForTDRfinalAllGases.C:178
 SCdistortionsForTDRfinalAllGases.C:179
 SCdistortionsForTDRfinalAllGases.C:180
 SCdistortionsForTDRfinalAllGases.C:181
 SCdistortionsForTDRfinalAllGases.C:182
 SCdistortionsForTDRfinalAllGases.C:183
 SCdistortionsForTDRfinalAllGases.C:184
 SCdistortionsForTDRfinalAllGases.C:185