scripts/TestHWMap.C

Go to the documentation of this file.
00001 //____________________________________________________________________
00002 //
00003 // $id$
00004 //
00005 // Check integrety of Hardware2Detector and Detector2Hardware
00006 //
00010 //____________________________________________________________________
00015 Char_t* 
00016 Addr2Str(UInt_t ddl, UInt_t hwaddr)
00017 {
00018   static TString s;
00019   UInt_t board = (hwaddr >> 7) & 0x1F;
00020   UInt_t chip  = (hwaddr >> 4) & 0x7;
00021   UInt_t chan  = hwaddr & 0xF;
00022   s = Form("(0x%05X,0x%02X,0x%1X,0x%1X)", ddl, board, chip, chan);
00023   return s.Data();
00024 }
00025 
00026 //____________________________________________________________________
00033 Char_t* 
00034 Det2Str(UShort_t det, Char_t ring, UShort_t sec, UShort_t str)
00035 {
00036   static TString s;
00037   s = Form("FMD%d%c[%2d,%3d]", det, ring, sec, str);
00038   return s.Data();
00039 }
00040 
00041 //____________________________________________________________________
00054 void 
00055 PrintTrans(UShort_t det, Char_t ring, UShort_t sec, UShort_t str, 
00056            UInt_t ddl, UInt_t hwaddr,
00057            UShort_t odet, Char_t oring, UShort_t osec, UShort_t ostr)
00058 {
00059   static TString s1, s2, s3;
00060   s1 = Det2Str(det, ring, sec, str);
00061   s2 = Addr2Str(ddl,hwaddr);
00062   s3 = Det2Str(odet, oring, osec, ostr);
00063   Info("TestHWMap","%s -> %s -> %s", s1.Data(), s2.Data(), s3.Data());
00064 }
00065 
00066 //____________________________________________________________________
00077 void
00078 CheckTrans(UShort_t det, Char_t ring, UShort_t sec, UShort_t str, 
00079            UShort_t odet, Char_t oring, UShort_t osec, UShort_t ostr)
00080 {
00081   if (det != odet) 
00082     Waring("TestHWMap", "Detector # differ %d != %d", det, odet);
00083   if (ring != oring) 
00084     Waring("TestHWMap", "Ring Id differ %c != %c", ring, oring);  
00085   if (sec != osec) 
00086     Warning("TestHWMap", "Sector # differ %d != %d", sec, osec);
00087   if ((str / 128) * 128 != ostr) 
00088     Warning("TestHWMap", "Strip # differ %d != %d", (str / 128) * 128, ostr);
00089 }
00090 
00091 //____________________________________________________________________
00094 void
00095 TestHWMap()
00096 {
00097   AliFMDParameters* param = AliFMDParameters::Instance();
00098   param->Init();
00099   AliLog::SetModuleDebugLevel("FMD", 1);
00100   
00101   UInt_t oldddl = 0, oldhwaddr = 0xFFFFFFFF;
00102   for (UShort_t det = 1; det <= 3; det++) {
00103     for (UShort_t rng = 0; rng < 2; rng++) {
00104       Char_t ring = (rng == 0 ? 'I' : 'O');
00105       Int_t  nsec = (ring == 'I' ?  20 :  40);
00106       Int_t  nstr = (ring == 'I' ? 512 : 256);
00107       for (UShort_t sec = 0; sec < nsec; sec++) {
00108         for (UShort_t str = 0; str < nstr; str ++) {
00109           UInt_t ddl, hwaddr;
00110           if (!param->Detector2Hardware(det, ring, sec, str, ddl, hwaddr)) {
00111             Warning("TestHWMap", "detector to hardware failed on %s", 
00112                     Det2Str(det, ring, sec, str));
00113             continue;
00114           }
00115           UShort_t odet, osec, ostr;
00116           Char_t   oring;
00117           if (!param->Hardware2Detector(ddl, hwaddr, odet, oring, osec, ostr)){
00118             Warning("TestHWMap", "hardware to detector failed on %s", 
00119                     Addr2Str(ddl, hwaddr));
00120             continue;
00121           }
00122           if (oldddl != ddl || oldhwaddr != hwaddr) {
00123             PrintTrans(det,ring,sec,str,ddl,hwaddr,odet,oring,osec,ostr);
00124             oldddl    = ddl;
00125             oldhwaddr = hwaddr;
00126           }
00127           CheckTrans(det,ring,sec,str,odet,oring,osec,ostr);
00128         }// Loop over strips
00129       } // Loop over sectors
00130     } // Loop over rings
00131   } // Loop over detectors
00132 }
00133 
00134   
00135 //____________________________________________________________________
00136 //
00137 // EOF
00138 //
00139     
00140         
00141 
00142           

Generated on Fri Mar 24 17:11:21 2006 for ALICE FMD Off-line by  doxygen 1.4.6