CMS 3D CMS Logo

Static Public Member Functions | Static Private Member Functions

pos::PixelConfigFile Class Reference

#include <interface/PixelConfigFile.h>

List of all members.

Static Public Member Functions

static void addAlias (std::string alias, unsigned int key)
static void addAlias (std::string alias, unsigned int key, std::vector< std::pair< std::string, std::string > > versionaliases)
static void addVersionAlias (std::string path, unsigned int version, std::string alias)
static PixelConfigListconfigList ()
template<class T >
static bool configurationDataExists (T *&data, std::string path, PixelConfigKey key)
static void forceAliasesReload (bool m)
static void forceConfigReload (bool m)
template<class T >
static void get (std::map< std::string, T * > &pixelObjects, PixelConfigKey key)
template<class T >
static void get (T *&data, std::string path, PixelConfigKey key)
template<class T >
static void get (T *&data, std::string path, unsigned int version)
static PixelAliasListgetAlias ()
static std::vector< std::pair
< std::string, unsigned int > > 
getAliases ()
static std::map< std::string,
unsigned int > 
getAliases_map ()
static PixelConfigListgetConfig ()
static std::vector< pathAliasPairgetConfigAliases (std::string path)
static std::string getPath (std::string path, PixelConfigKey key)
static unsigned int getVersion (std::string path, std::string alias)
static std::vector< std::string > getVersionAliases (std::string path)
static bool getVersionAliases (std::string configAlias, unsigned int &key, std::vector< std::pair< std::string, std::string > > &versionAliases)
static pos::pathVersionAliasMmap getVersionData (std::string koc)
static pos::pathVersionAliasMmap getVersionData ()
static std::vector< std::pair
< std::string, unsigned int > > 
getVersions (pos::PixelConfigKey key)
static unsigned int makeKey (std::vector< std::pair< std::string, unsigned int > > versions)
static int makeNewVersion (std::string path, std::string &dir)
template<class T >
static int put (std::vector< T * > objects, std::string path)
template<class T >
static int put (const T *object, std::string path)

Static Private Member Functions

static bool & getForceAliasesReload ()
static bool & getForceConfigReload ()

Detailed Description

OK, first this is not a DB; this class will try to define an interface to accessing the configuration data.

Definition at line 59 of file PixelConfigFile.h.


Member Function Documentation

static void pos::PixelConfigFile::addAlias ( std::string  alias,
unsigned int  key 
) [inline, static]

Definition at line 123 of file PixelConfigFile.h.

References getAlias(), pos::PixelAliasList::insertAlias(), and pos::PixelAliasList::writefile().

                                                           {
      PixelConfigAlias anAlias(alias,key);
      getAlias().insertAlias(anAlias);
      getAlias().writefile();
    }
static void pos::PixelConfigFile::addAlias ( std::string  alias,
unsigned int  key,
std::vector< std::pair< std::string, std::string > >  versionaliases 
) [inline, static]

Definition at line 130 of file PixelConfigFile.h.

References pos::PixelConfigAlias::addVersionAlias(), first, getAlias(), i, pos::PixelAliasList::insertAlias(), edm::second(), and pos::PixelAliasList::writefile().

                                                                                  {
      PixelConfigAlias anAlias(alias,key);
      for(unsigned int i=0;i<versionaliases.size();i++){
        anAlias.addVersionAlias(versionaliases[i].first,versionaliases[i].second);
      }
      getAlias().insertAlias(anAlias);
      getAlias().writefile();
    }
static void pos::PixelConfigFile::addVersionAlias ( std::string  path,
unsigned int  version,
std::string  alias 
) [inline, static]

Definition at line 148 of file PixelConfigFile.h.

References cmsPerfCommons::configs, getAlias(), getConfig(), pos::PixelAliasList::insertVersionAlias(), pos::PixelAliasList::updateConfigAlias(), pos::PixelAliasList::writefile(), and pos::PixelConfigList::writefile().

                                                                                      {

      PixelConfigList& configs=getConfig();

      PixelVersionAlias anAlias(path, version, alias);
      getAlias().insertVersionAlias(anAlias);
      getAlias().updateConfigAlias(path,version,alias,configs);
      getAlias().writefile();
      configs.writefile();
    }
static PixelConfigList& pos::PixelConfigFile::configList ( ) [inline, static]

Definition at line 100 of file PixelConfigFile.h.

References getConfig().

Referenced by configurationDataExists(), and get().

                                        {
      static PixelConfigList theConfigList=getConfig();
      return theConfigList;
    }
template<class T >
static bool pos::PixelConfigFile::configurationDataExists ( T *&  data,
std::string  path,
PixelConfigKey  key 
) [inline, static]

Definition at line 500 of file PixelConfigFile.h.

References configList(), gather_cfg::cout, AlCaHLTBitMon_QueryRunRegistry::data, DEBUG_CF_, dir, createBeamHaloJobs::directory, funct::false, convertXMLtoSQLite_cfg::fileName, recoMuon::in, pos::PixelConfigKey::key(), prof2calltree::last, mergeVDriftHistosByStation::name, findQualityFiles::size, funct::true, and BeamSplash_cfg::version.

                                                                                       {

      std::string mthn = "]\t[pos::PixelConfigFile::configurationDataExists()]\t    " ;
/*       pos::PixelTimeFormatter * timer = new pos::PixelTimeFormatter("PixelConfigFile::ConfigurationDataExists") ; */
      unsigned int theKey=key.key();
    

      assert(theKey<=configList().size());
      
    
      unsigned int last=path.find_last_of("/");
      assert(last!=std::string::npos);
    
      std::string base=path.substr(0,last);
      std::string ext=path.substr(last+1);
    
      unsigned int slashpos=base.find_last_of("/");
      if (slashpos==std::string::npos) {
        std::cout << __LINE__ << mthn << "Asking for data of type:"          << typeid(data).name() <<std::endl;
        std::cout << __LINE__ << mthn << "On path:"                      << path                <<std::endl;
        std::cout << __LINE__ << mthn << "Recall that you need a trailing /"                    <<std::endl;
        ::abort();
      }
    
      std::string dir=base.substr(slashpos+1);
/*       timer->stopTimer() ; */
//      std::cout << __LINE__ << mthn << "Extracted dir:"  << dir  <<std::endl;
//      std::cout << __LINE__ << mthn << "Extracted base:" << base <<std::endl;
//      std::cout << __LINE__ << mthn << "Extracted ext :" << ext  <<std::endl;
    
      unsigned int version;
      int err=configList()[theKey].find(dir,version);   
      // assert(err==0);
      if(0!=err) 
        {
          data= 0; 
          return false ;
        }
/*       timer->stopTimer() ; */
/*       delete timer ; */

      std::ostringstream s1;
      s1 << version;
      std::string strversion=s1.str();

      static std::string directory;
      directory=getenv("PIXELCONFIGURATIONBASE");
    
      std::string fullpath=directory+"/"+dir+"/"+strversion+"/";
    
      //std::cout << __LINE__ << mthn << "Directory for configuration data:"<<fullpath<<std::endl;
    
      std::string fileName ;
      if (typeid(data)==typeid(PixelTrimBase*)){
        fileName = fullpath+"ROC_Trims_module_"+ext+".dat" ;
      }else if (typeid(data)==typeid(PixelMaskBase*)){
        fileName = fullpath+"ROC_Masks_module_"+ext+".dat";
      }else if (typeid(data)==typeid(PixelDACSettings*)){
        fileName = fullpath+"ROC_DAC_module_"+ext+".dat";
      }else if (typeid(data)==typeid(PixelTBMSettings*)){
        fileName = fullpath+"TBM_module_"+ext+".dat";
      }else if (typeid(data)==typeid(PixelDetectorConfig*)){
        fileName = fullpath+"detectconfig.dat";
      }else if (typeid(data)==typeid(PixelLowVoltageMap*)){
        fileName = fullpath+"lowvoltagemap.dat";
      }else if (typeid(data)==typeid(PixelMaxVsf*)){
        fileName = fullpath+"maxvsf.dat";
      }else if (typeid(data)==typeid(PixelNameTranslation*)){
        fileName = fullpath+"translation.dat";
      }else if (typeid(data)==typeid(PixelFEDCard*)){
        fileName = fullpath+"params_fed_"+ext+".dat";
      }else if (typeid(data)==typeid(PixelTKFECConfig*)){
        fileName = fullpath+"tkfecconfig.dat";
      }else if (typeid(data)==typeid(PixelFECConfig*)){
        fileName = fullpath+"fecconfig.dat";
      }else if (typeid(data)==typeid(PixelFEDConfig*)){
        fileName = fullpath+"fedconfig.dat";
      }else if (typeid(data)==typeid(PixelPortCardConfig*)){
        fileName = fullpath+"portcard_"+ext+".dat";
      }else if (typeid(data)==typeid(PixelPortcardMap*)){
        fileName = fullpath+"portcardmap.dat";
      }else if (typeid(data)==typeid(PixelDelay25Calib*)){
        fileName = fullpath+"delay25.dat";
      }else if (typeid(data)==typeid(PixelTTCciConfig*)){
        fileName = fullpath+"TTCciConfiguration.txt";
      }else if (typeid(data)==typeid(PixelLTCConfig*)){
        fileName = fullpath+"LTCConfiguration.txt";
      }else if (typeid(data)==typeid(PixelGlobalDelay25*)){
        fileName = fullpath+"globaldelay25.dat";
      }else if (typeid(data)==typeid(PixelCalibBase*)){
        assert(dir=="calib");
        std::string calibfile=fullpath+"calib.dat";
        std::ifstream calibin(calibfile.c_str());
        if(calibin.good())
        {
         std::cout << __LINE__ << mthn << "Found " << calibfile << std::endl ; 
         return true ;
        }else{
         calibfile=fullpath+"delay25.dat";
         std::ifstream delayin(calibfile.c_str());
         if(delayin.good())
         {
          std::cout << __LINE__ << mthn << "Found " << calibfile << std::endl ; 
          return true ;
         }else{
          calibfile=fullpath+"fedtestdac.dat";
          std::ifstream delayin(calibfile.c_str());
          if(delayin.good())
          {
           std::cout << __LINE__ << mthn << "Found " << calibfile << std::endl ; 
           return true ;
          }else{
           std::cout << mthn << "Can't find calibration file calib.dat or delay25.dat or fedtestdac.dat" << std::endl;
           return false  ;
          }
         }
        }
      }else{
        std::cout << __LINE__ << mthn << "No match of class type" << std::endl;
        return false ;
      }
      /*
      struct stat * tmp = NULL ;
      if(stat(fileName.c_str(), tmp)==0)
        {
          std::cout << mthn << "Found(stat) " << fileName << std::endl ; 
          return true ;
        }
      else
        {
          std::cout << mthn << "Not found(stat) " << fileName << std::endl ; 
          return false ;
        }
      */
      std::ifstream in(fileName.c_str());
      if (!in.good())
      {
       std::cout << __LINE__ << mthn << "Not found " << fileName << std::endl ; 
       return false ;
      }
      in.close() ;
      if( DEBUG_CF_ ) std::cout << __LINE__ << mthn << "Found " << fileName << std::endl ; 
      return true ;
      
    }
static void pos::PixelConfigFile::forceAliasesReload ( bool  m) [inline, static]

Definition at line 254 of file PixelConfigFile.h.

References getForceAliasesReload(), and m.

Referenced by getAlias(), and getForceAliasesReload().

static void pos::PixelConfigFile::forceConfigReload ( bool  m) [inline, static]

Definition at line 260 of file PixelConfigFile.h.

References getForceConfigReload(), and m.

Referenced by getConfig(), and getForceConfigReload().

template<class T >
static void pos::PixelConfigFile::get ( std::map< std::string, T * > &  pixelObjects,
PixelConfigKey  key 
) [inline, static]

Definition at line 815 of file PixelConfigFile.h.

References combine::key.

                                                                              {

      typename std::map<std::string, T* >::iterator iObject=pixelObjects.begin();

      for(;iObject!=pixelObjects.end();++iObject){
        get(iObject->second,iObject->first,key);
      }

    }
template<class T >
static void pos::PixelConfigFile::get ( T *&  data,
std::string  path,
PixelConfigKey  key 
) [inline, static]

Definition at line 317 of file PixelConfigFile.h.

References configList(), gather_cfg::cout, AlCaHLTBitMon_QueryRunRegistry::data, dir, createBeamHaloJobs::directory, alignCSCRings::e, exception, getConfig(), combine::key, prof2calltree::last, mergeVDriftHistosByStation::name, getHLTPrescaleColumns::path, findQualityFiles::size, and BeamSplash_cfg::version.

                                                                   {
      unsigned int theKey=key.key();
      
      if (theKey>=configList().size()){
        configList()=getConfig();
      }

      assert(theKey<=configList().size());
    
      unsigned int last=path.find_last_of("/");
      assert(last!=std::string::npos);
    
      std::string base=path.substr(0,last);
      std::string ext=path.substr(last+1);
    
      unsigned int slashpos=base.find_last_of("/");
      if (slashpos==std::string::npos) {
        std::cout << "[pos::PixelConfigFile::get()]\t\t\tAsking for data of type:"<<typeid(data).name()<<std::endl;
        std::cout << "[pos::PixelConfigFile::get()]\t\t\tOn path:"                <<path               <<std::endl;
        std::cout << "[pos::PixelConfigFile::get()]\t\t\tRecall that you need a trailing /"            <<std::endl;
        ::abort();
      }
    
      std::string dir=base.substr(slashpos+1);
    
//      std::cout << "[pos::PixelConfigFile::get()]\t\t\tExtracted dir:" <<dir <<std::endl;
//      std::cout << "[pos::PixelConfigFile::get()]\t\t\tExtracted base:"<<base<<std::endl;
//      std::cout << "[pos::PixelConfigFile::get()]\t\t\tExtracted ext :"<<ext <<std::endl;
    
      unsigned int version;
      int err=configList()[theKey].find(dir,version);   
      // assert(err==0);
      if(0!=err) 
        {
          std::cout<<"[PixelConfigFile.h::get] error loading config list. "<<theKey<<" "<<dir<<" "<<version<<std::endl;
          data= 0; 
          return;
        }
    
      std::ostringstream s1;
      s1 << version;
      std::string strversion=s1.str();

      static std::string directory;
      directory=getenv("PIXELCONFIGURATIONBASE");
    
      std::string fullpath=directory+"/"+dir+"/"+strversion+"/";
    
      //std::cout << "Directory for configuration data:"<<fullpath<<std::endl;

      try {
    
      if (typeid(data)==typeid(PixelTrimBase*)){
        //std::cout << "[pos::PixelConfigFile::get()]\t\t\tWill return PixelTrimBase" << std::endl;
        assert(dir=="trim");
        data = (T*) new PixelTrimAllPixels(fullpath+"ROC_Trims_module_"+ext+".dat");
        return;
      }else if (typeid(data)==typeid(PixelMaskBase*)){
        //std::cout << "[pos::PixelConfigFile::get()]\t\t\tWill return PixelMaskBase" << std::endl;
        assert(dir=="mask");
        data = (T*) new PixelMaskAllPixels(fullpath+"ROC_Masks_module_"+ext+".dat");
        return;
      }else if (typeid(data)==typeid(PixelDACSettings*)){
        //std::cout << "[pos::PixelConfigFile::get()]\t\t\tWill return PixelDACSettings" << std::endl;
        assert(dir=="dac");
        data = (T*) new PixelDACSettings(fullpath+"ROC_DAC_module_"+ext+".dat");
        return;
      }else if (typeid(data)==typeid(PixelTBMSettings*)){
        //std::cout << "[pos::PixelConfigFile::get()]\t\t\tWill return PixelTBMSettings" << std::endl;
        assert(dir=="tbm");
        data = (T*) new PixelTBMSettings(fullpath+"TBM_module_"+ext+".dat");
        return;
      }else if (typeid(data)==typeid(PixelDetectorConfig*)){
        //std::cout << "[pos::PixelConfigFile::get()]\t\t\tWill return PixelDetectorConfig" << std::endl;
        assert(dir=="detconfig");
        data = (T*) new PixelDetectorConfig(fullpath+"detectconfig.dat");
        return;
      }else if (typeid(data)==typeid(PixelLowVoltageMap*)){
        //std::cout << "[pos::PixelConfigFile::get()]\t\t\tWill fetch PixelLowVoltageMap" << std::endl;
        assert(dir=="lowvoltagemap");
        data = (T*) new PixelLowVoltageMap(fullpath+"lowvoltagemap.dat");
        //std::cout << "[pos::PixelConfigFile::get()]\t\t\tWill return the PixelLowVoltageMap" << std::endl;
        return;
      }else if (typeid(data)==typeid(PixelMaxVsf*)){
        //std::cout << "Will fetch PixelMaxVsf" << std::endl;
        assert(dir=="maxvsf");
        data = (T*) new PixelMaxVsf(fullpath+"maxvsf.dat");
        //std::cout << "Will return the PixelMaxVsf" << std::endl;
        return;
      }else if (typeid(data)==typeid(PixelNameTranslation*)){
        //std::cout << __LINE__ << "]\t[pos::PixelConfigFile::get()]\t\t\t    Will return PixelNameTranslation*" << std::endl;
        assert(dir=="nametranslation");
        data = (T*) new PixelNameTranslation(fullpath+"translation.dat");
        return;
      }else if (typeid(data)==typeid(PixelFEDCard*)){
        //std::cout << "[pos::PixelConfigFile::get()]\t\t\tWill return PixelFEDCard" << std::endl;
        assert(dir=="fedcard");
        //std::cout << "[pos::PixelConfigFile::get()]\t\t\tWill open:"<<fullpath+"params_fed_"+ext+".dat"<< std::endl;
        data = (T*) new PixelFEDCard(fullpath+"params_fed_"+ext+".dat");
        return;
      }else if (typeid(data)==typeid(PixelCalibBase*)){
        //std::cout << "[pos::PixelConfigFile::get()]\t\t\tWill return PixelCalibBase" << std::endl;
        assert(dir=="calib");
        std::string calibfile=fullpath+"calib.dat";
        //std::cout << "[pos::PixelConfigFile::get()]\t\t\tLooking for file " << calibfile << std::endl;
        std::ifstream calibin(calibfile.c_str());
        if(calibin.good()){
          data = (T*) new PixelCalibConfiguration(calibfile);
        }else{
          calibfile=fullpath+"delay25.dat";
          //std::cout << "[pos::PixelConfigFile::get()]\t\t\tNow looking for file " << calibfile << std::endl;
          std::ifstream delayin(calibfile.c_str());
          if(delayin.good()){
            data = (T*) new PixelDelay25Calib(calibfile);
          }else{
            calibfile=fullpath+"fedtestdac.dat";
            //std::cout << "[pos::PixelConfigFile::get()]\t\t\tNow looking for file " << calibfile << std::endl;
            std::ifstream delayin(calibfile.c_str());
            if(delayin.good()){
              data = (T*) new PixelFEDTestDAC(calibfile);
            }else{
              throw std::runtime_error("[pos::PixelConfigFile::get()]\t\t\tCan't find calibration file calib.dat or delay25.dat or fedtestdac.dat");    
            }
          }
        }
        return;
      }else if (typeid(data)==typeid(PixelTKFECConfig*)){
        //std::cout << "[pos::PixelConfigFile::get()]\t\t\tWill return PixelTKFECConfig" << std::endl;
        assert(dir=="tkfecconfig");
        data = (T*) new PixelTKFECConfig(fullpath+"tkfecconfig.dat");
        return;
      }else if (typeid(data)==typeid(PixelFECConfig*)){
        //std::cout << "[pos::PixelConfigFile::get()]\t\t\tWill return PixelFECConfig" << std::endl;
        assert(dir=="fecconfig");
        data = (T*) new PixelFECConfig(fullpath+"fecconfig.dat");
        return;
      }else if (typeid(data)==typeid(PixelFEDConfig*)){
        //std::cout << "[pos::PixelConfigFile::get()]\t\t\tWill return PixelFEDConfig" << std::endl;
        assert(dir=="fedconfig");
        data = (T*) new PixelFEDConfig(fullpath+"fedconfig.dat");
        return;
      }else if (typeid(data)==typeid(PixelPortCardConfig*)){
        //std::cout << "[pos::PixelConfigFile::get()]\t\t\tWill return PixelPortCardConfig" << std::endl;
        assert(dir=="portcard");
        data = (T*) new PixelPortCardConfig(fullpath+"portcard_"+ext+".dat");
        return;
      }else if (typeid(data)==typeid(PixelPortcardMap*)){
        //std::cout << "[pos::PixelConfigFile::get()]\t\t\tWill return PixelPortcardMap" << std::endl;
        assert(dir=="portcardmap");
        data = (T*) new PixelPortcardMap(fullpath+"portcardmap.dat");
        return;
      }else if (typeid(data)==typeid(PixelDelay25Calib*)){
        //cout << "[pos::PixelConfigFile::get()]\t\t\tWill return PixelDelay25Calib" << std::endl;
        assert(dir=="portcard");
        data = (T*) new PixelDelay25Calib(fullpath+"delay25.dat");
        return;
      }else if (typeid(data)==typeid(PixelTTCciConfig*)){
        //cout << "[pos::PixelConfigFile::get()]\t\t\tWill return PixelTTCciConfig" << std::endl;
        assert(dir=="ttcciconfig");
        data = (T*) new PixelTTCciConfig(fullpath+"TTCciConfiguration.txt");
        return;
      }else if (typeid(data)==typeid(PixelLTCConfig*)){
        //cout << "[pos::PixelConfigFile::get()]\t\t\tWill return PixelLTCConfig" << std::endl;
        assert(dir=="ltcconfig");
        data = (T*) new PixelLTCConfig(fullpath+"LTCConfiguration.txt");
        return;
      }else if (typeid(data)==typeid(PixelGlobalDelay25*)){
        //std::cout << "[pos::PixelConfigFile::get()]\t\t\tWill return PixelGlobalDelay25" << std::endl;
        assert(dir=="globaldelay25");
        data = (T*) new PixelGlobalDelay25(fullpath+"globaldelay25.dat");
        return;
      }else{
        std::cout << "[pos::PixelConfigFile::get()]\t\t\tNo match" << std::endl;
        assert(0);
      }
      } catch (std::exception & e) {
        std::cout<<"[PixelConfigFile::get] Caught exception while constructing configuration object. Will rethrow."<<std::endl;
        throw;
      }
    }
template<class T >
static void pos::PixelConfigFile::get ( T *&  data,
std::string  path,
unsigned int  version 
) [inline, static]

Definition at line 650 of file PixelConfigFile.h.

References gather_cfg::cout, AlCaHLTBitMon_QueryRunRegistry::data, dir, createBeamHaloJobs::directory, prof2calltree::last, getHLTPrescaleColumns::path, and BeamSplash_cfg::version.

                                                                     {

      std::string mthn = "]\t[pos::PixelConfigFile::get()]\t\t\t\t    " ;

      unsigned int last=path.find_last_of("/");
      assert(last!=std::string::npos);
    
      std::string base=path.substr(0,last);
      std::string ext=path.substr(last+1);
    
      unsigned int slashpos=base.find_last_of("/");
      //if (slashpos==std::string::npos) {
      //std::cout << __LINE__ << mthn << "Asking for data of type:"          << typeid(data).name() << std::endl;
      //std::cout << __LINE__ << mthn << "On path:"                          << path                << std::endl;
      //std::cout << __LINE__ << mthn << "Recall that you need a trailing /"                        << std::endl;
      //::abort();
      //}
    
      std::string dir=base.substr(slashpos+1);
    
      //std::cout << __LINE__ << mthn << "Extracted dir :" << dir  <<std::endl;
      //std::cout << __LINE__ << mthn << "Extracted base:" << base <<std::endl;
      //std::cout << __LINE__ << mthn << "Extracted ext :" << ext  <<std::endl;
    
      std::ostringstream s1;
      s1 << version;
      std::string strversion=s1.str();

      static std::string directory;
      directory=getenv("PIXELCONFIGURATIONBASE");
    
      std::string fullpath=directory+"/"+dir+"/"+strversion+"/";
    
      //std::cout << __LINE__ << mthn << "Directory for configuration data:"<<fullpath<<std::endl;
    
      if (typeid(data)==typeid(PixelTrimBase*)){
        //std::cout << __LINE__ << mthn << "Will return PixelTrimBase" << std::endl;
        assert(dir=="trim");
        data = (T*) new PixelTrimAllPixels(fullpath+"ROC_Trims_module_"+ext+".dat");
        return;
      }else if (typeid(data)==typeid(PixelMaskBase*)){
        //std::cout << __LINE__ << mthn << "Will return PixelMaskBase" << std::endl;
        assert(dir=="mask");
        data = (T*) new PixelMaskAllPixels(fullpath+"ROC_Masks_module_"+ext+".dat");
        return;
      }else if (typeid(data)==typeid(PixelDACSettings*)){
        //std::cout << __LINE__ << mthn << "Will return PixelDACSettings" << std::endl;
        assert(dir=="dac");
        data = (T*) new PixelDACSettings(fullpath+"ROC_DAC_module_"+ext+".dat");
        return;
      }else if (typeid(data)==typeid(PixelTBMSettings*)){
        //std::cout << __LINE__ << mthn << "Will return PixelTBMSettings" << std::endl;
        assert(dir=="tbm");
        data = (T*) new PixelTBMSettings(fullpath+"TBM_module_"+ext+".dat");
        return;
      }else if (typeid(data)==typeid(PixelDetectorConfig*)){
        //std::cout << __LINE__ << mthn << "Will return PixelDACSettings" << std::endl;
        assert(dir=="detconfig");
        data = (T*) new PixelDetectorConfig(fullpath+"detectconfig.dat");
        return;
      }else if (typeid(data)==typeid(PixelLowVoltageMap*)){
        //std::cout << __LINE__ << mthn << "Will fetch1 PixelLowVoltageMap" << std::endl;
        assert(dir=="lowvoltagemap");
        data = (T*) new PixelLowVoltageMap(fullpath+"detectconfig.dat");
        //std::cout << __LINE__ << mthn << "Will return1 the PixelLowVoltageMap" << std::endl;
        return;
      }else if (typeid(data)==typeid(PixelMaxVsf*)){
        //std::cout << __LINE__ << mthn << "Will fetch1 PixelMaxVsf" << std::endl;
        assert(dir=="maxvsf");
        data = (T*) new PixelMaxVsf(fullpath+"maxvsf.dat");
        //std::cout << __LINE__ << mthn << "Will return1 the PixelMaxVsf" << std::endl;
        return;
      }else if (typeid(data)==typeid(PixelNameTranslation*)){
        //std::cout << __LINE__ << mthn << "Will return PixelNameTranslation" << std::endl;
        assert(dir=="nametranslation");
        data = (T*) new PixelNameTranslation(fullpath+"translation.dat");
        return;
      }else if (typeid(data)==typeid(PixelFEDCard*)){
        //std::cout << __LINE__ << mthn << "Will return PixelFEDCard" << std::endl;
        assert(dir=="fedcard");
        //std::cout << __LINE__ << mthn << "Will open:"<<fullpath+"params_fed_"+ext+".dat"<< std::endl;
        data = (T*) new PixelFEDCard(fullpath+"params_fed_"+ext+".dat");
        return;
      }else if (typeid(data)==typeid(PixelCalibBase*)) {
        //std::cout << __LINE__ << mthn << "Will return PixelCalibBase" << std::endl;
        assert(base=="calib");
        std::string calibfile=fullpath+"calib.dat";
        //std::cout << mthn << "Looking for file " << calibfile << std::endl;
        std::ifstream calibin(calibfile.c_str());
        if(calibin.good()){
          data = (T*) new PixelCalibConfiguration(calibfile);
        }else{
          calibfile=fullpath+"delay25.dat";
          //std::cout << __LINE__ << mthn << "Now looking for file " << calibfile << std::endl;
          std::ifstream delayin(calibfile.c_str());
          if(delayin.good()){
            data = (T*) new PixelDelay25Calib(calibfile);
          }else{
            calibfile=fullpath+"fedtestdac.dat";
            //std::cout << __LINE__ << mthn << "Now looking for file " << calibfile << std::endl;
            std::ifstream delayin(calibfile.c_str());
            if(delayin.good()){
              data = (T*) new PixelFEDTestDAC(calibfile);
            }else{
              std::cout << __LINE__ << mthn << "Can't find calibration file calib.dat or delay25.dat or fedtestdac.dat" << std::endl;
              data=0;
            }
          }
        }
        return;
      }else if (typeid(data)==typeid(PixelTKFECConfig*)){
        //std::cout << __LINE__ << mthn << "Will return PixelTKFECConfig" << std::endl;
        assert(dir=="tkfecconfig");
        data = (T*) new PixelTKFECConfig(fullpath+"tkfecconfig.dat");
        return;
      }else if (typeid(data)==typeid(PixelFECConfig*)){
        //std::cout << __LINE__ << mthn << "Will return PixelFECConfig" << std::endl;
        assert(dir=="fecconfig");
        data = (T*) new PixelFECConfig(fullpath+"fecconfig.dat");
        return;
      }else if (typeid(data)==typeid(PixelFEDConfig*)){
        //std::cout << __LINE__ << mthn << "Will return PixelFEDConfig" << std::endl;
        assert(dir=="fedconfig");
        data = (T*) new PixelFEDConfig(fullpath+"fedconfig.dat");
        return;
      }else if (typeid(data)==typeid(PixelPortCardConfig*)){
        //std::cout << __LINE__ << mthn << "Will return PixelPortCardConfig" << std::endl;
        assert(dir=="portcard");
        data = (T*) new PixelPortCardConfig(fullpath+"portcard_"+ext+".dat");
        return;
      }else if (typeid(data)==typeid(PixelPortcardMap*)){
        //std::cout << __LINE__ << mthn << "Will return PixelPortcardMap" << std::endl;
        assert(dir=="portcardmap");
        data = (T*) new PixelPortcardMap(fullpath+"portcardmap.dat");
        return;
      }else if (typeid(data)==typeid(PixelDelay25Calib*)){
        //cout << __LINE__ << mthn << "Will return PixelDelay25Calib" << std::endl;
        assert(dir=="portcard");
        data = (T*) new PixelDelay25Calib(fullpath+"delay25.dat");
        return;
      }else if (typeid(data)==typeid(PixelTTCciConfig*)){
        //cout << __LINE__ << mthn << "Will return PixelTTCciConfig" << std::endl;
        assert(dir=="ttcciconfig");
        data = (T*) new PixelTTCciConfig(fullpath+"TTCciConfiguration.txt");
        return;
      }else if (typeid(data)==typeid(PixelLTCConfig*)){
        //cout << __LINE__ << mthn << "Will return PixelLTCConfig" << std::endl;
        assert(dir=="ltcconfig");
        data = (T*) new PixelLTCConfig(fullpath+"LTCConfiguration.txt");
        return;
      }else if (typeid(data)==typeid(PixelGlobalDelay25*)){
        //std::cout << __LINE__ << mthn << "Will return PixelGlobalDelay25" << std::endl;
        assert(dir=="globaldelay25");
        data = (T*) new PixelGlobalDelay25(fullpath+"globaldelay25.dat");
        return;
      }else{
        std::cout << __LINE__ << mthn << "No class match" << std::endl;
        assert(0);
        data=0;
        return;
      }

    }
static PixelAliasList& pos::PixelConfigFile::getAlias ( ) [inline, static]

Definition at line 228 of file PixelConfigFile.h.

References createBeamHaloJobs::directory, lut2db_cfg::filename, first, forceAliasesReload(), getForceAliasesReload(), and pos::PixelAliasList::readfile().

Referenced by addAlias(), addVersionAlias(), getAliases(), getAliases_map(), getConfigAliases(), getVersion(), getVersionAliases(), and getVersionData().

                                     {

      static std::string directory;
      static int first=1;
    
      static PixelAliasList aliases;
    
      directory=getenv("PIXELCONFIGURATIONBASE");
      std::string filename=directory+"/aliases.txt";

      if (first) {
        first=0;
        aliases.readfile(filename);
        
        forceAliasesReload(false) ;
      } else {
        if( getForceAliasesReload() ) {
         aliases.readfile(filename);
         forceAliasesReload(false) ;
        }
      }
      
      return aliases;

    }
static std::vector<std::pair<std::string, unsigned int> > pos::PixelConfigFile::getAliases ( ) [inline, static]

Definition at line 63 of file PixelConfigFile.h.

References getAlias(), i, pos::PixelAliasList::key(), pos::PixelAliasList::nAliases(), pos::PixelAliasList::name(), and tmp.

                                                                    {
      PixelAliasList& aliases=getAlias();
      std::vector<std::pair<std::string, unsigned int> > tmp;
      for(unsigned int i=0;i<aliases.nAliases();i++){
        std::pair<std::string, unsigned int> apair(aliases.name(i),aliases.key(i));
        tmp.push_back(apair);  
      }
      return tmp;
    }
static std::map<std::string, unsigned int> pos::PixelConfigFile::getAliases_map ( ) [inline, static]

Definition at line 90 of file PixelConfigFile.h.

References getAlias(), i, pos::PixelAliasList::key(), pos::PixelAliasList::nAliases(), pos::PixelAliasList::name(), and tmp.

                                                           {
      PixelAliasList& aliases=getAlias();
      std::map<std::string, unsigned int> tmp;
      for(unsigned int i=0;i<aliases.nAliases();i++){
        tmp.insert(make_pair(aliases.name(i), aliases.key(i)));
      }
      return tmp;
    }
static PixelConfigList& pos::PixelConfigFile::getConfig ( ) [inline, static]

Definition at line 177 of file PixelConfigFile.h.

References cmsPerfCommons::configs, gather_cfg::cout, createBeamHaloJobs::directory, lut2db_cfg::filename, first, forceConfigReload(), pos::PixelConfigList::readfile(), pos::PixelConfigList::reload(), and stor::utils::sleep().

Referenced by addVersionAlias(), configList(), get(), getPath(), getVersions(), and makeKey().

                                       {

      static PixelConfigList configs;

      //FIXME 

      static int counter=0;

      if(counter!=0)
        {
          while(counter!=0)
            {
              std::cout << __LINE__ << "]\t[PixelConfigFile::getConfig()]\t\t\t\t    Waiting for other thread to complete reading"<<std::endl;
              ::sleep(1);
            }
          return configs;
        }
      
      counter++;

      static std::string directory;
      static int first=1;
    
      directory=getenv("PIXELCONFIGURATIONBASE");
      std::string filename=directory+"/configurations.txt";
/* Don't know who put this snippet of code here: this case is already contemplated in the 'else' of the 'if' statement below
      if(!first)
        {
          configs.reload(filename) 
        }
*/
      if (first) 
        {
          first=0;
          configs.readfile(filename);
          forceConfigReload(false) ;
        }
      else
        {
          //      if( getForceConfigReload() ) {
            configs.reload(filename);
            forceConfigReload(false) ;
            //    }
        }

      counter--;

      return configs;

    }
static std::vector<pathAliasPair> pos::PixelConfigFile::getConfigAliases ( std::string  path) [inline, static]

Definition at line 118 of file PixelConfigFile.h.

References getAlias(), and pos::PixelAliasList::getConfigAliases().

                                                                     {
     return getAlias().getConfigAliases(path) ;
    }
static bool& pos::PixelConfigFile::getForceAliasesReload ( ) [inline, static, private]

Definition at line 875 of file PixelConfigFile.h.

References forceAliasesReload().

Referenced by forceAliasesReload(), and getAlias().

                                        {
      static bool forceAliasesReload = false; 
      return forceAliasesReload;
    }
static bool& pos::PixelConfigFile::getForceConfigReload ( ) [inline, static, private]

Definition at line 879 of file PixelConfigFile.h.

References forceConfigReload().

Referenced by forceConfigReload().

                                       {
      static bool forceConfigReload = false; 
      return forceConfigReload;
    }
static std::string pos::PixelConfigFile::getPath ( std::string  path,
PixelConfigKey  key 
) [inline, static]

Definition at line 267 of file PixelConfigFile.h.

References gather_cfg::cout, dir, createBeamHaloJobs::directory, getConfig(), pos::PixelConfigKey::key(), prof2calltree::last, findQualityFiles::size, and BeamSplash_cfg::version.

                                                                {

      unsigned int theKey=key.key();
    
      assert(theKey<=getConfig().size());
    
      unsigned int last=path.find_last_of("/");
      assert(last!=std::string::npos);
    
      std::string base=path.substr(0,last);
      std::string ext=path.substr(last+1);
    
      unsigned int slashpos=base.find_last_of("/");
      if (slashpos==std::string::npos) {
        std::cout << "[pos::PixelConfigFile::getPath()]\t\t\tOn path:"                <<path               <<std::endl;
        std::cout << "[pos::PixelConfigFile::getPath()]\t\t\tRecall that you need a trailing /"            <<std::endl;
        ::abort();
      }
    
      std::string dir=base.substr(slashpos+1);
    
//      std::cout << "[pos::PixelConfigFile::get()]\t\t\tExtracted dir:" <<dir <<std::endl;
//      std::cout << "[pos::PixelConfigFile::get()]\t\t\tExtracted base:"<<base<<std::endl;
//      std::cout << "[pos::PixelConfigFile::get()]\t\t\tExtracted ext :"<<ext <<std::endl;
    
      unsigned int version;
      int err=getConfig()[theKey].find(dir,version);   
      // assert(err==0);
      if(0!=err) 
        {
          return "";
        }
    
      std::ostringstream s1;
      s1 << version;
      std::string strversion=s1.str();

      static std::string directory;
      directory=getenv("PIXELCONFIGURATIONBASE");
    
      std::string fullpath=directory+"/"+dir+"/"+strversion+"/";
    
      return fullpath;
    }
static unsigned int pos::PixelConfigFile::getVersion ( std::string  path,
std::string  alias 
) [inline, static]

Definition at line 106 of file PixelConfigFile.h.

References getAlias(), and pos::PixelAliasList::getVersion().

                                                                  {
      return getAlias().getVersion(path,alias);
    }
static std::vector<std::string> pos::PixelConfigFile::getVersionAliases ( std::string  path) [inline, static]

Definition at line 73 of file PixelConfigFile.h.

References getAlias(), and pos::PixelAliasList::getVersionAliases().

                                                                 {
      return getAlias().getVersionAliases(path);
    }
static bool pos::PixelConfigFile::getVersionAliases ( std::string  configAlias,
unsigned int &  key,
std::vector< std::pair< std::string, std::string > > &  versionAliases 
) [inline, static]

Definition at line 77 of file PixelConfigFile.h.

References getAlias(), pos::PixelConfigAlias::key(), pos::PixelAliasList::versionAliases(), and pos::PixelConfigAlias::versionAliases().

                                                                                           {
      PixelConfigAlias* alias=getAlias().versionAliases(configAlias);
      if (alias==0) {
        return false;
      }
      key=alias->key();
      versionAliases=alias->versionAliases();
      return true;
    }
static pos::pathVersionAliasMmap pos::PixelConfigFile::getVersionData ( ) [inline, static]

Definition at line 111 of file PixelConfigFile.h.

References getAlias(), and pos::PixelAliasList::getVersionData().

                                                   {  
      return getAlias().getVersionData();
    }
static pos::pathVersionAliasMmap pos::PixelConfigFile::getVersionData ( std::string  koc) [inline, static]

Definition at line 114 of file PixelConfigFile.h.

References getAlias(), and pos::PixelAliasList::getVersionData().

                                                                {  
      return getAlias().getVersionData(koc);
    }
static std::vector< std::pair< std::string, unsigned int> > pos::PixelConfigFile::getVersions ( pos::PixelConfigKey  key) [inline, static]

Definition at line 140 of file PixelConfigFile.h.

References cmsPerfCommons::configs, getConfig(), pos::PixelConfigKey::key(), and pos::PixelConfig::versions().

                                                                                            {

      static PixelConfigList& configs=getConfig();
      PixelConfig& theConfig=configs[key.key()];
      return theConfig.versions();
      
    }
static unsigned int pos::PixelConfigFile::makeKey ( std::vector< std::pair< std::string, unsigned int > >  versions) [inline, static]

Definition at line 159 of file PixelConfigFile.h.

References pos::PixelConfigList::add(), pos::PixelConfig::add(), HDQMDatabaseProducer::config, cmsPerfCommons::configs, first, getConfig(), i, edm::second(), and pos::PixelConfigList::writefile().

                                                                                      {

      PixelConfig config;

      for(unsigned int i=0;i<versions.size();i++){
        config.add(versions[i].first,versions[i].second);
      }

      PixelConfigList& configs=getConfig();

      unsigned int newkey=configs.add(config);

      configs.writefile();
    
      return newkey;

    }
static int pos::PixelConfigFile::makeNewVersion ( std::string  path,
std::string &  dir 
) [inline, static]

Definition at line 826 of file PixelConfigFile.h.

References gather_cfg::cout, createBeamHaloJobs::directory, getHLTPrescaleColumns::path, testRegression::stat, and BeamSplash_cfg::version.

Referenced by put().

                                                             {
      //std::cout << "[pos::PixelConfigFile::makeNewVersion()]\t\tInserting data on path:"<<path<<std::endl;
      struct stat stbuf;
      std::string directory=getenv("PIXELCONFIGURATIONBASE");
      directory+="/";
      directory+=path;
      if (stat(directory.c_str(),&stbuf)!=0){
        
        std::cout << "[pos::PixelConfigFile::makeNewVersion()]\t\tThe path:"<<path<<" does not exist."<<std::endl;
        std::cout << "[pos::PixelConfigFile::makeNewVersion()]\t\tFull path:"<<directory<<std::endl;
        return -1;
      }
      directory+="/";
      int version=-1;
      do{
        version++;
        std::ostringstream s1;
        s1 << version  ;
        std::string strversion=s1.str();
        dir=directory+strversion;
        //std::cout << "[pos::PixelConfigFile::makeNewVersion()]\t\tWill check for version:"<<dir<<std::endl;
      }while(stat(dir.c_str(),&stbuf)==0);
      //std::cout << "[pos::PixelConfigFile::makeNewVersion()]\t\tThe new version is:"<<version<<std::endl;
      mkdir(dir.c_str(),0777);
      return version;
    }
template<class T >
static int pos::PixelConfigFile::put ( const T object,
std::string  path 
) [inline, static]

Definition at line 855 of file PixelConfigFile.h.

References dir, makeNewVersion(), and BeamSplash_cfg::version.

                                                   {
      std::string dir;
      int version=makeNewVersion(path,dir);
      object->writeASCII(dir);
      return version;
    }
template<class T >
static int pos::PixelConfigFile::put ( std::vector< T * >  objects,
std::string  path 
) [inline, static]

Definition at line 863 of file PixelConfigFile.h.

References gather_cfg::cout, dir, i, makeNewVersion(), and BeamSplash_cfg::version.

                                                         {
      std::cout << "[pos::PixelConfigFile::put()]\t\t# of objects to write: "<< objects.size() << std::endl;
      std::string dir;
      int version=makeNewVersion(path,dir);
      for(unsigned int i=0;i<objects.size();i++){
        // std::cout << "[pos::PixelConfigFile::put()]\t\t\t\t\tWill write i="<<i<<" ptr: "<<objects[i]<<std::endl;
        objects[i]->writeASCII(dir);
      }
      return version;
    }