ROOT logo
#ifndef ALIMUONLOCALTRIGGERBOARD_H
#define ALIMUONLOCALTRIGGERBOARD_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id$ */

/// \ingroup trigger 
/// \class AliMUONLocalTriggerBoard
/// \brief Implementation of local trigger board objects
///
//  Author Rachid Guernane (LPCCFd)

#include "AliMUONTriggerBoard.h"
#include "AliMpLocalBoard.h"

class AliMUONTriggerLut;

class AliMUONLocalTriggerBoard : public AliMUONTriggerBoard 
{
   public: 
       
      AliMUONLocalTriggerBoard();
      AliMUONLocalTriggerBoard(AliMpLocalBoard* mpLocalBoard);

      virtual ~AliMUONLocalTriggerBoard();
      
                       /// Return true if LUT is set
      Bool_t           HasLUT() const { return (fLUT != 0); }

                       /// Set LUT     
      void             SetLUT(AliMUONTriggerLut* lut) { fLUT = lut; }
                       /// Set Coinc 44 (0/1 = coinc34/coinc44)
      void             SetCoinc44(Int_t coinc44=0) { fCoinc44 = coinc44; }
    
      virtual void     SetbitM(Int_t strip, Int_t cathode, Int_t chamber);

      virtual void     Pattern(const Option_t *option = "X Y") const; // default option displays X then Y bp

      virtual void     Reset();
      virtual void     ResetResponse();


                       /// Return i-th Switch value
      virtual UShort_t GetSwitch(Int_t i) const {return (UShort_t)fMpLocalBoard->GetSwitch(i);}

                       /// Return Transverse connector
      virtual Bool_t   GetTC() const {return fMpLocalBoard->GetTC();}

                       /// Return Board number
      virtual Int_t    GetNumber() const { return fMpLocalBoard->GetId(); }
    
      /// Is notified (copy boards are not)
      virtual Bool_t    IsNotified() const { return fMpLocalBoard->IsNotified(); }

                       /// Return Crate name
      virtual TString  GetCrate() const {return fMpLocalBoard->GetCrate();}

                       /// Return XY
      virtual void     GetXY(UShort_t XY[2][4]) const {for (Int_t i=0;i<2;i++) for (Int_t j=0;j<4;j++) XY[i][j] = fXY[i][j];}

                       /// Return XY
      virtual UShort_t GetXY(Int_t i, Int_t j) const {return fXY[i][j];} 

                       /// Set XY
      virtual void     SetXY(UShort_t XY[2][4]) {for (Int_t i=0;i<2;i++) for (Int_t j=0;j<4;j++) fXY[i][j] = XY[i][j];}

      virtual void     Conf() const;

      virtual void     Response();

      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]);
      
      virtual void     Sort2x5(Int_t dev1[6], Int_t dev2[6],
                               Int_t minDev[6], Int_t &dev1GTdev2);
      
      virtual void     TrigY(Int_t y1[16], Int_t y2[16], Int_t y3[16], Int_t y4[16],
                             Int_t y3u[16], Int_t y3d[16], Int_t y4u[16], Int_t y4d[16]);

                       /// Set XYU
      virtual void     SetXYU(UShort_t V[2][4]) {for (Int_t i=0;i<2;i++) for (Int_t j=0;j<4;j++) fXYU[i][j] = V[i][j];}

                       /// Return XYU
      virtual void     GetXYU(UShort_t V[2][4]) const {for (Int_t i=0;i<2;i++) for (Int_t j=0;j<4;j++) V[i][j] = fXYU[i][j];}

                       /// Set XYD
      virtual void     SetXYD(UShort_t V[2][4]) {for (Int_t i=0;i<2;i++) for (Int_t j=0;j<4;j++) fXYD[i][j] = V[i][j];}

                       /// Return XYD
      virtual void     GetXYD(UShort_t V[2][4]) const {for (Int_t i=0;i<2;i++) for (Int_t j=0;j<4;j++) V[i][j] = fXYD[i][j];}

      virtual void     Scan(Option_t *option = "") const;

      virtual Int_t    GetI() const;

      virtual void     LocalTrigger();

                       /// Return info if Board has triggered
      virtual Int_t    Triggered() const {return fOutput;}

                       /// Return MT1 X position of the valid road
      virtual Int_t    GetStripX11() const {return fStripX11;}

                       /// Return MT1 Y position of the valid road
      virtual Int_t    GetStripY11() const {return fStripY11;}

                       /// Return Deviation 
      virtual Int_t    GetDev() const {return fDev;}

                       /// Return Sign of Deviation 
      virtual Int_t    GetSdev() const {return fMinDev[4];}
      
                       /// Return Trigger in Y
      virtual Int_t    GetTrigY() const {return fTrigY;}

      virtual Bool_t   IsTrigY() const;

      virtual Bool_t   IsTrigX() const;

      AliMUONLocalTriggerBoard(const AliMUONLocalTriggerBoard& right);
      AliMUONLocalTriggerBoard&  operator = (const AliMUONLocalTriggerBoard& right);

      virtual Bool_t IsNull() const;
      
   protected:

      static const Int_t fgkCircuitId[234]; ///< old numbering (to be removed)

      virtual void     Resp(Option_t *option) const; ///< local trigger info before ("I") and after ("F") LUT

      virtual void     BP(const Option_t *option) const;   ///< display X/Y bp

   private:
      AliMpLocalBoard*  fMpLocalBoard; ///< pointer to the local board mapping 

      UShort_t fXY[2][4];         ///< Bit pattern
      UShort_t fXYU[2][4];        ///< Bit pattern UP
      UShort_t fXYD[2][4];        ///< Bit pattern DOWN
      UShort_t fMask[2][4];       ///< Mask

      Int_t    fStripX11;         ///< MT1 X position of the valid road 

      Int_t    fStripY11;         ///< MT1 Y position of the valid road

      Int_t    fDev;              ///< X deviation as in table 3-1 of Local Trigger Board PRR
      Int_t    fTrigY;            ///< Trigger in Y
      
      Int_t    fLutLpt[2];        ///< Low Pt cuts estimated from LUT
      Int_t    fLutHpt[2];        ///< High Pt cuts estimated from LUT

//    Outputs of the local logic
      Int_t    fOutput;           ///< Board has triggered
      Int_t    fMinDevStrip[5];   ///< X (from algo)
      Int_t    fMinDev[5];        ///< Dev (from algo)
      Int_t    fCoordY[5];        ///< Y (from algo)
      
      AliMUONTriggerLut *fLUT;    //!< Pointer to trigger LUT, that we do not own.
      Int_t    fCoinc44;          ///< Coinc 44 (0/1 = coinc34/coinc44)
      
      ClassDef(AliMUONLocalTriggerBoard,2) //Implementation of local trigger board objects
};
#endif
 AliMUONLocalTriggerBoard.h:1
 AliMUONLocalTriggerBoard.h:2
 AliMUONLocalTriggerBoard.h:3
 AliMUONLocalTriggerBoard.h:4
 AliMUONLocalTriggerBoard.h:5
 AliMUONLocalTriggerBoard.h:6
 AliMUONLocalTriggerBoard.h:7
 AliMUONLocalTriggerBoard.h:8
 AliMUONLocalTriggerBoard.h:9
 AliMUONLocalTriggerBoard.h:10
 AliMUONLocalTriggerBoard.h:11
 AliMUONLocalTriggerBoard.h:12
 AliMUONLocalTriggerBoard.h:13
 AliMUONLocalTriggerBoard.h:14
 AliMUONLocalTriggerBoard.h:15
 AliMUONLocalTriggerBoard.h:16
 AliMUONLocalTriggerBoard.h:17
 AliMUONLocalTriggerBoard.h:18
 AliMUONLocalTriggerBoard.h:19
 AliMUONLocalTriggerBoard.h:20
 AliMUONLocalTriggerBoard.h:21
 AliMUONLocalTriggerBoard.h:22
 AliMUONLocalTriggerBoard.h:23
 AliMUONLocalTriggerBoard.h:24
 AliMUONLocalTriggerBoard.h:25
 AliMUONLocalTriggerBoard.h:26
 AliMUONLocalTriggerBoard.h:27
 AliMUONLocalTriggerBoard.h:28
 AliMUONLocalTriggerBoard.h:29
 AliMUONLocalTriggerBoard.h:30
 AliMUONLocalTriggerBoard.h:31
 AliMUONLocalTriggerBoard.h:32
 AliMUONLocalTriggerBoard.h:33
 AliMUONLocalTriggerBoard.h:34
 AliMUONLocalTriggerBoard.h:35
 AliMUONLocalTriggerBoard.h:36
 AliMUONLocalTriggerBoard.h:37
 AliMUONLocalTriggerBoard.h:38
 AliMUONLocalTriggerBoard.h:39
 AliMUONLocalTriggerBoard.h:40
 AliMUONLocalTriggerBoard.h:41
 AliMUONLocalTriggerBoard.h:42
 AliMUONLocalTriggerBoard.h:43
 AliMUONLocalTriggerBoard.h:44
 AliMUONLocalTriggerBoard.h:45
 AliMUONLocalTriggerBoard.h:46
 AliMUONLocalTriggerBoard.h:47
 AliMUONLocalTriggerBoard.h:48
 AliMUONLocalTriggerBoard.h:49
 AliMUONLocalTriggerBoard.h:50
 AliMUONLocalTriggerBoard.h:51
 AliMUONLocalTriggerBoard.h:52
 AliMUONLocalTriggerBoard.h:53
 AliMUONLocalTriggerBoard.h:54
 AliMUONLocalTriggerBoard.h:55
 AliMUONLocalTriggerBoard.h:56
 AliMUONLocalTriggerBoard.h:57
 AliMUONLocalTriggerBoard.h:58
 AliMUONLocalTriggerBoard.h:59
 AliMUONLocalTriggerBoard.h:60
 AliMUONLocalTriggerBoard.h:61
 AliMUONLocalTriggerBoard.h:62
 AliMUONLocalTriggerBoard.h:63
 AliMUONLocalTriggerBoard.h:64
 AliMUONLocalTriggerBoard.h:65
 AliMUONLocalTriggerBoard.h:66
 AliMUONLocalTriggerBoard.h:67
 AliMUONLocalTriggerBoard.h:68
 AliMUONLocalTriggerBoard.h:69
 AliMUONLocalTriggerBoard.h:70
 AliMUONLocalTriggerBoard.h:71
 AliMUONLocalTriggerBoard.h:72
 AliMUONLocalTriggerBoard.h:73
 AliMUONLocalTriggerBoard.h:74
 AliMUONLocalTriggerBoard.h:75
 AliMUONLocalTriggerBoard.h:76
 AliMUONLocalTriggerBoard.h:77
 AliMUONLocalTriggerBoard.h:78
 AliMUONLocalTriggerBoard.h:79
 AliMUONLocalTriggerBoard.h:80
 AliMUONLocalTriggerBoard.h:81
 AliMUONLocalTriggerBoard.h:82
 AliMUONLocalTriggerBoard.h:83
 AliMUONLocalTriggerBoard.h:84
 AliMUONLocalTriggerBoard.h:85
 AliMUONLocalTriggerBoard.h:86
 AliMUONLocalTriggerBoard.h:87
 AliMUONLocalTriggerBoard.h:88
 AliMUONLocalTriggerBoard.h:89
 AliMUONLocalTriggerBoard.h:90
 AliMUONLocalTriggerBoard.h:91
 AliMUONLocalTriggerBoard.h:92
 AliMUONLocalTriggerBoard.h:93
 AliMUONLocalTriggerBoard.h:94
 AliMUONLocalTriggerBoard.h:95
 AliMUONLocalTriggerBoard.h:96
 AliMUONLocalTriggerBoard.h:97
 AliMUONLocalTriggerBoard.h:98
 AliMUONLocalTriggerBoard.h:99
 AliMUONLocalTriggerBoard.h:100
 AliMUONLocalTriggerBoard.h:101
 AliMUONLocalTriggerBoard.h:102
 AliMUONLocalTriggerBoard.h:103
 AliMUONLocalTriggerBoard.h:104
 AliMUONLocalTriggerBoard.h:105
 AliMUONLocalTriggerBoard.h:106
 AliMUONLocalTriggerBoard.h:107
 AliMUONLocalTriggerBoard.h:108
 AliMUONLocalTriggerBoard.h:109
 AliMUONLocalTriggerBoard.h:110
 AliMUONLocalTriggerBoard.h:111
 AliMUONLocalTriggerBoard.h:112
 AliMUONLocalTriggerBoard.h:113
 AliMUONLocalTriggerBoard.h:114
 AliMUONLocalTriggerBoard.h:115
 AliMUONLocalTriggerBoard.h:116
 AliMUONLocalTriggerBoard.h:117
 AliMUONLocalTriggerBoard.h:118
 AliMUONLocalTriggerBoard.h:119
 AliMUONLocalTriggerBoard.h:120
 AliMUONLocalTriggerBoard.h:121
 AliMUONLocalTriggerBoard.h:122
 AliMUONLocalTriggerBoard.h:123
 AliMUONLocalTriggerBoard.h:124
 AliMUONLocalTriggerBoard.h:125
 AliMUONLocalTriggerBoard.h:126
 AliMUONLocalTriggerBoard.h:127
 AliMUONLocalTriggerBoard.h:128
 AliMUONLocalTriggerBoard.h:129
 AliMUONLocalTriggerBoard.h:130
 AliMUONLocalTriggerBoard.h:131
 AliMUONLocalTriggerBoard.h:132
 AliMUONLocalTriggerBoard.h:133
 AliMUONLocalTriggerBoard.h:134
 AliMUONLocalTriggerBoard.h:135
 AliMUONLocalTriggerBoard.h:136
 AliMUONLocalTriggerBoard.h:137
 AliMUONLocalTriggerBoard.h:138
 AliMUONLocalTriggerBoard.h:139
 AliMUONLocalTriggerBoard.h:140
 AliMUONLocalTriggerBoard.h:141
 AliMUONLocalTriggerBoard.h:142
 AliMUONLocalTriggerBoard.h:143
 AliMUONLocalTriggerBoard.h:144
 AliMUONLocalTriggerBoard.h:145
 AliMUONLocalTriggerBoard.h:146
 AliMUONLocalTriggerBoard.h:147
 AliMUONLocalTriggerBoard.h:148
 AliMUONLocalTriggerBoard.h:149
 AliMUONLocalTriggerBoard.h:150
 AliMUONLocalTriggerBoard.h:151
 AliMUONLocalTriggerBoard.h:152
 AliMUONLocalTriggerBoard.h:153
 AliMUONLocalTriggerBoard.h:154
 AliMUONLocalTriggerBoard.h:155
 AliMUONLocalTriggerBoard.h:156
 AliMUONLocalTriggerBoard.h:157
 AliMUONLocalTriggerBoard.h:158
 AliMUONLocalTriggerBoard.h:159
 AliMUONLocalTriggerBoard.h:160
 AliMUONLocalTriggerBoard.h:161
 AliMUONLocalTriggerBoard.h:162
 AliMUONLocalTriggerBoard.h:163
 AliMUONLocalTriggerBoard.h:164