]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MUON/AliMUONLocalStruct.h
New version of SPD raw-data reconstruction. The format now correponds to the actual...
[u/mrichter/AliRoot.git] / MUON / AliMUONLocalStruct.h
CommitLineData
32def6aa 1#ifndef ALIMUONLOCALSTRUCT_H
2#define ALIMUONLOCALSTRUCT_H
3/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
5
6/*$Id$*/
7
8/// \ingroup raw
9/// \class AliMUONLocalStruct
10/// \brief rawdata local card structure for trigger
11///
12/// \author Christian Finck
13
14#include <TObject.h>
dfba12ee 15#include <TMath.h>
32def6aa 16
17class AliMUONLocalStruct : public TObject{
18
19public:
20 AliMUONLocalStruct();
21 AliMUONLocalStruct(const AliMUONLocalStruct& event);
22 AliMUONLocalStruct& operator=(const AliMUONLocalStruct& event);
23
24
25 virtual ~AliMUONLocalStruct(){;}
26
27 // local board info
28 UInt_t GetData(Int_t n) const {return fData[n];}
29
30 UShort_t GetX2() const {return (fData[0] >> 16) & 0xFFFF;}
31 UShort_t GetX1() const {return (fData[0]) & 0xFFFF;}
32 UShort_t GetX4() const {return (fData[1] >> 16) & 0xFFFF;}
33 UShort_t GetX3() const {return (fData[1]) & 0xFFFF;}
34
35 UShort_t GetY2() const {return (fData[2] >> 16) & 0xFFFF;}
36 UShort_t GetY1() const {return (fData[2]) & 0xFFFF;}
37 UShort_t GetY4() const {return (fData[3] >> 16) & 0xFFFF;}
38 UShort_t GetY3() const {return (fData[3]) & 0xFFFF;}
39
b6ab2009 40 UChar_t GetId() const {return fData[4] >> 19 & 0xF;}
41 UChar_t GetDec() const {return fData[4] >> 15 & 0xF;}
42 UChar_t GetTriggerY() const {return fData[4] >> 14 & 0x1;}
43 UChar_t GetYPos() const {return fData[4] >> 10 & 0xF;}
44 UChar_t GetXDev() const {return fData[4] >> 5 & 0x1F;}
45 UChar_t GetXPos() const {return fData[4] & 0x1F;}
32def6aa 46
47 Int_t GetLpt() const {return (GetDec() & 0x3);}
48 Int_t GetHpt() const {return (GetDec() >> 2) & 0x3;}
49
50 void SetData(UInt_t d, Int_t n) {fData[n] = d;}
51
52 UInt_t* GetData() {return &fData[0];}
53
54 // Scaler methods
55 UInt_t GetL0() const {return fL0;}
56 UInt_t GetHold() const {return fHold;}
57 UInt_t GetClock() const {return fClk;}
58 UChar_t GetSwitch() const {return (fEOS >> 2) & 0x3FF;}
59 UChar_t GetComptXY() const {return fEOS & 3;}
60
dfba12ee 61 UShort_t GetXY1(Int_t n) const {return (n % 2 == 0) ?
62 (fScaler[TMath::Nint(Float_t(n/2))] & 0xFFFF) :
63 (fScaler[TMath::Nint(Float_t(n/2))] >> 16) & 0xFFFF;}
64
65 UShort_t GetXY2(Int_t n) const {return (n % 2 == 0) ?
66 (fScaler[8 + TMath::Nint(Float_t(n/2))] & 0xFFFF) :
67 (fScaler[8 + TMath::Nint(Float_t(n/2))] >> 16) & 0xFFFF;}
68
69 UShort_t GetXY3(Int_t n) const {return (n % 2 == 0) ?
70 (fScaler[8*2 + TMath::Nint(Float_t(n/2))] & 0xFFFF) :
71 (fScaler[8*2 + TMath::Nint(Float_t(n/2))] >> 16) & 0xFFFF;}
72
73 UShort_t GetXY4(Int_t n) const {return (n % 2 == 0) ?
74 (fScaler[8*3 + TMath::Nint(Float_t(n/2))] & 0xFFFF) :
75 (fScaler[8*3 + TMath::Nint(Float_t(n/2))] >> 16) & 0xFFFF;}
32def6aa 76
77 UInt_t* GetScalers() {return &fL0;}
78
79 // get length
80 Int_t GetScalerLength() const {return fgkScalerLength;}
81 Int_t GetLength() const {return fgkLength;}
82 UInt_t GetEndOfLocal() const {return fgkEndOfLocal;}
b2e46925 83 UInt_t GetDisableWord() const {return fgkDisableWord;}
32def6aa 84
85 // set random numbers to fill variable
86 void SetScalersNumbers();
87
88 private:
89
90 // local info
829425a5 91 UInt_t fData[5]; ///< local data
32def6aa 92
93 // local card scalers
829425a5 94 UInt_t fL0; ///< local L0
95 UInt_t fHold; ///< local hold (dead time)
96 UInt_t fClk; ///< local clock
32def6aa 97
829425a5 98 UInt_t fLPtNTrig; ///< local low Pt no trigger
99 UInt_t fHPtNTrig; ///< local high Pt no trigger
32def6aa 100
829425a5 101 UInt_t fLPtRTrig; ///< local low Pt right trigger
102 UInt_t fHPtRTrig; ///< local high Pt right trigger
32def6aa 103
829425a5 104 UInt_t fLPtLTrig; ///< local low Pt left trigger
105 UInt_t fHPtLTrig; ///< local high Pt left trigger
32def6aa 106
829425a5 107 UInt_t fLPtSTrig; ///< local low Pt straight trigger
108 UInt_t fHPtSTrig; ///< local high Pt straight trigger
32def6aa 109
829425a5 110 UInt_t fScaler[8*4]; ///< local data
111 UInt_t fEOS; ///< contains switches conf. & flag for reading X (0) or Y (1) in fScaler
112 UInt_t fReset; ///< reset signal
32def6aa 113
829425a5 114 static const Int_t fgkLength; ///< local info length in word
115 static const Int_t fgkScalerLength; ///< scaler length in word
116 static const UInt_t fgkEndOfLocal; ///< end of local info word
b6ab2009 117 static const UInt_t fgkDisableWord; ///< Word for "empty" slots
32def6aa 118
119 ClassDef(AliMUONLocalStruct,3)
120};
121#endif