DBs and Byteswapping

From: Christian Holm Christensen (cholm@hehi03.nbi.dk)
Date: Mon Nov 05 2001 - 06:43:47 EST

  • Next message: Peter H. L. Christiansen: "Re: BRAT-2-1-23"

    Hi all, 
    
    As I wrote yesterday, I did an invesigation on the RCF Sparc stations 
    that has different endianness (which one I can't remember) than i386
    machines.  I compiled BRAT on rmine001 [1], and ran the following
    short script: 
    
      int hmm() {                                                                  
        BrMainDb* mainDb = BrMainDb::Instance();                                   
                                                                                   
        mainDb->SetHostName("rcas0005.rcf.bnl.gov");                               
        mainDb->SetUserName("query");                                              
                                                                                   
        if (!mainDb->Connect())                                                    
          return;                                                                  
        if (!mainDb->ConnectToCalib())                                             
          return;                                                                  
        if (!mainDb->ConnectToRun())                                               
          return;                                                                  
                                                                                   
        BrCalibrationManager* calibMan = BrCalibrationManager::Instance();         
        BrTileCalibration* tileCalib =                                             
          (BrTileCalibration*)calibMan->Register("BrTileCalibration",              
                                                 "MultTile");                      
                                                                                   
        tileCalib->Use("pedestal");                                                
        tileCalib->Use("pedestalWidth");                                           
        tileCalib->Use("adcGain");                                                 
        tileCalib->Use("adcGap");                                                  
        tileCalib->Use("rowMap");                                                  
        tileCalib->Use("ringMap");                                                 
        tileCalib->Use("conversionFunc");                                          
        // tileCalib->Use("correctionFunc");                                       
        tileCalib->Use("ringPosition");                                            
                                                                                   
        BrRunInfoManager* runMan = BrRunInfoManager::Instance();                   
        BrRunInfo* runInfo = runMan->Register(2535);                               
                                                                                   
                                                                                   
        calibMan->Init();                                                          
        runMan->Init();                                                            
        runMan->Update();                                                          
        calibMan->Update(runInfo->GetUnixStartTime()+1,-1);                        
                                                                                   
        tileCalib->Print("BDLPTRD");                                               
                                                                                   
        mainDb->Close();                                                           
                                                                                   
        return 0;                                                                  
      }                                                                            
    
    I also ran that same script from rcas0009, and the results from the
    two runs is attached to this message.  A quick diff on these two
    output listings quickly shows that they are indeed different.  
    
    Now, that said, it does not nessecarily imply a byteswapping problem,
    though it is likely.  Hence, I'd like for anyone with access to
    machines with a different chip type than i386 to try an run the above
    script (attached for you convenience) and compare the output to the
    two reference files.  If the output nontrivially differs from either,
    please reply to this message stating the machine specs (OS, Chip,
    ROOT, BRAT, Compiler, MySQL), and attach the output.  
    
    Run the test as: 
    
      bratmain -q -l -b hmm.C >& hmm.<machine name> 
      diff hmm.rcas  hmm.<machine name> 
      diff hmm.rmine hmm.<machine name> 
    
    What bothers me, is that not only the floating point numbers differ,
    but also the short integer numbers differ. 
    
    To be quite frank - I really hope someone else will take up this
    challenge as I have little time to do it myself.  I'll happely support
    anyone that volunteers for this task, ofcourse.  
    
    Yours, 
    
    Christian Holm Christensen -------------------------------------------
    Address: Sankt Hansgade 23, 1. th.           Phone:  (+45) 35 35 96 91 
             DK-2200 Copenhagen N                Cell:   (+45) 28 82 16 23
             Denmark                             Office: (+45) 353  25 305 
    Email:   cholm@nbi.dk                        Web:    www.nbi.dk/~cholm
    
    
    [1] I build BRAT against ROOT 3.00/06, since that's the only one that
        was already build - could someone with more experience in building
        ROOT on Solaris please build ROOT 3.01/02 and install it in
        /afs/rhic/opt/brahms/pro from a Solaris machine? Thanks. 
    
    
    






    This archive was generated by hypermail 2b30 : Mon Nov 05 2001 - 06:44:19 EST