Added test of AliFMDAltroMapping
authorcholm <cholm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 17 Mar 2006 22:45:08 +0000 (22:45 +0000)
committercholm <cholm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 17 Mar 2006 22:45:08 +0000 (22:45 +0000)
FMD/scripts/TestAltroMapping.C [new file with mode: 0644]

diff --git a/FMD/scripts/TestAltroMapping.C b/FMD/scripts/TestAltroMapping.C
new file mode 100644 (file)
index 0000000..87ef657
--- /dev/null
@@ -0,0 +1,100 @@
+//____________________________________________________________________
+//
+// $id$
+//
+// Check integrety of Hardware2Detector and Detector2Hardware
+//
+
+//____________________________________________________________________
+Char_t* 
+Addr2Str(UInt_t ddl, UInt_t hwaddr)
+{
+  static TString s;
+  UInt_t board = (hwaddr >> 7) & 0x1F;
+  UInt_t chip  = (hwaddr >> 4) & 0x7;
+  UInt_t chan  = hwaddr & 0xF;
+  s = Form("(0x%05X,0x%02X,0x%1X,0x%1X)", ddl, board, chip, chan);
+  return s.Data();
+}
+
+//____________________________________________________________________
+Char_t* 
+Det2Str(UShort_t det, Char_t ring, UShort_t sec, UShort_t str)
+{
+  static TString s;
+  s = Form("FMD%d%c[%2d,%3d]", det, ring, sec, str);
+  return s.Data();
+}
+
+//____________________________________________________________________
+void 
+PrintTrans(UShort_t det, Char_t ring, UShort_t sec, UShort_t str, 
+          UInt_t ddl, UInt_t hwaddr,
+          UShort_t odet, Char_t oring, UShort_t osec, UShort_t ostr)
+{
+  static TString s1, s2, s3;
+  s1 = Det2Str(det, ring, sec, str);
+  s2 = Addr2Str(ddl,hwaddr);
+  s3 = Det2Str(odet, oring, osec, ostr);
+  Info("TestHWMap","%s -> %s -> %s", s1.Data(), s2.Data(), s3.Data());
+}
+
+//____________________________________________________________________
+void
+CheckTrans(UShort_t det, Char_t ring, UShort_t sec, UShort_t str, 
+          UShort_t odet, Char_t oring, UShort_t osec, UShort_t ostr)
+{
+  if (det != odet) 
+    Waring("TestHWMap", "Detector # differ %d != %d", det, odet);
+  if (ring != oring) 
+    Waring("TestHWMap", "Ring Id differ %c != %c", ring, oring);  
+  if (sec != osec) 
+    Warning("TestHWMap", "Sector # differ %d != %d", sec, osec);
+  if (str != ostr) 
+    Warning("TestHWMap", "Strip # differ %d != %d", str, ostr);
+}
+
+//____________________________________________________________________
+void
+TestAltroMapping()
+{
+  AliFMDParameters* param = AliFMDParameters::Instance();
+  AliFMDAltroMapping m;
+  
+  for (UShort_t det = 2; det <= 2; det++) {
+    for (UShort_t rng = 0; rng < 2; rng++) {
+      Char_t ring = (rng == 0 ? 'I' : 'O');
+      Int_t  nsec = (ring == 'I' ?  20 :  40);
+      Int_t  nstr = (ring == 'I' ? 512 : 256);
+      for (UShort_t sec = 0; sec < nsec; sec++) {
+       for (UShort_t str = 0; str < nstr; str += 128) {
+         UInt_t ddl, hwaddr;
+         if (!m.Detector2Hardware(det, ring, sec, str, ddl, hwaddr)) {
+           Warning("TestHWMap", "detector to hardware failed on %s", 
+                   Det2Str(det, ring, sec, str));
+           continue;
+         }
+         UShort_t odet, osec, ostr;
+         Char_t   oring;
+         if (!m.Hardware2Detector(ddl, hwaddr, odet, oring, osec, ostr)){
+           Warning("TestHWMap", "hardware to detector failed on %s", 
+                   Addr2Str(ddl, hwaddr));
+           continue;
+         }
+         PrintTrans(det,ring,sec,str,ddl,hwaddr,odet,oring,osec,ostr);
+         CheckTrans(det,ring,sec,str,odet,oring,osec,ostr);
+       }// Loop over strips
+      } // Loop over sectors
+    } // Loop over rings
+  } // Loop over detectors
+}
+
+  
+//____________________________________________________________________
+//
+// EOF
+//
+    
+       
+
+