Index: fact/Evidence/Edd/Edd.cc
===================================================================
--- fact/Evidence/Edd/Edd.cc	(revision 10112)
+++ fact/Evidence/Edd/Edd.cc	(revision 10118)
@@ -23,4 +23,5 @@
 class EddDim *Handler;
 QString DRSBoard = "drsdaq";
+std::string PixelMapText;
 
 // History chooser function (opens plot for numeric data, TextHist for all other)
@@ -1016,5 +1017,5 @@
 
 // Constructor
-EventScope::EventScope(QWidget *P): EddBasePlot(P), PixelMap("../../config/PixelMap.txt", false) {
+EventScope::EventScope(QWidget *P): EddBasePlot(P), PixelMap(PixelMapText, false) {
 
   Name = DRSBoard+"/EventData";
@@ -1064,5 +1065,5 @@
   struct ItemDetails N;
   
-  N.Signal = NewCurve(QString::number(Board)+","+QString::number(Chip)+","+ QString::number(Channel)+ " (" + DRS_to_Pixel(Board, Chip, Channel).c_str() + ")");
+  N.Signal = NewCurve(QString::number(Board)+","+QString::number(Chip)+","+ QString::number(Channel)+ " (" + ToPixel(0, Board, Chip, Channel) + ")");
   N.Board = Board;
   N.Chip = Chip;
@@ -1090,5 +1091,5 @@
   ClearCurve(0);
 
-  List.first().Signal->setTitle(QString::number(Board)+","+QString::number(Chip)+","+ QString::number(Channel) + " (" + DRS_to_Pixel(Board, Chip, Channel).c_str() + ")");
+  List.first().Signal->setTitle(QString::number(Board)+","+QString::number(Chip)+","+ QString::number(Channel) + " (" + ToPixel(0, Board, Chip, Channel) + ")");
   List.first().Board = Board;
   List.first().Chip = Chip;
@@ -1269,5 +1270,11 @@
 }
 
-
+// Translate FPA ID to Pixel ID (use '-' instead of PM_ERROR_CODE)
+QString EventScope::ToPixel(unsigned int Crate, unsigned int Board, unsigned int Patch, unsigned int Pixel) {
+  
+  if (FPA_to_Pixel(Crate, Board, Patch, Pixel) == PM_ERROR_CODE) return "-";
+  else return QString::number(FPA_to_Pixel(Crate, Board, Patch, Pixel));
+}
+  
 //------------------------------------------------------------------
 //**************************** Tab pages ***************************
@@ -1491,7 +1498,9 @@
 
   // Pixel ID
-  PixelID = new QLineEdit;
+  PixelID = new QSpinBox;
   PixelID->setMaximumWidth(60);
-  connect(PixelID, SIGNAL(returnPressed()), SLOT(TranslatePixelID()));
+  PixelID->setRange(-1, 9999);
+  PixelID->setSpecialValueText("n/a");
+  connect(PixelID, SIGNAL(valueChanged(int)), SLOT(TranslatePixelID(int)));
   PixelID->setToolTip("Pixel identification");
   
@@ -1560,4 +1569,7 @@
   StartStop(false);
   connect(Scope, SIGNAL(PixelData(QVector<double>)), SLOT(SetPixelData(QVector<double>)));
+
+  // Call to get initial pixel ID correct
+  UpdateScope(0);
 }
 
@@ -1568,13 +1580,16 @@
 
 // Translate pixel ID to board, chip, channel
-void TP_DAQ::TranslatePixelID() {
-  
-  if (Scope->Pixel_to_DRSboard(PixelID->text().toStdString()) == 999999999) {
-	QMessageBox::warning(this, "Edd Message","Pixel ID unknown.",QMessageBox::Ok);
-  }
+void TP_DAQ::TranslatePixelID(int ID) {
+
+  // setValue() below will call UpdateScope() through signal, therefore need to store numbers here
+  unsigned int BoardNo = Scope->Pixel_to_FPAboard(ID);
+  unsigned int PatchNo = Scope->Pixel_to_FPApatch(ID);
+  unsigned int PixelNo = Scope->Pixel_to_FPApixel(ID);
+  
+  if (BoardNo == Scope->PM_ERROR_CODE) PixelID->setValue(-1);
   else {
-    Board->setValue(Scope->Pixel_to_DRSboard(PixelID->text().toStdString()));
-    Chip->setValue(Scope->Pixel_to_DRSchip(PixelID->text().toStdString()));
-    Channel->setValue(Scope->Pixel_to_DRSchannel(PixelID->text().toStdString()));
+    Board->setValue(BoardNo);
+    Chip->setValue(PatchNo);
+    Channel->setValue(PixelNo);
   }
 }
@@ -1599,5 +1614,7 @@
 
   // Update pixel ID
-  PixelID->setText(Scope->DRS_to_Pixel(Board->value(), Chip->value(), Channel->value()).c_str());
+  PixelID->setValue(Scope->FPA_to_Pixel(0, Board->value(), Chip->value(), Channel->value()));
+  if (PixelID->value() == (int) Scope->PM_ERROR_CODE) PixelID->setValue(-1);
+  
   // Update first trace
   Scope->UpdateFirst(Board->value(), Chip->value(), Channel->value());
@@ -1885,4 +1902,9 @@
   if (argc > 1) DRSBoard = "FADctrl";
 
+  // Make RPC to get pixelmap
+  DimRpcInfo RPC((char *) "ConfigRequest", (char *) "");
+  RPC.setData((char *) "Misc PixelMap");
+  PixelMapText = std::string(RPC.getString(), RPC.getSize());
+
   QApplication app(argc, argv); 
   GUI MainWindow;
Index: fact/Evidence/Edd/Edd.h
===================================================================
--- fact/Evidence/Edd/Edd.h	(revision 10112)
+++ fact/Evidence/Edd/Edd.h	(revision 10118)
@@ -290,4 +290,5 @@
 	void AddTrace(int, int, int);
 	void SetActive(bool);
+	QString ToPixel(unsigned int, unsigned int, unsigned int, unsigned int);
 
   private slots:
@@ -339,6 +340,5 @@
     QPlainTextEdit *RunHeaderDisplay, *EventHeaderDisplay;
 
- 	QSpinBox *Channel, *Chip, *Board;
- 	QLineEdit *PixelID;
+ 	QSpinBox *Channel, *Chip, *Board, *PixelID;
  	QFormLayout *FormLayout;
 	QWidget *Display;
@@ -347,5 +347,5 @@
 
   private slots:
-	void TranslatePixelID();
+	void TranslatePixelID(int);
 	void UpdateScope(int);
 	void KeepCurrent();
