diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimParametrization/tools/CaloGeometryFromFile.cxx b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimParametrization/tools/CaloGeometryFromFile.cxx
index 96ecdd44d6191a00760c10df04240d8a5dd8b6c9..46bd5e55c63a95179a4bc9f4c741bfb18d23c682 100644
--- a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimParametrization/tools/CaloGeometryFromFile.cxx
+++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimParametrization/tools/CaloGeometryFromFile.cxx
@@ -164,6 +164,81 @@ bool CaloGeometryFromFile::LoadGeometryFromFile(TString filename,TString treenam
   return ok;
 }
 
+bool CaloGeometryFromFile::LoadFCalGeometryFromFiles(TString filename1,TString filename2,TString filename3){
+
+  vector<ifstream*> electrodes(3);
+
+  electrodes[0]=new ifstream(filename1);
+  electrodes[1]=new ifstream(filename2);
+  electrodes[2]=new ifstream(filename3);
+
+
+  int    thisTubeId;
+  int    thisTubeI;
+  int    thisTubeJ;
+  //int    thisTubeID;
+  //int    thisTubeMod;
+  double thisTubeX;
+  double thisTubeY;
+  TString tubeName;
+
+  //int second_column;
+  string seventh_column;
+  string eight_column;
+  int ninth_column;
+
+
+
+
+
+  int i;
+  for(int imodule=1;imodule<=3;imodule++){
+
+    i=0;
+    while(1){
+
+      (*electrodes[imodule-1]) >> tubeName;
+      if(electrodes[imodule-1]->eof())break;
+      (*electrodes[imodule-1]) >> thisTubeId; // ?????
+      (*electrodes[imodule-1]) >> thisTubeI;
+      (*electrodes[imodule-1]) >> thisTubeJ;
+      (*electrodes[imodule-1]) >> thisTubeX;
+      (*electrodes[imodule-1]) >> thisTubeY;
+      (*electrodes[imodule-1]) >> seventh_column;
+      (*electrodes[imodule-1]) >> eight_column;
+      (*electrodes[imodule-1]) >> ninth_column;
+
+      tubeName.ReplaceAll("'","");
+      string tubeNamestring=tubeName.Data();
+
+      std::istringstream tileStream1(std::string(tubeNamestring,1,1));
+      std::istringstream tileStream2(std::string(tubeNamestring,3,2));
+      std::istringstream tileStream3(std::string(tubeNamestring,6,3));
+      int a1=0,a2=0,a3=0;
+      if (tileStream1) tileStream1 >> a1;
+      if (tileStream2) tileStream2 >> a2;
+      if (tileStream3) tileStream3 >> a3;
+
+      stringstream s;
+
+
+      m_FCal_ChannelMap.add_tube(tubeNamestring, imodule, thisTubeId, thisTubeI,thisTubeJ, thisTubeX, thisTubeY,seventh_column);
+      
+      i++;
+    }
+  }
+
+
+  m_FCal_ChannelMap.finish(); // Creates maps
+  
+  for(int imodule=1;imodule<=3;imodule++) delete electrodes[imodule-1];
+  electrodes.clear();
+
+  this->calculateFCalRminRmax();
+  return this->checkFCalGeometryConsistency();
+
+}
+
 void CaloGeometryFromFile::DrawFCalGraph(int isam,int color){
 	
 	stringstream ss;
diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimParametrization/tools/CaloGeometryFromFile.h b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimParametrization/tools/CaloGeometryFromFile.h
index b9849222ce46b7859f2493a44c60c7fa4c0f6dd6..a71d30728d9ba6f0f17285767fa7ed76e00e3650 100644
--- a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimParametrization/tools/CaloGeometryFromFile.h
+++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimParametrization/tools/CaloGeometryFromFile.h
@@ -14,6 +14,7 @@ public :
    virtual ~CaloGeometryFromFile();
    
    virtual bool LoadGeometryFromFile(TString filename,TString treename,TString hashfile="/afs/cern.ch/atlas/groups/Simulation/FastCaloSimV2/cellId_vs_cellHashId_map.txt");
+   virtual bool LoadFCalGeometryFromFiles(TString filename1,TString filename2,TString filename3); // Initialize m_FCal_ChannelMap
    void DrawFCalGraph(int isam,int color);
 };