X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=MUON%2FMUONStatusMap.C;h=b7c99409e5893310a51c25befdac522cf05a93b4;hb=61cd7b1a89b9f935db7da4536c3bf69fe0cb225e;hp=3797db68eef0069e9a8aed374e669f11704b1175;hpb=e72d223ea9846334d8135c78a2e7c67b3a57a985;p=u%2Fmrichter%2FAliRoot.git diff --git a/MUON/MUONStatusMap.C b/MUON/MUONStatusMap.C index 3797db68eef..b7c99409e58 100644 --- a/MUON/MUONStatusMap.C +++ b/MUON/MUONStatusMap.C @@ -15,72 +15,104 @@ /* $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 "AliMpIntPair.h" +#include "AliMUONVStore.h" +#include "AliMpCDB.h" +#include "AliMpConstants.h" +#include "AliMpDDLStore.h" +#include "AliMpDetElement.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(it->Next()) ) ) + nBadPads = nPads = 0; + + Int_t detElemId; + Int_t manuId; + + while ( it.Next(detElemId,manuId) ) { - AliMpIntPair* p = static_cast(pair->First()); - Int_t detElemId = p->GetFirst(); - Int_t manuId = p->GetSecond(); - AliMUONVCalibParam* param = static_cast(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(); }