]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONDigitMaker.cxx
Fixing coding conventions (const arguments in functions)
[u/mrichter/AliRoot.git] / MUON / AliMUONDigitMaker.cxx
index 2b4010c576acd43e7e624edf000043bf49931073..70cd1e8951755924d8af809ed810cf4fde4f5db4 100644 (file)
 #include "AliMUONLocalStruct.h"
 #include "AliMUONLocalTrigger.h"
 #include "AliMUONLogger.h"
-#include "AliMUONRawStreamTracker.h"
 #include "AliMUONRawStreamTrackerHP.h"
-#include "AliMUONRawStreamTrigger.h"
 #include "AliMUONRawStreamTriggerHP.h"
 #include "AliMUONRegHeader.h"
-#include "AliMUONTriggerCircuit.h"
 #include "AliMUONVTriggerStore.h"
 #include "AliMpDetElement.h"
 #include "AliMpTriggerCrate.h"
@@ -78,15 +75,43 @@ ClassImp(AliMUONDigitMaker) // Class implementation in ROOT context
 /// \endcond
 
 //__________________________________________________________________________
-AliMUONDigitMaker::AliMUONDigitMaker(
-      Bool_t enableErrorLogger,
-      Bool_t useFastTrackerDecoder, Bool_t useFastTriggerDecoder
-  ) :
-    TObject(),
+AliMUONDigitMaker::AliMUONDigitMaker(Bool_t enableErrorLogger, Bool_t a, Bool_t b) :
+TObject(),
+fScalerEvent(kFALSE),
+fMakeTriggerDigits(kFALSE),
+fRawStreamTracker(new AliMUONRawStreamTrackerHP),
+fRawStreamTrigger(new AliMUONRawStreamTriggerHP),
+fDigitStore(0x0),
+fTriggerStore(0x0),
+fLogger(new AliMUONLogger(10000)){
+  /// ctor 
+  
+  if  ( !a || !b ) AliFatal("no longer supported");
+  
+  AliDebug(1,"");
+  
+  // Standard Constructor
+  if (enableErrorLogger) 
+  {
+    fRawStreamTracker->EnabbleErrorLogger();
+    fRawStreamTrigger->EnabbleErrorLogger();
+  }
+  else
+  {
+    fRawStreamTracker->DisableWarnings();
+  }
+  
+  SetMakeTriggerDigits();
+  
+}
+
+//__________________________________________________________________________
+AliMUONDigitMaker::AliMUONDigitMaker(Bool_t enableErrorLogger) :
+TObject(),
     fScalerEvent(kFALSE),
     fMakeTriggerDigits(kFALSE),
-    fRawStreamTracker(NULL),
-    fRawStreamTrigger(NULL),
+    fRawStreamTracker(new AliMUONRawStreamTrackerHP),
+    fRawStreamTrigger(new AliMUONRawStreamTriggerHP),
     fDigitStore(0x0),
     fTriggerStore(0x0),
   fLogger(new AliMUONLogger(10000))
@@ -95,14 +120,16 @@ AliMUONDigitMaker::AliMUONDigitMaker(
 
   AliDebug(1,"");
   
-  CreateRawStreamTracker(useFastTrackerDecoder);
-  CreateRawStreamTrigger(useFastTriggerDecoder);
-
   // Standard Constructor
-  if (enableErrorLogger) {
+  if (enableErrorLogger) 
+  {
     fRawStreamTracker->EnabbleErrorLogger();
     fRawStreamTrigger->EnabbleErrorLogger();
   }
+  else
+  {
+    fRawStreamTracker->DisableWarnings();
+  }
 
   SetMakeTriggerDigits();
 
@@ -119,36 +146,6 @@ AliMUONDigitMaker::~AliMUONDigitMaker()
   delete fLogger;
 }
 
-//__________________________________________________________________________
-void AliMUONDigitMaker::CreateRawStreamTracker(Bool_t useFastDecoder)
-{
-/// Create raw stream tracker according to the passed option
-
-  if (useFastDecoder)
-  {
-    fRawStreamTracker = new AliMUONRawStreamTrackerHP();
-  }
-  else {
-    AliInfo("Using non-high performance tracker decoder.");
-    fRawStreamTracker = new AliMUONRawStreamTracker();
-  }  
-}
-
-//__________________________________________________________________________
-void AliMUONDigitMaker::CreateRawStreamTrigger(Bool_t useFastDecoder)
-{
-/// Create raw stream trigger according to the passed option
-
-  if (useFastDecoder)
-  {
-    fRawStreamTrigger = new AliMUONRawStreamTriggerHP();
-  }
-  else {
-    AliInfo("Using non-high performance tracker decoder.");
-    fRawStreamTrigger = new AliMUONRawStreamTrigger();
-  }  
-}
-
 //____________________________________________________________________
 void
 AliMUONDigitMaker::Print(Option_t*) const
@@ -220,7 +217,7 @@ AliMUONDigitMaker::ReadTrackerDDL(AliRawReader* rawReader)
 
   AliDebug(1,"");
   
-  AliCodeTimerAuto("");
+  AliCodeTimerAuto("",0);
 
   // elex info
   Int_t    buspatchId;
@@ -231,7 +228,7 @@ AliMUONDigitMaker::ReadTrackerDDL(AliRawReader* rawReader)
   fRawStreamTracker->SetReader(rawReader);
   fRawStreamTracker->First();
   
-  while ( fRawStreamTracker->Next(buspatchId,manuId,channelId,charge) )
+  while ( fRawStreamTracker->Next(buspatchId,manuId,channelId,charge,kTRUE) )
   {    
     // getting DE from buspatch
     Int_t detElemId = AliMpDDLStore::Instance()->GetDEfromBus(buspatchId);
@@ -262,7 +259,7 @@ AliMUONDigitMaker::ReadTrackerDDL(AliRawReader* rawReader)
     
     AliMp::CathodType cathodeType = de->GetCathodType(seg->PlaneType());
 
-    AliMpPad pad = seg->PadByLocation(AliMpIntPair(manuId,channelId),kFALSE);
+    AliMpPad pad = seg->PadByLocation(manuId,channelId,kFALSE);
 
     if (!pad.IsValid())
     {
@@ -281,10 +278,9 @@ AliMUONDigitMaker::ReadTrackerDDL(AliRawReader* rawReader)
       continue;
     }
     
-    digit->SetPadXY(pad.GetIndices().GetFirst(),
-                   pad.GetIndices().GetSecond());
+    digit->SetPadXY(pad.GetIx(),pad.GetIy());
     
-         digit->SetADC(charge);
+    digit->SetADC(charge);
 
   }
   
@@ -299,105 +295,6 @@ AliMUONDigitMaker::ReadTrackerDDL(AliRawReader* rawReader)
 //____________________________________________________________________
 Int_t
 AliMUONDigitMaker::ReadTriggerDDL(AliRawReader* rawReader)
-{
-  /// reading tracker DDL
-  /// filling the fTriggerStore container, which must not be null
-
-  AliDebug(1,"");
-  
-  AliMUONDDLTrigger*       ddlTrigger      = 0x0;
-  AliMUONDarcHeader*       darcHeader      = 0x0;
-  AliMUONRegHeader*        regHeader       = 0x0;
-  AliMUONLocalStruct*      localStruct     = 0x0;
-
-  Int_t loCircuit;
-
-  AliCodeTimerAuto("");
-  
-  if (UsingFastTriggerDecoder()) return ReadTriggerDDLFast(rawReader);
-
-  fRawStreamTrigger->SetReader(rawReader);
-
-  while (fRawStreamTrigger->NextDDL()) 
-  {
-    ddlTrigger = fRawStreamTrigger->GetDDLTrigger();
-    darcHeader = ddlTrigger->GetDarcHeader();
-    
-    // fill global trigger information
-    if (fTriggerStore) 
-    {
-      if (darcHeader->GetGlobalFlag()) 
-      {
-          AliMUONGlobalTrigger globalTrigger;
-          globalTrigger.SetFromGlobalResponse(darcHeader->GetGlobalOutput());
-          fTriggerStore->SetGlobal(globalTrigger);
-      }
-    }
-    
-    Int_t nReg = darcHeader->GetRegHeaderEntries();
-    
-    for(Int_t iReg = 0; iReg < nReg ;iReg++)
-    {   //reg loop
-      
-
-      // crate info  
-      AliMpTriggerCrate* crate = AliMpDDLStore::Instance()->
-                                GetTriggerCrate(fRawStreamTrigger->GetDDL(), iReg);
-      
-      if (!crate) 
-        fLogger->Log(Form("Missing crate number %d in DDL %d\n", iReg, fRawStreamTrigger->GetDDL()));
-     
-      
-      regHeader =  darcHeader->GetRegHeaderEntry(iReg);
-      
-      Int_t nLocal = regHeader->GetLocalEntries();
-      for(Int_t iLocal = 0; iLocal < nLocal; iLocal++) 
-      {  
-        
-        localStruct = regHeader->GetLocalEntry(iLocal);
-        
-        // if card exist
-        if (localStruct) {
-          
-         loCircuit = crate->GetLocalBoardId(localStruct->GetId());
-
-         if ( !loCircuit ) continue; // empty slot
-
-         AliMpLocalBoard* localBoard = AliMpDDLStore::Instance()->GetLocalBoard(loCircuit, false);
-
-         // skip copy cards
-         if( !localBoard->IsNotified()) 
-            continue;
-          
-          if (fTriggerStore) 
-          {
-            // fill local trigger
-            AliMUONLocalTrigger localTrigger;
-            localTrigger.SetLocalStruct(loCircuit, *localStruct);
-            fTriggerStore->Add(localTrigger);
-          } 
-          
-          if ( fMakeTriggerDigits )
-          {
-            //FIXEME should find something better than a TArray
-            TArrayS xyPattern[2];
-            
-           localStruct->GetXPattern(xyPattern[0]);
-           localStruct->GetYPattern(xyPattern[1]);
-            
-            TriggerDigits(loCircuit, xyPattern, *fDigitStore);
-          }          
-        } // if triggerY
-      } // iLocal
-    } // iReg
-  } // NextDDL
-  
-  return kOK;
-}
-
-//____________________________________________________________________
-Int_t
-AliMUONDigitMaker::ReadTriggerDDLFast(AliRawReader* rawReader)
 {
   /// reading tracker DDL like ReadTriggerDDL but with fast decoder interface.
   /// filling the fTriggerStore container, which must not be null
@@ -409,12 +306,10 @@ AliMUONDigitMaker::ReadTriggerDDLFast(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) 
@@ -423,11 +318,12 @@ AliMUONDigitMaker::ReadTriggerDDLFast(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
@@ -441,7 +337,7 @@ AliMUONDigitMaker::ReadTriggerDDLFast(AliRawReader* rawReader)
         fLogger->Log(Form("Missing crate number %d in DDL %d\n", iReg, fRawStreamTrigger->GetDDL()));
      
       
-      regHeader =  rawStreamTrigger->GetRegionalHeader(iReg);
+      regHeader =  fRawStreamTrigger->GetRegionalHeader(iReg);
       
       Int_t nLocal = regHeader->GetLocalStructCount();
       for(Int_t iLocal = 0; iLocal < nLocal; iLocal++) 
@@ -466,22 +362,7 @@ AliMUONDigitMaker::ReadTriggerDDLFast(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);
           }
           
@@ -505,12 +386,12 @@ AliMUONDigitMaker::ReadTriggerDDLFast(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;
 
@@ -540,9 +421,9 @@ 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(AliMpIntPair(nBoard,ibitxy+offset),kTRUE);
+            AliMpPad pad = seg->PadByLocation(nBoard,ibitxy+offset,kTRUE);
                         
             if (!pad.IsValid()) 
             {
@@ -551,8 +432,8 @@ Int_t AliMUONDigitMaker::TriggerDigits(Int_t nBoard,
               continue;
             }
 
-            n = pad.GetLocation(0).GetFirst(); // always take first location so that digits are not inserted several times
-           b = pad.GetLocation(0).GetSecond();
+            n = pad.GetLocalBoardId(0); // always take first location so that digits are not inserted several times
+           b = pad.GetLocalBoardChannel(0);
 
            AliDebug(1,Form("Using localBoard %d ixy %d instead of %d,%d",
                            n,b,nBoard,ibitxy));
@@ -566,8 +447,8 @@ Int_t AliMUONDigitMaker::TriggerDigits(Int_t nBoard,
                continue;
             }
             
-            Int_t padX = pad.GetIndices().GetFirst();
-            Int_t padY = pad.GetIndices().GetSecond();
+            Int_t padX = pad.GetIx();
+            Int_t padY = pad.GetIy();
             
             // fill digit
             digit->SetPadXY(padX,padY);
@@ -608,39 +489,11 @@ AliMUONDigitMaker::TriggerToDigitsStore(const AliMUONVTriggerStore& triggerStore
   return kTRUE;
 }
 
-//____________________________________________________________________
-Bool_t AliMUONDigitMaker::UsingFastTrackerDecoder() const
-{
-/// Returns kTRUE if the digit maker is using the high performance decoder for
-/// tracker DDL stream decoding.
-
-  return (fRawStreamTracker->IsA() == AliMUONRawStreamTrackerHP::Class());
-}
-
-//____________________________________________________________________
-Bool_t AliMUONDigitMaker::UsingFastTriggerDecoder() const
-{
-/// Returns kTRUE if the digit maker is using the high performance decoder for
-/// trigger DDL stream decoding.
-
-  return (fRawStreamTrigger->IsA() == AliMUONRawStreamTriggerHP::Class());
-}
-
-//____________________________________________________________________
-void  AliMUONDigitMaker::SetFastTrackerDecoder(Bool_t useFastDecoder)
-{
-/// Set fast raw data decoder
-
-  delete fRawStreamTracker;
-  CreateRawStreamTracker(useFastDecoder);
-}
-
-//____________________________________________________________________
-void  AliMUONDigitMaker::SetFastTriggerDecoder(Bool_t useFastDecoder)
+//______________________________________________________________________________
+void 
+AliMUONDigitMaker::SetTryRecover(Bool_t flag) 
 {
-/// Set fast raw data decoder
-
-  delete fRawStreamTrigger;
-  CreateRawStreamTrigger(useFastDecoder);
+  /// 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);
 }
-