Adding mask handling
authorivana <ivana@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 17 Mar 2006 16:53:33 +0000 (16:53 +0000)
committerivana <ivana@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 17 Mar 2006 16:53:33 +0000 (16:53 +0000)
(Rachid, Laurent)

MUON/AliMUONGlobalTriggerBoard.cxx
MUON/AliMUONGlobalTriggerBoard.h
MUON/AliMUONLocalTriggerBoard.cxx
MUON/AliMUONLocalTriggerBoard.h
MUON/AliMUONRegionalTriggerBoard.cxx
MUON/AliMUONRegionalTriggerBoard.h
MUON/AliMUONTriggerBoard.h

index e4fcb7ef0cf795278d9ccd07a3263c2f09de986e..62b168bf7297ff31c0ca4e2afee7e90e86b7b129 100644 (file)
@@ -18,7 +18,7 @@
 //*-- Author: Rachid Guernane (LPCCFd)
 
 #include "AliMUONGlobalTriggerBoard.h"
-
+#include "AliLog.h"
 #include "TBits.h"
 
 #include <Riostream.h>
@@ -37,12 +37,25 @@ AliMUONGlobalTriggerBoard::AliMUONGlobalTriggerBoard(const char *name, Int_t a)
    for (Int_t i=0;i<16;i++) fRegionalResponse[i] = 0;
 }
 
+//___________________________________________
+void AliMUONGlobalTriggerBoard::Mask(Int_t index, UShort_t mask)
+{
+  if ( index>=0 && index < 16 ) 
+  {
+    fMask[index]=mask;
+  }
+  else
+  {
+    AliError(Form("Index %d out of bounds (max %d)",index,16));
+  }  
+}
+
 //___________________________________________
 void AliMUONGlobalTriggerBoard::Response()
 {
    Int_t t[16];
 
-   for (Int_t i=0;i<16;i++) t[i] = fRegionalResponse[i];
+   for (Int_t i=0;i<16;i++) t[i] = fRegionalResponse[i] & fMask[i];
 
    Int_t rank = 8;
 
index d593e25732d4a117fa18cc06376c536b0c55ed51..92c7120a98767bb843aa4ff64533918ae6d2ec18 100644 (file)
@@ -29,9 +29,12 @@ class AliMUONGlobalTriggerBoard : public AliMUONTriggerBoard
 
       virtual void     Resp(Option_t*) {}
 
+      void Mask(Int_t index, UShort_t mask);
+      
    private:
 
       UShort_t fRegionalResponse[16];
+      UShort_t fMask[16];
 
    ClassDef(AliMUONGlobalTriggerBoard,1) 
 };
index 52daa099241e908c995332c246b592bb343dfb5f..a5d05a43e810f336b405a7af69805ed920cac514 100644 (file)
@@ -33,7 +33,7 @@
 
 //___________________________________________
 AliMUONLocalTriggerBoard::AliMUONLocalTriggerBoard()
-  : AliMUONTriggerBoard()
+: AliMUONTriggerBoard()
 {
    fNumber = 0;
 
@@ -61,8 +61,9 @@ AliMUONLocalTriggerBoard::AliMUONLocalTriggerBoard()
 }
 
 //___________________________________________
-AliMUONLocalTriggerBoard::AliMUONLocalTriggerBoard(const char *name, Int_t a) 
- : AliMUONTriggerBoard(name, a)
+AliMUONLocalTriggerBoard::AliMUONLocalTriggerBoard(const char *name, Int_t a,
+                                                   AliMUONTriggerLut* lut) 
+: AliMUONTriggerBoard(name, a)
 {
    fNumber = 0;
    
@@ -78,7 +79,7 @@ AliMUONLocalTriggerBoard::AliMUONLocalTriggerBoard(const char *name, Int_t a)
 
    fTC = kTRUE;
 
-   fLUT = new AliMUONTriggerLut();
+   fLUT = lut;
 
    for (Int_t i=0; i<5; i++) fMinDevStrip[i] = fMinDev[i] = fCoordY[i] = 0;
 
@@ -1087,11 +1088,18 @@ Int_t AliMUONLocalTriggerBoard::GetI()
 }
 
 //___________________________________________
-void AliMUONLocalTriggerBoard::Mask(UShort_t M[2][4])
+void AliMUONLocalTriggerBoard::Mask(Int_t index, UShort_t mask)
 {
-   for (Int_t i=0; i<2; i++)
-      for (Int_t j=0; j<4; j++)
-         fMask[i][j] = M[i][j];
+  if ( index >= 0 && index < 2*4 )
+  {
+    Int_t i = index/4;
+    Int_t j = index - i*4;
+    fMask[i][j]=mask;
+  }
+  else
+  {
+    AliError(Form("Index %d out of bounds (max %d)",index,8));
+  }
 }
 
 //___________________________________________
@@ -1167,22 +1175,6 @@ void AliMUONLocalTriggerBoard::Resp(Option_t *option)
 //    }
 }
 
-//___________________________________________
-void AliMUONLocalTriggerBoard::Mask(char *chan, UShort_t M)
-{
-   char *cath[2] = {"X", "Y"};
-   
-   char *cham[4] = {"1", "2", "3", "4"};
-   
-   for (Int_t i=0; i<2; i++)
-      for (Int_t j=0; j<4; j++) 
-      {
-         strcat(cath[i],cham[j]);
-
-         if (!strcmp(cath[i],chan)) fMask[i][j] = M;
-      }
-}
-
 //___________________________________________
 void AliMUONLocalTriggerBoard::Response()
 {
index 4962a2b55e6c56f85e5cb38f5c581189d6cc0292..b67fdad0116035f47e1f1f9478e5f2761b8d0f61 100644 (file)
@@ -15,7 +15,7 @@ class AliMUONLocalTriggerBoard : public AliMUONTriggerBoard
 {
    public: 
       AliMUONLocalTriggerBoard();
-      AliMUONLocalTriggerBoard(const char *name, Int_t a);
+      AliMUONLocalTriggerBoard(const char *name, Int_t a, AliMUONTriggerLut* lut);
       virtual ~AliMUONLocalTriggerBoard() {;}
 
       virtual void     Setbit(Int_t strip, Int_t cathode, Int_t chamber);
@@ -57,11 +57,7 @@ class AliMUONLocalTriggerBoard : public AliMUONTriggerBoard
 
       virtual void     Response();
 
-//    inclusive masking
-      virtual void     Mask(UShort_t M[2][4]);
-
-//    exclusive masking
-      virtual void     Mask(char *in, UShort_t M);
+      virtual void     Mask(Int_t index, UShort_t value);
 
       virtual void     TrigX(Int_t ch1q[16], Int_t ch2q[16], Int_t ch3q[32], Int_t ch4q[32], 
                              Int_t coinc44);
@@ -94,8 +90,6 @@ class AliMUONLocalTriggerBoard : public AliMUONTriggerBoard
                virtual void     SetCrate(TString crate) {fCrate = crate;}
                virtual TString  GetCrate() {return fCrate;}
 
-               
-
    protected:
       AliMUONLocalTriggerBoard(const AliMUONLocalTriggerBoard& right);
       AliMUONLocalTriggerBoard&  operator = (const AliMUONLocalTriggerBoard& right);
@@ -136,7 +130,7 @@ class AliMUONLocalTriggerBoard : public AliMUONTriggerBoard
       Int_t    fMinDev[5];
       Int_t    fCoordY[5];
 
-      AliMUONTriggerLut *fLUT;
+      AliMUONTriggerLut *fLUT; //! Pointer to trigger LUT, that we do not own.
       
       ClassDef(AliMUONLocalTriggerBoard,1) 
 };
index 1b5961d2e72c0fb3eede60df29a64acdce78fb23..586153be5688ac7b06e5b1aca962612cfeeecb41 100644 (file)
@@ -19,6 +19,8 @@
 
 #include "AliMUONRegionalTriggerBoard.h"
 
+#include "AliLog.h"
+
 #include "TBits.h"
 
 #include <Riostream.h>
@@ -42,7 +44,7 @@ void AliMUONRegionalTriggerBoard::Response()
 {
    Int_t t[16];
 
-   for (Int_t i=0;i<16;i++) t[i] = fLocalResponse[i];
+   for (Int_t i=0;i<16;i++) t[i] = fLocalResponse[i] & fMask[i];
 
    Int_t rank = 8;
 
@@ -173,5 +175,17 @@ void AliMUONRegionalTriggerBoard::Scan(Option_t*)
    
 }
 
+//___________________________________________
+void AliMUONRegionalTriggerBoard::Mask(Int_t index, UShort_t mask)
+{
+  if ( index>=0 && index < 16 ) 
+  {
+    fMask[index]=mask;
+  }
+  else
+  {
+    AliError(Form("Index %d out of bounds (max %d)",index,16));
+  }
+}
 
 ClassImp(AliMUONRegionalTriggerBoard)
index 655cd3a7a1e7ed80366ebde146d933f890769cdc..1c20c12eb41f9b122da27530cb2a94654ef14ef7 100644 (file)
@@ -28,12 +28,12 @@ class AliMUONRegionalTriggerBoard : public AliMUONTriggerBoard
 
       virtual UShort_t Algo(UShort_t i, UShort_t j, char *thres, Int_t level);
 
-   protected:
-    
+      void Mask(Int_t index, UShort_t mask);
+      
    private:
-
       UShort_t fLocalResponse[16];
-
+      UShort_t fMask[16];
+      
       ClassDef(AliMUONRegionalTriggerBoard,1)
 };
 #endif
index d8905852e7ca3b17418e2c46b7656432e840549a..e767cc0c5280b11896e4289014e2d0cb36244658 100644 (file)
@@ -29,6 +29,8 @@ class AliMUONTriggerBoard : public TNamed
 
       virtual UShort_t GetResponse() {return fResponse;}
 
+      virtual void Mask(Int_t index, UShort_t mask) = 0;
+      
    protected:
 
       Int_t fSlot;