]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/MUONStatusMap.C
QA ref defaut storage setter in sim and rec
[u/mrichter/AliRoot.git] / MUON / MUONStatusMap.C
index 3797db68eef0069e9a8aed374e669f11704b1175..41b7e6f5c92a56655af6d7f055f39279602e37cc 100644 (file)
 
 /* $Id$ */
 
-/// Macro to check/test pad status and pad status map makers
-// Laurent Aphecetche
+/// \ingroup macros
+/// \file MUONStatusMap.C
+/// \brief Macro to check/test pad status and pad status map makers
+///
+/// \author Laurent Aphecetche
 
 #if !defined(__CINT__) || defined(__MAKECINT__)
 #include "AliCDBManager.h"
 #include "AliMUONCalibrationData.h"
-#include "AliMUONObjectPair.h"
 #include "AliMUONPadStatusMaker.h"
 #include "AliMUONPadStatusMapMaker.h"
-#include "AliMUONV2DStore.h"
 #include "AliMUONVCalibParam.h"
-#include "AliMUONVDataIterator.h"
+#include "AliMUONVStore.h"
+#include "AliMpCDB.h"
+#include "AliMpConstants.h"
+#include "AliMpDDLStore.h"
+#include "AliMpDetElement.h"
 #include "AliMpIntPair.h"
+#include "AliMpManuIterator.h"
 #include "Riostream.h"
 #endif
 
-void findBad(const AliMUONV2DStore& status)
+void FindBad(AliMUONPadStatusMaker& statusMaker, Int_t mask, Int_t& nBadPads, Int_t& nPads)
 {
-  AliMUONVDataIterator* it = status.Iterator();
-  AliMUONObjectPair* pair;
+  AliMpManuIterator it;
   
-  while ( ( pair = static_cast<AliMUONObjectPair*>(it->Next()) ) )
+  nBadPads = nPads = 0;
+  
+  Int_t detElemId;
+  Int_t manuId;
+  
+  while ( it.Next(detElemId,manuId) )
   {
-    AliMpIntPair* p = static_cast<AliMpIntPair*>(pair->First());
-    Int_t detElemId = p->GetFirst();
-    Int_t manuId = p->GetSecond();
-    AliMUONVCalibParam* param = static_cast<AliMUONVCalibParam*>(pair->Second());
     Bool_t bad(kFALSE);
-    for ( Int_t i = 0; i < param->Size(); ++i ) 
+    
+    AliMpDetElement* de = AliMpDDLStore::Instance()->GetDetElement(detElemId);
+    
+    Int_t nb(0);
+    Int_t n(0);
+
+    for ( Int_t i = 0; i < AliMpConstants::ManuNofChannels(); ++i )
     {
-      if ( param->ValueAsInt(0) ) bad = kTRUE;
+      if ( de->IsConnectedChannel(manuId,i) )
+      {
+        ++n;
+        ++nPads;
+        Int_t status = statusMaker.PadStatus(detElemId,manuId,i);
+        if ( ( status & mask) || (!mask && status) )
+        {
+          bad = kTRUE;
+          ++nBadPads;
+          ++nb;
+        }
+      }
     }
+    
     if (bad)
     {
-      cout << Form("DE %4d ManuId %4d",detElemId,manuId) << endl;
+      cout << Form("DE %4d ManuId %4d %2d bad pads over %2d pads",
+                   detElemId,manuId,nb,n) << endl;
     }
-    if (it->IsOwner()) delete pair;
   }
 }
 
-AliMUONV2DStore* MUONStatusMap(Int_t runNumber=0, Bool_t statusOnly=kFALSE, Int_t mask=0)
-{
-  AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT/SHUTTLE/TestShuttle/TestCDB");
+AliMUONVStore* MUONStatusMap(const TString& cdbStorage = "local://$ALICE_ROOT/OCDB",
+                             Int_t runNumber=0, Bool_t statusOnly=kFALSE, 
+                             Int_t mask=0x8080)
+{  
+  AliCDBManager::Instance()->SetDefaultStorage(cdbStorage.Data());
+  AliCDBManager::Instance()->SetRun(runNumber);
+
+  AliMpCDB::LoadDDLStore();
   
   AliMUONCalibrationData cd(runNumber);
   
   AliMUONPadStatusMaker statusMaker(cd);
   
 //  statusMaker.SetPedMeanLimits(50,200);
-  statusMaker.SetPedSigmaLimits(0.5,2);
+//  statusMaker.SetPedSigmaLimits(0.5,2);
   
-  AliMUONV2DStore* status = statusMaker.MakeStatus();
-  if ( status )
-  {
-    findBad(*status);
-  }
-  else
+  Int_t nbad;
+  Int_t ntotal;
+  
+  FindBad(statusMaker,mask,nbad,ntotal);
+
+  if (ntotal<=0) 
   {
-    cout << "ERROR. Could not get status from CDB" << endl;
-    return 0;
-  }
+    cout << "Error : got no pad at all ?!" << endl;
+    return 0x0;
+  }  
+  
+  cout << Form("Nbad = %6d over %6d pads (%7.2f %%)",
+               nbad,ntotal,100.0*nbad/ntotal) << endl;
   
-  if ( statusOnly ) return status;
+  if ( statusOnly ) return statusMaker.StatusStore();
   
-  AliMUONPadStatusMapMaker statusMapMaker;
+  const Bool_t deferredInitialization = kFALSE;
   
-  return statusMapMaker.MakePadStatusMap(*status,mask);
+  AliMUONPadStatusMapMaker statusMapMaker(cd,mask,deferredInitialization);
+    
+  return statusMapMaker.StatusMap();
 }