ROOT logo
void MakePHOSflat(const Char_t *run = "167915")
{

  //Fills PHOS flattening parameters into OADB
  //Each run-dependent object contains list of 3 objects:
  //Flattening for TPC, V0A, V0C
  //Input histograms are read from the file Pi0Flow_*.root
  // which is the output of the analysis task AliAnalysisTaskPi0Flow
  // Produced root file should go to
  //"$ALICE_ROOT/OADB/PHOS/PHOSflat.root"

  /* $Id$ */

  gSystem->Load("libANALYSIS");
  gSystem->Load("libANALYSISalice");
  gSystem->Load("libPWGGAPHOSTasks");


  TFile * f = TFile::Open(Form("Pi0Flow_%s.root",run)) ;
  TList * l = (TList*)f->Get("PHOSPi0Flow") ;
  TH2F *h1 = (TH2F*)l->FindObject("phiRP") ;
  TH2F *h2 = (TH2F*)l->FindObject("phiRPV0A") ;
  TH2F *h3 = (TH2F*)l->FindObject("phiRPV0C") ;
  
  TF1 * flat = new TF1("flat2","[0]*(1.+2.*[1]*cos(x)+2.*[2]*sin(x)+2.*[3]*cos(2.*x)+2.*[4]*sin(2.*x)+2.*[5]*cos(3.*x)+2.*[6]*sin(3.*x)+2.*[7]*cos(4.*x)+2.*[8]*sin(4.*x))",0.,5.) ;
  
  TH2D * hTPC = new TH2D("hTPC","TPC EP",20,0.,100.,8,0.,8.) ;
  TH2D * hV0A = new TH2D("hV0A","V0A EP",20,0.,100.,8,0.,8.) ;
  TH2D * hV0C = new TH2D("hV0C","V0C EP",20,0.,100.,8,0.,8.) ;
  
  Int_t nCent = h1->GetNbinsY();
  for(Int_t i=1; i<=nCent; i++){
    TH1D * h1D = h1->ProjectionX("a",i,i) ;
    if (h1D->Integral() > 0) {
      h1D->Sumw2() ;
      h1D->Fit(flat,"0") ;
      for(Int_t j=1; j<9; j++)
	hTPC->SetBinContent(i,j,flat->GetParameter(j)) ;
    }
    delete h1D ;
    
    h1D = h2->ProjectionX("a",i,i) ;
    if (h1D->Integral() > 0) {
      h1D->Sumw2() ;
      h1D->Fit(flat,"0") ;
      for(Int_t j=1; j<9; j++)
	hV0A->SetBinContent(i,j,flat->GetParameter(j)) ;   
    }
    delete h1D ;
    
    h1D = h3->ProjectionX("a",i,i) ;
    if (h1D->Integral() > 0) {
      h1D->Sumw2() ;
      h1D->Fit(flat,"0") ;
      for(Int_t j=1; j<9; j++)
	hV0C->SetBinContent(i,j,flat->GetParameter(j)) ;   
    }
    delete h1D ;
  }
   
  AliOADBContainer calibContainer("phosFlat");

  AliPHOSEPFlattener * tpc = new AliPHOSEPFlattener("TPC") ;
  tpc->SetParameterization(hTPC) ;
  AliPHOSEPFlattener * v0a = new AliPHOSEPFlattener("V0A") ;
  v0a->SetParameterization(hV0A) ;
  AliPHOSEPFlattener * v0c = new AliPHOSEPFlattener("V0C") ;
  v0c->SetParameterization(hV0C) ;
  

  // 
  TObjArray * lhc11h = new TObjArray(3); 
  lhc11h->SetName("PHOSflat_LHC11h");
  lhc11h->AddAt(tpc,0) ; //pass 3 reconstruction
  lhc11h->AddAt(v0a,1) ; //pass 3 reconstruction
  lhc11h->AddAt(v0c,2) ; //pass 3 reconstruction
  calibContainer.AppendObject(lhc11h,167693,170593) ;

  calibContainer.WriteToFile("PHOSCflat.root");


}
 MakePHOSflat.C:1
 MakePHOSflat.C:2
 MakePHOSflat.C:3
 MakePHOSflat.C:4
 MakePHOSflat.C:5
 MakePHOSflat.C:6
 MakePHOSflat.C:7
 MakePHOSflat.C:8
 MakePHOSflat.C:9
 MakePHOSflat.C:10
 MakePHOSflat.C:11
 MakePHOSflat.C:12
 MakePHOSflat.C:13
 MakePHOSflat.C:14
 MakePHOSflat.C:15
 MakePHOSflat.C:16
 MakePHOSflat.C:17
 MakePHOSflat.C:18
 MakePHOSflat.C:19
 MakePHOSflat.C:20
 MakePHOSflat.C:21
 MakePHOSflat.C:22
 MakePHOSflat.C:23
 MakePHOSflat.C:24
 MakePHOSflat.C:25
 MakePHOSflat.C:26
 MakePHOSflat.C:27
 MakePHOSflat.C:28
 MakePHOSflat.C:29
 MakePHOSflat.C:30
 MakePHOSflat.C:31
 MakePHOSflat.C:32
 MakePHOSflat.C:33
 MakePHOSflat.C:34
 MakePHOSflat.C:35
 MakePHOSflat.C:36
 MakePHOSflat.C:37
 MakePHOSflat.C:38
 MakePHOSflat.C:39
 MakePHOSflat.C:40
 MakePHOSflat.C:41
 MakePHOSflat.C:42
 MakePHOSflat.C:43
 MakePHOSflat.C:44
 MakePHOSflat.C:45
 MakePHOSflat.C:46
 MakePHOSflat.C:47
 MakePHOSflat.C:48
 MakePHOSflat.C:49
 MakePHOSflat.C:50
 MakePHOSflat.C:51
 MakePHOSflat.C:52
 MakePHOSflat.C:53
 MakePHOSflat.C:54
 MakePHOSflat.C:55
 MakePHOSflat.C:56
 MakePHOSflat.C:57
 MakePHOSflat.C:58
 MakePHOSflat.C:59
 MakePHOSflat.C:60
 MakePHOSflat.C:61
 MakePHOSflat.C:62
 MakePHOSflat.C:63
 MakePHOSflat.C:64
 MakePHOSflat.C:65
 MakePHOSflat.C:66
 MakePHOSflat.C:67
 MakePHOSflat.C:68
 MakePHOSflat.C:69
 MakePHOSflat.C:70
 MakePHOSflat.C:71
 MakePHOSflat.C:72
 MakePHOSflat.C:73
 MakePHOSflat.C:74
 MakePHOSflat.C:75
 MakePHOSflat.C:76
 MakePHOSflat.C:77
 MakePHOSflat.C:78
 MakePHOSflat.C:79
 MakePHOSflat.C:80
 MakePHOSflat.C:81
 MakePHOSflat.C:82
 MakePHOSflat.C:83