]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONDigitMaker.cxx
I have put as default the current parameterization of V0 and SPD --from run 166530...
[u/mrichter/AliRoot.git] / MUON / AliMUONDigitMaker.cxx
index e90a7c8dd7c9ffb6c2be9163561056e40dd819b7..159b99bfd7daa420f43d0f0d1a49c96c7e042402 100644 (file)
@@ -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<AliMUONRawStreamTriggerHP*>(fRawStreamTrigger);
 
   while (fRawStreamTrigger->NextDDL())
   {
-    darcHeader = rawStreamTrigger->GetHeaders();
+    darcHeader = fRawStreamTrigger->GetHeaders();
     
     // fill global trigger information
     if (fTriggerStore) 
@@ -327,7 +332,7 @@ AliMUONDigitMaker::ReadTriggerDDL(AliRawReader* rawReader)
       }
     }
     
-    Int_t nReg = rawStreamTrigger->GetRegionalHeaderCount();
+    Int_t nReg = fRawStreamTrigger->GetRegionalHeaderCount();
     
     for(Int_t iReg = 0; iReg < nReg ;iReg++)
     {   //reg loop
@@ -337,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++) 
@@ -366,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);
           }
           
@@ -405,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;
 
@@ -440,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);
                         
@@ -507,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);
+}