- Changed the mask format accordingly to real life
authorivana <ivana@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 16 Nov 2007 18:36:38 +0000 (18:36 +0000)
committerivana <ivana@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 16 Nov 2007 18:36:38 +0000 (18:36 +0000)
- Added/changed comments
(Christian)

MUON/AliMUONCDB.cxx
MUON/AliMUONGlobalTriggerBoard.cxx
MUON/AliMUONGlobalTriggerBoard.h
MUON/AliMUONRegionalTriggerBoard.cxx
MUON/AliMUONRegionalTriggerBoard.h
MUON/AliMUONTriggerBoard.h
MUON/AliMUONTriggerElectronics.cxx

index 149a73d..d14074f 100644 (file)
@@ -74,6 +74,7 @@
 #include <TSystem.h>
 #include <TMath.h>
 
+
 /// \cond CLASSIMP
 ClassImp(AliMUONCDB)
 /// \endcond
@@ -695,19 +696,18 @@ AliMUONCDB::MakeLocalTriggerMaskStore(AliMUONVStore& localBoardMasks) const
 Int_t
 AliMUONCDB::MakeRegionalTriggerMaskStore(AliMUONVStore& rtm) const
 {
-  /// Make a regional trigger masks store. All masks are set to 3F
+  /// Make a regional trigger masks store. Mask is set to FFFF for each local board (Ch.F.)
   
   AliCodeTimerAuto("");
   
   Int_t ngenerated(0);
   for ( Int_t i = 0; i < 16; ++i )
   {
-    AliMUONVCalibParam* regionalBoard = new AliMUONCalibParamNI(1,16,i,0,0);
-    for ( Int_t j = 0; j < 16; ++j )
-    {
-      regionalBoard->SetValueAsInt(j,0,0x3F);
-      ++ngenerated;
-    }
+    AliMUONVCalibParam* regionalBoard = new AliMUONCalibParamNI(1,1,i,0,0);
+
+    regionalBoard->SetValueAsInt(0,0,0xFFFF);
+    ++ngenerated;
+      
     rtm.Add(regionalBoard);
   }
   
@@ -718,15 +718,15 @@ AliMUONCDB::MakeRegionalTriggerMaskStore(AliMUONVStore& rtm) const
 Int_t 
 AliMUONCDB::MakeGlobalTriggerMaskStore(AliMUONVCalibParam& gtm) const
 {
-  /// Make a global trigger masks store. All masks set to FFF
+  /// Make a global trigger masks store. All masks (disable) set to 0x00 for each Darc board (Ch.F.)
   
   AliCodeTimerAuto("");
   
   Int_t ngenerated(0);
   
-  for ( Int_t j = 0; j < 16; ++j )
+  for ( Int_t j = 0; j < 2; ++j )
   {
-    gtm.SetValueAsInt(j,0,0xFFF);
+    gtm.SetValueAsInt(j,0,0x00);
     ++ngenerated;
   }
   return ngenerated;
@@ -920,7 +920,7 @@ AliMUONCDB::WriteGlobalTriggerMasks(Int_t startRun, Int_t endRun)
 {  
   /// Write global trigger masks to OCDB
   
-  AliMUONVCalibParam* gtm = new AliMUONCalibParamNI(1,16,1,0,0);
+  AliMUONVCalibParam* gtm = new AliMUONCalibParamNI(1,2,1,0,0);
 
   Int_t ngenerated = MakeGlobalTriggerMaskStore(*gtm);
   AliInfo(Form("Ngenerated = %d",ngenerated));
index 0882d83..61e0f4a 100644 (file)
@@ -21,9 +21,9 @@
 /// - inputs are regional responses
 /// - output is a 12-bit word
 /// - 4 bits per trigger level
-/// \todo Change member functions comments in capital letters to normal text
 ///
-/// \author Rachid Guernane (LPCCFd)
+/// \author Rachid Guernane (LPCCFd), 
+/// Corrected by Christian Finck (Subatech)
 //-----------------------------------------------------------------------------
 
 #include "AliMUONGlobalTriggerBoard.h"
 
 #include <Riostream.h>
 
+/// \cond CLASSIMP
 ClassImp(AliMUONGlobalTriggerBoard)
+/// \endcond
 
 //___________________________________________
-AliMUONGlobalTriggerBoard::AliMUONGlobalTriggerBoard()
+AliMUONGlobalTriggerBoard::AliMUONGlobalTriggerBoard(): AliMUONTriggerBoard()
 {
 /// Default constructor
 
@@ -59,30 +61,40 @@ AliMUONGlobalTriggerBoard::~AliMUONGlobalTriggerBoard()
 //___________________________________________
 void AliMUONGlobalTriggerBoard::Mask(Int_t index, UShort_t mask)
 {
-  /// MASK GLOBAL TRIGGER BOARD INPUT index WITH VALUE mask
-  if ( index>=0 && index < 16 ) 
+  /// mask global trigger board input index with value mask
+  if ( index>=0 && index < 2 ) 
   {
     fMask[index]=mask;
   }
   else
   {
-    AliError(Form("Index %d out of bounds (max %d)",index,16));
+    AliError(Form("Index %d out of bounds (max %d)",index,2));
   }  
 }
 
 //___________________________________________
 void AliMUONGlobalTriggerBoard::Response()
 {
-   /// COMPUTE THE GLOBAL TRIGGER BOARD
-   /// RESPONSE ACCORDING TO THE Algo() METHOD
+   /// compute the global trigger board
+   /// response according to the algo() method
 // output from global trigger algorithm
 // [+, -, LS, US] * [Hpt, Lpt]
 // transformed to [usHpt, usLpt, lsHpt, lsLpt, sHpt, sLpt] according
 // to Global Trigger Unit user manual
 
    Int_t t[16];
-   for (Int_t i=0;i<16;i++) t[i] = fRegionalResponse[i] & fMask[i];
 
+   for (Int_t i = 0; i < 16; ++i) 
+   {
+     Int_t index = i/8;
+     Int_t shift = i % 8;
+     UShort_t enable = !((fMask[index] >> shift) & 0x1);
+     if (enable)
+      t[i] = fRegionalResponse[i];
+     else
+       t[i] = 0;
+   }
+   
    Int_t rank = 8;
 
    for (Int_t i=0;i<4;i++)
@@ -122,7 +134,7 @@ void AliMUONGlobalTriggerBoard::Response()
 //___________________________________________
 UShort_t AliMUONGlobalTriggerBoard::Algo(UShort_t i, UShort_t j, char *thres)
 {
-   /// GLOBAL TRIGGER ALGORITHM
+   /// global trigger algorithm
    TBits a(8), b(8); a.Set(8,&i); b.Set(8,&j);
 
    TBits trg1(2), trg2(2), trg(2);
@@ -173,7 +185,7 @@ UShort_t AliMUONGlobalTriggerBoard::Algo(UShort_t i, UShort_t j, char *thres)
 //___________________________________________
 void AliMUONGlobalTriggerBoard::Scan(Option_t*) const
 {
-  /// PRINT GLOBAL TRIGGER OUTPUT 
+  /// print global trigger output 
   TBits w(8); w.Set(8,&fResponse);
 
 // TRG[1:0]
@@ -230,4 +242,3 @@ void AliMUONGlobalTriggerBoard::Scan(Option_t*) const
    printf("\n");
 }
 
-ClassImp(AliMUONGlobalTriggerBoard)
index f2ce4fb..28ba145 100644 (file)
@@ -26,22 +26,25 @@ class AliMUONGlobalTriggerBoard : public AliMUONTriggerBoard
 
       virtual void     Response();
 
+                       /// response of the algorithm
       virtual UShort_t Algo(UShort_t i, UShort_t j, char *thres);
                       
                        /// Reset regional board responses
       virtual void     Reset() {for (Int_t i=0; i<16; i++) fRegionalResponse[i] = 0;}
 
+                       /// scan response of regional boards
       virtual void     Scan(Option_t *option) const;
 
                        /// \todo add comment
       virtual void     Resp(Option_t*) const {}
 
+                      /// Set mask (disable) for regional boards
       void Mask(Int_t index, UShort_t mask);
       
    private:
 
-      UShort_t fRegionalResponse[16]; ///< REGIONAL BOARD RESPONSES
-      UShort_t fMask[16];             ///< MASK
+      UShort_t fRegionalResponse[16]; ///< Regional board responses
+      UShort_t fMask[2];              ///< Mask
 
    ClassDef(AliMUONGlobalTriggerBoard,1) //Global trigger board
 };
index 556eb93..c19cf1c 100644 (file)
@@ -21,9 +21,9 @@
 /// - entry are local board responses
 /// - output is 12-bit word
 /// - algorithm is similar to the global one
-/// \todo Change member functions comments in capital letters to normal text
 ///
 /// \author Rachid Guernane (LPCCFd)
+/// Corrected by Christian Finck (Subatech)
 //-----------------------------------------------------------------------------
 
 #include "AliMUONRegionalTriggerBoard.h"
@@ -40,13 +40,17 @@ ClassImp(AliMUONRegionalTriggerBoard)
 
 //___________________________________________
 AliMUONRegionalTriggerBoard::AliMUONRegionalTriggerBoard()
+  : AliMUONTriggerBoard(),
+    fMask(0x0)   
 {
 /// Default constructor
    for (Int_t i=0; i<16; i++) fLocalResponse[i] = 0;
 }
 
 //___________________________________________
-AliMUONRegionalTriggerBoard::AliMUONRegionalTriggerBoard(const char *name, Int_t a) : AliMUONTriggerBoard(name, a)
+AliMUONRegionalTriggerBoard::AliMUONRegionalTriggerBoard(const char *name, Int_t a) 
+  : AliMUONTriggerBoard(name, a),
+    fMask(0x0)   
 {
 /// Standard constructor
    for (Int_t i=0; i<16; i++) fLocalResponse[i] = 0;
@@ -61,19 +65,25 @@ AliMUONRegionalTriggerBoard::~AliMUONRegionalTriggerBoard()
 //___________________________________________
 void AliMUONRegionalTriggerBoard::Response()
 {
-/// RESPONSE IS GIVEN FOLLOWING THE REGIONAL ALGORITHM
+/// response is given following the regional algorithm
 
   Int_t t[16];
 
-   for (Int_t i=0;i<16;i++) t[i] = fLocalResponse[i] & fMask[i];
-
+   for (Int_t i = 0; i < 16; ++i)
+   {
+     if ((fMask >> i) & 0x1)
+      t[i] = fLocalResponse[i];
+     else
+       t[i] = 0;
+   }
+   
    Int_t rank = 8;
 
-   for (Int_t i=0;i<4;i++)
+   for (Int_t i = 0; i < 4; ++i)
    {
       Int_t ip = 0;
       
-      for (Int_t j=0;j<rank;j++)
+      for (Int_t j = 0; j < rank; ++j)
       {
          UShort_t lthres = Algo(t[2*j],t[2*j+1],"LPT",i);
 
@@ -93,9 +103,9 @@ void AliMUONRegionalTriggerBoard::Response()
 //___________________________________________
 UShort_t AliMUONRegionalTriggerBoard::Algo(UShort_t i, UShort_t j, char *thres, Int_t level)
 {
-/// IMPLEMENTATION OF THE REGIONAL ALGORITHM
-/// SIMILAR TO THE GLOBAL ALGORITHM EXCEPT FOR THE
-/// INPUT LAYER
+/// implementation of the regional algorithm
+/// similar to the global algorithm except for the
+/// input layer
 
   TBits a(8), b(8); a.Set(8,&i); b.Set(8,&j);
 
@@ -170,7 +180,7 @@ UShort_t AliMUONRegionalTriggerBoard::Algo(UShort_t i, UShort_t j, char *thres,
 //___________________________________________
 void AliMUONRegionalTriggerBoard::Scan(Option_t*) const
 {
-/// SCAN LOCAL BOARD ENTRIES 
+/// scan local board entries 
 
   for (Int_t i=0; i<16; i++) 
    {
@@ -182,18 +192,13 @@ void AliMUONRegionalTriggerBoard::Scan(Option_t*) const
    }
    
 }
-
 //___________________________________________
-void AliMUONRegionalTriggerBoard::Mask(Int_t index, UShort_t mask)
+void AliMUONRegionalTriggerBoard::Mask(UShort_t mask)
 {
-/// MASK ENTRY index
-
-  if ( index>=0 && index < 16 ) 
-  {
-    fMask[index]=mask;
-  }
-  else
-  {
-    AliError(Form("Index %d out of bounds (max %d)",index,16));
-  }
+/// mask entry index
+
+    fMask = mask;
 }
+
+
+
index 8a18555..67761cc 100644 (file)
@@ -33,13 +33,15 @@ class AliMUONRegionalTriggerBoard : public AliMUONTriggerBoard
       /// Set Local trigger inputs
       virtual void SetLocalResponse(UShort_t val[16]) {for (Int_t i=0;i<16;i++) fLocalResponse[i] = val[i];}
 
+      /// response of the algorithm
       virtual UShort_t Algo(UShort_t i, UShort_t j, char *thres, Int_t level);
 
-      void Mask(Int_t index, UShort_t mask);
+      /// set local boards enable
+      void Mask(UShort_t mask);
       
    private:
       UShort_t fLocalResponse[16]; ///< Local trigger inputs
-      UShort_t fMask[16];          ///< Entry mask
+      UShort_t fMask;              ///< Entry mask
       
       ClassDef(AliMUONRegionalTriggerBoard,1) // Regional trigger - real HW algorithm is implemented
 };
index 3077d05..017da71 100644 (file)
@@ -35,9 +35,6 @@ class AliMUONTriggerBoard : public TNamed
       /// Return response
       virtual UShort_t GetResponse() const {return fResponse;}
 
-      /// \todo add comment 
-      virtual void Mask(Int_t index, UShort_t mask) = 0;
-      
    protected:
       Int_t fSlot;                ///< SLOT NUMBER IN CRATE
 
index c7c3909..518a8dc 100644 (file)
@@ -451,11 +451,9 @@ void AliMUONTriggerElectronics::LoadMasks(AliMUONCalibrationData* calibData)
 
     AliMUONVCalibParam* regionalBoardMasks = calibData->RegionalTriggerBoardMasks(irb);
     
-    for ( Int_t i = 0; i < regionalBoardMasks->Size(); ++i )
-    {
-      UShort_t rmask = static_cast<UShort_t>(regionalBoardMasks->ValueAsInt(i) & 0x3F);
-      regb->Mask(i,rmask);
-    }
+    UShort_t rmask = static_cast<UShort_t>(regionalBoardMasks->ValueAsInt(0) & 0xFFFF);
+
+    regb->Mask(rmask);
     
     for (Int_t j = 1; j < boards->GetEntries(); j++)
     {
@@ -479,7 +477,7 @@ void AliMUONTriggerElectronics::LoadMasks(AliMUONCalibrationData* calibData)
   AliMUONVCalibParam* globalBoardMasks = calibData->GlobalTriggerBoardMasks();
   for ( Int_t i = 0; i < globalBoardMasks->Size(); ++i )
   {
-    UShort_t gmask = static_cast<UShort_t>(globalBoardMasks->ValueAsInt(i) & 0xFFF);
+    UShort_t gmask = static_cast<UShort_t>(globalBoardMasks->ValueAsInt(i) & 0xFF);
     fGlobalTriggerBoard->Mask(i,gmask);
   }
 }