]>
Commit | Line | Data |
---|---|---|
056c75e1 | 1 | #ifndef AliTRDTESTBEAM_H |
2 | #define AliTRDTESTBEAM_H | |
0eedb47d | 3 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * |
4 | * See cxx source for full Copyright notice */ | |
5 | ||
6 | /* $Id$ */ | |
7 | ||
00d52803 | 8 | //////////////////////////////////////////////////////////////////////////// |
9 | // // | |
10 | // Class to handle the test beam data of 2007 // | |
11 | // // | |
12 | // Authors: // | |
13 | // Sylwester Radomski (radomski@physi.uni-heidelberg.de) // | |
14 | // Anton Andronic (A.Andronic@gsi.de) // | |
15 | // // | |
16 | //////////////////////////////////////////////////////////////////////////// | |
0eedb47d | 17 | |
6511d650 | 18 | //#define MAX_SI 2000 |
0eedb47d | 19 | |
20 | #include "TObject.h" | |
21 | ||
22 | class AliTRDrawStreamV2; | |
508c0804 | 23 | class AliTRDrawStreamTB; |
00d52803 | 24 | |
0eedb47d | 25 | using namespace std; |
26 | ||
27 | class AliTRDtestBeam: public TObject { | |
28 | ||
29 | public: | |
6511d650 | 30 | |
0eedb47d | 31 | AliTRDtestBeam(); // ctor |
32 | AliTRDtestBeam(const char *filename); // constructor | |
01abcaa3 | 33 | AliTRDtestBeam(const AliTRDtestBeam &tb); |
056c75e1 | 34 | AliTRDtestBeam& operator = (const AliTRDtestBeam& /*tb*/) { return *this; }; |
6511d650 | 35 | virtual ~AliTRDtestBeam(); // dtor |
0eedb47d | 36 | |
37 | Int_t NextEvent(); | |
38 | ||
508c0804 | 39 | AliTRDrawStreamTB *GetTRDrawStream(); // needs RawStreamTB |
0eedb47d | 40 | |
41 | // silicon | |
6511d650 | 42 | Short_t GetNSi1() const {return fNSi1;} |
43 | Short_t GetNSi2() const {return fNSi2;} | |
0eedb47d | 44 | |
6511d650 | 45 | Int_t GetSi1Address(Int_t i) const {return (i<fNSi1)? fSi1Address[i] : -1;}; |
46 | Int_t GetSi2Address(Int_t i) const {return (i<fNSi2)? fSi2Address[i] : -1;}; | |
0eedb47d | 47 | |
6511d650 | 48 | Int_t GetSi1Charge(Int_t i) const {return (i<fNSi1)? fSi1Charge[i] : -1;}; |
056c75e1 | 49 | Int_t GetSi2Charge(Int_t i) const {return (i<fNSi2)? fSi2Charge[i] : -1;}; |
0eedb47d | 50 | |
6511d650 | 51 | Double_t GetX(Int_t n) const {return (n<2)? fX[n] : -1;} |
52 | Double_t GetY(Int_t n) const {return (n<2)? fY[n] : -1;} | |
53 | Double_t GetQx(Int_t n) const {return (n<2)? fQx[n] : -1;} | |
54 | Double_t GetQy(Int_t n) const {return (n<2)? fQy[n] : -1;} | |
0eedb47d | 55 | |
56 | // calo | |
6511d650 | 57 | Double_t GetCher() const {return fCher;} |
58 | Double_t GetPb() const {return fPb;} | |
0eedb47d | 59 | |
60 | protected: | |
61 | ||
6511d650 | 62 | ifstream *fDataStream; // input data stream |
0eedb47d | 63 | |
6511d650 | 64 | Bool_t fHeaderIsRead; // do we read Header ? |
65 | Int_t fEventCount; // number of events | |
66 | Int_t fLimit; // = 4 | |
67 | Int_t fCurrent; // ... | |
68 | ||
69 | Int_t fDdlOff; // offset to DDL data | |
70 | Int_t fSiOff; // offset to Silicon data | |
71 | Int_t fQdcOff; // offset to Cherenkov and LeadGlass data | |
72 | Int_t fDdlSize; // size of DDL data | |
73 | ||
74 | Char_t *fFileHeader; // file header data | |
75 | Char_t *fEventHeader; // event header data | |
76 | Char_t *fEventData; // actual event data | |
0eedb47d | 77 | |
78 | // silicon data | |
79 | ||
6511d650 | 80 | Short_t fNSi1; // number of fired silicon pads from Si1 |
81 | Short_t fNSi2; // fired pads in Si2 | |
0eedb47d | 82 | |
6511d650 | 83 | Int_t fSi1Address[1270]; // addresses of fires silicon pads Si1 |
84 | Int_t fSi2Address[1270]; // addresses if fires silicon pads Si2 | |
0eedb47d | 85 | |
6511d650 | 86 | Int_t fSi1Charge[1270]; // charge collected on Si1 |
87 | Int_t fSi2Charge[1270]; // charge collected on Si2 | |
0eedb47d | 88 | |
89 | // reconstructed Silicon data | |
90 | ||
6511d650 | 91 | Double_t fX[2]; // x position for Si1 and Si2 |
92 | Double_t fY[2]; // y position | |
93 | Double_t fQx[2]; // charge on X | |
94 | Double_t fQy[2]; // charge on y | |
0eedb47d | 95 | |
96 | // cherenkov glass | |
6511d650 | 97 | Double_t fCher; // cherenkov signal |
98 | Double_t fPb; // lead glass signal | |
0eedb47d | 99 | |
100 | ||
101 | // data reading | |
102 | ||
00d52803 | 103 | Int_t Int(Int_t i, Char_t *start) const; |
0eedb47d | 104 | Int_t DecodeSi(); |
105 | ||
106 | // | |
6511d650 | 107 | static const Long_t fgkFileHeadSize; //= 544; // ? |
108 | static const Long_t fgkEventHeadSize; // = 68; //? | |
109 | static const Long_t fgkLdcHeadSize; // = 68; //? | |
110 | static const Long_t fgkEquipHeadSize; // = 28; // | |
111 | static const Int_t fgkVmeIn; //=1; //VME event in | |
112 | static const Int_t fgkSimIn; //=1; //Si-strips in | |
0eedb47d | 113 | |
114 | //typedef char byte; | |
115 | ||
116 | //offsets in bytes | |
6511d650 | 117 | static const Int_t fgkPosRun; // = 20; //run nr. (in file and event header) |
118 | static const Int_t fgkPosLength; // = 0; //event/equip. length | |
119 | static const Int_t fgkEqId; // = 8; //equipment id. | |
120 | static const Int_t fgkPosSiOff; // = 12; //Si data size offset (3 extra words!!!) | |
0eedb47d | 121 | |
122 | ClassDef(AliTRDtestBeam,1) // description | |
6511d650 | 123 | |
0eedb47d | 124 | }; |
125 | ||
6511d650 | 126 | #endif |
0eedb47d | 127 |