diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/CMakeLists.txt b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/CMakeLists.txt
index 97f8b0901d8964b7b1d44d4403fa9bfa61f8731d..d1ad92ba48afef60852c598beca6efca677e9181 100644
--- a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/CMakeLists.txt
+++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/CMakeLists.txt
@@ -34,7 +34,8 @@ atlas_add_root_dictionary( ISF_FastCaloSimEvent _dictSource
                            ISF_FastCaloSimEvent/TFCS2DFunction.h 
                            ISF_FastCaloSimEvent/TFCS2DFunctionHistogram.h 
                            ISF_FastCaloSimEvent/TFCS2DFunctionTemplateHistogram.h 
-                           ISF_FastCaloSimEvent/TFCS2DFunctionTemplateInterpolationHistogram.h 
+                           ISF_FastCaloSimEvent/TFCS2DFunctionTemplateInterpolationHistogram.h
+                           ISF_FastCaloSimEvent/TFCS2DFunctionTemplateInterpolationExpHistogram.h 
                            ISF_FastCaloSimEvent/TFCSParametrizationBase.h 
                            ISF_FastCaloSimEvent/TFCSParametrizationPlaceholder.h
                            ISF_FastCaloSimEvent/TFCSParametrization.h 
diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/LinkDef.h b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/LinkDef.h
index 503cdc8a1af64a32745dfa43edb768c02256acff..421d8da598c07621ed55be4056e23254db031f91 100644
--- a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/LinkDef.h
+++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/LinkDef.h
@@ -19,6 +19,7 @@
 #include "ISF_FastCaloSimEvent/TFCS2DFunctionHistogram.h"
 #include "ISF_FastCaloSimEvent/TFCS2DFunctionTemplateHistogram.h"
 #include "ISF_FastCaloSimEvent/TFCS2DFunctionTemplateInterpolationHistogram.h"
+#include "ISF_FastCaloSimEvent/TFCS2DFunctionTemplateInterpolationExpHistogram.h"
 
 #include "ISF_FastCaloSimEvent/TFCSParametrizationBase.h"
 #include "ISF_FastCaloSimEvent/TFCSParametrizationPlaceholder.h"
@@ -42,6 +43,9 @@
 #include "ISF_FastCaloSimEvent/TFCSEnergyAndHitGAN.h"
 
 #include "ISF_FastCaloSimEvent/TFCSLateralShapeParametrization.h"
+#include "ISF_FastCaloSimEvent/TFCSHistoLateralShapeGausLogWeight.h"
+#include "ISF_FastCaloSimEvent/TFCSHistoLateralShapeGausLogWeightHitAndMiss.h"
+
 #include "ISF_FastCaloSimEvent/TFCSLateralShapeParametrizationHitBase.h"
 #include "ISF_FastCaloSimEvent/TFCSLateralShapeParametrizationHitChain.h"
 #include "ISF_FastCaloSimEvent/TFCSLateralShapeParametrizationFluctChain.h"
@@ -51,9 +55,7 @@
 #include "ISF_FastCaloSimEvent/TFCSHistoLateralShapeParametrizationFCal.h"
 #include "ISF_FastCaloSimEvent/TFCS2DFunctionLateralShapeParametrization.h"
 #include "ISF_FastCaloSimEvent/TFCSHistoLateralShapeWeight.h"
-#include "ISF_FastCaloSimEvent/TFCSHistoLateralShapeGausLogWeight.h"
 #include "ISF_FastCaloSimEvent/TFCSHistoLateralShapeWeightHitAndMiss.h"
-#include "ISF_FastCaloSimEvent/TFCSHistoLateralShapeGausLogWeightHitAndMiss.h"
 #include "ISF_FastCaloSimEvent/TFCSLateralShapeParametrizationHitNumberFromE.h"
 #include "ISF_FastCaloSimEvent/TFCSHitCellMapping.h"
 #include "ISF_FastCaloSimEvent/TFCSHitCellMappingFCal.h"
@@ -142,21 +144,56 @@
 #pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint8_t,float>+;
 #pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint16_t,float>+;
 #pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint32_t,float>+;
 #pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint8_t,float>+;
 #pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint16_t,float>+;
 #pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint32_t,float>+;
 
 #pragma link C++ class TFCS2DFunctionInt8Int8Int8Histogram+;
 #pragma link C++ class TFCS2DFunctionInt8Int8Int16Histogram+;
 #pragma link C++ class TFCS2DFunctionInt8Int8Int32Histogram+;
-
 #pragma link C++ class TFCS2DFunctionInt8Int16Int8Histogram+;
 #pragma link C++ class TFCS2DFunctionInt8Int16Int16Histogram+;
 #pragma link C++ class TFCS2DFunctionInt8Int16Int32Histogram+;
-
+#pragma link C++ class TFCS2DFunctionInt8Int32Int8Histogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int32Int16Histogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int32Int32Histogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int8Int8Histogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int8Int16Histogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int8Int32Histogram+;
 #pragma link C++ class TFCS2DFunctionInt16Int16Int8Histogram+;
 #pragma link C++ class TFCS2DFunctionInt16Int16Int16Histogram+;
 #pragma link C++ class TFCS2DFunctionInt16Int16Int32Histogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int32Int8Histogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int32Int16Histogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int32Int32Histogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int8Int8Histogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int8Int16Histogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int8Int32Histogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int16Int8Histogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int16Int16Histogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int16Int32Histogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int32Int8Histogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int32Int16Histogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int32Int32Histogram+;
+
 
 #pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint8_t,float>+;
 #pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint16_t,float>+;
@@ -164,21 +201,87 @@
 #pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint8_t,float>+;
 #pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint16_t,float>+;
 #pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint32_t,float>+;
 #pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint8_t,float>+;
 #pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint16_t,float>+;
 #pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint32_t,float>+;
+
+
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint32_t,float>+;
+
 
 #pragma link C++ class TFCS2DFunctionInt8Int8Int8InterpolationHistogram+;
 #pragma link C++ class TFCS2DFunctionInt8Int8Int16InterpolationHistogram+;
 #pragma link C++ class TFCS2DFunctionInt8Int8Int32InterpolationHistogram+;
-
 #pragma link C++ class TFCS2DFunctionInt8Int16Int8InterpolationHistogram+;
 #pragma link C++ class TFCS2DFunctionInt8Int16Int16InterpolationHistogram+;
 #pragma link C++ class TFCS2DFunctionInt8Int16Int32InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int32Int8InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int32Int16InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int32Int32InterpolationHistogram+;
 
+#pragma link C++ class TFCS2DFunctionInt16Int8Int8InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int8Int16InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int8Int32InterpolationHistogram+;
 #pragma link C++ class TFCS2DFunctionInt16Int16Int8InterpolationHistogram+;
 #pragma link C++ class TFCS2DFunctionInt16Int16Int16InterpolationHistogram+;
 #pragma link C++ class TFCS2DFunctionInt16Int16Int32InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int32Int8InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int32Int16InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int32Int32InterpolationHistogram+;
+
+#pragma link C++ class TFCS2DFunctionInt32Int8Int8InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int8Int16InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int8Int32InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int16Int8InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int16Int16InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int16Int32InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int32Int8InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int32Int16InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int32Int32InterpolationHistogram+;
 
 ///End Linkdefs needed for template based histograms
 
diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCS1DFunctionTemplateHelpers.h b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCS1DFunctionTemplateHelpers.h
index 1a3c17024ee514df5e8b960e83b5e7771a6b4367..9f81d9a123e2ed9b393447d310779dc1c3a37ac8 100644
--- a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCS1DFunctionTemplateHelpers.h
+++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCS1DFunctionTemplateHelpers.h
@@ -251,15 +251,31 @@ template<typename T,typename Trandom=float> class TFCS1DFunction_HistogramBinEdg
       return (1-drnd)*m_array[pos] + drnd*m_array[pos+1];
     };
 
-    ///return interpolated position for bin pos, such that histograming the position gives a linear slope m,
+    ///return linearly interpolated position for bin pos, such that histograming the position gives a linear slope m,
     ///where m is in units of the bin width for bin pos. Interpolation is done with a random value in the range [0,1]
-    inline T position(size_t pos,Trandom m,const Trandom& drnd) const {
+     inline T position_lin(size_t pos,Trandom m,const Trandom& drnd) const {
       if(m>2) m=2;
       if(m<-2) m=-2;
       Trandom x=fabs(m)>0.001 ? (0.5*std::sqrt(m*(m+8*drnd-4)+4)-1)/m+0.5 : drnd;
       return (1-x)*m_array[pos] + x*m_array[pos+1];
     };
 
+    ///return exponetially interpolated position for bin pos, such that histograming the position gives a linear slope m,
+    ///where m is in units of the bin width for bin pos. Interpolation is done with a random value in the range [0,1]
+    inline T position_exp(size_t pos,Trandom beta,const Trandom& drnd) const {
+	Trandom z = drnd;///(m_array[pos+1] - m_array[pos]);
+	T pos1=GetBinLowEdge(pos);
+        T pos2=GetBinLowEdge(pos+1);
+	if(fabs(beta) < 1.0e-8) return (1-z)*pos1 + z*pos2;
+	else 
+	{ T deltax = m_array[pos+1] - m_array[pos]; 
+		if(deltax == 0) return m_array[pos];
+		else{  z = 1/beta*log(  1.0 + drnd*(exp(beta*deltax) - 1.0)  )/deltax;  }
+	}
+
+      return (1-z)*pos1 + z*pos2;
+    };
+
   private:
     TFCS1DFunction_Array<T> m_array;
     inline size_t size() const {return m_array.size();};
@@ -353,7 +369,11 @@ template<typename T,typename Tint,typename Trandom=float> class TFCS1DFunction_H
     
     ///return interpolated position for bin pos, such that histograming the position gives a linear slope m,
     ///where m is in units of the bin width for bin pos. Interpolation is done with a random value in the range [0,1]
-    inline T position(size_t pos,Trandom m,const Trandom& drnd) const {
+   
+
+    ///return linearly interpolated position for bin pos, such that histograming the position gives a linear slope m,
+    ///where m is in units of the bin width for bin pos. Interpolation is done with a random value in the range [0,1]
+     inline T position_lin(size_t pos,Trandom m,const Trandom& drnd) const {
       if(m>2) m=2;
       if(m<-2) m=-2;
       Trandom x=fabs(m)>0.001 ? (0.5*std::sqrt(m*(m+8*drnd-4)+4)-1)/m+0.5 : drnd;
@@ -361,6 +381,23 @@ template<typename T,typename Tint,typename Trandom=float> class TFCS1DFunction_H
       T pos2=GetBinLowEdge(pos+1);
       return (1-x)*pos1 + x*pos2;
     };
+
+    ///return exponentially interpolated position for bin pos, such that histograming the position gives a linear slope m,
+    ///where m is in units of the bin width for bin pos. Interpolation is done with a random value in the range [0,1]
+    inline T position_exp(size_t pos,Trandom beta,const Trandom& drnd) const {
+	Trandom z = drnd;///(m_array[pos+1] - m_array[pos]);
+	T pos1=GetBinLowEdge(pos);
+        T pos2=GetBinLowEdge(pos+1);
+	if(fabs(beta) < 1.0e-8) return (1-z)*pos1 + z*pos2;
+	else 
+	{ T deltax = m_array[pos+1] - m_array[pos]; 
+		if(deltax == 0) return m_array[pos];
+		else{  z = 1/beta*log(  1.0 + drnd*(exp(beta*deltax) - 1.0)  )/deltax;  }
+	}
+
+      return (1-z)*pos1 + z*pos2;
+    };
+
     
   private:
     TFCS1DFunction_Array<Tint> m_array;
@@ -395,4 +432,42 @@ class TFCS1DFunction_HistogramInt32BinEdges: public TFCS1DFunction_HistogramComp
   ClassDefNV(TFCS1DFunction_HistogramInt32BinEdges,1)  //TFCS1DFunction_HistogramInt32BinEdges
 };
 
+
+#if defined(__ROOTCLING__) && defined(__FastCaloSimStandAlone__)
+#pragma link C++ class TFCS1DFunction_Numeric<uint8_t,float>+;
+#pragma link C++ class TFCS1DFunction_Numeric<uint16_t,float>+;
+#pragma link C++ class TFCS1DFunction_Numeric<uint32_t,float>+;
+#pragma link C++ class TFCS1DFunction_Numeric<float,float>+;
+#pragma link C++ class TFCS1DFunction_Numeric<double,float>+;
+#pragma link C++ class TFCS1DFunction_Numeric<double,double>+;
+
+#pragma link C++ class TFCS1DFunction_Array<float>-;
+#pragma link C++ class TFCS1DFunction_Array<double>-;
+#pragma link C++ class TFCS1DFunction_Array<uint8_t>-;
+#pragma link C++ class TFCS1DFunction_Array<uint16_t>-;
+#pragma link C++ class TFCS1DFunction_Array<uint32_t>-;
+
+#pragma link C++ class TFCS1DFunction_HistogramContent<float,float>+;
+#pragma link C++ class TFCS1DFunction_HistogramContent<double,float>+;
+#pragma link C++ class TFCS1DFunction_HistogramContent<double,double>+;
+#pragma link C++ class TFCS1DFunction_HistogramContent<uint8_t,float>+;
+#pragma link C++ class TFCS1DFunction_HistogramContent<uint16_t,float>+;
+#pragma link C++ class TFCS1DFunction_HistogramContent<uint32_t,float>+;
+
+#pragma link C++ class TFCS1DFunction_HistogramBinEdges<float,float>+;
+#pragma link C++ class TFCS1DFunction_HistogramBinEdges<double,float>+;
+#pragma link C++ class TFCS1DFunction_HistogramBinEdges<double,double>+;
+
+#pragma link C++ class TFCS1DFunction_HistogramCompactBinEdges<float,uint8_t,float>+;
+#pragma link C++ class TFCS1DFunction_HistogramCompactBinEdges<float,uint16_t,float>+;
+#pragma link C++ class TFCS1DFunction_HistogramCompactBinEdges<float,uint32_t,float>+;
+
+#pragma link C++ class TFCS1DFunction_HistogramInt8BinEdges+;
+#pragma link C++ class TFCS1DFunction_HistogramInt16BinEdges+;
+#pragma link C++ class TFCS1DFunction_HistogramInt32BinEdges+;
+#pragma link C++ class TFCS1DFunction_HistogramFloatBinEdges+;
+#pragma link C++ class TFCS1DFunction_HistogramDoubleBinEdges+;
+
+#endif
+
 #endif
diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCS1DFunctionTemplateInterpolationHistogram.h b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCS1DFunctionTemplateInterpolationHistogram.h
index 98d77ee14e086c46008314cd038edb64cb42f7f7..35494d350c116fe5a82c8269b95ec4f479682a73 100644
--- a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCS1DFunctionTemplateInterpolationHistogram.h
+++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCS1DFunctionTemplateInterpolationHistogram.h
@@ -73,7 +73,7 @@ template <typename Txvec, typename Ty,typename Trandom=float> class TFCS1DFuncti
       } else m=0;
       
       //std::cout<<"fbin="<<ibin<<" fx="<<m_HistoBorders.GetBinLowEdge(ibin)<<" frac="<<m_HistoContents.get_fraction(ibin)<<" dfracprev="<<dfracprev<<" dfrac="<<dfrac<<" dfracnext="<<dfracnext<<" dfracprev-dfrac="<<dfracprev-dfrac<<" dfracnext-dfrac="<<dfracnext-dfrac<<" m="<<m<<" residual_rnd="<<residual_rnd<<std::endl;
-      return m_HistoBorders.position(ibin,m,residual_rnd);
+      return m_HistoBorders.position_lin(ibin,m,residual_rnd);
     }
 
   ClassDef(TFCS1DFunctionTemplateInterpolationHistogram,1)  //TFCS1DFunctionTemplateInterpolationHistogram
@@ -111,4 +111,18 @@ class TFCS1DFunctionInt16Int32InterpolationHistogram: public TFCS1DFunctionTempl
   ClassDef(TFCS1DFunctionInt16Int32InterpolationHistogram,1)  //TFCS1DFunctionInt16Int32InterpolationHistogram
 };
 
+
+#if defined(__ROOTCLING__) && defined(__FastCaloSimStandAlone__)
+#pragma link C++ class TFCS1DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges,uint8_t,float>+;
+#pragma link C++ class TFCS1DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges,uint16_t,float>+;
+#pragma link C++ class TFCS1DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges,uint16_t,float>+;
+#pragma link C++ class TFCS1DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges,uint32_t,float>+;
+
+#pragma link C++ class TFCS1DFunctionInt8Int8InterpolationHistogram+;
+#pragma link C++ class TFCS1DFunctionInt8Int16InterpolationHistogram+;
+#pragma link C++ class TFCS1DFunctionInt16Int16InterpolationHistogram+;
+#pragma link C++ class TFCS1DFunctionInt16Int32InterpolationHistogram+;
+
+#endif
+
 #endif
diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCS2DFunctionTemplateHistogram.h b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCS2DFunctionTemplateHistogram.h
index 9fb4dbbe2592b6b141e6a184bd538113250bf2ad..a081d5f045a4e5be6a20a61b9165324610d24ce2 100644
--- a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCS2DFunctionTemplateHistogram.h
+++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCS2DFunctionTemplateHistogram.h
@@ -205,9 +205,6 @@ class TFCS2DFunctionInt8Int8Int32Histogram: public TFCS2DFunctionTemplateHistogr
 
   ClassDef(TFCS2DFunctionInt8Int8Int32Histogram,1)  //TFCS2DFunctionInt8Int8Int32Histogram
 };
-
-
-
 class TFCS2DFunctionInt8Int16Int8Histogram: public TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint8_t,float>
 {
   public:
@@ -231,9 +228,54 @@ class TFCS2DFunctionInt8Int16Int32Histogram: public TFCS2DFunctionTemplateHistog
 
   ClassDef(TFCS2DFunctionInt8Int16Int32Histogram,1)  //TFCS2DFunctionInt8Int16Int32Histogram
 };
+class TFCS2DFunctionInt8Int32Int8Histogram: public TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint8_t,float>
+{
+  public:
+    TFCS2DFunctionInt8Int32Int8Histogram(TH2* h=nullptr):TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint8_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt8Int32Int8Histogram,1)  //TFCS2DFunctionInt8Int32Int8Histogram
+};
+class TFCS2DFunctionInt8Int32Int16Histogram: public TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint16_t,float>
+{
+  public:
+    TFCS2DFunctionInt8Int32Int16Histogram(TH2* h=nullptr):TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint16_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt8Int32Int16Histogram,1)  //TFCS2DFunctionInt8Int32Int16Histogram
+};
+class TFCS2DFunctionInt8Int32Int32Histogram: public TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint32_t,float>
+{
+  public:
+    TFCS2DFunctionInt8Int32Int32Histogram(TH2* h=nullptr):TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint32_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt8Int32Int32Histogram,1)  //TFCS2DFunctionInt8Int32Int32Histogram
+};
+
+
+
 
+class TFCS2DFunctionInt16Int8Int8Histogram: public TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint8_t,float>
+{
+  public:
+    TFCS2DFunctionInt16Int8Int8Histogram(TH2* h=nullptr):TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint8_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt16Int8Int8Histogram,1)  //TFCS2DFunctionInt16Int8Int8Histogram
+};
 
+class TFCS2DFunctionInt16Int8Int16Histogram: public TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint16_t,float>
+{
+  public:
+    TFCS2DFunctionInt16Int8Int16Histogram(TH2* h=nullptr):TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint16_t,float>(h) {};
 
+  ClassDef(TFCS2DFunctionInt16Int8Int16Histogram,1)  //TFCS2DFunctionInt16Int8Int16Histogram
+};
+
+class TFCS2DFunctionInt16Int8Int32Histogram: public TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint32_t,float>
+{
+  public:
+    TFCS2DFunctionInt16Int8Int32Histogram(TH2* h=nullptr):TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint32_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt16Int8Int32Histogram,1)  //TFCS2DFunctionInt16Int8Int32Histogram
+};
 class TFCS2DFunctionInt16Int16Int8Histogram: public TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint8_t,float>
 {
   public:
@@ -257,5 +299,163 @@ class TFCS2DFunctionInt16Int16Int32Histogram: public TFCS2DFunctionTemplateHisto
 
   ClassDef(TFCS2DFunctionInt16Int16Int32Histogram,1)  //TFCS2DFunctionInt16Int16Int32Histogram
 };
+class TFCS2DFunctionInt16Int32Int8Histogram: public TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint8_t,float>
+{
+  public:
+    TFCS2DFunctionInt16Int32Int8Histogram(TH2* h=nullptr):TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint8_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt16Int32Int8Histogram,1)  //TFCS2DFunctionInt16Int32Int8Histogram
+};
+class TFCS2DFunctionInt16Int32Int16Histogram: public TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint16_t,float>
+{
+  public:
+    TFCS2DFunctionInt16Int32Int16Histogram(TH2* h=nullptr):TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint16_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt16Int32Int16Histogram,1)  //TFCS2DFunctionInt16Int32Int16Histogram
+};
+class TFCS2DFunctionInt16Int32Int32Histogram: public TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint32_t,float>
+{
+  public:
+    TFCS2DFunctionInt16Int32Int32Histogram(TH2* h=nullptr):TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint32_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt16Int32Int32Histogram,1)  //TFCS2DFunctionInt16Int32Int32Histogram
+};
+
+
+
+
+class TFCS2DFunctionInt32Int8Int8Histogram: public TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint8_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int8Int8Histogram(TH2* h=nullptr):TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint8_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int8Int8Histogram,1)  //TFCS2DFunctionInt32Int8Int8Histogram
+};
+
+class TFCS2DFunctionInt32Int8Int16Histogram: public TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint16_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int8Int16Histogram(TH2* h=nullptr):TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint16_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int8Int16Histogram,1)  //TFCS2DFunctionInt32Int8Int16Histogram
+};
+
+class TFCS2DFunctionInt32Int8Int32Histogram: public TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint32_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int8Int32Histogram(TH2* h=nullptr):TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint32_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int8Int32Histogram,1)  //TFCS2DFunctionInt32Int8Int32Histogram
+};
+class TFCS2DFunctionInt32Int16Int8Histogram: public TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint8_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int16Int8Histogram(TH2* h=nullptr):TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint8_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int16Int8Histogram,1)  //TFCS2DFunctionInt32Int16Int8Histogram
+};
+
+class TFCS2DFunctionInt32Int16Int16Histogram: public TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint16_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int16Int16Histogram(TH2* h=nullptr):TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint16_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int16Int16Histogram,1)  //TFCS2DFunctionInt32Int16Int16Histogram
+};
+
+class TFCS2DFunctionInt32Int16Int32Histogram: public TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint32_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int16Int32Histogram(TH2* h=nullptr):TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint32_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int16Int32Histogram,1)  //TFCS2DFunctionInt32Int16Int32Histogram
+};
+class TFCS2DFunctionInt32Int32Int8Histogram: public TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint8_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int32Int8Histogram(TH2* h=nullptr):TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint8_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int32Int8Histogram,1)  //TFCS2DFunctionInt32Int32Int8Histogram
+};
+class TFCS2DFunctionInt32Int32Int16Histogram: public TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint16_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int32Int16Histogram(TH2* h=nullptr):TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint16_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int32Int16Histogram,1)  //TFCS2DFunctionInt32Int32Int16Histogram
+};
+class TFCS2DFunctionInt32Int32Int32Histogram: public TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint32_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int32Int32Histogram(TH2* h=nullptr):TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint32_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int32Int32Histogram,1)  //TFCS2DFunctionInt32Int32Int32Histogram
+};
+
+
+
+
+
+#if defined(__ROOTCLING__) && defined(__FastCaloSimStandAlone__)
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint32_t,float>+;
+
+#pragma link C++ class TFCS2DFunctionInt8Int8Int8Histogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int8Int16Histogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int8Int32Histogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int16Int8Histogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int16Int16Histogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int16Int32Histogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int32Int8Histogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int32Int16Histogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int32Int32Histogram+;
+
+#pragma link C++ class TFCS2DFunctionInt16Int8Int8Histogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int8Int16Histogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int8Int32Histogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int16Int8Histogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int16Int16Histogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int16Int32Histogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int32Int8Histogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int32Int16Histogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int32Int32Histogram+;
+
+#pragma link C++ class TFCS2DFunctionInt32Int8Int8Histogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int8Int16Histogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int8Int32Histogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int16Int8Histogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int16Int16Histogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int16Int32Histogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int32Int8Histogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int32Int16Histogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int32Int32Histogram+;
+
+
+#endif
 
 #endif
diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCS2DFunctionTemplateInterpolationExpHistogram.h b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCS2DFunctionTemplateInterpolationExpHistogram.h
new file mode 100644
index 0000000000000000000000000000000000000000..937d276143b2ae7e63fe7ecfd9572d12651b6023
--- /dev/null
+++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCS2DFunctionTemplateInterpolationExpHistogram.h
@@ -0,0 +1,390 @@
+/*
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+*/
+
+#ifndef ISF_FASTCALOSIMEVENT_TFCS2DFunctionTemplateInterpolationExpHistogram_h
+#define ISF_FASTCALOSIMEVENT_TFCS2DFunctionTemplateInterpolationExpHistogram_h
+
+#include "TFCS2DFunction.h"
+#include "ISF_FastCaloSimEvent/TFCS2DFunctionTemplateHistogram.h"
+#include "TH1.h"
+#include "TH2.h"
+#include "TBuffer.h"
+
+#include <iostream>
+
+template <typename Txvec, typename Tyvec, typename Tz ,typename Trandom=float> class TFCS2DFunctionTemplateInterpolationExpHistogram:public TFCS2DFunctionTemplateHistogram<Txvec,Tyvec,Tz,Trandom>
+{
+  public:
+    TFCS2DFunctionTemplateInterpolationExpHistogram(TH2* hist=nullptr):TFCS2DFunctionTemplateHistogram<Txvec,Tyvec,Tz,Trandom>(hist) {};
+
+    using TFCS2DFunctionTemplateHistogram<Txvec,Tyvec,Tz,Trandom>::rnd_to_fct;
+    using TFCS2DFunctionTemplateHistogram<Txvec,Tyvec,Tz,Trandom>::get_nbins;
+    using TFCS2DFunctionTemplateHistogram<Txvec,Tyvec,Tz,Trandom>::m_HistoContents;
+    using TFCS2DFunctionTemplateHistogram<Txvec,Tyvec,Tz,Trandom>::m_HistoBordersx;
+    using TFCS2DFunctionTemplateHistogram<Txvec,Tyvec,Tz,Trandom>::m_HistoBordersy;
+
+    ///Function gets random number rnd in the range [0,1) as argument 
+    ///and returns function value according to a histogram distribution.
+    ///An exponential interpolation is done within each bin
+
+
+    virtual void rnd_to_fct(float& valuex,float& valuey,float rnd, float rnd2) const {
+      size_t nbins=get_nbins();
+      if(nbins==0) {valuex = 0.0; valuey = 0.0; return;}
+      Trandom residual_rnd;
+      size_t ibin=m_HistoContents.get_bin(rnd,residual_rnd);
+      
+      Trandom frac=m_HistoContents.get_fraction(ibin);
+
+      size_t ibiny = ibin % m_HistoBordersy.get_nbins();     //printf("%d ", m_HistoBordersy.get_nbins() );
+      size_t ibinx = ibin / m_HistoBordersy.get_nbins();
+      //size_t nbinsx = m_HistoBordersx.get_nbins();
+      size_t nbinsy = m_HistoBordersy.get_nbins();
+  
+      Trandom dfrac = 0.0;
+      auto l=m_HistoBordersy.GetBinLength(ibiny);
+      Trandom dfracprev = 0.0;
+      Trandom ldfrac = 0.0;
+      auto lprev=l;
+      if(ibiny>0) {
+        Trandom fracprev=m_HistoContents.get_fraction(ibin-1);
+        dfrac=frac-fracprev;
+        if(ibiny>1) {
+          dfracprev=fracprev-m_HistoContents.get_fraction(ibin-2);
+        } else {
+          dfracprev=fracprev;
+          if(ibinx>0) dfracprev-=m_HistoContents.get_fraction(ibin-2);
+        }  
+        lprev=m_HistoBordersy.GetBinLength(ibiny-1);
+      } else {
+        dfrac=frac;
+        if(ibinx>0) dfrac-=m_HistoContents.get_fraction(ibin-1);
+        dfracprev=dfrac;
+      }
+
+
+     if(dfrac > 0.0 && dfracprev > 0.0 ) 
+	{ldfrac =log(dfrac/l) - log(dfracprev/lprev);}
+      
+      Trandom dfracnext = 0.0;
+      Trandom ldfracnext = 0.0;
+      auto lnext=l;
+      if(ibiny<nbinsy-1) {
+        dfracnext=m_HistoContents.get_fraction(ibin+1)-frac;
+        lnext=m_HistoBordersy.GetBinLength(ibiny+1);
+      } else {
+        dfracnext=dfrac;
+      }  
+      
+
+     if(dfrac > 0.0 && dfracnext > 0.0 ) 
+	{ldfracnext=log(dfracnext/lnext) - log(dfrac/l);}
+
+      Trandom beta=0.0, betaprev=0.0, betanext=0.0;
+      betanext=ldfracnext/(lnext+l)/0.5;
+      betaprev=ldfrac/(lprev+l)/0.5;
+	beta = 0.5*(betaprev + betanext);
+	//printf("betaprev=%13.5e betanext=%13.5e beta=%13.5e\n", betaprev, betanext, beta);
+	//printf("l=%13.5e lnext=%13.5e\n", l, lnext);
+	//printf("log=%13.5e lognext=%13.5e logprev=%13.5e\n", log(dfrac/l), log(dfracnext/lnext), log(dfracprev/lprev) );
+	//printf("ldfrac=%13.5e ldfracnext=%13.5e\n", ldfrac, ldfracnext ); 
+      
+      valuey = m_HistoBordersy.position_exp(ibiny,beta,residual_rnd);
+      valuex = m_HistoBordersx.position(ibinx, rnd2);
+
+    }
+
+
+ 
+
+
+  ClassDef(TFCS2DFunctionTemplateInterpolationExpHistogram,1)  //TFCS1DFunctionTemplateInterpolationExpHistogram
+};
+
+class TFCS2DFunctionInt8Int8Int8InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint8_t,float>
+{
+  public:
+    TFCS2DFunctionInt8Int8Int8InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint8_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt8Int8Int8InterpolationExpHistogram,1)  //TFCS2DFunctionInt8Int8Int8InterpolationExpHistogram
+};
+class TFCS2DFunctionInt8Int8Int16InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint16_t,float>
+{
+  public:
+    TFCS2DFunctionInt8Int8Int16InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint16_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt8Int8Int16InterpolationExpHistogram,1)  //TFCS2DFunctionInt8Int8Int16InterpolationExpHistogram
+};
+class TFCS2DFunctionInt8Int8Int32InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint32_t,float>
+{
+  public:
+    TFCS2DFunctionInt8Int8Int32InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint32_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt8Int8Int32InterpolationExpHistogram,1)  //TFCS2DFunctionInt8Int8Int32InterpolationExpHistogram
+};
+
+////
+
+class TFCS2DFunctionInt8Int16Int8InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint8_t,float>
+{
+  public:
+    TFCS2DFunctionInt8Int16Int8InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint8_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt8Int16Int8InterpolationExpHistogram,1)  //TFCS2DFunctionInt8Int16Int8InterpolationExpHistogram
+};
+class TFCS2DFunctionInt8Int16Int16InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint16_t,float>
+{
+  public:
+    TFCS2DFunctionInt8Int16Int16InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint16_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt8Int16Int16InterpolationExpHistogram,1)  //TFCS2DFunctionInt8Int16Int16InterpolationExpHistogram
+};
+class TFCS2DFunctionInt8Int16Int32InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint32_t,float>
+{
+  public:
+    TFCS2DFunctionInt8Int16Int32InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint32_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt8Int16Int32InterpolationExpHistogram,1)  //TFCS2DFunctionInt8Int16Int32InterpolationExpHistogram
+};
+
+
+class TFCS2DFunctionInt8Int32Int8InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint8_t,float>
+{
+  public:
+    TFCS2DFunctionInt8Int32Int8InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint8_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt8Int32Int8InterpolationExpHistogram,1)  //TFCS2DFunctionInt8Int32Int8InterpolationExpHistogram
+};
+class TFCS2DFunctionInt8Int32Int16InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint16_t,float>
+{
+  public:
+    TFCS2DFunctionInt8Int32Int16InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint16_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt8Int32Int16InterpolationExpHistogram,1)  //TFCS2DFunctionInt8Int32Int16InterpolationExpHistogram
+};
+class TFCS2DFunctionInt8Int32Int32InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint32_t,float>
+{
+  public:
+    TFCS2DFunctionInt8Int32Int32InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint32_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt8Int32Int32InterpolationExpHistogram,1)  //TFCS2DFunctionInt8Int32Int32InterpolationExpHistogram
+};
+
+
+
+
+
+
+class TFCS2DFunctionInt16Int8Int8InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint8_t,float>
+{
+  public:
+    TFCS2DFunctionInt16Int8Int8InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint8_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt16Int8Int8InterpolationExpHistogram,1)  //TFCS2DFunctionInt16Int8Int8InterpolationExpHistogram
+};
+class TFCS2DFunctionInt16Int8Int16InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint16_t,float>
+{
+  public:
+    TFCS2DFunctionInt16Int8Int16InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint16_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt16Int8Int16InterpolationExpHistogram,1)  //TFCS2DFunctionInt16Int8Int16InterpolationExpHistogram
+};
+class TFCS2DFunctionInt16Int8Int32InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint32_t,float>
+{
+  public:
+    TFCS2DFunctionInt16Int8Int32InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint32_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt16Int8Int32InterpolationExpHistogram,1)  //TFCS2DFunctionInt16Int8Int32InterpolationExpHistogram
+};
+
+////
+
+class TFCS2DFunctionInt16Int16Int8InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint8_t,float>
+{
+  public:
+    TFCS2DFunctionInt16Int16Int8InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint8_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt16Int16Int8InterpolationExpHistogram,1)  //TFCS2DFunctionInt16Int16Int8InterpolationExpHistogram
+};
+class TFCS2DFunctionInt16Int16Int16InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint16_t,float>
+{
+  public:
+    TFCS2DFunctionInt16Int16Int16InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint16_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt16Int16Int16InterpolationExpHistogram,1)  //TFCS2DFunctionInt16Int16Int16InterpolationExpHistogram
+};
+class TFCS2DFunctionInt16Int16Int32InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint32_t,float>
+{
+  public:
+    TFCS2DFunctionInt16Int16Int32InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint32_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt16Int16Int32InterpolationExpHistogram,1)  //TFCS2DFunctionInt16Int16Int32InterpolationExpHistogram
+};
+
+
+class TFCS2DFunctionInt16Int32Int8InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint8_t,float>
+{
+  public:
+    TFCS2DFunctionInt16Int32Int8InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint8_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt16Int32Int8InterpolationExpHistogram,1)  //TFCS2DFunctionInt16Int32Int8InterpolationExpHistogram
+};
+class TFCS2DFunctionInt16Int32Int16InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint16_t,float>
+{
+  public:
+    TFCS2DFunctionInt16Int32Int16InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint16_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt16Int32Int16InterpolationExpHistogram,1)  //TFCS2DFunctionInt16Int32Int16InterpolationExpHistogram
+};
+class TFCS2DFunctionInt16Int32Int32InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint32_t,float>
+{
+  public:
+    TFCS2DFunctionInt16Int32Int32InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint32_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt16Int32Int32InterpolationExpHistogram,1)  //TFCS2DFunctionInt16Int32Int32InterpolationExpHistogram
+};
+
+
+
+
+
+
+class TFCS2DFunctionInt32Int8Int8InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint8_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int8Int8InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint8_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int8Int8InterpolationExpHistogram,1)  //TFCS2DFunctionInt32Int8Int8InterpolationExpHistogram
+};
+class TFCS2DFunctionInt32Int8Int16InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint16_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int8Int16InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint16_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int8Int16InterpolationExpHistogram,1)  //TFCS2DFunctionInt32Int8Int16InterpolationExpHistogram
+};
+class TFCS2DFunctionInt32Int8Int32InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint32_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int8Int32InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint32_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int8Int32InterpolationExpHistogram,1)  //TFCS2DFunctionInt32Int8Int32InterpolationExpHistogram
+};
+
+////
+
+class TFCS2DFunctionInt32Int16Int8InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint8_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int16Int8InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint8_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int16Int8InterpolationExpHistogram,1)  //TFCS2DFunctionInt32Int16Int8InterpolationExpHistogram
+};
+class TFCS2DFunctionInt32Int16Int16InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint16_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int16Int16InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint16_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int16Int16InterpolationExpHistogram,1)  //TFCS2DFunctionInt32Int16Int16InterpolationExpHistogram
+};
+class TFCS2DFunctionInt32Int16Int32InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint32_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int16Int32InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint32_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int16Int32InterpolationExpHistogram,1)  //TFCS2DFunctionInt32Int16Int32InterpolationExpHistogram
+};
+
+
+class TFCS2DFunctionInt32Int32Int8InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint8_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int32Int8InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint8_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int32Int8InterpolationExpHistogram,1)  //TFCS2DFunctionInt32Int32Int8InterpolationExpHistogram
+};
+class TFCS2DFunctionInt32Int32Int16InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint16_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int32Int16InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint16_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int32Int16InterpolationExpHistogram,1)  //TFCS2DFunctionInt32Int32Int16InterpolationExpHistogram
+};
+class TFCS2DFunctionInt32Int32Int32InterpolationExpHistogram: public TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint32_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int32Int32InterpolationExpHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint32_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int32Int32InterpolationExpHistogram,1)  //TFCS2DFunctionInt32Int32Int32InterpolationExpHistogram
+};
+
+
+
+
+
+
+
+
+
+
+#if defined(__ROOTCLING__) && defined(__FastCaloSimStandAlone__)
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationExpHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint32_t,float>+;
+
+#pragma link C++ class TFCS2DFunctionInt8Int8Int8InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int8Int16InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int8Int32InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int16Int8InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int16Int16InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int16Int32InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int32Int8InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int32Int16InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int32Int32InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int8Int8InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int8Int16InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int8Int32InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int16Int8InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int16Int16InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int16Int32InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int32Int8InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int32Int16InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int32Int32InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int8Int8InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int8Int16InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int8Int32InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int16Int8InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int16Int16InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int16Int32InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int32Int8InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int32Int16InterpolationExpHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int32Int32InterpolationExpHistogram+;
+
+#endif
+
+#endif
diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCS2DFunctionTemplateInterpolationHistogram.h b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCS2DFunctionTemplateInterpolationHistogram.h
index f85abf429c35dd871575bac92f5aaa9012b21fd1..1f0e3f3a2c7703817918e8a3dd64faa9fe9aa589 100644
--- a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCS2DFunctionTemplateInterpolationHistogram.h
+++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/ISF_FastCaloSimEvent/TFCS2DFunctionTemplateInterpolationHistogram.h
@@ -25,6 +25,11 @@ template <typename Txvec, typename Tyvec, typename Tz ,typename Trandom=float> c
     using TFCS2DFunctionTemplateHistogram<Txvec,Tyvec,Tz,Trandom>::m_HistoBordersy;
 
     ///Function gets random number rnd in the range [0,1) as argument 
+    ///and returns function value according to a histogram distribution.
+    ///An exponential interpolation is done within each bin
+
+
+///Function gets random number rnd in the range [0,1) as argument 
     ///and returns function value according to a histogram distribution.
     ///A linear interpolation is done within each bin
     virtual void rnd_to_fct(float& valuex,float& valuey,float rnd, float rnd2) const {
@@ -78,10 +83,13 @@ template <typename Txvec, typename Tyvec, typename Tz ,typename Trandom=float> c
         m=(mnext+mprev)*l*l/dfrac;
       } else m=0;
       
-      valuey = m_HistoBordersy.position(ibiny,m,residual_rnd);
+      valuey = m_HistoBordersy.position_lin(ibiny,m,residual_rnd);
       valuex = m_HistoBordersx.position(ibinx, rnd2);
     }
 
+
+
+
   ClassDef(TFCS2DFunctionTemplateInterpolationHistogram,1)  //TFCS1DFunctionTemplateInterpolationHistogram
 };
 
@@ -92,7 +100,6 @@ class TFCS2DFunctionInt8Int8Int8InterpolationHistogram: public TFCS2DFunctionTem
 
   ClassDef(TFCS2DFunctionInt8Int8Int8InterpolationHistogram,1)  //TFCS2DFunctionInt8Int8Int8InterpolationHistogram
 };
-
 class TFCS2DFunctionInt8Int8Int16InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint16_t,float>
 {
   public:
@@ -100,7 +107,6 @@ class TFCS2DFunctionInt8Int8Int16InterpolationHistogram: public TFCS2DFunctionTe
 
   ClassDef(TFCS2DFunctionInt8Int8Int16InterpolationHistogram,1)  //TFCS2DFunctionInt8Int8Int16InterpolationHistogram
 };
-
 class TFCS2DFunctionInt8Int8Int32InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint32_t,float>
 {
   public:
@@ -109,7 +115,7 @@ class TFCS2DFunctionInt8Int8Int32InterpolationHistogram: public TFCS2DFunctionTe
   ClassDef(TFCS2DFunctionInt8Int8Int32InterpolationHistogram,1)  //TFCS2DFunctionInt8Int8Int32InterpolationHistogram
 };
 
-
+////
 
 class TFCS2DFunctionInt8Int16Int8InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint8_t,float>
 {
@@ -118,7 +124,6 @@ class TFCS2DFunctionInt8Int16Int8InterpolationHistogram: public TFCS2DFunctionTe
 
   ClassDef(TFCS2DFunctionInt8Int16Int8InterpolationHistogram,1)  //TFCS2DFunctionInt8Int16Int8InterpolationHistogram
 };
-
 class TFCS2DFunctionInt8Int16Int16InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint16_t,float>
 {
   public:
@@ -126,7 +131,6 @@ class TFCS2DFunctionInt8Int16Int16InterpolationHistogram: public TFCS2DFunctionT
 
   ClassDef(TFCS2DFunctionInt8Int16Int16InterpolationHistogram,1)  //TFCS2DFunctionInt8Int16Int16InterpolationHistogram
 };
-
 class TFCS2DFunctionInt8Int16Int32InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint32_t,float>
 {
   public:
@@ -136,6 +140,56 @@ class TFCS2DFunctionInt8Int16Int32InterpolationHistogram: public TFCS2DFunctionT
 };
 
 
+class TFCS2DFunctionInt8Int32Int8InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint8_t,float>
+{
+  public:
+    TFCS2DFunctionInt8Int32Int8InterpolationHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint8_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt8Int32Int8InterpolationHistogram,1)  //TFCS2DFunctionInt8Int32Int8InterpolationHistogram
+};
+class TFCS2DFunctionInt8Int32Int16InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint16_t,float>
+{
+  public:
+    TFCS2DFunctionInt8Int32Int16InterpolationHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint16_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt8Int32Int16InterpolationHistogram,1)  //TFCS2DFunctionInt8Int32Int16InterpolationHistogram
+};
+class TFCS2DFunctionInt8Int32Int32InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint32_t,float>
+{
+  public:
+    TFCS2DFunctionInt8Int32Int32InterpolationHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint32_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt8Int32Int32InterpolationHistogram,1)  //TFCS2DFunctionInt8Int32Int32InterpolationHistogram
+};
+
+
+
+
+
+
+class TFCS2DFunctionInt16Int8Int8InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint8_t,float>
+{
+  public:
+    TFCS2DFunctionInt16Int8Int8InterpolationHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint8_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt16Int8Int8InterpolationHistogram,1)  //TFCS2DFunctionInt16Int8Int8InterpolationHistogram
+};
+class TFCS2DFunctionInt16Int8Int16InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint16_t,float>
+{
+  public:
+    TFCS2DFunctionInt16Int8Int16InterpolationHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint16_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt16Int8Int16InterpolationHistogram,1)  //TFCS2DFunctionInt16Int8Int16InterpolationHistogram
+};
+class TFCS2DFunctionInt16Int8Int32InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint32_t,float>
+{
+  public:
+    TFCS2DFunctionInt16Int8Int32InterpolationHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint32_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt16Int8Int32InterpolationHistogram,1)  //TFCS2DFunctionInt16Int8Int32InterpolationHistogram
+};
+
+////
 
 class TFCS2DFunctionInt16Int16Int8InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint8_t,float>
 {
@@ -144,7 +198,6 @@ class TFCS2DFunctionInt16Int16Int8InterpolationHistogram: public TFCS2DFunctionT
 
   ClassDef(TFCS2DFunctionInt16Int16Int8InterpolationHistogram,1)  //TFCS2DFunctionInt16Int16Int8InterpolationHistogram
 };
-
 class TFCS2DFunctionInt16Int16Int16InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint16_t,float>
 {
   public:
@@ -152,7 +205,6 @@ class TFCS2DFunctionInt16Int16Int16InterpolationHistogram: public TFCS2DFunction
 
   ClassDef(TFCS2DFunctionInt16Int16Int16InterpolationHistogram,1)  //TFCS2DFunctionInt16Int16Int16InterpolationHistogram
 };
-
 class TFCS2DFunctionInt16Int16Int32InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint32_t,float>
 {
   public:
@@ -161,4 +213,169 @@ class TFCS2DFunctionInt16Int16Int32InterpolationHistogram: public TFCS2DFunction
   ClassDef(TFCS2DFunctionInt16Int16Int32InterpolationHistogram,1)  //TFCS2DFunctionInt16Int16Int32InterpolationHistogram
 };
 
+
+class TFCS2DFunctionInt16Int32Int8InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint8_t,float>
+{
+  public:
+    TFCS2DFunctionInt16Int32Int8InterpolationHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint8_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt16Int32Int8InterpolationHistogram,1)  //TFCS2DFunctionInt16Int32Int8InterpolationHistogram
+};
+class TFCS2DFunctionInt16Int32Int16InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint16_t,float>
+{
+  public:
+    TFCS2DFunctionInt16Int32Int16InterpolationHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint16_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt16Int32Int16InterpolationHistogram,1)  //TFCS2DFunctionInt16Int32Int16InterpolationHistogram
+};
+class TFCS2DFunctionInt16Int32Int32InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint32_t,float>
+{
+  public:
+    TFCS2DFunctionInt16Int32Int32InterpolationHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint32_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt16Int32Int32InterpolationHistogram,1)  //TFCS2DFunctionInt16Int32Int32InterpolationHistogram
+};
+
+
+
+
+
+
+class TFCS2DFunctionInt32Int8Int8InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint8_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int8Int8InterpolationHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint8_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int8Int8InterpolationHistogram,1)  //TFCS2DFunctionInt32Int8Int8InterpolationHistogram
+};
+class TFCS2DFunctionInt32Int8Int16InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint16_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int8Int16InterpolationHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint16_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int8Int16InterpolationHistogram,1)  //TFCS2DFunctionInt32Int8Int16InterpolationHistogram
+};
+class TFCS2DFunctionInt32Int8Int32InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint32_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int8Int32InterpolationHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt8BinEdges,uint32_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int8Int32InterpolationHistogram,1)  //TFCS2DFunctionInt32Int8Int32InterpolationHistogram
+};
+
+////
+
+class TFCS2DFunctionInt32Int16Int8InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint8_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int16Int8InterpolationHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint8_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int16Int8InterpolationHistogram,1)  //TFCS2DFunctionInt32Int16Int8InterpolationHistogram
+};
+class TFCS2DFunctionInt32Int16Int16InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint16_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int16Int16InterpolationHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint16_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int16Int16InterpolationHistogram,1)  //TFCS2DFunctionInt32Int16Int16InterpolationHistogram
+};
+class TFCS2DFunctionInt32Int16Int32InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint32_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int16Int32InterpolationHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt16BinEdges,uint32_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int16Int32InterpolationHistogram,1)  //TFCS2DFunctionInt32Int16Int32InterpolationHistogram
+};
+
+
+class TFCS2DFunctionInt32Int32Int8InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint8_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int32Int8InterpolationHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint8_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int32Int8InterpolationHistogram,1)  //TFCS2DFunctionInt32Int32Int8InterpolationHistogram
+};
+class TFCS2DFunctionInt32Int32Int16InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint16_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int32Int16InterpolationHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint16_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int32Int16InterpolationHistogram,1)  //TFCS2DFunctionInt32Int32Int16InterpolationHistogram
+};
+class TFCS2DFunctionInt32Int32Int32InterpolationHistogram: public TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint32_t,float>
+{
+  public:
+    TFCS2DFunctionInt32Int32Int32InterpolationHistogram(TH2* h=nullptr):TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges,TFCS1DFunction_HistogramInt32BinEdges,uint32_t,float>(h) {};
+
+  ClassDef(TFCS2DFunctionInt32Int32Int32InterpolationHistogram,1)  //TFCS2DFunctionInt32Int32Int32InterpolationHistogram
+};
+
+
+
+
+
+
+
+
+
+
+#if defined(__ROOTCLING__) && defined(__FastCaloSimStandAlone__)
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt8BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt16BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt8BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt16BinEdges, uint32_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint8_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint16_t,float>+;
+#pragma link C++ class TFCS2DFunctionTemplateInterpolationHistogram<TFCS1DFunction_HistogramInt32BinEdges, TFCS1DFunction_HistogramInt32BinEdges, uint32_t,float>+;
+
+#pragma link C++ class TFCS2DFunctionInt8Int8Int8InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int8Int16InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int8Int32InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int16Int8InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int16Int16InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int16Int32InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int32Int8InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int32Int16InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt8Int32Int32InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int8Int8InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int8Int16InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int8Int32InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int16Int8InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int16Int16InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int16Int32InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int32Int8InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int32Int16InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt16Int32Int32InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int8Int8InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int8Int16InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int8Int32InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int16Int8InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int16Int16InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int16Int32InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int32Int8InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int32Int16InterpolationHistogram+;
+#pragma link C++ class TFCS2DFunctionInt32Int32Int32InterpolationHistogram+;
+
+#endif
+
 #endif
diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/src/TFCS2DFunctionTemplateInterpolationExpHistogram.cxx b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/src/TFCS2DFunctionTemplateInterpolationExpHistogram.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..4bfd3a34dc8389bf577e98234303532221f6922f
--- /dev/null
+++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimEvent/src/TFCS2DFunctionTemplateInterpolationExpHistogram.cxx
@@ -0,0 +1,10 @@
+/*
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+*/
+
+#include "ISF_FastCaloSimEvent/TFCS2DFunctionTemplateInterpolationExpHistogram.h"
+
+//=============================================
+//======= TFCS2DFunctionTemplateInterpolationExpHistogram =========
+//=============================================
+
diff --git a/Trigger/TrigHypothesis/TrigMissingETHypo/src/TrigEFMissingETHypo.h b/Trigger/TrigHypothesis/TrigMissingETHypo/src/TrigEFMissingETHypo.h
old mode 100644
new mode 100755