ROOT logo
#ifndef ALIMUONLOCALTRIGGER_H
#define ALIMUONLOCALTRIGGER_H

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

/* $Id$ */
// Revision of includes 07/05/2004

/// \ingroup trigger
/// \class AliMUONLocalTrigger
/// \brief Reconstructed Local Trigger object
//  Author Ph. Crochet

#include <TObject.h>
#include "AliMUONRawStreamTriggerHP.h"

class AliMUONLocalStruct;
class TArrayS;

class AliMUONLocalTrigger : public TObject {
 public:
  AliMUONLocalTrigger();
  AliMUONLocalTrigger(const AliMUONLocalTrigger& rhs); // copy constructor !
  virtual ~AliMUONLocalTrigger();
  AliMUONLocalTrigger& operator=(const AliMUONLocalTrigger& rhs); 

  // getter methods
  //
        /// Return Circuit number
  Int_t LoCircuit() const {return fLoCircuit;}
        /// Return X strip in MT11
  Int_t LoStripX() const {return fLoStripX;}   
        /// Return Deviation
  Int_t LoDev() const {return fLoDev;}
        /// Return Sign of Deviation
  Int_t LoSdev() const {return fLoSdev;}
        /// Return Trig Y
  Int_t LoTrigY() const {return fLoTrigY;}
        /// Return Y strip in MT11
  Int_t LoStripY() const {return fLoStripY;}
        /// Return Low pt
  Int_t LoLpt() const {return fLoLpt;}
        /// Return High p
  Int_t LoHpt() const {return fLoHpt;}

           /// Return X strip pattern for chamber 11
  UShort_t GetX1Pattern() const {return fX1Pattern;}
           /// Return X strip pattern for chamber 12  
  UShort_t GetX2Pattern() const {return fX2Pattern;}
           /// Return X strip pattern for chamber 21 
  UShort_t GetX3Pattern() const {return fX3Pattern;}
           /// Return X strip pattern for chamber 22
  UShort_t GetX4Pattern() const {return fX4Pattern;}
           /// return X pattern array
   void    GetXPattern(TArrayS& array) const;


           /// Return Y strip pattern for chamber 11 
  UShort_t GetY1Pattern() const {return fY1Pattern;}
           /// Return Y strip pattern for chamber 12
  UShort_t GetY2Pattern() const {return fY2Pattern;}
           /// Return Y strip pattern for chamber 21
  UShort_t GetY3Pattern() const {return fY3Pattern;}
           /// Return Y strip pattern for chamber 22
  UShort_t GetY4Pattern() const {return fY4Pattern;}
           /// return Y pattern array
   void    GetYPattern(TArrayS& array) const;

  Char_t GetLoDecision() const;
  
  Int_t GetDeviation() const;
  void  SetDeviation(Int_t deviation);

  /// Trigger response X strips
  Bool_t IsTrigX() const;
  /// Trigger response Y strips
  Bool_t IsTrigY() const;

  /// Hit pattern from the re-calculated trigger response after removing chambers one-by-one
  UShort_t GetHitPatternFromResponse() const {return fHitPatternFromResponse; }

  /// Triggers from the re-calculated trigger response after removing chambers one-by-one
  UChar_t GetTriggerWithoutChamber() const {return fTriggerWithoutChamber; }

  // setter methods
  //
           /// Set Circuit number
  void SetLoCircuit(Int_t loCir) {fLoCircuit = loCir;}
           /// Set X strip in MT11
  void SetLoStripX(Int_t loStrX) {fLoStripX = loStrX;}   
           /// Set Deviation
  void SetLoDev(Int_t loDev)     {fLoDev = loDev;}
             /// Set Sign of Deviation
  void SetLoSdev(Int_t loSdev)   {fLoSdev = loSdev;}
           /// Set Trig Y
  void SetLoTrigY(Int_t loTrigY) {fLoTrigY = loTrigY;}
           /// Set Y strip in MT11
  void SetLoStripY(Int_t loStrY) {fLoStripY = loStrY;}
           /// Set Low pt
  void SetLoLpt(Int_t loLpt)     {fLoLpt = loLpt;}
           /// Set High pt
  void SetLoHpt(Int_t loHpt)     {fLoHpt = loHpt;}
   
           /// Set X strip pattern for chamber 11
  void SetX1Pattern(UShort_t pat) {fX1Pattern = pat;}
           /// Set X strip pattern for chamber 12
  void SetX2Pattern(UShort_t pat) {fX2Pattern = pat;}
           /// Set X strip pattern for chamber 21
  void SetX3Pattern(UShort_t pat) {fX3Pattern = pat;}
           /// Set X strip pattern for chamber 22
  void SetX4Pattern(UShort_t pat) {fX4Pattern = pat;}

           /// Set Y strip pattern for chamber 11
  void SetY1Pattern(UShort_t pat) {fY1Pattern = pat;}
           /// Set Y strip pattern for chamber 12
  void SetY2Pattern(UShort_t pat) {fY2Pattern = pat;}
           /// Set Y strip pattern for chamber 21
  void SetY3Pattern(UShort_t pat) {fY3Pattern = pat;}
           /// Set Y strip pattern for chamber 22
  void SetY4Pattern(UShort_t pat) {fY4Pattern = pat;}

  void SetLocalStruct(Int_t loCircuit, AliMUONLocalStruct& localStruct);
  void SetLocalStruct(Int_t loCircuit, const AliMUONRawStreamTriggerHP::AliLocalStruct& localStruct);

  Bool_t IsNull() const;
  
  virtual void Print(Option_t* opt="") const;
  
  virtual const char* GetName() const;

  /// The board would provide a trigger even after removing chamber ich [0,3]
  void SetTriggerWithoutChamber(Int_t ich){ fTriggerWithoutChamber |= 1 << (3 - ich); }

  /// Trigger algorithm did NOT find hit in the specified chamber and cathode
  void SetNoHitInPlane(Int_t icath, Int_t ich){ fHitPatternFromResponse &= ~(1 << (7 - 4*icath - ich)); }

private:
  Int_t fLoCircuit; ///< Circuit number 
  Int_t fLoStripX;  ///< X strip in MT11 
  Int_t fLoDev;     ///< Deviation
  Int_t fLoSdev;    ///< Sign of Deviation 
  Int_t fLoTrigY;   ///< Trig Y
  Int_t fLoStripY;  ///< Y strip in MT11 
  Int_t fLoLpt;     ///< Low pt  0 : nothing, 1 : Minus, 2 : Plus, 3 : Undef
  Int_t fLoHpt;     ///< High pt 0 : nothing, 1 : Minus, 2 : Plus, 3 : Undef
  
  UShort_t fX1Pattern; ///< X strip pattern for chamber 11
  UShort_t fX2Pattern; ///< X strip pattern for chamber 12
  UShort_t fX3Pattern; ///< X strip pattern for chamber 21
  UShort_t fX4Pattern; ///< X strip pattern for chamber 22

  UShort_t fY1Pattern; ///< Y strip pattern for chamber 11
  UShort_t fY2Pattern; ///< Y strip pattern for chamber 12
  UShort_t fY3Pattern; ///< Y strip pattern for chamber 21
  UShort_t fY4Pattern; ///< Y strip pattern for chamber 22

  UShort_t fHitPatternFromResponse; ///<  Fired plane according to re-computed repsonse
  UChar_t fTriggerWithoutChamber; ///< Pattern of triggers after chamber removal

  ClassDef(AliMUONLocalTrigger,5)  // reconstructed Local Trigger object
};
#endif






 AliMUONLocalTrigger.h:1
 AliMUONLocalTrigger.h:2
 AliMUONLocalTrigger.h:3
 AliMUONLocalTrigger.h:4
 AliMUONLocalTrigger.h:5
 AliMUONLocalTrigger.h:6
 AliMUONLocalTrigger.h:7
 AliMUONLocalTrigger.h:8
 AliMUONLocalTrigger.h:9
 AliMUONLocalTrigger.h:10
 AliMUONLocalTrigger.h:11
 AliMUONLocalTrigger.h:12
 AliMUONLocalTrigger.h:13
 AliMUONLocalTrigger.h:14
 AliMUONLocalTrigger.h:15
 AliMUONLocalTrigger.h:16
 AliMUONLocalTrigger.h:17
 AliMUONLocalTrigger.h:18
 AliMUONLocalTrigger.h:19
 AliMUONLocalTrigger.h:20
 AliMUONLocalTrigger.h:21
 AliMUONLocalTrigger.h:22
 AliMUONLocalTrigger.h:23
 AliMUONLocalTrigger.h:24
 AliMUONLocalTrigger.h:25
 AliMUONLocalTrigger.h:26
 AliMUONLocalTrigger.h:27
 AliMUONLocalTrigger.h:28
 AliMUONLocalTrigger.h:29
 AliMUONLocalTrigger.h:30
 AliMUONLocalTrigger.h:31
 AliMUONLocalTrigger.h:32
 AliMUONLocalTrigger.h:33
 AliMUONLocalTrigger.h:34
 AliMUONLocalTrigger.h:35
 AliMUONLocalTrigger.h:36
 AliMUONLocalTrigger.h:37
 AliMUONLocalTrigger.h:38
 AliMUONLocalTrigger.h:39
 AliMUONLocalTrigger.h:40
 AliMUONLocalTrigger.h:41
 AliMUONLocalTrigger.h:42
 AliMUONLocalTrigger.h:43
 AliMUONLocalTrigger.h:44
 AliMUONLocalTrigger.h:45
 AliMUONLocalTrigger.h:46
 AliMUONLocalTrigger.h:47
 AliMUONLocalTrigger.h:48
 AliMUONLocalTrigger.h:49
 AliMUONLocalTrigger.h:50
 AliMUONLocalTrigger.h:51
 AliMUONLocalTrigger.h:52
 AliMUONLocalTrigger.h:53
 AliMUONLocalTrigger.h:54
 AliMUONLocalTrigger.h:55
 AliMUONLocalTrigger.h:56
 AliMUONLocalTrigger.h:57
 AliMUONLocalTrigger.h:58
 AliMUONLocalTrigger.h:59
 AliMUONLocalTrigger.h:60
 AliMUONLocalTrigger.h:61
 AliMUONLocalTrigger.h:62
 AliMUONLocalTrigger.h:63
 AliMUONLocalTrigger.h:64
 AliMUONLocalTrigger.h:65
 AliMUONLocalTrigger.h:66
 AliMUONLocalTrigger.h:67
 AliMUONLocalTrigger.h:68
 AliMUONLocalTrigger.h:69
 AliMUONLocalTrigger.h:70
 AliMUONLocalTrigger.h:71
 AliMUONLocalTrigger.h:72
 AliMUONLocalTrigger.h:73
 AliMUONLocalTrigger.h:74
 AliMUONLocalTrigger.h:75
 AliMUONLocalTrigger.h:76
 AliMUONLocalTrigger.h:77
 AliMUONLocalTrigger.h:78
 AliMUONLocalTrigger.h:79
 AliMUONLocalTrigger.h:80
 AliMUONLocalTrigger.h:81
 AliMUONLocalTrigger.h:82
 AliMUONLocalTrigger.h:83
 AliMUONLocalTrigger.h:84
 AliMUONLocalTrigger.h:85
 AliMUONLocalTrigger.h:86
 AliMUONLocalTrigger.h:87
 AliMUONLocalTrigger.h:88
 AliMUONLocalTrigger.h:89
 AliMUONLocalTrigger.h:90
 AliMUONLocalTrigger.h:91
 AliMUONLocalTrigger.h:92
 AliMUONLocalTrigger.h:93
 AliMUONLocalTrigger.h:94
 AliMUONLocalTrigger.h:95
 AliMUONLocalTrigger.h:96
 AliMUONLocalTrigger.h:97
 AliMUONLocalTrigger.h:98
 AliMUONLocalTrigger.h:99
 AliMUONLocalTrigger.h:100
 AliMUONLocalTrigger.h:101
 AliMUONLocalTrigger.h:102
 AliMUONLocalTrigger.h:103
 AliMUONLocalTrigger.h:104
 AliMUONLocalTrigger.h:105
 AliMUONLocalTrigger.h:106
 AliMUONLocalTrigger.h:107
 AliMUONLocalTrigger.h:108
 AliMUONLocalTrigger.h:109
 AliMUONLocalTrigger.h:110
 AliMUONLocalTrigger.h:111
 AliMUONLocalTrigger.h:112
 AliMUONLocalTrigger.h:113
 AliMUONLocalTrigger.h:114
 AliMUONLocalTrigger.h:115
 AliMUONLocalTrigger.h:116
 AliMUONLocalTrigger.h:117
 AliMUONLocalTrigger.h:118
 AliMUONLocalTrigger.h:119
 AliMUONLocalTrigger.h:120
 AliMUONLocalTrigger.h:121
 AliMUONLocalTrigger.h:122
 AliMUONLocalTrigger.h:123
 AliMUONLocalTrigger.h:124
 AliMUONLocalTrigger.h:125
 AliMUONLocalTrigger.h:126
 AliMUONLocalTrigger.h:127
 AliMUONLocalTrigger.h:128
 AliMUONLocalTrigger.h:129
 AliMUONLocalTrigger.h:130
 AliMUONLocalTrigger.h:131
 AliMUONLocalTrigger.h:132
 AliMUONLocalTrigger.h:133
 AliMUONLocalTrigger.h:134
 AliMUONLocalTrigger.h:135
 AliMUONLocalTrigger.h:136
 AliMUONLocalTrigger.h:137
 AliMUONLocalTrigger.h:138
 AliMUONLocalTrigger.h:139
 AliMUONLocalTrigger.h:140
 AliMUONLocalTrigger.h:141
 AliMUONLocalTrigger.h:142
 AliMUONLocalTrigger.h:143
 AliMUONLocalTrigger.h:144
 AliMUONLocalTrigger.h:145
 AliMUONLocalTrigger.h:146
 AliMUONLocalTrigger.h:147
 AliMUONLocalTrigger.h:148
 AliMUONLocalTrigger.h:149
 AliMUONLocalTrigger.h:150
 AliMUONLocalTrigger.h:151
 AliMUONLocalTrigger.h:152
 AliMUONLocalTrigger.h:153
 AliMUONLocalTrigger.h:154
 AliMUONLocalTrigger.h:155
 AliMUONLocalTrigger.h:156
 AliMUONLocalTrigger.h:157
 AliMUONLocalTrigger.h:158
 AliMUONLocalTrigger.h:159
 AliMUONLocalTrigger.h:160
 AliMUONLocalTrigger.h:161
 AliMUONLocalTrigger.h:162
 AliMUONLocalTrigger.h:163
 AliMUONLocalTrigger.h:164
 AliMUONLocalTrigger.h:165
 AliMUONLocalTrigger.h:166
 AliMUONLocalTrigger.h:167
 AliMUONLocalTrigger.h:168
 AliMUONLocalTrigger.h:169