X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=MUON%2FAliMUONDigitMaker.cxx;h=159b99bfd7daa420f43d0f0d1a49c96c7e042402;hb=71432c59fedde8b725411f170c9d5c7654e193b9;hp=4abf26df34a3322f2ea4c237cc8ded0986b32d56;hpb=b6f591ae0c2eb98d16b3479fbc54867ff208b2a1;p=u%2Fmrichter%2FAliRoot.git diff --git a/MUON/AliMUONDigitMaker.cxx b/MUON/AliMUONDigitMaker.cxx index 4abf26df34a..159b99bfd7d 100644 --- a/MUON/AliMUONDigitMaker.cxx +++ b/MUON/AliMUONDigitMaker.cxx @@ -55,8 +55,8 @@ #include "AliMUONRawStreamTrackerHP.h" #include "AliMUONRawStreamTriggerHP.h" #include "AliMUONRegHeader.h" -#include "AliMUONTriggerCircuit.h" #include "AliMUONVTriggerStore.h" +#include "AliMpCDB.h" #include "AliMpDetElement.h" #include "AliMpTriggerCrate.h" #include "AliMpLocalBoard.h" @@ -84,8 +84,7 @@ fRawStreamTracker(new AliMUONRawStreamTrackerHP), fRawStreamTrigger(new AliMUONRawStreamTriggerHP), fDigitStore(0x0), fTriggerStore(0x0), -fLogger(new AliMUONLogger(10000)) -{ +fLogger(new AliMUONLogger(10000)){ /// ctor if ( !a || !b ) AliFatal("no longer supported"); @@ -105,6 +104,10 @@ fLogger(new AliMUONLogger(10000)) SetMakeTriggerDigits(); + // Load mapping + if ( ! AliMpCDB::LoadDDLStore() ) { + AliFatal("Could not access mapping from OCDB !"); + } } //__________________________________________________________________________ @@ -135,6 +138,10 @@ TObject(), SetMakeTriggerDigits(); + // Load mapping + if ( ! AliMpCDB::LoadDDLStore() ) { + AliFatal("Could not access mapping from OCDB !"); + } } //__________________________________________________________________________ @@ -219,7 +226,7 @@ AliMUONDigitMaker::ReadTrackerDDL(AliRawReader* rawReader) AliDebug(1,""); - AliCodeTimerAuto(""); + AliCodeTimerAuto("",0); // elex info Int_t buspatchId; @@ -239,7 +246,7 @@ AliMUONDigitMaker::ReadTrackerDDL(AliRawReader* rawReader) if (!de) { - fLogger->Log(Form("DE %04d does not exist !")); + fLogger->Log(Form("DE %04d does not exist !", detElemId)); continue; } @@ -308,12 +315,10 @@ AliMUONDigitMaker::ReadTriggerDDL(AliRawReader* rawReader) Int_t loCircuit; fRawStreamTrigger->SetReader(rawReader); - AliMUONRawStreamTriggerHP* rawStreamTrigger = - dynamic_cast(fRawStreamTrigger); while (fRawStreamTrigger->NextDDL()) { - darcHeader = rawStreamTrigger->GetHeaders(); + darcHeader = fRawStreamTrigger->GetHeaders(); // fill global trigger information if (fTriggerStore) @@ -322,11 +327,12 @@ AliMUONDigitMaker::ReadTriggerDDL(AliRawReader* rawReader) { AliMUONGlobalTrigger globalTrigger; globalTrigger.SetFromGlobalResponse(darcHeader->GetGlobalOutput()); + globalTrigger.SetFromGlobalInput(darcHeader->GetGlobalHeader()->fInput); fTriggerStore->SetGlobal(globalTrigger); } } - Int_t nReg = rawStreamTrigger->GetRegionalHeaderCount(); + Int_t nReg = fRawStreamTrigger->GetRegionalHeaderCount(); for(Int_t iReg = 0; iReg < nReg ;iReg++) { //reg loop @@ -336,11 +342,12 @@ AliMUONDigitMaker::ReadTriggerDDL(AliRawReader* rawReader) AliMpTriggerCrate* crate = AliMpDDLStore::Instance()-> GetTriggerCrate(fRawStreamTrigger->GetDDL(), iReg); - if (!crate) + if (!crate) { fLogger->Log(Form("Missing crate number %d in DDL %d\n", iReg, fRawStreamTrigger->GetDDL())); - + continue; + } - regHeader = rawStreamTrigger->GetRegionalHeader(iReg); + regHeader = fRawStreamTrigger->GetRegionalHeader(iReg); Int_t nLocal = regHeader->GetLocalStructCount(); for(Int_t iLocal = 0; iLocal < nLocal; iLocal++) @@ -365,22 +372,7 @@ AliMUONDigitMaker::ReadTriggerDDL(AliRawReader* rawReader) { // fill local trigger AliMUONLocalTrigger localTrigger; - localTrigger.SetLoCircuit(loCircuit); - localTrigger.SetLoStripX((Int_t)localStruct->GetXPos()); - localTrigger.SetLoStripY((Int_t)localStruct->GetYPos()); - localTrigger.SetLoDev((Int_t)localStruct->GetXDev()); - localTrigger.SetLoSdev((Int_t)localStruct->GetSXDev()); - localTrigger.SetLoTrigY((Int_t)localStruct->GetTrigY()); - localTrigger.SetLoLpt(localStruct->GetLpt()); - localTrigger.SetLoHpt(localStruct->GetHpt()); - localTrigger.SetX1Pattern(localStruct->GetX1()); - localTrigger.SetX2Pattern(localStruct->GetX2()); - localTrigger.SetX3Pattern(localStruct->GetX3()); - localTrigger.SetX4Pattern(localStruct->GetX4()); - localTrigger.SetY1Pattern(localStruct->GetY1()); - localTrigger.SetY2Pattern(localStruct->GetY2()); - localTrigger.SetY3Pattern(localStruct->GetY3()); - localTrigger.SetY4Pattern(localStruct->GetY4()); + localTrigger.SetLocalStruct(loCircuit, *localStruct); fTriggerStore->Add(localTrigger); } @@ -404,12 +396,12 @@ AliMUONDigitMaker::ReadTriggerDDL(AliRawReader* rawReader) //____________________________________________________________________ Int_t AliMUONDigitMaker::TriggerDigits(Int_t nBoard, - TArrayS* xyPattern, + const TArrayS* xyPattern, AliMUONVDigitStore& digitStore) const { /// make digits for trigger from pattern, and add them to digitStore - AliCodeTimerAuto(""); + AliCodeTimerAuto("",0); Int_t detElemId; @@ -439,7 +431,7 @@ Int_t AliMUONDigitMaker::TriggerDigits(Int_t nBoard, { // not quite sure about this Int_t offset = 0; - if (iCath && localBoard->GetSwitch(6)) offset = -8; + if (iCath && localBoard->GetSwitch(AliMpLocalBoard::kZeroAllYLSB)) offset = -8; AliMpPad pad = seg->PadByLocation(nBoard,ibitxy+offset,kTRUE); @@ -506,3 +498,12 @@ AliMUONDigitMaker::TriggerToDigitsStore(const AliMUONVTriggerStore& triggerStore } return kTRUE; } + +//______________________________________________________________________________ +void +AliMUONDigitMaker::SetTryRecover(Bool_t flag) +{ + /// Instruct the decoder to try to recover corrupted raw data. + /// Only use for specific cases for which you know it will work... + fRawStreamTracker->TryRecover(flag); +}