diff --git a/Simulation/Tools/CaloSamplingFractionAnalysis/share/LarEMSamplingFraction_analysis.C b/Simulation/Tools/CaloSamplingFractionAnalysis/share/LarEMSamplingFraction_analysis.C
index e84c6fb92ee9ee316f0320ee060c266eccd25ac8..6691b1c837b90f503edd1d0473b11681c822db87 100644
--- a/Simulation/Tools/CaloSamplingFractionAnalysis/share/LarEMSamplingFraction_analysis.C
+++ b/Simulation/Tools/CaloSamplingFractionAnalysis/share/LarEMSamplingFraction_analysis.C
@@ -2,12 +2,14 @@
 Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
+void LarEMSamplingFraction_barrel()
 {
-  TFile* file = TFile::Open("LArEM_SF.root");
-  new TCanvas("Etot","Etot");
+  TFile* file = TFile::Open("LArEM_SF_barrel.root");
+  TTree* mytree=(TTree*)file->Get("mytree");
+  new TCanvas("Etot_barrel","Etot_barrel");
   mytree->Draw("Sum$(energy_active_total+energy_inactive_total)");
 
-  new TCanvas("ELAr_hit","ELAr_hit");
+  new TCanvas("ELAr_hit_barrel","ELAr_hit_barrel");
   mytree->Draw("(energy_hit[0]+energy_hit[1]+energy_hit[2]+energy_hit[3])");
 
   //new TCanvas("SF","SF");
@@ -16,28 +18,101 @@ Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
   //new TCanvas("LAr_barrel","LAr_barrel");
   //mytree->Draw("(energy_active_total[0]+energy_active_total[1]+energy_active_total[2]+energy_active_total[3]):mc_eta>>LAr_barrel(56,0,1.4,50,7000,12000)","","colz");
 
-  new TCanvas("SF_LAr_barrel_calibhit","SF_LAr_barrel_calibhit");
-  mytree->Draw("(energy_active_total[0]+energy_active_total[1]+energy_active_total[2]+energy_active_total[3])/(energy_active_total[0]+energy_active_total[1]+energy_active_total[2]+energy_active_total[3]+energy_inactive_total[0]+energy_inactive_total[1]+energy_inactive_total[2]+energy_inactive_total[3]):mc_eta>>SF_LAr_barrel_calibhit(56,0,1.4,70,0.18,0.25)","","colz");
+  TCanvas* c;
+  c=new TCanvas("SF_LAr_barrel_calibhit","SF_LAr_barrel_calibhit");
+  mytree->Draw("(energy_active_total[0]+energy_active_total[1]+energy_active_total[2]+energy_active_total[3])/(energy_active_total[0]+energy_active_total[1]+energy_active_total[2]+energy_active_total[3]+energy_inactive_total[0]+energy_inactive_total[1]+energy_inactive_total[2]+energy_inactive_total[3]):mc_eta>>SF_LAr_barrel_calibhit(56,0,1.4,140,0.18,0.25)","","colz");
   TH2* SF_LAr_barrel_calibhit=(TH2*)gDirectory->Get("SF_LAr_barrel_calibhit");
   //ProfileX(const char* name = "_pfx", Int_t firstybin = 1, Int_t lastybin = -1, Option_t* option = "")
   TProfile* SF_prof_calibhit=SF_LAr_barrel_calibhit->ProfileX();
   SF_prof_calibhit->SetLineColor(2);
   SF_prof_calibhit->Draw("same");
   //TFitResultPtr* fitres=
-  SF_prof_calibhit->Fit("pol0","","",0.1,0.75);
-  SF_prof_calibhit->Fit("pol0","+","",0.85,1.35);
+  //SF_prof_calibhit->Fit("pol0","","",0.1,0.75);
+  //SF_prof_calibhit->Fit("pol0","+","",0.85,1.35);
+  c->SetGridx();
+  c->SetGridy();
   
-  new TCanvas("SF_LAr_barrel","SF_LAr_barrel");
-  mytree->Draw("(energy_hit[0]+energy_hit[1]+energy_hit[2]+energy_hit[3])/(energy_active_total[0]+energy_active_total[1]+energy_active_total[2]+energy_active_total[3]+energy_inactive_total[0]+energy_inactive_total[1]+energy_inactive_total[2]+energy_inactive_total[3]):mc_eta>>SF_LAr_barrel(56,0,1.4,70,0.16,0.23)","","colz");
+  c=new TCanvas("SF_LAr_barrel","SF_LAr_barrel");
+  mytree->Draw("(energy_hit[0]+energy_hit[1]+energy_hit[2]+energy_hit[3])/(energy_active_total[0]+energy_active_total[1]+energy_active_total[2]+energy_active_total[3]+energy_inactive_total[0]+energy_inactive_total[1]+energy_inactive_total[2]+energy_inactive_total[3]):mc_eta>>SF_LAr_barrel(56,0,1.4,140,0.16,0.23)","","colz",1000);
   TH2* SF_LAr_barrel=(TH2*)gDirectory->Get("SF_LAr_barrel");
+  SF_LAr_barrel->SetStats(0);
+  SF_LAr_barrel->SetTitle("Sampling fraction LAr EM barrel");
+  SF_LAr_barrel->GetXaxis()->SetTitle("|#eta|");
+  SF_LAr_barrel->GetYaxis()->SetTitle("E_{G4hit}/E_{total}");
   //ProfileX(const char* name = "_pfx", Int_t firstybin = 1, Int_t lastybin = -1, Option_t* option = "")
   TProfile* SF_prof=SF_LAr_barrel->ProfileX();
   SF_prof->SetLineColor(2);
   SF_prof->Draw("same");
-  //TFitResultPtr* fitres=
-  SF_prof->Fit("pol0","","",0.1,0.75);
-  SF_prof->Fit("pol0","+","",0.85,1.35);
+  SF_prof->Fit("pol0","Q","",0.1,0.75);
+  SF_prof->Fit("pol0","Q+","",0.85,1.35);
+  TList* res=SF_prof->GetListOfFunctions();
+
+  TPaveText *pt = new TPaveText(.05,.2,.75,.23,"");
+  pt->SetFillStyle(1001);
+  pt->SetFillColor(10);
+  pt->SetBorderSize(1);
+  pt->AddText("Sampling fractions LAr EM barrel");
+
+  for(int i=0;i<res->GetSize();++i) if(res->At(i)->InheritsFrom(TF1::Class())) {
+    TF1* func=(TF1*)res->At(i);
+    TString text=Form("%4.2f < #eta < %4.2f = %7.5f +- %7.5f",func->GetXmin(),func->GetXmax(),func->GetParameter(0),func->GetParError(0));
+    //cout<<"i="<<i<<" "<<res->At(i)->ClassName()<<" : "<<res->At(i)->GetName()<<endl;
+    cout<<"Sampling fraction : "<<text<<endl;
+    pt->AddText(text);
+  }
   
-  //mytree->Print();
+  pt->Draw();
+   
   
+  c->SetGridx();
+  c->SetGridy();
+}
+
+void LarEMSamplingFraction_endcap()
+{
+  TFile* file = TFile::Open("LArEM_SF_endcap.root");
+  TTree* mytree=(TTree*)file->Get("mytree");
+  new TCanvas("Etot_endcap","Etot_endcap");
+  mytree->Draw("Sum$(energy_active_total+energy_inactive_total)");
+
+  new TCanvas("ELAr_hit_endcap","ELAr_hit_endcap");
+  mytree->Draw("(energy_hit[4]+energy_hit[5]+energy_hit[6]+energy_hit[7])");
+
+  TCanvas* c;
+  c=new TCanvas("SF_LAr_endcap_calibhit","SF_LAr_endcap_calibhit");
+  mytree->Draw("(energy_active_total[4]+energy_active_total[5]+energy_active_total[6]+energy_active_total[7])/(energy_active_total[4]+energy_active_total[5]+energy_active_total[6]+energy_active_total[7]+energy_inactive_total[4]+energy_inactive_total[5]+energy_inactive_total[6]+energy_inactive_total[7]):mc_eta>>SF_LAr_endcap_calibhit(86,1.35,3.5,400,0.00,0.40)","","colz");
+  TH2* SF_LAr_endcap_calibhit=(TH2*)gDirectory->Get("SF_LAr_endcap_calibhit");
+  //ProfileX(const char* name = "_pfx", Int_t firstybin = 1, Int_t lastybin = -1, Option_t* option = "")
+  TProfile* SF_prof_calibhit=SF_LAr_endcap_calibhit->ProfileX();
+  SF_prof_calibhit->SetLineColor(2);
+  SF_prof_calibhit->Draw("same");
+  //TFitResultPtr* fitres=
+  //SF_prof_calibhit->Fit("pol0","","",0.1,0.75);
+  //SF_prof_calibhit->Fit("pol0","+","",0.85,1.35);
+  c->SetGridx();
+  c->SetGridy();
+  
+  c=new TCanvas("SF_LAr_endcap","SF_LAr_endcap");
+  mytree->Draw("(energy_hit[4]+energy_hit[5]+energy_hit[6]+energy_hit[7])/(energy_active_total[4]+energy_active_total[5]+energy_active_total[6]+energy_active_total[7]+energy_inactive_total[4]+energy_inactive_total[5]+energy_inactive_total[6]+energy_inactive_total[7]):mc_eta>>SF_LAr_endcap(86,1.35,3.5,800,0.00,0.40)","","colz");
+  TH2* SF_LAr_endcap=(TH2*)gDirectory->Get("SF_LAr_endcap");
+  SF_LAr_endcap->SetStats(0);
+  SF_LAr_endcap->SetTitle("Sampling fraction LAr EM endcap");
+  SF_LAr_endcap->GetXaxis()->SetTitle("|#eta|");
+  SF_LAr_endcap->GetYaxis()->SetTitle("E_{G4hit}/E_{total}");
+  SF_LAr_endcap->GetYaxis()->SetRangeUser(0,0.15);
+  //ProfileX(const char* name = "_pfx", Int_t firstybin = 1, Int_t lastybin = -1, Option_t* option = "")
+  TProfile* SF_prof=SF_LAr_endcap->ProfileX();
+  SF_prof->SetLineColor(2);
+  SF_prof->Draw("same");
+  //TFitResultPtr* fitres=
+  //SF_prof->Fit("pol0","","",0.1,0.75);
+  //SF_prof->Fit("pol0","+","",0.85,1.35);
+  c->SetGridx();
+  c->SetGridy();
+}
+
+void LarEMSamplingFraction_analysis()
+{
+  LarEMSamplingFraction_barrel();
+  LarEMSamplingFraction_endcap();
 }
diff --git a/Simulation/Tools/CaloSamplingFractionAnalysis/share/tile_sf.sh b/Simulation/Tools/CaloSamplingFractionAnalysis/share/tile_sf.sh
new file mode 100755
index 0000000000000000000000000000000000000000..f27d3b0143a634088b1e17d2e13ab9ae5a2e4612
--- /dev/null
+++ b/Simulation/Tools/CaloSamplingFractionAnalysis/share/tile_sf.sh
@@ -0,0 +1,36 @@
+#!/bin/zsh
+
+nevt=${1:-10000}
+if [ $# -gt 0 ]
+then shift
+fi
+args="${(j. .)${@}:- -00 -05 +05 -10 +10 -15 +15 -20 +20 -25 +25 -30 +30 -35 +35 -40 +40 -45 +45 -50 +50 -55 +55 -60 +60 -90 +90}"
+
+Zbeam=20.
+if [ ! -f tile_sf.C ]
+then get_files tile_sf.C
+     sed "s|-15.,15.|-${Zbeam},${Zbeam}|g" tile_sf.C > t.C
+     mv -f t.C tile_sf.C
+fi
+
+for v in `echo $args`
+do if [[ "$v" -lt 1 ]] && [[ "$v" -gt -1 ]] && [ "${v/./}" != "${v}" ]
+   then p="Eta=$v"
+   elif [[ "$v" -lt 90 ]] && [[ "$v" -gt -90 ]]
+   then p="Z=0; Theta=$v"
+   elif [[ "$v" -eq 90 ]] || [[ "$v" -eq -90 ]]
+   then p="Z=2550; Theta=$v"
+   elif [[ "$v" -gt  2280 ]] && [[ "$v" -lt  4250 ]]
+   then p="Theta=90; Z=${v/+/}"
+   elif [[ "$v" -lt -2280 ]] && [[ "$v" -gt -4250 ]]
+   then p="Theta=-90; Z=${v/-/}"
+   else echo "Ignoring invalid value $v"
+        continue
+   fi
+   echo "========== Running athena for $p: $nevt events =========="
+   athena.py -c "EvtMax=$nevt; PID=11; E=100000; Zbeam=[-$Zbeam,$Zbeam]; FileSuffix='$v'; $p;" TileSimEx/jobOptions_TileTB_Sim.py  
+   athena.py -c "doHitNtuple=True; doD3PD=True; doTileNtuple=False; FileSuffix='$v';" TileSimEx/jobOptions_TileTB_Dig.py
+   root -b -q "tile_sf.C(\"$v\");" > sf$v.log
+done
+
+grep SF sf*.log