diff --git a/NPLib/CATS/TCATSSpectra.cxx b/NPLib/CATS/TCATSSpectra.cxx
index c84da91d7c07721ce6fb3a0a337b481da81196d6..6674bd1994c7e478964679d037b1ee1e69ff2254 100644
--- a/NPLib/CATS/TCATSSpectra.cxx
+++ b/NPLib/CATS/TCATSSpectra.cxx
@@ -326,72 +326,3 @@ void TCATSSpectra::FillPhysicsSpectra(TCATSPhysics* Physics){
   }
 }
 
-
-////////////////////////////////////////////////////////////////////////////////
-TH1* TCATSSpectra::AddHisto1D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, string family){
-  // create histo
-  TH1 *hist = new TH1D(name.c_str(), title.c_str(), nbinsx, xlow, xup);
-
-  vector<string> index;
-  index.push_back(family);
-  index.push_back(name);
-
-  // fill map
-  fMapHisto[index] = hist;
-
-  return hist;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-TH1* TCATSSpectra::AddHisto2D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, Int_t nbinsy, Double_t ylow, Double_t yup, string family){
-  // create histo
-  TH1 *hist = new TH2D(name.c_str(), title.c_str(), nbinsx, xlow, xup, nbinsy, ylow, yup);
-
-  vector<string> index;
-  index.push_back(family);
-  index.push_back(name);
-
-  // fill map
-  fMapHisto[index] = hist;
-
-  return hist;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-TH1* TCATSSpectra::GetHisto(string& family, string& name){
-  vector<string> index;
-  index.reserve(2);
-  index.push_back(family);
-  index.push_back(name);
-  TH1* histo ; 
-
-  try{
-    histo = fMapHisto.at(index); 
-  }
-
-  catch(const std::out_of_range& oor){
-    cout << "ERROR : the folowing Histo has been requested by TCATSSpectra and does not exist: family:" << family << " name: "  << name << endl ;
-    exit(1);
-  }
-
-  return histo;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void TCATSSpectra::WriteHisto(string filename){
-  TFile* f = NULL; 
-
-  if (filename != "VOID") {
-    f = new TFile(filename.c_str(),"RECREATE");
-  }
-
-  map< vector<string>, TH1* >::iterator it;
-  for (it=fMapHisto.begin(); it!=fMapHisto.end(); ++it) {
-    it->second->Write();
-  }
-
-  if (filename != "VOID") {
-    f->Close();
-    delete f;
-  }
-}
diff --git a/NPLib/CATS/TCATSSpectra.h b/NPLib/CATS/TCATSSpectra.h
index 3a70e23eb86535a2e270cf5bbf827638978f7a03..c5c754fa65f569ab86a636f7b2e88c2e202cc079 100644
--- a/NPLib/CATS/TCATSSpectra.h
+++ b/NPLib/CATS/TCATSSpectra.h
@@ -1,5 +1,5 @@
-#ifndef TTIARAHYBALLSPECTRA_H
-#define TTIARAHYBALLSPECTRA_H
+#ifndef TCATSSPECTRA_H
+#define TCATSSPECTRA_H
 /*****************************************************************************
  * Copyright (C) 2009-2014    this file is part of the NPTool Project        *
  *                                                                           *
@@ -8,17 +8,16 @@
  *****************************************************************************/
 
 /*****************************************************************************
- * Original Author: N. de Sereville  contact address: deserevi@ipno.in2p3.fr *
+ * Original Author: A. Matta         contact address: a.matta@surrey.ac.uk   *
  *                                                                           *
  * Creation Date  : dec 2013                                                 *
  * Last update    :                                                          *
  *---------------------------------------------------------------------------*
  * Decription:                                                               *
- *  This class holds all the online spectra needed for Tiara/Hyball          *
+ *  This class holds all the online spectra needed for CATS                  *
  *                                                                           *
  *---------------------------------------------------------------------------*
  * Comment:                                                                  *
- *    + first version (not complete yet)                                     *
  *                                                                           *
  *                                                                           *
  *****************************************************************************/
@@ -29,6 +28,7 @@
 #include <TH2.h>
 
 // NPLib headers
+#include "../include/VSpectra.h"
 #include "TCATSData.h"
 #include "TCATSPhysics.h"
 
@@ -41,7 +41,7 @@ using namespace std;
 class TCATSPhysics;
 
 
-class TCATSSpectra {
+class TCATSSpectra:public VSpectra {
   public:
     // constructor and destructor
     TCATSSpectra();
@@ -52,7 +52,7 @@ class TCATSSpectra {
     // Instantiate and register histo to maps
     TH1* AddHisto1D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, string family);
     TH1* AddHisto2D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, 
-                                                 Int_t nbinsy, Double_t ylow, Double_t yup, string family);
+        Int_t nbinsy, Double_t ylow, Double_t yup, string family);
 
     // Initialization methods
     void InitRawSpectra();
@@ -65,12 +65,6 @@ class TCATSSpectra {
     void FillPreTreatedSpectra(TCATSData*);
     void FillPhysicsSpectra(TCATSPhysics*);
 
-  public:
-    // get map histo which will be used for GSpectra in GUser
-    map< vector<string>, TH1* > GetMapHisto() const {return fMapHisto;}
-    TH1* GetHisto(string& family, string& name);    
-    void WriteHisto(string filename = "VOID");      
-
   private: // Information on MUST2
     unsigned int fNumberOfCats;
     unsigned int fStripsNumber;
@@ -79,9 +73,6 @@ class TCATSSpectra {
     int fEventLoopIndex;
     vector<double> fEventLoopQSum;
 
-  private:
-// map holding histo pointers and their family names
-map< vector<string>, TH1* > fMapHisto;
 };
 
 #endif
diff --git a/NPLib/Charissa/TCharissaSpectra.cxx b/NPLib/Charissa/TCharissaSpectra.cxx
index a21158af213addd270c673ff14199b465e0751a9..c3ca27e2fc6837af4391e3fc7a1d46c3436c79a7 100644
--- a/NPLib/Charissa/TCharissaSpectra.cxx
+++ b/NPLib/Charissa/TCharissaSpectra.cxx
@@ -519,97 +519,3 @@ void TCharissaSpectra::FillPhysicsSpectra(TCharissaPhysics* Physics)
  
 }
 
-
-
-////////////////////////////////////////////////////////////////////////////////
-TH1* TCharissaSpectra::AddHisto1D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, string family){
-  // create histo
-  TH1 *hist = new TH1D(name.c_str(), title.c_str(), nbinsx, xlow, xup);
-
-  vector<string> index ;
-  index.push_back(family);
-  index.push_back(name);
-
-  // fill map
-  fMapHisto[index]=hist;
-
-  return hist;
-}
-
-
-
-////////////////////////////////////////////////////////////////////////////////
-TH1* TCharissaSpectra::AddHisto2D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, Int_t nbinsy, Double_t ylow, Double_t yup, string family){
-  // create histo
-  TH1 *hist = new TH2D(name.c_str(), title.c_str(), nbinsx, xlow, xup, nbinsy, ylow, yup);
-
-  vector<string> index ;
-  index.push_back(family);
-  index.push_back(name);
-
-  // fill map
-  fMapHisto[index]=hist;
-
-  return hist;
-}
-
-
-
-////////////////////////////////////////////////////////////////////////////////
-TH1* TCharissaSpectra::GetHisto(string& family, string& name){
-  vector<string> index;
-  index.push_back(family);
-  index.push_back(name);
-  TH1* histo ; 
-  
-  try{
-    histo = fMapHisto.at(index); 
-  }
-
-  catch(const std::out_of_range& oor){
-  cout << "ERROR : the folowing Histo has been requested by TCharissaSpectra and does not exist: family:" << family << " name: "  << name << endl ;
-  exit(1);
-  }
-
-  return histo;
-}
-
-
-
-////////////////////////////////////////////////////////////////////////////////
-void TCharissaSpectra::WriteHisto(string filename)
-{
-   TFile *f = NULL; 
-
-   if (filename != "VOID") {
-      f = new TFile(filename.c_str(), "RECREATE");
-   }
-
-   map< vector<string>, TH1* >::iterator it;
-   for (it=fMapHisto.begin(); it!=fMapHisto.end(); ++it) {
-      it->second->Write();
-   }
-
-   if (filename != "VOID") {
-      f->Close();
-      delete f;
-   }
-}
-
-
-
-///////////////////////////////////////////////////////////////////////////////
-void TCharissaSpectra::CheckSpectra()
-{
-   map< vector<string>, TH1* >::iterator it;
-   Color_t ok_color      = kTeal+9;
-   Color_t warning_color = kOrange+8;  warning_color *= 1;
-   Color_t bad_color     = kRed;       bad_color     *= 1;
-
-   for (it=fMapHisto.begin(); it!=fMapHisto.end(); ++it)
-   {
-      it->second->SetLineColor(ok_color);
-      it->second->SetFillStyle(1001);
-      it->second->SetFillColor(ok_color);
-   }
-}
diff --git a/NPLib/Charissa/TCharissaSpectra.h b/NPLib/Charissa/TCharissaSpectra.h
index a4f0f8d3db4584649e88b5ff48e75dda6a385852..062f4c76ba9fccb18c8931685c31ab935524c116 100644
--- a/NPLib/Charissa/TCharissaSpectra.h
+++ b/NPLib/Charissa/TCharissaSpectra.h
@@ -8,7 +8,7 @@
  *****************************************************************************/
 
 /*****************************************************************************
- * Original Author: N. de Sereville  contact address: deserevi@ipno.in2p3.fr *
+ * Original Author: A. Matta         contact address: a.matta@surrey.ac.uk   *
  *                                                                           *
  * Creation Date  : dec 2013                                                 *
  * Last update    :                                                          *
@@ -18,13 +18,13 @@
  *                                                                           *
  *---------------------------------------------------------------------------*
  * Comment:                                                                  *
- *    + first version (not complete yet)                                     *
  *                                                                           *
  *                                                                           *
  *****************************************************************************/
 
 // C++ STL headers
 #include <map>
+using namespace std;
 
 // ROOT headers
 #include "TObject.h"
@@ -32,14 +32,15 @@
 #include <TH2.h>
 
 // NPLib headers
+#include "../include/VSpectra.h"
 #include "TCharissaData.h"
 #include "TCharissaPhysics.h"
-using namespace std;
+
 
 // ForwardDeclaration
 class TCharissaPhysics;
 
-class TCharissaSpectra {
+class TCharissaSpectra: public VSpectra {
   public:
     // constructor and destructor
     TCharissaSpectra();
@@ -65,21 +66,12 @@ class TCharissaSpectra {
     // Check the Spectra
     void CheckSpectra();
 
-  public:
-    // get map histo which will be used for GSpectra in GUser
-    map< vector<string>, TH1* > GetMapHisto() const {return fMapHisto;}
-    TH1* GetHisto(string& family,string& name);    
-    void WriteHisto(string filename="VOID");      
 
   private: // Information on CHARISSA
     unsigned int fNumberOfTelescope;
     unsigned int fStripX;
     unsigned int fStripY;
     unsigned int fCrystalCsI;
-
-  private:
-    // map holding histo pointers and their family names
-    map< vector<string>, TH1* > fMapHisto;
 };
 
 #endif
diff --git a/NPLib/Exogam/TExogamSpectra.cxx b/NPLib/Exogam/TExogamSpectra.cxx
index 55743bee90d54c323730c87204c69ef39199fb7b..acf1b16b81893b6c228e4cadf37b93307624ec38 100644
--- a/NPLib/Exogam/TExogamSpectra.cxx
+++ b/NPLib/Exogam/TExogamSpectra.cxx
@@ -205,88 +205,3 @@ void TExogamSpectra::FillPhysicsSpectra(TExogamPhysics* Physics){
   }
 
 }
-////////////////////////////////////////////////////////////////////////////////
-TH1* TExogamSpectra::AddHisto1D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, string family){
-  // create histo
-  TH1 *hist = new TH1D(name.c_str(), title.c_str(), nbinsx, xlow, xup);
-
-  vector<string> index ;
-  index.push_back(family);
-  index.push_back(name);
-
-  // fill map
-  fMapHisto[index]=hist;
-
-  return hist;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-TH1* TExogamSpectra::AddHisto2D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, Int_t nbinsy, Double_t ylow, Double_t yup, string family){
-  // create histo
-  TH1 *hist = new TH2D(name.c_str(), title.c_str(), nbinsx, xlow, xup, nbinsy, ylow, yup);
-
-  vector<string> index ;
-  index.push_back(family);
-  index.push_back(name);
-
-  // fill map
-  fMapHisto[index]=hist;
-
-  return hist;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-TH1* TExogamSpectra::GetHisto(string family, string name){
-vector<string> index;
-  index.reserve(2);
-  index.push_back(family);
-  index.push_back(name);
-  TH1* histo ; 
-
-  try{
-    histo = fMapHisto.at(index); 
-  }
-
-  catch(const std::out_of_range& oor){
-    cout << "ERROR : the folowing Histo has been requested by TCATSSpectra and does not exist: family:" << family << " name: "  << name << endl ;
-    exit(1);
-  }
-
-  return histo;
-}
-
-
-////////////////////////////////////////////////////////////////////////////////
-void TExogamSpectra::WriteHisto(string filename){
-  TFile* f=NULL; 
-
-  if(filename!="VOID"){
-    f = new TFile(filename.c_str(),"RECREATE");
-  }
-
-  map< vector<string>, TH1* >::iterator it;
-
-  for (it=fMapHisto.begin(); it!=fMapHisto.end(); ++it){
-    it->second->Write();
-  }
-
-  if(filename!="VOID"){
-    f->Close();
-    delete f;
-  }
-
-}
-///////////////////////////////////////////////////////////////////////////////
-void TExogamSpectra::CheckSpectra(){
-map< vector<string>, TH1* >::iterator it;
-  Color_t ok_color = kTeal+9;
-  Color_t warning_color = kOrange+8;   warning_color *= 1;
-  Color_t bad_color = kRed;            bad_color *= 1;
-
-  for (it=fMapHisto.begin(); it!=fMapHisto.end(); ++it){
-    it->second->SetLineColor(ok_color);
-    it->second->SetFillStyle(1001);
-    it->second->SetFillColor(ok_color);
-  }
-
-}
diff --git a/NPLib/Exogam/TExogamSpectra.h b/NPLib/Exogam/TExogamSpectra.h
index 04e6aebf919f8e0a907c7f981eae0b076af77d87..46d98b4ec40d0f476c0c21afcd9df143a37b7381 100644
--- a/NPLib/Exogam/TExogamSpectra.h
+++ b/NPLib/Exogam/TExogamSpectra.h
@@ -25,6 +25,7 @@
 
 // C++ STL headers
 #include <map>
+using namespace std;
 
 // ROOT headers
 #include "TObject.h"
@@ -32,14 +33,14 @@
 #include <TH2.h>
 
 // NPLib headers
+#include "../include/VSpectra.h"
 #include "TExogamData.h"
 #include "TExogamPhysics.h"
-using namespace std;
 
 // ForwardDeclaration
 class TExogamPhysics ;
 
-class TExogamSpectra {
+class TExogamSpectra:public VSpectra {
   public:
     // constructor and destructor
     TExogamSpectra();
@@ -62,14 +63,6 @@ class TExogamSpectra {
     void FillRawSpectra(TExogamData*);
     void FillPreTreatedSpectra(TExogamData*);
     void FillPhysicsSpectra(TExogamPhysics*);
-    // Check the Spectra
-    void CheckSpectra();
-
-  public:
-    // get map histo which will be used for GSpectra in GUser
-    map< vector<string>, TH1* > GetMapHisto() const {return fMapHisto;}
-    TH1* GetHisto(string family,string name);    
-    void WriteHisto(string filename="VOID");      
 
   private: // Information on Exogam
     unsigned int fNumberOfClover ;
@@ -81,10 +74,6 @@ class TExogamSpectra {
     unsigned int fbinCalMax;
     unsigned int fNumberOfSegments;
     unsigned int fNumberOfCores;
-
-  private:
-    // map holding histo pointers and their family names
-    map< vector<string>, TH1* > fMapHisto;
 };
 
 #endif
diff --git a/NPLib/LaBr3/TLaBr3Spectra.cxx b/NPLib/LaBr3/TLaBr3Spectra.cxx
index 760d888164d1176f03e2664dea08e0315bbb1318..b8c3ce5b53ebdf7f588ad4c3e3979401db89819f 100644
--- a/NPLib/LaBr3/TLaBr3Spectra.cxx
+++ b/NPLib/LaBr3/TLaBr3Spectra.cxx
@@ -337,97 +337,3 @@ void TLaBr3Spectra::FillPhysicsSpectra(TLaBr3Physics* Physics)
    }
 }
 
-
-
-////////////////////////////////////////////////////////////////////////////////
-TH1* TLaBr3Spectra::AddHisto1D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, string family){
-  // create histo
-  TH1 *hist = new TH1D(name.c_str(), title.c_str(), nbinsx, xlow, xup);
-
-  vector<string> index ;
-  index.push_back(family);
-  index.push_back(name);
-
-  // fill map
-  fMapHisto[index]=hist;
-
-  return hist;
-}
-
-
-
-////////////////////////////////////////////////////////////////////////////////
-TH1* TLaBr3Spectra::AddHisto2D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, Int_t nbinsy, Double_t ylow, Double_t yup, string family){
-  // create histo
-  TH1 *hist = new TH2D(name.c_str(), title.c_str(), nbinsx, xlow, xup, nbinsy, ylow, yup);
-
-  vector<string> index ;
-  index.push_back(family);
-  index.push_back(name);
-
-  // fill map
-  fMapHisto[index]=hist;
-
-  return hist;
-}
-
-
-
-////////////////////////////////////////////////////////////////////////////////
-TH1* TLaBr3Spectra::GetHisto(string& family, string& name){
-  vector<string> index;
-  index.push_back(family);
-  index.push_back(name);
-  TH1* histo ; 
-  
-  try{
-    histo = fMapHisto.at(index); 
-  }
-
-  catch(const std::out_of_range& oor){
-  cout << "ERROR : the folowing Histo has been requested by TLaBr3Spectra and does not exist: family:" << family << " name: "  << name << endl ;
-  exit(1);
-  }
-
-  return histo;
-}
-
-
-
-////////////////////////////////////////////////////////////////////////////////
-void TLaBr3Spectra::WriteHisto(string filename)
-{
-   TFile *f = NULL; 
-
-   if (filename != "VOID") {
-      f = new TFile(filename.c_str(), "RECREATE");
-   }
-
-   map< vector<string>, TH1* >::iterator it;
-   for (it=fMapHisto.begin(); it!=fMapHisto.end(); ++it) {
-      it->second->Write();
-   }
-
-   if (filename != "VOID") {
-      f->Close();
-      delete f;
-   }
-}
-
-
-
-///////////////////////////////////////////////////////////////////////////////
-void TLaBr3Spectra::CheckSpectra()
-{
-   map< vector<string>, TH1* >::iterator it;
-   Color_t ok_color      = kTeal+9;
-   Color_t warning_color = kOrange+8;  warning_color *= 1;
-   Color_t bad_color     = kRed;       bad_color     *= 1;
-
-   for (it=fMapHisto.begin(); it!=fMapHisto.end(); ++it)
-   {
-      it->second->SetLineColor(ok_color);
-      it->second->SetFillStyle(1001);
-      it->second->SetFillColor(ok_color);
-   }
-}
diff --git a/NPLib/LaBr3/TLaBr3Spectra.h b/NPLib/LaBr3/TLaBr3Spectra.h
index 3eb8dff4355d0100dec20ef4a7e96844ea66e15b..ff8cb6af372abfe733037bf23697d7754f1f4b6d 100644
--- a/NPLib/LaBr3/TLaBr3Spectra.h
+++ b/NPLib/LaBr3/TLaBr3Spectra.h
@@ -25,6 +25,7 @@
 
 // C++ STL headers
 #include <map>
+using namespace std;
 
 // ROOT headers
 #include "TObject.h"
@@ -32,14 +33,14 @@
 #include <TH2.h>
 
 // NPLib headers
+#include "../include/VSpectra.h"
 #include "TLaBr3Data.h"
 #include "TLaBr3Physics.h"
-using namespace std;
 
 // ForwardDeclaration
 class TLaBr3Physics;
 
-class TLaBr3Spectra {
+class TLaBr3Spectra: public VSpectra {
   public:
     // constructor and destructor
     TLaBr3Spectra();
@@ -62,21 +63,10 @@ class TLaBr3Spectra {
     void FillRawSpectra(TLaBr3Data*);
     void FillPreTreatedSpectra(TLaBr3Data*);
     void FillPhysicsSpectra(TLaBr3Physics*);
-    // Check the Spectra
-    void CheckSpectra();
 
-  public:
-    // get map histo which will be used for GSpectra in GUser
-    map< vector<string>, TH1* > GetMapHisto() const {return fMapHisto;}
-    TH1* GetHisto(string& family,string& name);    
-    void WriteHisto(string filename="VOID");      
-
-  private: // Information on CHARISSA
+  private: // Information on LaBr3
     unsigned int fNumberDetector;
 
-  private:
-    // map holding histo pointers and their family names
-    map< vector<string>, TH1* > fMapHisto;
 };
 
 #endif
diff --git a/NPLib/MUST2/TMust2Spectra.cxx b/NPLib/MUST2/TMust2Spectra.cxx
index 7ac54d00e2ab4c3821c5ff39039920531707e68c..4fc34e0c58d71758f1d6524a97ed9a9551f05564 100644
--- a/NPLib/MUST2/TMust2Spectra.cxx
+++ b/NPLib/MUST2/TMust2Spectra.cxx
@@ -611,87 +611,4 @@ void TMust2Spectra::FillPhysicsSpectra(TMust2Physics* Physics){
   }
 
 }
-////////////////////////////////////////////////////////////////////////////////
-TH1* TMust2Spectra::AddHisto1D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, string family){
-  // create histo
-  TH1 *hist = new TH1D(name.c_str(), title.c_str(), nbinsx, xlow, xup);
-
-  vector<string> index ;
-  index.push_back(family);
-  index.push_back(name);
-
-  // fill map
-  fMapHisto[index]=hist;
-
-  return hist;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-TH1* TMust2Spectra::AddHisto2D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, Int_t nbinsy, Double_t ylow, Double_t yup, string family){
-  // create histo
-  TH1 *hist = new TH2D(name.c_str(), title.c_str(), nbinsx, xlow, xup, nbinsy, ylow, yup);
-
-  vector<string> index ;
-  index.push_back(family);
-  index.push_back(name);
-
-  // fill map
-  fMapHisto[index]=hist;
-
-  return hist;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-TH1* TMust2Spectra::GetHisto(string& family, string& name){
-  vector<string> index;
-  index.reserve(2);
-  index.push_back(family);
-  index.push_back(name);
-  TH1* histo ; 
-  
-  try{
-    histo = fMapHisto.at(index); 
-  }
-
-  catch(const std::out_of_range& oor){
-  cout << "ERROR : the folowing Histo has been requested by TMust2Spectra and does not exist: family:" << family << " name: "  << name << endl ;
-  exit(1);
-  }
 
-  return histo;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void TMust2Spectra::WriteHisto(string filename){
-  TFile* f=NULL; 
-
-  if(filename!="VOID"){
-    f = new TFile(filename.c_str(),"RECREATE");
-  }
-
-  map< vector<string>, TH1* >::iterator it;
-
-  for (it=fMapHisto.begin(); it!=fMapHisto.end(); ++it){
-    it->second->Write();
-  }
-
-  if(filename!="VOID"){
-    f->Close();
-    delete f;
-  }
-
-}
-///////////////////////////////////////////////////////////////////////////////
-void TMust2Spectra::CheckSpectra(){
-  map< vector<string>, TH1* >::iterator it;
-  Color_t ok_color = kTeal+9;
-  Color_t warning_color = kOrange+8;   warning_color *= 1;
-  Color_t bad_color = kRed;            bad_color *= 1;
-
-  for (it=fMapHisto.begin(); it!=fMapHisto.end(); ++it){
-    it->second->SetLineColor(ok_color);
-    it->second->SetFillStyle(1001);
-    it->second->SetFillColor(ok_color);
-  }
-
-}
diff --git a/NPLib/MUST2/TMust2Spectra.h b/NPLib/MUST2/TMust2Spectra.h
index b56bd6dd65e71765142cf277c3e3868d4e716cb2..518485826cc718d45f3ba26669a27f14d926ce41 100644
--- a/NPLib/MUST2/TMust2Spectra.h
+++ b/NPLib/MUST2/TMust2Spectra.h
@@ -18,13 +18,13 @@
  *                                                                           *
  *---------------------------------------------------------------------------*
  * Comment:                                                                  *
- *    + first version (not complete yet)                                     *
  *                                                                           *
  *                                                                           *
  *****************************************************************************/
 
 // C++ STL headers
 #include <map>
+using namespace std;
 
 // ROOT headers
 #include "TObject.h"
@@ -32,14 +32,14 @@
 #include <TH2.h>
 
 // NPLib headers
+#include "../include/VSpectra.h"
 #include "TMust2Data.h"
 #include "TMust2Physics.h"
-using namespace std;
 
 // ForwardDeclaration
 class TMust2Physics ;
 
-class TMust2Spectra {
+class TMust2Spectra:public VSpectra {
   public:
     // constructor and destructor
     TMust2Spectra();
@@ -62,14 +62,6 @@ class TMust2Spectra {
     void FillRawSpectra(TMust2Data*);
     void FillPreTreatedSpectra(TMust2Data*);
     void FillPhysicsSpectra(TMust2Physics*);
-    // Check the Spectra
-    void CheckSpectra();
-
-  public:
-    // get map histo which will be used for GSpectra in GUser
-    map< vector<string>, TH1* > GetMapHisto() const {return fMapHisto;}
-    TH1* GetHisto(string& family,string& name);    
-    void WriteHisto(string filename="VOID");      
 
   private: // Information on MUST2
     unsigned int fNumberOfTelescope;
@@ -77,10 +69,6 @@ class TMust2Spectra {
     unsigned int fStripY;
     unsigned int fPadSili;
     unsigned int fCrystalCsI;
-
-  private:
-    // map holding histo pointers and their family names
-    map< vector<string>, TH1* > fMapHisto;
 };
 
 #endif
diff --git a/NPLib/SiLi/TSiLiSpectra.cxx b/NPLib/SiLi/TSiLiSpectra.cxx
index d526bc569776b443918f0f5eaecc48b66431c571..32c50af0bd13d791a9bdd1326d97b29b0d443f40 100644
--- a/NPLib/SiLi/TSiLiSpectra.cxx
+++ b/NPLib/SiLi/TSiLiSpectra.cxx
@@ -338,97 +338,3 @@ void TSiLiSpectra::FillPhysicsSpectra(TSiLiPhysics* Physics)
    }
 }
 
-
-
-////////////////////////////////////////////////////////////////////////////////
-TH1* TSiLiSpectra::AddHisto1D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, string family){
-  // create histo
-  TH1 *hist = new TH1D(name.c_str(), title.c_str(), nbinsx, xlow, xup);
-
-  vector<string> index ;
-  index.push_back(family);
-  index.push_back(name);
-
-  // fill map
-  fMapHisto[index]=hist;
-
-  return hist;
-}
-
-
-
-////////////////////////////////////////////////////////////////////////////////
-TH1* TSiLiSpectra::AddHisto2D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, Int_t nbinsy, Double_t ylow, Double_t yup, string family){
-  // create histo
-  TH1 *hist = new TH2D(name.c_str(), title.c_str(), nbinsx, xlow, xup, nbinsy, ylow, yup);
-
-  vector<string> index ;
-  index.push_back(family);
-  index.push_back(name);
-
-  // fill map
-  fMapHisto[index]=hist;
-
-  return hist;
-}
-
-
-
-////////////////////////////////////////////////////////////////////////////////
-TH1* TSiLiSpectra::GetHisto(string& family, string& name){
-  vector<string> index;
-  index.push_back(family);
-  index.push_back(name);
-  TH1* histo ; 
-  
-  try{
-    histo = fMapHisto.at(index); 
-  }
-
-  catch(const std::out_of_range& oor){
-  cout << "ERROR : the folowing Histo has been requested by TSiLiSpectra and does not exist: family:" << family << " name: "  << name << endl ;
-  exit(1);
-  }
-
-  return histo;
-}
-
-
-
-////////////////////////////////////////////////////////////////////////////////
-void TSiLiSpectra::WriteHisto(string filename)
-{
-   TFile *f = NULL; 
-
-   if (filename != "VOID") {
-      f = new TFile(filename.c_str(), "RECREATE");
-   }
-
-   map< vector<string>, TH1* >::iterator it;
-   for (it=fMapHisto.begin(); it!=fMapHisto.end(); ++it) {
-      it->second->Write();
-   }
-
-   if (filename != "VOID") {
-      f->Close();
-      delete f;
-   }
-}
-
-
-
-///////////////////////////////////////////////////////////////////////////////
-void TSiLiSpectra::CheckSpectra()
-{
-   map< vector<string>, TH1* >::iterator it;
-   Color_t ok_color      = kTeal+9;
-   Color_t warning_color = kOrange+8;  warning_color *= 1;
-   Color_t bad_color     = kRed;       bad_color     *= 1;
-
-   for (it=fMapHisto.begin(); it!=fMapHisto.end(); ++it)
-   {
-      it->second->SetLineColor(ok_color);
-      it->second->SetFillStyle(1001);
-      it->second->SetFillColor(ok_color);
-   }
-}
diff --git a/NPLib/SiLi/TSiLiSpectra.h b/NPLib/SiLi/TSiLiSpectra.h
index eecae3ed4a62afade3968a674fefb0e77ec579b7..7a3bdacf629195c40dda9a8f01013d72416c3b59 100644
--- a/NPLib/SiLi/TSiLiSpectra.h
+++ b/NPLib/SiLi/TSiLiSpectra.h
@@ -14,17 +14,17 @@
  * Last update    :                                                          *
  *---------------------------------------------------------------------------*
  * Decription:                                                               *
- *  This class holds all the online spectra needed for SiLi              *
+ *  This class holds all the online spectra needed for SiLi                  *
  *                                                                           *
  *---------------------------------------------------------------------------*
  * Comment:                                                                  *
- *    + first version (not complete yet)                                     *
  *                                                                           *
  *                                                                           *
  *****************************************************************************/
 
 // C++ STL headers
 #include <map>
+using namespace std;
 
 // ROOT headers
 #include "TObject.h"
@@ -32,14 +32,14 @@
 #include <TH2.h>
 
 // NPLib headers
+#include "../include/VSpectra.h"
 #include "TSiLiData.h"
 #include "TSiLiPhysics.h"
-using namespace std;
 
 // ForwardDeclaration
 class TSiLiPhysics;
 
-class TSiLiSpectra {
+class TSiLiSpectra:public VSpectra {
   public:
     // constructor and destructor
     TSiLiSpectra();
@@ -62,21 +62,9 @@ class TSiLiSpectra {
     void FillRawSpectra(TSiLiData*);
     void FillPreTreatedSpectra(TSiLiData*);
     void FillPhysicsSpectra(TSiLiPhysics*);
-    // Check the Spectra
-    void CheckSpectra();
-
-  public:
-    // get map histo which will be used for GSpectra in GUser
-    map< vector<string>, TH1* > GetMapHisto() const {return fMapHisto;}
-    TH1* GetHisto(string& family,string& name);    
-    void WriteHisto(string filename="VOID");      
 
   private: // Information on CHARISSA
     unsigned int fNumberDetector;
-
-  private:
-    // map holding histo pointers and their family names
-    map< vector<string>, TH1* > fMapHisto;
 };
 
 #endif
diff --git a/NPLib/SiRes/TSiResSpectra.cxx b/NPLib/SiRes/TSiResSpectra.cxx
index b5797d6c0d951e48d2f292d8ad4727f7320931d0..73041afd5facbfcc0d764b0feb5a604da742ec65 100644
--- a/NPLib/SiRes/TSiResSpectra.cxx
+++ b/NPLib/SiRes/TSiResSpectra.cxx
@@ -268,97 +268,3 @@ void TSiResSpectra::FillPhysicsSpectra(TSiResPhysics* Physics)
 
 }
 
-
-
-////////////////////////////////////////////////////////////////////////////////
-TH1* TSiResSpectra::AddHisto1D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, string family){
-  // create histo
-  TH1 *hist = new TH1D(name.c_str(), title.c_str(), nbinsx, xlow, xup);
-
-  vector<string> index ;
-  index.push_back(family);
-  index.push_back(name);
-
-  // fill map
-  fMapHisto[index]=hist;
-
-  return hist;
-}
-
-
-
-////////////////////////////////////////////////////////////////////////////////
-TH1* TSiResSpectra::AddHisto2D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, Int_t nbinsy, Double_t ylow, Double_t yup, string family){
-  // create histo
-  TH1 *hist = new TH2D(name.c_str(), title.c_str(), nbinsx, xlow, xup, nbinsy, ylow, yup);
-
-  vector<string> index ;
-  index.push_back(family);
-  index.push_back(name);
-
-  // fill map
-  fMapHisto[index]=hist;
-
-  return hist;
-}
-
-
-
-////////////////////////////////////////////////////////////////////////////////
-TH1* TSiResSpectra::GetHisto(string& family, string& name){
-  vector<string> index;
-  index.push_back(family);
-  index.push_back(name);
-  TH1* histo ; 
-  
-  try{
-    histo = fMapHisto.at(index); 
-  }
-
-  catch(const std::out_of_range& oor){
-  cout << "ERROR : the folowing Histo has been requested by TSiResSpectra and does not exist: family:" << family << " name: "  << name << endl ;
-  exit(1);
-  }
-
-  return histo;
-}
-
-
-
-////////////////////////////////////////////////////////////////////////////////
-void TSiResSpectra::WriteHisto(string filename)
-{
-   TFile *f = NULL; 
-
-   if (filename != "VOID") {
-      f = new TFile(filename.c_str(), "RECREATE");
-   }
-
-   map< vector<string>, TH1* >::iterator it;
-   for (it=fMapHisto.begin(); it!=fMapHisto.end(); ++it) {
-      it->second->Write();
-   }
-
-   if (filename != "VOID") {
-      f->Close();
-      delete f;
-   }
-}
-
-
-
-///////////////////////////////////////////////////////////////////////////////
-void TSiResSpectra::CheckSpectra()
-{
-   map< vector<string>, TH1* >::iterator it;
-   Color_t ok_color      = kTeal+9;
-   Color_t warning_color = kOrange+8;  warning_color *= 1;
-   Color_t bad_color     = kRed;       bad_color     *= 1;
-
-   for (it=fMapHisto.begin(); it!=fMapHisto.end(); ++it)
-   {
-      it->second->SetLineColor(ok_color);
-      it->second->SetFillStyle(1001);
-      it->second->SetFillColor(ok_color);
-   }
-}
diff --git a/NPLib/SiRes/TSiResSpectra.h b/NPLib/SiRes/TSiResSpectra.h
index e18cdda21461fcc52373d06314c982ad758f9371..25cc06948df7bf6419c4e3ce1917144cf4bb0b3f 100644
--- a/NPLib/SiRes/TSiResSpectra.h
+++ b/NPLib/SiRes/TSiResSpectra.h
@@ -14,17 +14,17 @@
  * Last update    :                                                          *
  *---------------------------------------------------------------------------*
  * Decription:                                                               *
- *  This class holds all the online spectra needed for SiRes              *
+ *  This class holds all the online spectra needed for SiRes                 *
  *                                                                           *
  *---------------------------------------------------------------------------*
  * Comment:                                                                  *
- *    + first version (not complete yet)                                     *
  *                                                                           *
  *                                                                           *
  *****************************************************************************/
 
 // C++ STL headers
 #include <map>
+using namespace std;
 
 // ROOT headers
 #include "TObject.h"
@@ -32,14 +32,14 @@
 #include <TH2.h>
 
 // NPLib headers
+#include "../include/VSpectra.h"
 #include "TSiResData.h"
 #include "TSiResPhysics.h"
-using namespace std;
 
 // ForwardDeclaration
 class TSiResPhysics;
 
-class TSiResSpectra {
+class TSiResSpectra: public VSpectra {
   public:
     // constructor and destructor
     TSiResSpectra();
@@ -62,21 +62,9 @@ class TSiResSpectra {
     void FillRawSpectra(TSiResData*);
     void FillPreTreatedSpectra(TSiResData*);
     void FillPhysicsSpectra(TSiResPhysics*);
-    // Check the Spectra
-    void CheckSpectra();
-
-  public:
-    // get map histo which will be used for GSpectra in GUser
-    map< vector<string>, TH1* > GetMapHisto() const {return fMapHisto;}
-    TH1* GetHisto(string& family,string& name);    
-    void WriteHisto(string filename="VOID");      
 
-  private: // Information on CHARISSA
+  private: 
     unsigned int fNumberDetector;
-
-  private:
-    // map holding histo pointers and their family names
-    map< vector<string>, TH1* > fMapHisto;
 };
 
 #endif
diff --git a/NPLib/Tiara/TTiaraBarrelSpectra.cxx b/NPLib/Tiara/TTiaraBarrelSpectra.cxx
index 330857283914835fdf156ac18fd39988645c751e..d31d8be35537221411bf58430b5d6f7a2b1e34e6 100644
--- a/NPLib/Tiara/TTiaraBarrelSpectra.cxx
+++ b/NPLib/Tiara/TTiaraBarrelSpectra.cxx
@@ -308,87 +308,3 @@ void TTiaraBarrelSpectra::FillPhysicsSpectra(TTiaraBarrelPhysics* Physics){
   }
 }
 
-////////////////////////////////////////////////////////////////////////////////
-TH1* TTiaraBarrelSpectra::AddHisto1D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, string family){
-  // create histo
-  TH1 *hist = new TH1D(name.c_str(), title.c_str(), nbinsx, xlow, xup);
-
-  vector<string> index ;
-  index.push_back(family);
-  index.push_back(name);
-
-  // fill map
-  fMapHisto[index]=hist;
-
-  return hist;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-TH1* TTiaraBarrelSpectra::AddHisto2D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, Int_t nbinsy, Double_t ylow, Double_t yup, string family){
-  // create histo
-  TH1 *hist = new TH2D(name.c_str(), title.c_str(), nbinsx, xlow, xup, nbinsy, ylow, yup);
-
-  vector<string> index ;
-  index.push_back(family);
-  index.push_back(name);
-
-  // fill map
-  fMapHisto[index]=hist;
-
-  return hist;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-TH1* TTiaraBarrelSpectra::GetHisto(string& family, string& name){
-  vector<string> index;
-  index.reserve(2);
-  index.push_back(family);
-  index.push_back(name);
-  TH1* histo ; 
-
-  try{
-    histo = fMapHisto.at(index); 
-  }
-
-  catch(const std::out_of_range& oor){
-    cout << "ERROR : the folowing Histo has been requested by TTiaraBarrelSpectra and does not exist: family:" << family << " name: "  << name << endl ;
-    exit(1);
-  }
-
-  return histo;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void TTiaraBarrelSpectra::WriteHisto(string filename){
-  TFile* f=NULL; 
-
-  if(filename!="VOID"){
-    f = new TFile(filename.c_str(),"RECREATE");
-  }
-
-  map< vector<string>, TH1* >::iterator it;
-
-  for (it=fMapHisto.begin(); it!=fMapHisto.end(); ++it){
-    it->second->Write();
-  }
-
-  if(filename!="VOID"){
-    f->Close();
-    delete f;
-  }
-
-}
-///////////////////////////////////////////////////////////////////////////////
-void TTiaraBarrelSpectra::CheckSpectra(){
-  map< vector<string>, TH1* >::iterator it;
-  Color_t ok_color = kTeal+9;
-  Color_t warning_color = kOrange+8;   warning_color *= 1;
-  Color_t bad_color = kRed;            bad_color *= 1;
-
-  for (it=fMapHisto.begin(); it!=fMapHisto.end(); ++it){
-    it->second->SetLineColor(ok_color);
-    it->second->SetFillStyle(1001);
-    it->second->SetFillColor(ok_color);
-  }
-
-}
diff --git a/NPLib/Tiara/TTiaraBarrelSpectra.h b/NPLib/Tiara/TTiaraBarrelSpectra.h
index 3892b99eb582596758af944c455dbc36b42e90a9..a170a3449f02d4ce1f5a57e3afbfc9f81a8a2bcb 100644
--- a/NPLib/Tiara/TTiaraBarrelSpectra.h
+++ b/NPLib/Tiara/TTiaraBarrelSpectra.h
@@ -25,6 +25,7 @@
 
 // C++ STL headers
 #include <map>
+using namespace std;
 
 // ROOT headers
 #include "TObject.h"
@@ -32,14 +33,14 @@
 #include <TH2.h>
 
 // NPLib headers
+#include "../include/VSpectra.h"
 #include "TTiaraBarrelData.h"
 #include "TTiaraBarrelPhysics.h"
-using namespace std;
 
 // ForwardDeclaration
 class TTiaraBarrelPhysics ;
 
-class TTiaraBarrelSpectra {
+class TTiaraBarrelSpectra: public VSpectra {
   public:
     // constructor and destructor
     TTiaraBarrelSpectra();
@@ -62,23 +63,11 @@ class TTiaraBarrelSpectra {
     void FillRawSpectra(TTiaraBarrelData*);
     void FillPreTreatedSpectra(TTiaraBarrelData*);
     void FillPhysicsSpectra(TTiaraBarrelPhysics*);
-    // Check the Spectra
-    void CheckSpectra();
-
-  public:
-    // get map histo which will be used for GSpectra in GUser
-    map< vector<string>, TH1* > GetMapHisto() const {return fMapHisto;}
-    TH1* GetHisto(string& family,string& name);    
-    void WriteHisto(string filename="VOID");      
 
   private: // Information on TIARA/BARREL
     unsigned int fNumberOfDetector;
     unsigned int fInnerBarrelStrip;
     unsigned int fOuterBarrelStrip;
-
-  private:
-    // map holding histo pointers and their family names
-    map< vector<string>, TH1* > fMapHisto;
 };
 
 #endif
diff --git a/NPLib/Tiara/TTiaraHyballSpectra.cxx b/NPLib/Tiara/TTiaraHyballSpectra.cxx
index 6ec5a7853c59b576da9d37b79b3b2d30ba3cd1a6..88bee04467ad1e1a766a0ccf9251fe04a8d96a37 100644
--- a/NPLib/Tiara/TTiaraHyballSpectra.cxx
+++ b/NPLib/Tiara/TTiaraHyballSpectra.cxx
@@ -294,76 +294,3 @@ void TTiaraHyballSpectra::FillPhysicsSpectra(TTiaraHyballPhysics* Physics){
 
 }
 
-
-
-////////////////////////////////////////////////////////////////////////////////
-TH1* TTiaraHyballSpectra::AddHisto1D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, string family){
-  // create histo
-  TH1 *hist = new TH1D(name.c_str(), title.c_str(), nbinsx, xlow, xup);
-
-  vector<string> index;
-  index.push_back(family);
-  index.push_back(name);
-
-  // fill map
-  fMapHisto[index] = hist;
-
-  return hist;
-}
-
-
-
-////////////////////////////////////////////////////////////////////////////////
-TH1* TTiaraHyballSpectra::AddHisto2D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, Int_t nbinsy, Double_t ylow, Double_t yup, string family){
-  // create histo
-  TH1 *hist = new TH2D(name.c_str(), title.c_str(), nbinsx, xlow, xup, nbinsy, ylow, yup);
-
-  vector<string> index;
-  index.push_back(family);
-  index.push_back(name);
-
-  // fill map
-  fMapHisto[index] = hist;
-
-  return hist;
-}
-
-
-
-////////////////////////////////////////////////////////////////////////////////
-TH1* TTiaraHyballSpectra::GetHisto(string& family, string& name){
-  vector<string> index;
-  index.reserve(2);
-  index.push_back(family);
-  index.push_back(name);
-  TH1* histo ; 
-  
-  try{
-    histo = fMapHisto.at(index); 
-  }
-
-  catch(const std::out_of_range& oor){
-  cout << "ERROR : the folowing Histo has been requested by THyballSpectra and does not exist: family:" << family << " name: "  << name << endl ;
-  exit(1);
-  }
-
-  return histo;
-}
-////////////////////////////////////////////////////////////////////////////////
-void TTiaraHyballSpectra::WriteHisto(string filename){
-  TFile* f = NULL; 
-
-  if (filename != "VOID") {
-    f = new TFile(filename.c_str(),"RECREATE");
-  }
-
-  map< vector<string>, TH1* >::iterator it;
-  for (it=fMapHisto.begin(); it!=fMapHisto.end(); ++it) {
-    it->second->Write();
-  }
-
-  if (filename != "VOID") {
-    f->Close();
-    delete f;
-  }
-}
diff --git a/NPLib/Tiara/TTiaraHyballSpectra.h b/NPLib/Tiara/TTiaraHyballSpectra.h
index 380a8f3a77775f60adb0b2b087f661522588b66c..734ef0ebcbb0c25d6afa43ee30beea6939101c0a 100644
--- a/NPLib/Tiara/TTiaraHyballSpectra.h
+++ b/NPLib/Tiara/TTiaraHyballSpectra.h
@@ -18,7 +18,6 @@
  *                                                                           *
  *---------------------------------------------------------------------------*
  * Comment:                                                                  *
- *    + first version (not complete yet)                                     *
  *                                                                           *
  *                                                                           *
  *****************************************************************************/
@@ -29,6 +28,7 @@
 #include <TH2.h>
 
 // NPLib headers
+#include "../include/VSpectra.h"
 #include "TTiaraHyballData.h"
 #include "TTiaraHyballPhysics.h"
 
@@ -41,7 +41,7 @@ using namespace std;
 class TTiaraHyballPhysics;
 
 
-class TTiaraHyballSpectra {
+class TTiaraHyballSpectra:public VSpectra {
   public:
     // constructor and destructor
     TTiaraHyballSpectra();
@@ -64,20 +64,10 @@ class TTiaraHyballSpectra {
     void FillPreTreatedSpectra(TTiaraHyballData*);
     void FillPhysicsSpectra(TTiaraHyballPhysics*);
 
-  public:
-    // get map histo which will be used for GSpectra in GUser
-    map< vector<string>, TH1* > GetMapHisto() const {return fMapHisto;}
-    TH1* GetHisto(string& family, string& name);    
-    void WriteHisto(string filename = "VOID");      
-
   private: // Information on MUST2
     unsigned int fRingsNumber;
     unsigned int fSectorsNumber;
     unsigned int fWedgesNumber;
-
-  private:
-    // map holding histo pointers and their family names
-    map< vector<string>, TH1* > fMapHisto;
 };
 
 #endif
diff --git a/NPLib/VDetector/Makefile b/NPLib/VDetector/Makefile
index 1384fe38601a27ed98076d170e48357ee1c6b076..0bd21743de6eb77c419f486442b296f5ac070b87 100644
--- a/NPLib/VDetector/Makefile
+++ b/NPLib/VDetector/Makefile
@@ -8,11 +8,12 @@ all:            $(SHARELIB)
 ############### Detector ##############
 
 ## VDetector ##
-libVDetector.so: VDetector.o DetectorManager.o
+libVDetector.so: VDetector.o DetectorManager.o VSpectra.o
 		$(LD) $(SOFLAGS) $^ $(OutPutOpt) $@	
 			
 # dependances
-VDetector.o:		VDetector.cxx	VDetector.h
+VDetector.o: VDetector.cxx	VDetector.h
+VSpectra.o: VSpectra.cxx VSpectra.h
 DetectorManager.o: DetectorManager.cxx DetectorManager.h	../DetectorList.inc
 #######################################
 
diff --git a/NPLib/VDetector/VSpectra.cxx b/NPLib/VDetector/VSpectra.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..eefbe271d55535be5b91d7fdea7f7c6c13d2b4d8
--- /dev/null
+++ b/NPLib/VDetector/VSpectra.cxx
@@ -0,0 +1,105 @@
+/*****************************************************************************
+ * Copyright (C) 2009-2014   this file is part of the NPTool Project         *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Original Author: N. de Sereville  contact address: deserevi@ipno.in2p3.fr *
+ *                                                                           *
+ * Creation Date  : dec 2013                                                 *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  This class holds all the online spectra needed for Tiara/Hyball          *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *    + first version (not complete yet)                                     *
+ *                                                                           *
+ *                                                                           *
+ *****************************************************************************/
+
+//STL
+#include <iostream>
+#include <cstdlib>
+// NPL
+#include "VSpectra.h"
+#include "NPOptionManager.h"
+
+
+// ROOT
+#include "TDirectory.h"
+#include "TFile.h"
+
+////////////////////////////////////////////////////////////////////////////////
+TH1* VSpectra::AddHisto1D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, string family){
+  // create histo
+  TH1 *hist = new TH1D(name.c_str(), title.c_str(), nbinsx, xlow, xup);
+
+  vector<string> index;
+  index.push_back(family);
+  index.push_back(name);
+
+  // fill map
+  fMapHisto[index] = hist;
+
+  return hist;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+TH1* VSpectra::AddHisto2D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, Int_t nbinsy, Double_t ylow, Double_t yup, string family){
+  // create histo
+  TH1 *hist = new TH2D(name.c_str(), title.c_str(), nbinsx, xlow, xup, nbinsy, ylow, yup);
+
+  vector<string> index;
+  index.push_back(family);
+  index.push_back(name);
+
+  // fill map
+  fMapHisto[index] = hist;
+
+  return hist;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+TH1* VSpectra::GetHisto(string& family, string& name){
+  vector<string> index;
+  index.reserve(2);
+  index.push_back(family);
+  index.push_back(name);
+  TH1* histo ; 
+
+  map< vector<string> , TH1*>::iterator it;
+  it = fMapHisto.find(index);
+
+  if(it == fMapHisto.end()){
+    cout << "ERROR : the folowing Histo has been requested and does not exist: family:" << family << " name: "  << name << endl ;
+    exit(1);
+  }
+
+  else
+    histo = it->second; 
+
+  return histo;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void VSpectra::WriteHisto(string filename){
+  TFile* f = NULL; 
+
+  if (filename != "VOID") {
+    f = new TFile(filename.c_str(),"RECREATE");
+  }
+
+  map< vector<string>, TH1* >::iterator it;
+  for (it=fMapHisto.begin(); it!=fMapHisto.end(); ++it) {
+    it->second->Write();
+  }
+
+  if (filename != "VOID") {
+    f->Close();
+    delete f;
+  }
+}
diff --git a/NPLib/VDetector/VSpectra.h b/NPLib/VDetector/VSpectra.h
new file mode 100644
index 0000000000000000000000000000000000000000..a541ca8f600b376551486668036a953826d7d8a6
--- /dev/null
+++ b/NPLib/VDetector/VSpectra.h
@@ -0,0 +1,69 @@
+#ifndef VSPECTRA_H
+#define VSPECTRA_H
+/*****************************************************************************
+ * Copyright (C) 2009-2014    this file is part of the NPTool Project        *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Original Author: A. Matta         contact address: a.matta@surrey.ac.uk   *
+ *                                                                           *
+ * Creation Date  : may 2014                                                 *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  Virtual class for the TDetectorSpectra classes                           *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *                                                                           *
+ *****************************************************************************/
+
+// ROOT headers
+#include "TObject.h"
+#include <TH1.h>
+#include <TH2.h>
+
+// C++ STL headers
+#include <map>
+#include <string>
+using namespace std;
+
+class VSpectra {
+  public:
+    // constructor and destructor
+    VSpectra();
+    ~VSpectra();
+
+  private:
+    // Instantiate and register histo to maps
+    TH1* AddHisto1D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, string family);
+    TH1* AddHisto2D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, 
+        Int_t nbinsy, Double_t ylow, Double_t yup, string family);
+
+    // Initialization methods
+    virtual void InitRawSpectra(){};
+    virtual void InitPreTreatedSpectra(){};
+    virtual void InitPhysicsSpectra(){};
+
+  public:
+    // Filling methods
+    virtual void FillRawSpectra(void*){};
+    virtual void FillPreTreatedSpectra(void*){};
+    virtual void FillPhysicsSpectra(void*){};
+    virtual void CheckSpectra(){};
+
+  public:
+    // get map histo which will be used for GSpectra in GUser
+    map< vector<string>, TH1* > GetMapHisto() const {return fMapHisto;}
+    TH1* GetHisto(string& family, string& name);    
+    void WriteHisto(string filename = "VOID");      
+      private:
+    // map holding histo pointers and their family names
+    map< vector<string>, TH1* > fMapHisto;
+};
+
+#endif