pit_configuration.h

Go to the documentation of this file.
00001 #ifndef  PIT_CONFIGURATION_H
00002 #define  PIT_CONFIGURATION_H
00003 
00004 #include "pit_def.h"
00005 #include <log4cpp/BasicConfigurator.hh>
00006 #include <log4cpp/Category.hh>
00007 
00008                 // maximun number of characters in a line
00009 const int MAX_CHARACTERS_LINE=256;
00010 const char COMMENT_CHAR='#';
00011 
00012 struct t_pit_coordinate 
00013 {
00014 unsigned int optinNumber;
00015   unsigned int linkNumber;
00016 };
00017 struct t_spd_coordinate 
00018 {
00019 t_sideCoord  side; 
00020 unsigned int sector;
00021 unsigned int half_stave;
00022 };
00023 
00024 
00025 class pit_configuration { 
00026 
00027 
00028 
00030   t_pit_coordinate pit_coordinate[NUMBER_SIDES][NUMBER_SECTORS][NUMBER_HALF_STAVES_SECTOR];
00031 
00033   t_spd_coordinate spd_coordinate[NUMBER_OPTIN][NUMBER_OPTICAL_LINKS];
00034   
00035   bool requiredChannels[NUMBER_OPTIN][NUMBER_OPTICAL_LINKS][NUMBER_FO_CHANNELS];
00036 
00037   log4cpp::Category *logPitConfiguration;      // log instance
00038   
00040   pit_configuration();
00041 
00043   void setDefaultCoordinates(void);
00045 
00046   void setDefaultRequiredChannels(void);
00047   
00049   void setRequired(unsigned int board,unsigned int link,unsigned int foChannel, bool value);
00050   
00052 
00053   void setRequired(unsigned int board,unsigned int link,const std::string &foChannelsValues);
00054   
00056   void setCoordinate( unsigned int optinBoard, unsigned int linkChannel, unsigned int sector, t_sideCoord side, unsigned int halfStave);
00057   
00059 
00062   bool parseCoordinateLine(const std::string &line);
00064 
00065   bool parseRequiredChannelLine(const std::string &line);
00066   
00067   
00068  public:
00069 
00071   static pit_configuration& getInstance();
00072 
00073   
00077   void openCoordinateTableFile(const char *filename);
00079 
00084   void openRequiredChannelsFile(const char *filename);
00085 
00089   t_sideCoord getSide (unsigned int optinNumber, unsigned int linkNumber) const { return  spd_coordinate[optinNumber][linkNumber].side;}
00090   
00094   unsigned int getSector (unsigned int optinNumber, unsigned int linkNumber) const { return  spd_coordinate[optinNumber][linkNumber].sector;};
00095   
00099   unsigned int getHalfStave (unsigned int optinNumber, unsigned int linkNumber) const { return  spd_coordinate[optinNumber][linkNumber].half_stave;} 
00100 
00101 
00106   unsigned int getBoardNumber (t_sideCoord side , unsigned int sector, unsigned int half_stave) const ;
00108   unsigned int getBoardNumber (char side , unsigned int sector, unsigned int half_stave) const;
00113   unsigned int getLinkNumber (t_sideCoord side , unsigned int sector, unsigned int half_stave) const ;
00115   unsigned int getLinkNumber (char side , unsigned int sector, unsigned int half_stave)const;
00116   
00118   bool isLinkRequired(unsigned int optinNumber, unsigned int linkNumber)const;
00120   bool isLinkRequired(t_sideCoord side, unsigned int sector, unsigned int half_stave)const;
00122   bool getFastorRequired(unsigned int board, unsigned int link, unsigned int foChannel)const ;
00124   std::string getFastorRequired(unsigned int board, unsigned int link)const;
00125   
00126   
00127   bool getLinkRequired(unsigned int board, unsigned int link  )const;
00129   void printRequiredChannelList()const;
00131   void printPitCoordinateTable()const;
00133   void printSpdCoordinateTable()const;
00134   
00135   void dumpCoordinateTableToFile(const char *filename)const;
00136   void dumpRequiredLinksToFile(const char *filename)const;
00137 
00138 };
00139 
00140 
00141 
00142 
00143 #endif

Generated on Sat Mar 29 22:55:54 2008 for pixelTrigger by  doxygen 1.5.0