ROOT logo
#include "TString.h"
#include "TFile.h"
#include "TCanvas.h"
#include "TMath.h"
#include "TTree.h"
#include "TTreeStream.h"
#include "TROOT.h"
#include "TSystem.h"
#include "TStyle.h"
#include "AliTPCCorrection.h"
#include "AliTPCCorrectionLookupTable.h"
#include <AliToyMCEventGenerator.h>



void makeComparisonTree(TString filename, TString addToName)
{
  
  AliTPCCorrectionLookupTable *fTPCCorrection2=0x0;

  Bool_t doScaling=kTRUE;
  if (filename.Contains(":")) {
    TObjArray *arr=filename.Tokenize(":");
    TString s2(arr->At(1)->GetName());
    if (s2.Contains("-scale")) {
      doScaling=kFALSE;
      s2.ReplaceAll("-scale","");
    }
    TFile f2(s2);
    gROOT->cd();
    fTPCCorrection2=(AliTPCCorrectionLookupTable*)f2.Get("map");
    f2.Close();
    filename=arr->At(0)->GetName();
    delete arr;
  }
  TFile fn(filename.Data());
  gROOT->cd();
  AliTPCCorrectionLookupTable *fTPCCorrection=(AliTPCCorrectionLookupTable*)fn.Get("map");
  fn.Close();
  if (fTPCCorrection2 && doScaling) {
    Float_t dummy=0;
    fTPCCorrection2->SetCorrScaleFactor(AliToyMCEventGenerator::GetSCScalingFactor(fTPCCorrection, fTPCCorrection2,dummy));
    
  }
//   fTPCCorrection->BuildExactInverse();

//   TFile f("/tmp/corrTest.Root","recreate");
//   fTPCCorrection->Write("map");
//   f.Close();
  
  TString outFile=addToName;
  outFile.Append(".root");
  TTreeSRedirector *sred=new TTreeSRedirector(outFile.Data());
  
  Float_t dx[3]={0,0,0};
  
  for (Float_t iz=-245; iz<=245; iz+=10) {
    Short_t roc=(iz>=0)?0:18;
    for (Float_t ir=86; ir<250; ir+=10) {
      for (Float_t iphi=0; iphi<TMath::TwoPi(); iphi+=10*TMath::DegToRad()){
        Float_t x=ir*(Float_t)TMath::Cos(iphi);
        Float_t y=ir*(Float_t)TMath::Sin(iphi);
        Float_t x3[3]={x,y,iz};
        (*sred) << "t" <<
        "r="   << ir <<
        "phi=" << iphi <<
        "x=" << x <<
        "y=" << y <<
        "z=" << iz;
        
        //distortions
        fTPCCorrection->GetDistortion(x3,roc,dx);
        Float_t xd   = x+dx[0];
        Float_t yd   = y+dx[1];
        Float_t zd   = iz+dx[2];
        Float_t rd   = TMath::Sqrt(xd*xd+yd*yd);
        Float_t phid = TMath::ATan2(yd,xd);
        if (phid<0) phid+=TMath::TwoPi();
        (*sred) << "t" <<
        "xd="   << xd <<
        "yd="   << yd <<
        "zd="   << zd <<
        "rd="   << rd <<
        "phid=" << phid;
        
        // correct back distorted point
        Float_t xd3[3]={xd,yd,zd};

        if (fTPCCorrection2) {
          fTPCCorrection2->GetCorrection(xd3,roc,dx);
        } else {
          fTPCCorrection->GetCorrection(xd3,roc,dx);
        }
        Float_t xdc   = xd+dx[0];
        Float_t ydc   = yd+dx[1];
        Float_t zdc   = zd+dx[2];
        Float_t rdc   = TMath::Sqrt(xdc*xdc+ydc*ydc);
        Float_t phidc = TMath::ATan2(ydc,xdc);
        if (phidc<0) phidc+=TMath::TwoPi();
        
        (*sred)  << "t" <<
        "xdc="   << xdc <<
        "ydc="   << ydc <<
        "zdc="   << zdc <<
        "rdc="   << rdc <<
        "phidc=" << phidc;
        
        // write current point
        (*sred) << "t" <<
        "\n";
        
      }
    }
  }
  
  delete sred;
}

void makeAllComparisonTrees()
{
  makeComparisonTree("$ALICE_ROOT/TPC/Calib/maps/SC_NeCO2_eps5_50kHz_precal.lookup.root","LUT_05");
  makeComparisonTree("$ALICE_ROOT/TPC/Calib/maps/SC_NeCO2_eps10_50kHz_precal.lookup.root","LUT_10");
  makeComparisonTree("$ALICE_ROOT/TPC/Calib/maps/SC_NeCO2_eps20_50kHz_precal.lookup.root","LUT_20");
}

void makeAllComparisonTreesNew()
{
  makeComparisonTree("$ALICE_ROOT/TPC/Calib/maps/SC_NeCO2N2_eps5_50kHz_precal.lookup.root","LUT_05");
  makeComparisonTree("$ALICE_ROOT/TPC/Calib/maps/SC_NeCO2N2_eps10_50kHz_precal.lookup.root","LUT_10");
  makeComparisonTree("$ALICE_ROOT/TPC/Calib/maps/SC_NeCO2N2_eps20_50kHz_precal.lookup.root","LUT_20");
  makeComparisonTree("$ALICE_ROOT/TPC/Calib/maps/SC_NeCO2N2_eps20_50kHz_precal.lookup.root","LUT_25");
  makeComparisonTree("$ALICE_ROOT/TPC/Calib/maps/SC_NeCO2N2_eps20_50kHz_precal.lookup.root","LUT_30");
  makeComparisonTree("$ALICE_ROOT/TPC/Calib/maps/SC_NeCO2N2_eps20_50kHz_precal.lookup.root","LUT_35");
  makeComparisonTree("$ALICE_ROOT/TPC/Calib/maps/SC_NeCO2N2_eps20_50kHz_precal.lookup.root","LUT_40");
}

void makeAllComparisonTreesOld()
{
  makeComparisonTree("$ALICE_ROOT/TPC/Calib/maps/old/SC_NeCO2N2_eps5_50kHz_precal.lookup.root","LUT_05");
  makeComparisonTree("$ALICE_ROOT/TPC/Calib/maps/old/SC_NeCO2N2_eps10_50kHz_precal.lookup.root","LUT_10");
  makeComparisonTree("$ALICE_ROOT/TPC/Calib/maps/old/SC_NeCO2N2_eps20_50kHz_precal.lookup.root","LUT_20");
  makeComparisonTree("$ALICE_ROOT/TPC/Calib/maps/old/SC_NeCO2N2_eps20_50kHz_precal.lookup.root","LUT_25");
  makeComparisonTree("$ALICE_ROOT/TPC/Calib/maps/old/SC_NeCO2N2_eps20_50kHz_precal.lookup.root","LUT_30");
  makeComparisonTree("$ALICE_ROOT/TPC/Calib/maps/old/SC_NeCO2N2_eps20_50kHz_precal.lookup.root","LUT_35");
  makeComparisonTree("$ALICE_ROOT/TPC/Calib/maps/old/SC_NeCO2N2_eps20_50kHz_precal.lookup.root","LUT_40");
}

TCanvas *GetCanvas(TString addToName);

void makeHistos(TString addToName) {
  TString filename; //("test_");
  filename.Append(addToName.Data());
  filename.Append(".root");
  TFile f(filename.Data());
  gROOT->cd();
  TTree *t=(TTree*)f.Get("t");
  gStyle->SetTitleX(0.18);
  gStyle->SetTitleW(1-.18-.1);

  t->SetMarkerStyle(20);
  t->SetMarkerSize(.8);

  TCanvas *c=0x0;
  c=GetCanvas(addToName+"_zRes");
  t->Draw("zdc-z:z:r","","colz");
  c->SaveAs(Form("%s_zRes.png",addToName.Data()));
  //
  c=GetCanvas(addToName+"_rRes");
  t->Draw("rdc-r:z:r","","colz");
  c->SaveAs(Form("%s_rRes.png",addToName.Data()));
  //
  c=GetCanvas(addToName+"_phiRes");
  t->SetAlias("phiFix","-((phidc-phi)>4)*2*TMath::Pi()+((phidc-phi)<-4)*2*TMath::Pi()");
  t->Draw("phidc-phi+phiFix:z:r","","colz");
  c->SaveAs(Form("%s_phiRes.png",addToName.Data()));
  //
  c=GetCanvas(addToName+"_rphiRes");
  t->Draw("(phidc*rdc)-(phi*r):z+(r-84)/(254-84)*18:r","abs(phidc-phi)<1","colz");
  c->SaveAs(Form("%s_rphiRes.png",addToName.Data()));

  TCanvas *c2=0x0;
  c2=GetCanvas(addToName+"_Res_1D");
  c2->Divide(2,2);
  
  c2->cd(1);
  t->Draw("zdc-z","","");
  //
  c2->cd(2);
  t->Draw("rdc-r","","");
  //
  c2->cd(3);
  t->SetAlias("phiFix","-((phidc-phi)>4)*2*TMath::Pi()+((phidc-phi)<-4)*2*TMath::Pi()");
  t->SetAlias("phiRes","phidc-phi+phiFix");
  t->Draw("phiRes","","");
  //
  c2->cd(4);
  t->Draw("(phidc*rdc)-(phi*r)","abs(phidc-phi)<1","");

  c2->SaveAs(Form("%s_Res_1D.png",addToName.Data()));
  
  f.Close();
}

void makeHistosDist(TString addToName) {
  TString filename; //("test_");
  filename.Append(addToName.Data());
  filename.Append(".root");
  TFile f(filename.Data());
  gROOT->cd();
  TTree *t=(TTree*)f.Get("t");
  gStyle->SetTitleX(0.18);
  gStyle->SetTitleW(1-.18-.1);
  
  t->SetMarkerStyle(20);
  t->SetMarkerSize(.8);
  
  TCanvas *c=0x0;
  c=GetCanvas(addToName+"_zResDist");
  t->Draw("zd-z:z:r","","colz");
  c->SaveAs(Form("%s_zResDist.png",addToName.Data()));
  //
  c=GetCanvas(addToName+"_rResDist");
  t->Draw("rd-r:z:r","","colz");
  c->SaveAs(Form("%s_rResDist.png",addToName.Data()));
  //
  c=GetCanvas(addToName+"_phiResDist");
  t->Draw("phid-phi:z:r","abs(phid-phi)<1","colz");
  c->SaveAs(Form("%s_phiResDist.png",addToName.Data()));
  //
  c=GetCanvas(addToName+"_rphiResDist");
  t->Draw("(phid*rd)-(phi*r):z+(r-84)/(254-84)*18:r","abs(phid-phi)<1","colz");
  c->SaveAs(Form("%s_rphiResDist.png",addToName.Data()));
  
  f.Close();
}


void makeAllHistos() {
  makeHistos("LUT_05");
  makeHistos("LUT_10");
  makeHistos("LUT_20");
  makeHistos("LUT_25");
  makeHistos("LUT_30");
  makeHistos("LUT_35");
  makeHistos("LUT_40");
  
}

void makeAllHistosDist() {
  makeHistosDist("LUT_05");
  makeHistosDist("LUT_10");
  makeHistosDist("LUT_20");
  makeHistosDist("LUT_25");
  makeHistosDist("LUT_30");
  makeHistosDist("LUT_35");
  makeHistosDist("LUT_40");
  
}

TCanvas *GetCanvas(TString addToName)
{
  TString cName(addToName);
  cName.Prepend("c_");
  TCanvas *c=(TCanvas*)gROOT->GetListOfCanvases()->FindObject(cName.Data());
  if (!c) c=new TCanvas(cName.Data(),addToName.Data());
  c->Clear();
  c->cd();
  return c;
}



 CheckConsistency_DistCorr.C:1
 CheckConsistency_DistCorr.C:2
 CheckConsistency_DistCorr.C:3
 CheckConsistency_DistCorr.C:4
 CheckConsistency_DistCorr.C:5
 CheckConsistency_DistCorr.C:6
 CheckConsistency_DistCorr.C:7
 CheckConsistency_DistCorr.C:8
 CheckConsistency_DistCorr.C:9
 CheckConsistency_DistCorr.C:10
 CheckConsistency_DistCorr.C:11
 CheckConsistency_DistCorr.C:12
 CheckConsistency_DistCorr.C:13
 CheckConsistency_DistCorr.C:14
 CheckConsistency_DistCorr.C:15
 CheckConsistency_DistCorr.C:16
 CheckConsistency_DistCorr.C:17
 CheckConsistency_DistCorr.C:18
 CheckConsistency_DistCorr.C:19
 CheckConsistency_DistCorr.C:20
 CheckConsistency_DistCorr.C:21
 CheckConsistency_DistCorr.C:22
 CheckConsistency_DistCorr.C:23
 CheckConsistency_DistCorr.C:24
 CheckConsistency_DistCorr.C:25
 CheckConsistency_DistCorr.C:26
 CheckConsistency_DistCorr.C:27
 CheckConsistency_DistCorr.C:28
 CheckConsistency_DistCorr.C:29
 CheckConsistency_DistCorr.C:30
 CheckConsistency_DistCorr.C:31
 CheckConsistency_DistCorr.C:32
 CheckConsistency_DistCorr.C:33
 CheckConsistency_DistCorr.C:34
 CheckConsistency_DistCorr.C:35
 CheckConsistency_DistCorr.C:36
 CheckConsistency_DistCorr.C:37
 CheckConsistency_DistCorr.C:38
 CheckConsistency_DistCorr.C:39
 CheckConsistency_DistCorr.C:40
 CheckConsistency_DistCorr.C:41
 CheckConsistency_DistCorr.C:42
 CheckConsistency_DistCorr.C:43
 CheckConsistency_DistCorr.C:44
 CheckConsistency_DistCorr.C:45
 CheckConsistency_DistCorr.C:46
 CheckConsistency_DistCorr.C:47
 CheckConsistency_DistCorr.C:48
 CheckConsistency_DistCorr.C:49
 CheckConsistency_DistCorr.C:50
 CheckConsistency_DistCorr.C:51
 CheckConsistency_DistCorr.C:52
 CheckConsistency_DistCorr.C:53
 CheckConsistency_DistCorr.C:54
 CheckConsistency_DistCorr.C:55
 CheckConsistency_DistCorr.C:56
 CheckConsistency_DistCorr.C:57
 CheckConsistency_DistCorr.C:58
 CheckConsistency_DistCorr.C:59
 CheckConsistency_DistCorr.C:60
 CheckConsistency_DistCorr.C:61
 CheckConsistency_DistCorr.C:62
 CheckConsistency_DistCorr.C:63
 CheckConsistency_DistCorr.C:64
 CheckConsistency_DistCorr.C:65
 CheckConsistency_DistCorr.C:66
 CheckConsistency_DistCorr.C:67
 CheckConsistency_DistCorr.C:68
 CheckConsistency_DistCorr.C:69
 CheckConsistency_DistCorr.C:70
 CheckConsistency_DistCorr.C:71
 CheckConsistency_DistCorr.C:72
 CheckConsistency_DistCorr.C:73
 CheckConsistency_DistCorr.C:74
 CheckConsistency_DistCorr.C:75
 CheckConsistency_DistCorr.C:76
 CheckConsistency_DistCorr.C:77
 CheckConsistency_DistCorr.C:78
 CheckConsistency_DistCorr.C:79
 CheckConsistency_DistCorr.C:80
 CheckConsistency_DistCorr.C:81
 CheckConsistency_DistCorr.C:82
 CheckConsistency_DistCorr.C:83
 CheckConsistency_DistCorr.C:84
 CheckConsistency_DistCorr.C:85
 CheckConsistency_DistCorr.C:86
 CheckConsistency_DistCorr.C:87
 CheckConsistency_DistCorr.C:88
 CheckConsistency_DistCorr.C:89
 CheckConsistency_DistCorr.C:90
 CheckConsistency_DistCorr.C:91
 CheckConsistency_DistCorr.C:92
 CheckConsistency_DistCorr.C:93
 CheckConsistency_DistCorr.C:94
 CheckConsistency_DistCorr.C:95
 CheckConsistency_DistCorr.C:96
 CheckConsistency_DistCorr.C:97
 CheckConsistency_DistCorr.C:98
 CheckConsistency_DistCorr.C:99
 CheckConsistency_DistCorr.C:100
 CheckConsistency_DistCorr.C:101
 CheckConsistency_DistCorr.C:102
 CheckConsistency_DistCorr.C:103
 CheckConsistency_DistCorr.C:104
 CheckConsistency_DistCorr.C:105
 CheckConsistency_DistCorr.C:106
 CheckConsistency_DistCorr.C:107
 CheckConsistency_DistCorr.C:108
 CheckConsistency_DistCorr.C:109
 CheckConsistency_DistCorr.C:110
 CheckConsistency_DistCorr.C:111
 CheckConsistency_DistCorr.C:112
 CheckConsistency_DistCorr.C:113
 CheckConsistency_DistCorr.C:114
 CheckConsistency_DistCorr.C:115
 CheckConsistency_DistCorr.C:116
 CheckConsistency_DistCorr.C:117
 CheckConsistency_DistCorr.C:118
 CheckConsistency_DistCorr.C:119
 CheckConsistency_DistCorr.C:120
 CheckConsistency_DistCorr.C:121
 CheckConsistency_DistCorr.C:122
 CheckConsistency_DistCorr.C:123
 CheckConsistency_DistCorr.C:124
 CheckConsistency_DistCorr.C:125
 CheckConsistency_DistCorr.C:126
 CheckConsistency_DistCorr.C:127
 CheckConsistency_DistCorr.C:128
 CheckConsistency_DistCorr.C:129
 CheckConsistency_DistCorr.C:130
 CheckConsistency_DistCorr.C:131
 CheckConsistency_DistCorr.C:132
 CheckConsistency_DistCorr.C:133
 CheckConsistency_DistCorr.C:134
 CheckConsistency_DistCorr.C:135
 CheckConsistency_DistCorr.C:136
 CheckConsistency_DistCorr.C:137
 CheckConsistency_DistCorr.C:138
 CheckConsistency_DistCorr.C:139
 CheckConsistency_DistCorr.C:140
 CheckConsistency_DistCorr.C:141
 CheckConsistency_DistCorr.C:142
 CheckConsistency_DistCorr.C:143
 CheckConsistency_DistCorr.C:144
 CheckConsistency_DistCorr.C:145
 CheckConsistency_DistCorr.C:146
 CheckConsistency_DistCorr.C:147
 CheckConsistency_DistCorr.C:148
 CheckConsistency_DistCorr.C:149
 CheckConsistency_DistCorr.C:150
 CheckConsistency_DistCorr.C:151
 CheckConsistency_DistCorr.C:152
 CheckConsistency_DistCorr.C:153
 CheckConsistency_DistCorr.C:154
 CheckConsistency_DistCorr.C:155
 CheckConsistency_DistCorr.C:156
 CheckConsistency_DistCorr.C:157
 CheckConsistency_DistCorr.C:158
 CheckConsistency_DistCorr.C:159
 CheckConsistency_DistCorr.C:160
 CheckConsistency_DistCorr.C:161
 CheckConsistency_DistCorr.C:162
 CheckConsistency_DistCorr.C:163
 CheckConsistency_DistCorr.C:164
 CheckConsistency_DistCorr.C:165
 CheckConsistency_DistCorr.C:166
 CheckConsistency_DistCorr.C:167
 CheckConsistency_DistCorr.C:168
 CheckConsistency_DistCorr.C:169
 CheckConsistency_DistCorr.C:170
 CheckConsistency_DistCorr.C:171
 CheckConsistency_DistCorr.C:172
 CheckConsistency_DistCorr.C:173
 CheckConsistency_DistCorr.C:174
 CheckConsistency_DistCorr.C:175
 CheckConsistency_DistCorr.C:176
 CheckConsistency_DistCorr.C:177
 CheckConsistency_DistCorr.C:178
 CheckConsistency_DistCorr.C:179
 CheckConsistency_DistCorr.C:180
 CheckConsistency_DistCorr.C:181
 CheckConsistency_DistCorr.C:182
 CheckConsistency_DistCorr.C:183
 CheckConsistency_DistCorr.C:184
 CheckConsistency_DistCorr.C:185
 CheckConsistency_DistCorr.C:186
 CheckConsistency_DistCorr.C:187
 CheckConsistency_DistCorr.C:188
 CheckConsistency_DistCorr.C:189
 CheckConsistency_DistCorr.C:190
 CheckConsistency_DistCorr.C:191
 CheckConsistency_DistCorr.C:192
 CheckConsistency_DistCorr.C:193
 CheckConsistency_DistCorr.C:194
 CheckConsistency_DistCorr.C:195
 CheckConsistency_DistCorr.C:196
 CheckConsistency_DistCorr.C:197
 CheckConsistency_DistCorr.C:198
 CheckConsistency_DistCorr.C:199
 CheckConsistency_DistCorr.C:200
 CheckConsistency_DistCorr.C:201
 CheckConsistency_DistCorr.C:202
 CheckConsistency_DistCorr.C:203
 CheckConsistency_DistCorr.C:204
 CheckConsistency_DistCorr.C:205
 CheckConsistency_DistCorr.C:206
 CheckConsistency_DistCorr.C:207
 CheckConsistency_DistCorr.C:208
 CheckConsistency_DistCorr.C:209
 CheckConsistency_DistCorr.C:210
 CheckConsistency_DistCorr.C:211
 CheckConsistency_DistCorr.C:212
 CheckConsistency_DistCorr.C:213
 CheckConsistency_DistCorr.C:214
 CheckConsistency_DistCorr.C:215
 CheckConsistency_DistCorr.C:216
 CheckConsistency_DistCorr.C:217
 CheckConsistency_DistCorr.C:218
 CheckConsistency_DistCorr.C:219
 CheckConsistency_DistCorr.C:220
 CheckConsistency_DistCorr.C:221
 CheckConsistency_DistCorr.C:222
 CheckConsistency_DistCorr.C:223
 CheckConsistency_DistCorr.C:224
 CheckConsistency_DistCorr.C:225
 CheckConsistency_DistCorr.C:226
 CheckConsistency_DistCorr.C:227
 CheckConsistency_DistCorr.C:228
 CheckConsistency_DistCorr.C:229
 CheckConsistency_DistCorr.C:230
 CheckConsistency_DistCorr.C:231
 CheckConsistency_DistCorr.C:232
 CheckConsistency_DistCorr.C:233
 CheckConsistency_DistCorr.C:234
 CheckConsistency_DistCorr.C:235
 CheckConsistency_DistCorr.C:236
 CheckConsistency_DistCorr.C:237
 CheckConsistency_DistCorr.C:238
 CheckConsistency_DistCorr.C:239
 CheckConsistency_DistCorr.C:240
 CheckConsistency_DistCorr.C:241
 CheckConsistency_DistCorr.C:242
 CheckConsistency_DistCorr.C:243
 CheckConsistency_DistCorr.C:244
 CheckConsistency_DistCorr.C:245
 CheckConsistency_DistCorr.C:246
 CheckConsistency_DistCorr.C:247
 CheckConsistency_DistCorr.C:248
 CheckConsistency_DistCorr.C:249
 CheckConsistency_DistCorr.C:250
 CheckConsistency_DistCorr.C:251
 CheckConsistency_DistCorr.C:252
 CheckConsistency_DistCorr.C:253
 CheckConsistency_DistCorr.C:254
 CheckConsistency_DistCorr.C:255
 CheckConsistency_DistCorr.C:256
 CheckConsistency_DistCorr.C:257
 CheckConsistency_DistCorr.C:258
 CheckConsistency_DistCorr.C:259
 CheckConsistency_DistCorr.C:260
 CheckConsistency_DistCorr.C:261
 CheckConsistency_DistCorr.C:262
 CheckConsistency_DistCorr.C:263
 CheckConsistency_DistCorr.C:264
 CheckConsistency_DistCorr.C:265
 CheckConsistency_DistCorr.C:266
 CheckConsistency_DistCorr.C:267
 CheckConsistency_DistCorr.C:268
 CheckConsistency_DistCorr.C:269
 CheckConsistency_DistCorr.C:270
 CheckConsistency_DistCorr.C:271
 CheckConsistency_DistCorr.C:272
 CheckConsistency_DistCorr.C:273