]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/AliMUONTriggerDecision.h
Update rawdata format for trigger (Christian)
[u/mrichter/AliRoot.git] / MUON / AliMUONTriggerDecision.h
1 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2  * See cxx source for full Copyright notice                               */
3
4 /* $Id$ */
5 // Revision of includes 07/05/2004
6
7 #ifndef ALIMUONTRIGGERDECISION_H
8 #define ALIMUONTRIGGERDECISION_H
9
10 /// \ingroup sim
11 /// \class AliMUONTriggerDecision
12 /// \brief MUON trigger decision class 
13 ///
14 /// \author Philippe Crochet (LPCCFd)
15
16
17 #include <TObject.h>
18 #include "AliMUONLocalTrigger.h"
19
20 class TClonesArray;
21
22 class AliLoader;
23 class AliMUONData;
24 class AliMUON;
25 class AliRawReader;
26
27
28 class AliMUONTriggerDecision : public TObject 
29 {
30  public:
31   AliMUONTriggerDecision(AliLoader* loader, Int_t iprint = 0, AliMUONData* data = 0); // constructor
32   AliMUONTriggerDecision(); // constructor
33   ~AliMUONTriggerDecision();                  // destructor
34   
35   AliMUONData*   GetMUONData() {return fMUONData;}
36   void Trigger();
37   void ResetBit();
38   void SetBit();
39   void SetBitUpDownY();
40
41   void TrigX(Int_t ch1q[16], Int_t ch2q[16], Int_t ch3q[32], Int_t ch4q[32], 
42              Int_t coinc44, Int_t minDevStrip[5], Int_t minDev[5]);
43   void Sort2x5(Int_t dev1[6], Int_t dev2[6],
44                Int_t minDev[6], Int_t &dev1GTdev2);
45   void TrigY(Int_t y1[16], Int_t y2[16], Int_t y3[16], Int_t y4[16],
46              Int_t y3u[16], Int_t y3d[16], Int_t y4u[16], Int_t y4d[16],
47              Int_t x2m, Int_t x2ud, Int_t orMud[2], Int_t resetMid, 
48              Int_t coinc44, Int_t coordY[5]);
49   void LocalTrigger(Int_t icirc, Int_t minDevStrip[5], 
50                     Int_t minDev[5], Int_t coordY[5], 
51                     Int_t &iTrigger);    
52   void GlobalTrigger();
53
54   void Digits2Trigger(); // main function for digitizer
55
56   void ClearDigits();
57   TClonesArray* Digits(Int_t DetectionPlane);
58
59   void AddDigit(
60                 Int_t id, Int_t* tracks, Int_t* charges, Int_t* digits,
61                 Int_t digitindex
62         );
63
64   // print-debug
65   void PrintBitPatXInput(Int_t icirc);
66   void PrintBitPatYInput(Int_t icirc);
67   void PrintLocalOutput(Int_t minDevStrip[5], Int_t minDev[5], 
68                         Int_t coordY[5]);
69
70   // return member data information
71   Int_t GetITrigger(Int_t icirc) const;
72   Int_t GetStripX11(Int_t icirc) const;
73   Int_t GetDev(Int_t icirc) const;
74   Int_t GetStripY11(Int_t icirc) const;
75   void GetLutOutput(Int_t icirc, Int_t lpt[2], Int_t hpt[2], Int_t apt[2]) const;
76   void GetGlobalTrigger(Int_t singlePlus[3], Int_t singleMinus[3], 
77                         Int_t singleUndef[3], Int_t pairUnlike[3], 
78                         Int_t pairLike[3]) const;  
79
80 protected:
81
82   AliMUONTriggerDecision(const AliMUONTriggerDecision& rhs);
83   AliMUONTriggerDecision& operator=(const AliMUONTriggerDecision& rhs);
84
85   void ClearDigitNumbers();
86
87   void DigitFiredCircuit(
88                 Int_t circuit, Int_t cathode,
89                 Int_t chamber, Int_t digit
90         );
91
92
93   Int_t fDebug;                ///< print option     
94
95   // Global Trigger information [0] : Low pt, [1] : High pt, [2] : All pt 
96   Int_t fGlobalSinglePlus[3];  ///< tot num of single plus
97   Int_t fGlobalSingleMinus[3]; ///< tot num of single minus
98   Int_t fGlobalSingleUndef[3]; ///< tot num of single undefined
99   Int_t fGlobalPairUnlike[3];  ///< tot num of unlike-sign pairs
100   Int_t fGlobalPairLike[3];    ///< tot num of like-sign pairs
101
102   // Local Trigger information
103   Int_t fTrigger[234];  ///< fTrigger = 0 : no trigger, 1 : trigger
104   Int_t fStripX11[234];  ///< X strip in MC11 which triggers
105   Int_t fDev[234];       ///< deviation which triggers
106   Int_t fStripY11[234];  ///< Y strip in MC11 which triggers
107   Int_t fLutLpt[234][2]; ///< Local Trigger info Low pt
108   Int_t fLutHpt[234][2]; ///< Local Trigger info High pt
109   Int_t fLutApt[234][2]; ///< Local Trigger info All pt
110
111   // bit pattern
112   Int_t fXbit11[234][16]; ///< bit pattern XM11
113   Int_t fXbit12[234][16]; ///< bit pattern XM12
114   Int_t fXbit21[234][32]; ///< bit pattern XM21
115   Int_t fXbit22[234][32]; ///< bit pattern XM22
116   Int_t fYbit11[234][16]; ///< bit pattern YM11
117   Int_t fYbit12[234][16]; ///< bit pattern YM12
118   Int_t fYbit21[234][16]; ///< bit pattern YM21
119   Int_t fYbit22[234][16]; ///< bit pattern YM22
120
121   Int_t fYbit21U[234][16]; ///< bit pattern YM21 Up
122   Int_t fYbit22U[234][16]; ///< bit pattern YM22 Up
123   Int_t fYbit21D[234][16]; ///< bit pattern YM21 Down
124   Int_t fYbit22D[234][16]; ///< bit pattern YM22 Down
125
126   TArrayI fDigitNumbers[234];  //!< The digit number that fired a circuit.
127   
128   AliLoader*     fLoader;             //!< alice loader
129   TObjArray*     fTriggerCircuit;     //!< List of Trigger Circuit
130   TObjArray*     fDigits;             ///< temp array for digits (both cathodes !) for trigger
131   TArrayI*       fDigitIndices;       //!< Array of digit index numbers, one for each entry in fDigits.
132
133   AliMUONData*   fMUONData;           //!< Data container for MUON subsystem 
134   AliMUON*       fMUON;               //!< pointer to MUON  
135
136   // ???
137   //  TClonesArray* fLocalTriggers;   ///< Local Triggers
138   // Int_t fNLocalTriggers;           ///< Number of Local Triggers
139
140   ClassDef(AliMUONTriggerDecision,1) // Trigger Decision class
141 };
142 #endif
143
144
145
146
147
148
149