ROOT logo
#include <math.h>
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <Riostream.h>
#include <complex>

#include "TVector2.h"
#include "TFile.h"
#include "TString.h"
#include "TF1.h"
#include "TH1.h"
#include "TH2.h"
#include "TH3.h"
#include "TProfile.h"
#include "TProfile2D.h"
#include "TMath.h"
#include "TText.h"
#include "TRandom3.h"
#include "TArray.h"
#include "TLegend.h"
#include "TStyle.h"
#include "TMinuit.h"

using namespace std;

void MakeKFileTherm(){
  // 2-particles

  const int kbVALUES=6;// 6 b values (2,3,5,7,8,9)

  TFile *probeFile=new TFile("Therm_FSI_b2.root","READ");// all files have same binning.
  TH2D *probeHisto = (TH2D*)probeFile->Get("K2_ss");// kt x qinv
  int binsY= probeHisto->GetNbinsY();
  double lowY = probeHisto->GetYaxis()->GetBinLowEdge(1);
  double highY = probeHisto->GetYaxis()->GetBinUpEdge(binsY);
  probeFile->Close();

  TFile *OutFile=new TFile("KFile_temp.root","RECREATE");
  TH2D *K2ssT = new TH2D("K2ssT","",kbVALUES,0.5,kbVALUES+0.5, binsY,lowY,highY);// kt integrated
  TH2D *K2osT = new TH2D("K2osT","",kbVALUES,0.5,kbVALUES+0.5, binsY,lowY,highY);// kt integrated
  TH3D *K2ssT_kt = new TH3D("K2ssT_kt","",kbVALUES,0.5,kbVALUES+0.5, 6,0.5,6+0.5, binsY,lowY,highY);// kt differential
  TH3D *K2osT_kt = new TH3D("K2osT_kt","",kbVALUES,0.5,kbVALUES+0.5, 6,0.5,6+0.5, binsY,lowY,highY);// kt differential
  K2ssT_kt->GetXaxis()->SetTitle("b bin"); K2osT_kt->GetXaxis()->SetTitle("b bin");
  K2ssT_kt->GetYaxis()->SetTitle("kt bin"); K2osT_kt->GetYaxis()->SetTitle("kt bin");
  K2ssT_kt->GetZaxis()->SetTitle("qinv"); K2osT_kt->GetZaxis()->SetTitle("qinv");

  for(int r=0; r<kbVALUES; r++){ 
    
    TString *nameT=new TString("Therm_FSI_b");
        
     
    if(r==0) {*nameT += 2;}
    if(r==1) {*nameT += 3;}
    if(r==2) {*nameT += 5;}
    if(r==3) {*nameT += 7;}
    if(r==4) {*nameT += 8;}
    if(r==5) {*nameT += 9;}
    
    nameT->Append(".root");
        
   

    //
    TFile *file_T=new TFile(nameT->Data(),"READ");
    TH2D *Num2_ss = (TH2D*)file_T->Get("K2_ss");
    TH2D *Den2_ss = (TH2D*)file_T->Get("PlaneWF_ss");
    TH1D *Num_ss = (TH1D*)Num2_ss->ProjectionY();// kt integrated
    TH1D *Den_ss = (TH1D*)Den2_ss->ProjectionY();// kt integrated
    TH2D *Num2_os = (TH2D*)file_T->Get("K2_os");
    TH2D *Den2_os = (TH2D*)file_T->Get("PlaneWF_os");
    TH1D *Num_os = (TH1D*)Num2_os->ProjectionY();// kt integrated
    TH1D *Den_os = (TH1D*)Den2_os->ProjectionY();// kt integrated
    Num_ss->Divide(Den_ss);
    Num_os->Divide(Den_os);
    for(int i=1; i<=binsY; i++){
      K2ssT->SetBinContent(r+1, i, Num_ss->GetBinContent(i));
      K2osT->SetBinContent(r+1, i, Num_os->GetBinContent(i));
    }
   
    // kt differential
    for(int ktbin=1; ktbin<=6; ktbin++){
      TString *name=new TString("pro_");
      *name += ktbin;
      *name += 1;
      TH1D *Num_ss = (TH1D*)Num2_ss->ProjectionY(name->Data(), ktbin*2+3, ktbin*2+4);
      *name += 2;
      TH1D *Den_ss = (TH1D*)Den2_ss->ProjectionY(name->Data(), ktbin*2+3, ktbin*2+4);
      *name += 3;
      TH1D *Num_os = (TH1D*)Num2_os->ProjectionY(name->Data(), ktbin*2+3, ktbin*2+4);
      *name += 4;
      TH1D *Den_os = (TH1D*)Den2_os->ProjectionY(name->Data(), ktbin*2+3, ktbin*2+4);
      Num_ss->Divide(Den_ss);
      Num_os->Divide(Den_os);
       for(int i=1; i<=binsY; i++){
	 K2ssT_kt->SetBinContent(r+1, ktbin, i, Num_ss->GetBinContent(i));
	 K2osT_kt->SetBinContent(r+1, ktbin, i, Num_os->GetBinContent(i));
       }
    }  
    
    // 3-particles

    TH3D *Num3_ss=(TH3D*)file_T->Get("K3ss_3D");
    TH3D *Den3_ss=(TH3D*)file_T->Get("PlaneWF3ss_3D");
    Num3_ss->Divide(Den3_ss);
    TString *OutNameSS = new TString("K3ss_");
    *OutNameSS += r;
    OutFile->cd();
    TH3D *K3ss = (TH3D*)Num3_ss->Clone();
    TH3D *temp3ss = (TH3D*)Num3_ss->Clone();
    for(int i=1; i<=K3ss->GetNbinsX(); i++){
      for(int j=1; j<=K3ss->GetNbinsY(); j++){
	for(int k=1; k<=K3ss->GetNbinsZ(); k++){

	  // GRS
	  //double GRS = K2ssT->GetBinContent(r+1, i) * K2ssT->GetBinContent(r+1, j) * K2ssT->GetBinContent(r+1, k);
	  //K3ss->SetBinContent(i,j,k, GRS);

	  // Omega0
	  if(temp3ss->GetBinContent(i,j,k) > 1.0) K3ss->SetBinContent(i,j,k, 1.0);
	  else{
	    double mean=0;
	    double terms=0;
	    if(temp3ss->GetBinContent(i,j,k) < 1.0) {mean += temp3ss->GetBinContent(i,j,k); terms++;}
	    if(temp3ss->GetBinContent(i,k,j) < 1.0) {mean += temp3ss->GetBinContent(i,k,j); terms++;}
	    if(temp3ss->GetBinContent(j,i,k) < 1.0) {mean += temp3ss->GetBinContent(j,i,k); terms++;}
	    if(temp3ss->GetBinContent(j,k,i) < 1.0) {mean += temp3ss->GetBinContent(j,k,i); terms++;}
	    if(temp3ss->GetBinContent(k,i,j) < 1.0) {mean += temp3ss->GetBinContent(k,i,j); terms++;}
	    if(temp3ss->GetBinContent(k,j,i) < 1.0) {mean += temp3ss->GetBinContent(k,j,i); terms++;}
	    
	    if(terms > 0) {mean /= terms; K3ss->SetBinContent(i,j,k, mean);}
	    else K3ss->SetBinContent(i,j,k, 0);
	    }

	}
      }
    }
    K3ss->Write(OutNameSS->Data());
    //
    TH3D *Num3_os=(TH3D*)file_T->Get("K3os_3D");
    TH3D *Den3_os=(TH3D*)file_T->Get("PlaneWF3os_3D");
    Num3_os->Divide(Den3_os);
    //
    TString *OutNameOS = new TString("K3os_");
    *OutNameOS += r;
    OutFile->cd();
    TH3D *K3os = (TH3D*)Num3_os->Clone();
    TH3D *temp3os = (TH3D*)Num3_os->Clone();
    for(int i=1; i<=K3os->GetNbinsX(); i++){
      for(int j=1; j<=K3os->GetNbinsY(); j++){
	for(int k=1; k<=K3os->GetNbinsZ(); k++){

	  // GRS
	  //double GRS = K2ssT->GetBinContent(r+1, i) * K2osT->GetBinContent(r+1, j) * K2osT->GetBinContent(r+1, k);
	  //K3os->SetBinContent(i,j,k, GRS);
	  
	  // Omega0
	  if(temp3os->GetBinContent(i,j,k) > 3.0) K3os->SetBinContent(i,j,k, 1.0);
	  else {
	    double mean=0;
	    double terms=0;
	    if(temp3os->GetBinContent(i,j,k) < 3.0) {mean += temp3os->GetBinContent(i,j,k); terms++;}
	    if(temp3os->GetBinContent(i,k,j) < 3.0) {mean += temp3os->GetBinContent(i,k,j); terms++;}
	    
	    if(terms > 0) {mean /= terms; K3os->SetBinContent(i,j,k, mean);}
	    else K3os->SetBinContent(i,j,k, 0);
	    }
	  
	}
      }
    }
    
    K3os->Write(OutNameOS->Data());
    
    
    file_T->Close();
    
  }// r loop
  
  //
  OutFile->cd();
  //
  K2ssT->Write("K2ssT");
  K2osT->Write("K2osT");
  K2ssT_kt->Write("K2ssT_kt");
  K2osT_kt->Write("K2osT_kt");
  //
  
  OutFile->Close();

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