ROOT logo


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){
  //
  // do for one gas (with omegaTau values accordingly) the correction
  // use the integrate along drift line option if integrateStep > 0
  // else old method
  //
  // 1. Initialzation form space charge maps
  //
  AliTPCSpaceCharge3D *spaceCharge = new AliTPCSpaceCharge3D;

  // omega tau parameters and TF1 
  const Int_t nOmegaTau = 1;
  Double_t omegaTau[nOmegaTau] = {0.32};
  TString tGas[nOmegaTau] = {"NeCO2_2"}; 
  TString tGasOut[nOmegaTau] = {"NeCO2_2"}; 
  TString sGas[nOmegaTau] = {"Ne-CO_{2}-N_{2} (90-10-5)"};
  TString sLowE = "";
  //if(bLowE) sLowE = "_lowE";
  if(bLowE) sLowE = "_lowE2"; //second iteration

  const Int_t nEps = 51;
  Double_t epsilon[nEps];
  for(Int_t iEps = 0; iEps < nEps; iEps++){
    epsilon[iEps] = (Double_t)iEps;
  }
  TH1F *hR    = new TH1F("hR",Form("distortion at x = %.0f, y = %.0f, z = %.0f",x,y,z),nEps,epsilon[0],epsilon[nEps-1]+1);
  TH1F *hPhiR = new TH1F("hPhiR",Form("distortion at x = %.0f, y = %.0f, z = %.0f",x,y,z),nEps,epsilon[0],epsilon[nEps-1]+1);

  //use always the integrate option here
  Double_t rate = 50.;

  for(Int_t iEps = 0; iEps < nEps; iEps++){

    // select gas 
    // 0 = NeCO2N2 
    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;
    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));
    
    // select omegaTau value
    if(iOmegaTau ==  0){
      spaceCharge->SetOmegaTauT1T2(omegaTau[iOmegaTau],1,0.99); // Ne CO2 N2
    }
 
    //
    // init and add to corrections
    spaceCharge->InitSpaceCharge3DDistortion();
    spaceCharge->AddVisualCorrection(spaceCharge,1);
    
    //
    // 2. get TH1F with differences 
    //
    // get corrections (at x, y and z) for visual correction 1 (last argument)
    // 0 = dR
    // 1 = dPhiR
    // 2 = dZ?    
    if(integrateStep < 0.0001){// == 0. --> old method
      hR->Fill(epsilon[iEps],AliTPCCorrection::GetDistXYZ(x,y,z,0,1));
      hPhiR->Fill(epsilon[iEps],AliTPCCorrection::GetDistXYZ(x,y,z,1,1));
    }
    else{// > 0. --> following driftlines
      hR->Fill(epsilon[iEps],AliTPCCorrection::GetDistXYZIntegrateZ(x,y,z,0,1,integrateStep));
      hPhiR->Fill(epsilon[iEps],AliTPCCorrection::GetDistXYZIntegrateZ(x,y,z,1,1,integrateStep));
    }
  }


  //
  // 3. Plot and store TH1Fs
  //

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

  TLegend *legend = new TLegend(0.6,0.3,0.85,0.75,"","brNDC");
  setupLegend(legend,0.04);

  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);
  TFile *fOut = TFile::Open(Form("%s",outfilename.Data()),"recreate");
 
  cEpsilon->cd(1);
  hR->Draw();

  cEpsilon->cd(2);
  hPhiR->Draw();


  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));
  
  hR->Write();
  hPhiR->Write();
  fOut->Close();
}

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.){
  //
  // do for one gas (with omegaTau values accordingly) the correction
  // use the integrate along drift line option

  gStyle->SetOptStat(0);

  //
  // 1. Plot and store TH1Fs
  //

  // omega tau parameters and TF1 
  const Int_t nOmegaTau = 1;
  Double_t omegaTau[nOmegaTau] = {0.32};
  TString tGas[nOmegaTau] = {"NeCO2_2"}; 
  TString sGas[nOmegaTau] = {"Ne/CO_{2}/N_{2} (90-10-5)"};

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

  TLegend *legend = new TLegend(0.15,0.6,0.6,0.85,Form("%s: 50 kHz",sGas[iOmegaTau].Data(),"brNDC"));
  setupLegend(legend,0.05);

  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);
  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);
  TFile *fIn0 = TFile::Open(Form("%s",infilename0.Data()),"read");
  TFile *fIn1 = TFile::Open(Form("%s",infilename1.Data()),"read");

  TH1F *hR0    = (TH1F*)fIn0->Get("hR");
  TH1F *hPhiR0 = (TH1F*)fIn0->Get("hPhiR");
 
  TH1F *hR1    = (TH1F*)fIn1->Get("hR");
  TH1F *hPhiR1 = (TH1F*)fIn1->Get("hPhiR");

  hR0->SetTitle(Form("x = %.0f, y = %.0f, z = %.0f",x,y,z)); 
  hPhiR0->SetTitle(Form("x = %.0f, y = %.0f, z = %.0f",x,y,z)); 

  hR1->SetTitle(Form("x = %.0f, y = %.0f, z = %.0f",x,y,z)); 
  hPhiR1->SetTitle(Form("x = %.0f, y = %.0f, z = %.0f",x,y,z)); 

  cEpsilon->cd(1);
  hR0->GetXaxis()->SetTitle("#varepsilon");
  hR0->GetYaxis()->SetTitle("dr (cm)");
  hR0->SetLineWidth(2);
  hR0->DrawCopy("lp");
  hR1->SetLineWidth(2);
  hR1->SetLineColor(2);
  hR1->DrawCopy("lp,same");

  legend->AddEntry(hR0,"linear","l");
  legend->AddEntry(hR1,"integrated in z","l");

  legend->Draw();

  cEpsilon->cd(2);
  hPhiR0->GetXaxis()->SetTitle("#varepsilon");
  hPhiR0->GetYaxis()->SetTitle("d(r#varphi) (cm)");
  hPhiR0->SetLineWidth(2);
  hPhiR0->DrawCopy("lp");
  hPhiR1->SetLineWidth(2);
  hPhiR1->SetLineColor(2);
  hPhiR1->DrawCopy("lp,same");


  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));
  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));
  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));
  
  fIn0->Close();
  fIn1->Close();
}




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