]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONDigitMaker.cxx
Changed default values of cuts
[u/mrichter/AliRoot.git] / MUON / AliMUONDigitMaker.cxx
index 57b0c016906b0d542a29d54225f6e4a562a0f1e2..fc7023d3ee69e80cb7efd07ef1c8d07175603896 100644 (file)
@@ -52,9 +52,8 @@
 #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"
@@ -77,12 +76,44 @@ ClassImp(AliMUONDigitMaker) // Class implementation in ROOT context
 /// \endcond
 
 //__________________________________________________________________________
-AliMUONDigitMaker::AliMUONDigitMaker(Bool_t enableErrorLogger, Bool_t useFastDecoder)
-  : 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(new AliMUONRawStreamTrigger()),    
+    fRawStreamTracker(new AliMUONRawStreamTrackerHP),
+    fRawStreamTrigger(new AliMUONRawStreamTriggerHP),
     fDigitStore(0x0),
     fTriggerStore(0x0),
   fLogger(new AliMUONLogger(10000))
@@ -91,13 +122,16 @@ AliMUONDigitMaker::AliMUONDigitMaker(Bool_t enableErrorLogger, Bool_t useFastDec
 
   AliDebug(1,"");
   
-  CreateRawStreamTracker(useFastDecoder);
-
   // Standard Constructor
-  if (enableErrorLogger) {
+  if (enableErrorLogger) 
+  {
     fRawStreamTracker->EnabbleErrorLogger();
     fRawStreamTrigger->EnabbleErrorLogger();
   }
+  else
+  {
+    fRawStreamTracker->DisableWarnings();
+  }
 
   SetMakeTriggerDigits();
 
@@ -114,20 +148,6 @@ AliMUONDigitMaker::~AliMUONDigitMaker()
   delete fLogger;
 }
 
-//__________________________________________________________________________
-void AliMUONDigitMaker::CreateRawStreamTracker(Bool_t useFastDecoder)
-{
-/// Create raw stream tracker according to the passed option
-
-  if (useFastDecoder)
-  {
-    AliInfo("Using fast decoder.");
-    fRawStreamTracker = new AliMUONRawStreamTrackerHP();
-  }
-  else
-    fRawStreamTracker = new AliMUONRawStreamTracker();
-}    
-
 //____________________________________________________________________
 void
 AliMUONDigitMaker::Print(Option_t*) const
@@ -199,7 +219,7 @@ AliMUONDigitMaker::ReadTrackerDDL(AliRawReader* rawReader)
 
   AliDebug(1,"");
   
-  AliCodeTimerAuto("");
+  AliCodeTimerAuto("",0);
 
   // elex info
   Int_t    buspatchId;
@@ -210,7 +230,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);
@@ -241,7 +261,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())
     {
@@ -260,10 +280,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);
 
   }
   
@@ -279,26 +298,20 @@ AliMUONDigitMaker::ReadTrackerDDL(AliRawReader* rawReader)
 Int_t
 AliMUONDigitMaker::ReadTriggerDDL(AliRawReader* rawReader)
 {
-  /// reading tracker DDL
+  /// reading tracker DDL like ReadTriggerDDL but with fast decoder interface.
   /// filling the fTriggerStore container, which must not be null
 
-  AliDebug(1,"");
-  
-  AliMUONDDLTrigger*       ddlTrigger      = 0x0;
-  AliMUONDarcHeader*       darcHeader      = 0x0;
-  AliMUONRegHeader*        regHeader       = 0x0;
-  AliMUONLocalStruct*      localStruct     = 0x0;
+  const AliMUONRawStreamTriggerHP::AliHeader*          darcHeader  = 0x0;
+  const AliMUONRawStreamTriggerHP::AliRegionalHeader*  regHeader   = 0x0;
+  const AliMUONRawStreamTriggerHP::AliLocalStruct*     localStruct = 0x0;
 
   Int_t loCircuit;
 
-  AliCodeTimerAuto("");
-
   fRawStreamTrigger->SetReader(rawReader);
 
-  while (fRawStreamTrigger->NextDDL()) 
+  while (fRawStreamTrigger->NextDDL())
   {
-    ddlTrigger = fRawStreamTrigger->GetDDLTrigger();
-    darcHeader = ddlTrigger->GetDarcHeader();
+    darcHeader = fRawStreamTrigger->GetHeaders();
     
     // fill global trigger information
     if (fTriggerStore) 
@@ -307,11 +320,12 @@ AliMUONDigitMaker::ReadTriggerDDL(AliRawReader* rawReader)
       {
           AliMUONGlobalTrigger globalTrigger;
           globalTrigger.SetFromGlobalResponse(darcHeader->GetGlobalOutput());
+          globalTrigger.SetFromGlobalInput(darcHeader->GetGlobalHeader()->fInput);
           fTriggerStore->SetGlobal(globalTrigger);
       }
     }
     
-    Int_t nReg = darcHeader->GetRegHeaderEntries();
+    Int_t nReg = fRawStreamTrigger->GetRegionalHeaderCount();
     
     for(Int_t iReg = 0; iReg < nReg ;iReg++)
     {   //reg loop
@@ -325,13 +339,13 @@ AliMUONDigitMaker::ReadTriggerDDL(AliRawReader* rawReader)
         fLogger->Log(Form("Missing crate number %d in DDL %d\n", iReg, fRawStreamTrigger->GetDDL()));
      
       
-      regHeader =  darcHeader->GetRegHeaderEntry(iReg);
+      regHeader =  fRawStreamTrigger->GetRegionalHeader(iReg);
       
-      Int_t nLocal = regHeader->GetLocalEntries();
+      Int_t nLocal = regHeader->GetLocalStructCount();
       for(Int_t iLocal = 0; iLocal < nLocal; iLocal++) 
-      {  
+      {
         
-        localStruct = regHeader->GetLocalEntry(iLocal);
+        localStruct = regHeader->GetLocalStruct(iLocal);
         
         // if card exist
         if (localStruct) {
@@ -340,19 +354,19 @@ AliMUONDigitMaker::ReadTriggerDDL(AliRawReader* rawReader)
 
          if ( !loCircuit ) continue; // empty slot
 
-         AliMpLocalBoard* localBoard = AliMpDDLStore::Instance()->GetLocalBoard(loCircuit, false);
+         AliMpLocalBoard* localBoard = AliMpDDLStore::Instance()->GetLocalBoard(loCircuit, kTRUE);
 
          // skip copy cards
          if( !localBoard->IsNotified()) 
             continue;
           
-          if (fTriggerStore) 
+          if (fTriggerStore)
           {
             // fill local trigger
             AliMUONLocalTrigger localTrigger;
-            localTrigger.SetLocalStruct(loCircuit, *localStruct);
+           localTrigger.SetLocalStruct(loCircuit, *localStruct);
             fTriggerStore->Add(localTrigger);
-          } 
+          }
           
           if ( fMakeTriggerDigits )
           {
@@ -363,7 +377,7 @@ AliMUONDigitMaker::ReadTriggerDDL(AliRawReader* rawReader)
            localStruct->GetYPattern(xyPattern[1]);
             
             TriggerDigits(loCircuit, xyPattern, *fDigitStore);
-          }          
+          }
         } // if triggerY
       } // iLocal
     } // iReg
@@ -379,7 +393,7 @@ Int_t AliMUONDigitMaker::TriggerDigits(Int_t nBoard,
 {
   /// make digits for trigger from pattern, and add them to digitStore
 
-  AliCodeTimerAuto("");
+  AliCodeTimerAuto("",0);
   
   Int_t detElemId;
 
@@ -411,7 +425,7 @@ Int_t AliMUONDigitMaker::TriggerDigits(Int_t nBoard,
             Int_t offset = 0;
             if (iCath && localBoard->GetSwitch(6)) offset = -8;
             
-            AliMpPad pad = seg->PadByLocation(AliMpIntPair(nBoard,ibitxy+offset),kTRUE);
+            AliMpPad pad = seg->PadByLocation(nBoard,ibitxy+offset,kTRUE);
                         
             if (!pad.IsValid()) 
             {
@@ -420,8 +434,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));
@@ -435,8 +449,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);
@@ -447,16 +461,32 @@ Int_t AliMUONDigitMaker::TriggerDigits(Int_t nBoard,
   } // ichamber
   
   return kTRUE;
-} 
+}
 
-//____________________________________________________________________
-void  AliMUONDigitMaker::SetFastDecoder(Bool_t useFastDecoder)
+//______________________________________________________________________________
+Bool_t 
+AliMUONDigitMaker::TriggerToDigitsStore(const AliMUONVTriggerStore& triggerStore,
+                                       AliMUONVDigitStore& digitStore) const
 {
-/// Set fast raw data decoder
-
-  delete fRawStreamTracker;
-  CreateRawStreamTracker(useFastDecoder);
-}  
+  //
+  /// make (S)Digit for trigger
+  //
   
-    
-
+  digitStore.Clear();
+  
+  AliMUONLocalTrigger* locTrg;
+  TIter next(triggerStore.CreateLocalIterator());
+  
+  while ( ( locTrg = static_cast<AliMUONLocalTrigger*>(next()) ) ) 
+  {
+    if (locTrg->IsNull()) continue;
+   
+    TArrayS xyPattern[2];
+    locTrg->GetXPattern(xyPattern[0]);
+    locTrg->GetYPattern(xyPattern[1]);
+
+    Int_t nBoard = locTrg->LoCircuit();
+    TriggerDigits(nBoard, xyPattern, digitStore);
+  }
+  return kTRUE;
+}