Index: trunk/ppStats/src/ppStats.c
===================================================================
--- trunk/ppStats/src/ppStats.c	(revision 13993)
+++ trunk/ppStats/src/ppStats.c	(revision 14020)
@@ -51,12 +51,43 @@
         exit (status);
     }
+
+    // report on the file disposition
+    if (data->fileLevel) {
+	pmFPALevel level = pmFPAPHULevel(config->format);
+
+        const char *levelName = pmFPALevelToName(level); // Level for file
+        psMetadataAddStr(results, PS_LIST_HEAD, "FILE.LEVEL", 0, "File level", levelName);
+
+	char *classID = NULL;
+	switch (level) {
+	  case PM_FPA_LEVEL_FPA:
+	    assert (data->fpa != NULL);
+	    assert (data->fileView->chip == -1);
+	    classID = pmFPANameFromRule ("{FPA.NAME}", data->fpa, data->fileView);
+	    break;
+	  case PM_FPA_LEVEL_CHIP:
+	    assert (data->fpa != NULL);
+	    assert (data->fileView->chip != -1);
+	    assert (data->fileView->cell == -1);
+	    classID = pmFPANameFromRule ("{CHIP.NAME}", data->fpa, data->fileView);
+	    break;
+	  case PM_FPA_LEVEL_CELL:
+	    assert (data->fpa != NULL);
+	    assert (data->fileView->chip != -1);
+	    assert (data->fileView->cell != -1);
+	    classID = pmFPANameFromRule ("{CELL.NAME}", data->fpa, data->fileView);
+	    break;
+	  default:
+	    psErrorStackPrint(stderr, "Error in file level.\n");
+	    exit (PS_EXIT_CONFIG_ERROR);
+	}
+        psMetadataAddStr(results, PS_LIST_HEAD, "CLASS.ID", 0, "name for element at file level", classID);
+	psFree (classID);
+    }
+
+    // did we actually request any data?
     if (psListLength(results->list) == 0) {
         psErrorStackPrint(stderr, "No output.\n");
         exit (status);
-    }
-
-    if (data->fileLevel) {
-        const char *level = pmFPALevelToName(pmFPAPHULevel(config->format)); // Level for file
-        psMetadataAddStr(results, PS_LIST_HEAD, "FILE.LEVEL", 0, "File level", level);
     }
 
