From d53fb0de8936bc836be15de06556a66bf9cd9f1d Mon Sep 17 00:00:00 2001 From: pcrochet Date: Wed, 13 Sep 2006 09:58:07 +0000 Subject: [PATCH] Store right local board numbers (Christian) --- MUON/AliMUONDigitMaker.cxx | 59 ++++++++++++++++++++++++++++++++++++-- MUON/AliMUONDigitMaker.h | 5 ++++ 2 files changed, 62 insertions(+), 2 deletions(-) diff --git a/MUON/AliMUONDigitMaker.cxx b/MUON/AliMUONDigitMaker.cxx index 5b8d596d821..1fa1223b9cb 100644 --- a/MUON/AliMUONDigitMaker.cxx +++ b/MUON/AliMUONDigitMaker.cxx @@ -64,6 +64,9 @@ #include "AliMUONRegHeader.h" #include "AliMUONLocalStruct.h" +#include "AliMUONTriggerCrateStore.h" +#include "AliMUONTriggerCrate.h" +#include "AliMUONLocalTriggerBoard.h" #include "AliMUONLocalTrigger.h" #include "AliMUONGlobalTrigger.h" @@ -85,6 +88,7 @@ AliMUONDigitMaker::AliMUONDigitMaker(AliMUONData* data) fDigit(new AliMUONDigit()), fLocalTrigger(new AliMUONLocalTrigger()), fGlobalTrigger(new AliMUONGlobalTrigger()), + fCrateManager(new AliMUONTriggerCrateStore()), fTrackerTimer(), fTriggerTimer(), fMappingTimer() @@ -101,6 +105,8 @@ AliMUONDigitMaker::AliMUONDigitMaker(AliMUONData* data) // bus patch fBusPatchManager->ReadBusPatchFile(); + // Crate manager + fCrateManager->ReadFromFile(); fTrackerTimer.Start(kTRUE); fTrackerTimer.Stop(); fTriggerTimer.Start(kTRUE); fTriggerTimer.Stop(); @@ -120,6 +126,7 @@ AliMUONDigitMaker::AliMUONDigitMaker() fDigit(0), fLocalTrigger(0), fGlobalTrigger(0), + fCrateManager(0), fTrackerTimer(), fTriggerTimer(), fMappingTimer() @@ -150,6 +157,8 @@ AliMUONDigitMaker::~AliMUONDigitMaker() delete fLocalTrigger; delete fGlobalTrigger; + delete fCrateManager; + delete fBusPatchManager; AliInfo(Form("Execution time for MUON tracker : R:%.2fs C:%.2fs", @@ -354,6 +363,18 @@ Int_t AliMUONDigitMaker::ReadTriggerDDL(AliRawReader* rawReader) for(Int_t iReg = 0; iReg < nReg ;iReg++){ //reg loop + // crate info + Char_t crateName[10]; + GetCrateName(crateName, fRawStreamTrigger->GetDDL(), iReg); + + AliMUONTriggerCrate* crate = fCrateManager->Crate(crateName); + + if (!crate) + AliWarning(Form("Missing crate number %d in DDL %d\n", iReg, fRawStreamTrigger->GetDDL())); + + TObjArray *boards = crate->Boards(); + + regHeader = darcHeader->GetRegHeaderEntry(iReg); Int_t nLocal = regHeader->GetLocalEntries(); @@ -362,9 +383,13 @@ Int_t AliMUONDigitMaker::ReadTriggerDDL(AliRawReader* rawReader) localStruct = regHeader->GetLocalEntry(iLocal); + // if card has triggered if (localStruct->GetTriggerY() == 0) { - loCircuit = localStruct->GetId()+ 16*regHeader->GetId() - + 128*fRawStreamTrigger->GetDDL(); + + AliMUONLocalTriggerBoard* localBoard = + (AliMUONLocalTriggerBoard*)boards->At(localStruct->GetId()+1); + + loCircuit = localBoard->GetNumber(); // fill local trigger fLocalTrigger->SetLocalStruct(loCircuit, *localStruct); @@ -381,3 +406,33 @@ Int_t AliMUONDigitMaker::ReadTriggerDDL(AliRawReader* rawReader) } +//____________________________________________________________________ +void AliMUONDigitMaker::GetCrateName(Char_t* name, Int_t iDDL, Int_t iReg) +{ + // set crate name from DDL & reg number + // method same as in RawWriter, not so nice + // should be put in AliMUONTriggerCrateStore + + switch(iReg) { + case 0: + case 1: + sprintf(name,"%d", iReg+1); + break; + case 2: + strcpy(name, "2-3"); + break; + case 3: + case 4: + case 5: + case 6: + case 7: + sprintf(name,"%d", iReg); + break; + } + + // crate Right for first DDL + if (iDDL == 0) + strcat(name, "R"); + else + strcat(name, "L"); +} diff --git a/MUON/AliMUONDigitMaker.h b/MUON/AliMUONDigitMaker.h index f53c643ce9f..96c2d28f321 100644 --- a/MUON/AliMUONDigitMaker.h +++ b/MUON/AliMUONDigitMaker.h @@ -19,6 +19,7 @@ class AliMUONData; class AliMUONDigit; class AliMUONGlobalTrigger; class AliMUONLocalTrigger; +class AliMUONTriggerCrateStore; class AliMpSegFactory; class AliMUONRawStreamTracker; @@ -65,6 +66,8 @@ class AliMUONDigitMaker : public TObject AliMUONLocalTrigger* fLocalTrigger; //!< pointer to local trigger AliMUONGlobalTrigger* fGlobalTrigger; //!< pointer to local trigger + AliMUONTriggerCrateStore* fCrateManager; //!< Crate array + TStopwatch fTrackerTimer; //!< time watcher for tracker part TStopwatch fTriggerTimer; //!< time watcher for trigger part TStopwatch fMappingTimer; //!< time watcher for mapping-tracker part @@ -72,6 +75,8 @@ class AliMUONDigitMaker : public TObject AliMUONDigitMaker (const AliMUONDigitMaker& rhs); // copy constructor AliMUONDigitMaker& operator=(const AliMUONDigitMaker& rhs); // assignment operator + void GetCrateName(Char_t* name, Int_t iDDL, Int_t iReg); + ClassDef(AliMUONDigitMaker,1) // MUON digit maker from rawdata }; -- 2.43.0