16 #include "TProfile2D.h"
27 void MakeKFileTherm(){
30 const int kbVALUES=6;// 6 b values (2,3,5,7,8,9)
32 TFile *probeFile=new TFile("Therm_FSI_b2.root","READ");// all files have same binning.
33 TH2D *probeHisto = (TH2D*)probeFile->Get("K2_ss");// kt x qinv
34 int binsY= probeHisto->GetNbinsY();
35 double lowY = probeHisto->GetYaxis()->GetBinLowEdge(1);
36 double highY = probeHisto->GetYaxis()->GetBinUpEdge(binsY);
39 TFile *OutFile=new TFile("KFile_temp.root","RECREATE");
40 TH2D *K2ssT = new TH2D("K2ssT","",kbVALUES,0.5,kbVALUES+0.5, binsY,lowY,highY);// kt integrated
41 TH2D *K2osT = new TH2D("K2osT","",kbVALUES,0.5,kbVALUES+0.5, binsY,lowY,highY);// kt integrated
42 TH3D *K2ssT_kt = new TH3D("K2ssT_kt","",kbVALUES,0.5,kbVALUES+0.5, 6,0.5,6+0.5, binsY,lowY,highY);// kt differential
43 TH3D *K2osT_kt = new TH3D("K2osT_kt","",kbVALUES,0.5,kbVALUES+0.5, 6,0.5,6+0.5, binsY,lowY,highY);// kt differential
44 K2ssT_kt->GetXaxis()->SetTitle("b bin"); K2osT_kt->GetXaxis()->SetTitle("b bin");
45 K2ssT_kt->GetYaxis()->SetTitle("kt bin"); K2osT_kt->GetYaxis()->SetTitle("kt bin");
46 K2ssT_kt->GetZaxis()->SetTitle("qinv"); K2osT_kt->GetZaxis()->SetTitle("qinv");
48 for(int r=0; r<kbVALUES; r++){
50 TString *nameT=new TString("Therm_FSI_b");
53 if(r==0) {*nameT += 2;}
54 if(r==1) {*nameT += 3;}
55 if(r==2) {*nameT += 5;}
56 if(r==3) {*nameT += 7;}
57 if(r==4) {*nameT += 8;}
58 if(r==5) {*nameT += 9;}
60 nameT->Append(".root");
65 TFile *file_T=new TFile(nameT->Data(),"READ");
66 TH2D *Num2_ss = (TH2D*)file_T->Get("K2_ss");
67 TH2D *Den2_ss = (TH2D*)file_T->Get("PlaneWF_ss");
68 TH1D *Num_ss = (TH1D*)Num2_ss->ProjectionY();// kt integrated
69 TH1D *Den_ss = (TH1D*)Den2_ss->ProjectionY();// kt integrated
70 TH2D *Num2_os = (TH2D*)file_T->Get("K2_os");
71 TH2D *Den2_os = (TH2D*)file_T->Get("PlaneWF_os");
72 TH1D *Num_os = (TH1D*)Num2_os->ProjectionY();// kt integrated
73 TH1D *Den_os = (TH1D*)Den2_os->ProjectionY();// kt integrated
74 Num_ss->Divide(Den_ss);
75 Num_os->Divide(Den_os);
76 for(int i=1; i<=binsY; i++){
77 K2ssT->SetBinContent(r+1, i, Num_ss->GetBinContent(i));
78 K2osT->SetBinContent(r+1, i, Num_os->GetBinContent(i));
82 for(int ktbin=1; ktbin<=6; ktbin++){
83 TString *name=new TString("pro_");
86 TH1D *Num_ss = (TH1D*)Num2_ss->ProjectionY(name->Data(), ktbin*2+3, ktbin*2+4);
88 TH1D *Den_ss = (TH1D*)Den2_ss->ProjectionY(name->Data(), ktbin*2+3, ktbin*2+4);
90 TH1D *Num_os = (TH1D*)Num2_os->ProjectionY(name->Data(), ktbin*2+3, ktbin*2+4);
92 TH1D *Den_os = (TH1D*)Den2_os->ProjectionY(name->Data(), ktbin*2+3, ktbin*2+4);
93 Num_ss->Divide(Den_ss);
94 Num_os->Divide(Den_os);
95 for(int i=1; i<=binsY; i++){
96 K2ssT_kt->SetBinContent(r+1, ktbin, i, Num_ss->GetBinContent(i));
97 K2osT_kt->SetBinContent(r+1, ktbin, i, Num_os->GetBinContent(i));
103 TH3D *Num3_ss=(TH3D*)file_T->Get("K3ss_3D");
104 TH3D *Den3_ss=(TH3D*)file_T->Get("PlaneWF3ss_3D");
105 Num3_ss->Divide(Den3_ss);
106 TString *OutNameSS = new TString("K3ss_");
109 TH3D *K3ss = (TH3D*)Num3_ss->Clone();
110 TH3D *temp3ss = (TH3D*)Num3_ss->Clone();
111 for(int i=1; i<=K3ss->GetNbinsX(); i++){
112 for(int j=1; j<=K3ss->GetNbinsY(); j++){
113 for(int k=1; k<=K3ss->GetNbinsZ(); k++){
116 //double GRS = K2ssT->GetBinContent(r+1, i) * K2ssT->GetBinContent(r+1, j) * K2ssT->GetBinContent(r+1, k);
117 //K3ss->SetBinContent(i,j,k, GRS);
120 if(temp3ss->GetBinContent(i,j,k) > 1.0) K3ss->SetBinContent(i,j,k, 1.0);
124 if(temp3ss->GetBinContent(i,j,k) < 1.0) {mean += temp3ss->GetBinContent(i,j,k); terms++;}
125 if(temp3ss->GetBinContent(i,k,j) < 1.0) {mean += temp3ss->GetBinContent(i,k,j); terms++;}
126 if(temp3ss->GetBinContent(j,i,k) < 1.0) {mean += temp3ss->GetBinContent(j,i,k); terms++;}
127 if(temp3ss->GetBinContent(j,k,i) < 1.0) {mean += temp3ss->GetBinContent(j,k,i); terms++;}
128 if(temp3ss->GetBinContent(k,i,j) < 1.0) {mean += temp3ss->GetBinContent(k,i,j); terms++;}
129 if(temp3ss->GetBinContent(k,j,i) < 1.0) {mean += temp3ss->GetBinContent(k,j,i); terms++;}
131 if(terms > 0) {mean /= terms; K3ss->SetBinContent(i,j,k, mean);}
132 else K3ss->SetBinContent(i,j,k, 0);
138 K3ss->Write(OutNameSS->Data());
140 TH3D *Num3_os=(TH3D*)file_T->Get("K3os_3D");
141 TH3D *Den3_os=(TH3D*)file_T->Get("PlaneWF3os_3D");
142 Num3_os->Divide(Den3_os);
144 TString *OutNameOS = new TString("K3os_");
147 TH3D *K3os = (TH3D*)Num3_os->Clone();
148 TH3D *temp3os = (TH3D*)Num3_os->Clone();
149 for(int i=1; i<=K3os->GetNbinsX(); i++){
150 for(int j=1; j<=K3os->GetNbinsY(); j++){
151 for(int k=1; k<=K3os->GetNbinsZ(); k++){
154 //double GRS = K2ssT->GetBinContent(r+1, i) * K2osT->GetBinContent(r+1, j) * K2osT->GetBinContent(r+1, k);
155 //K3os->SetBinContent(i,j,k, GRS);
158 if(temp3os->GetBinContent(i,j,k) > 3.0) K3os->SetBinContent(i,j,k, 1.0);
162 if(temp3os->GetBinContent(i,j,k) < 3.0) {mean += temp3os->GetBinContent(i,j,k); terms++;}
163 if(temp3os->GetBinContent(i,k,j) < 3.0) {mean += temp3os->GetBinContent(i,k,j); terms++;}
165 if(terms > 0) {mean /= terms; K3os->SetBinContent(i,j,k, mean);}
166 else K3os->SetBinContent(i,j,k, 0);
173 K3os->Write(OutNameOS->Data());
183 K2ssT->Write("K2ssT");
184 K2osT->Write("K2osT");
185 K2ssT_kt->Write("K2ssT_kt");
186 K2osT_kt->Write("K2osT_kt");