]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/AliMUONRawWriter.h
acafba632632e18bb510eb113cfbd65f5f6552e4
[u/mrichter/AliRoot.git] / MUON / AliMUONRawWriter.h
1 #ifndef ALIMUONRAWWRITER_H
2 #define ALIMUONRAWWRITER_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 rec
9 /// \class AliMUONRawWriter
10 /// \brief Raw data class for trigger and tracker chambers
11 ///
12 /// Writring Raw data class for trigger and tracker chambers
13
14 #include <TObject.h>
15 #include <TClonesArray.h>
16 #include "AliMUONBusStruct.h"
17 #include "AliRawDataHeader.h"
18 #include "TStopwatch.h"
19
20 class AliMUONData;
21 class AliMUONDigit;
22 class AliMUONDspHeader;
23 class AliMUONBlockHeader;
24 class AliMUONDarcHeader;
25 class AliMUONRegHeader;
26 class AliMUONLocalStruct;
27 class AliMUONGlobalTrigger;
28 class AliMpBusPatch;
29 class AliMUONTriggerCrateStore;
30 class AliMpSegFactory;
31
32 class AliMUONRawWriter : public TObject 
33 {
34  public:
35   AliMUONRawWriter(AliMUONData* data); // Constructor
36   virtual ~AliMUONRawWriter(); // Destructor
37     
38   // write raw data
39   Int_t Digits2Raw();
40
41   void SetScalersNumbers();
42
43 protected:
44   AliMUONRawWriter();                  // Default constructor
45   AliMUONRawWriter (const AliMUONRawWriter& rhs); // copy constructor
46   AliMUONRawWriter& operator=(const AliMUONRawWriter& rhs); // assignment operator
47
48   // writing raw data
49   Int_t WriteTrackerDDL(Int_t iCh);
50   Int_t WriteTriggerDDL();
51   
52 private:
53
54   void AddData(const AliMUONBusStruct& event)
55   {
56     TClonesArray &temp = *fBusArray;
57     new(temp[temp.GetEntriesFast()]) AliMUONBusStruct(event); 
58   }
59
60   Int_t GetBusPatch(const AliMUONDigit& digit);
61   void  GetCrateName(Char_t* name, Int_t iDDL, Int_t iReg);
62
63   Int_t GetGlobalTriggerPattern(const AliMUONGlobalTrigger* gloTrg) const;
64
65 private:
66
67   AliMUONData*  fMUONData;           //!< Data container for MUON subsystem 
68  
69   FILE*         fFile[4];            //!< DDL binary file pointer one per 1/2 chamber, 4 for one station
70
71   TClonesArray* fBusArray;           //!< array to sub event tracker
72    
73   AliMUONBlockHeader* fBlockHeader;  //!< DDL block header class pointers
74   AliMUONDspHeader*   fDspHeader;    //!< DDL Dsp header class pointers
75   AliMUONBusStruct*   fBusStruct;    //!< DDL bus patch structure class pointers
76   AliMUONDarcHeader*  fDarcHeader;   //!< DDL darc header class pointers
77   AliMUONRegHeader*   fRegHeader;    //!< DDL regional header class pointers
78   AliMUONLocalStruct* fLocalStruct;  //!< DDL local structure class pointers
79
80   AliMpBusPatch*            fBusPatchManager; //!< buspatch versus DE's & DDL
81   AliMUONTriggerCrateStore* fCrateManager;    //!< Crate array
82
83   Bool_t fScalerEvent;               ///< flag to generates scaler event
84
85   AliRawDataHeader    fHeader;           ///< header of DDL
86
87   static Int_t fgManuPerBusSwp1B[12];   //!< array containing the first manuId for each buspatch st1, Bending
88   static Int_t fgManuPerBusSwp1NB[12];  //!< array containing the first manuId for each buspatch st1, NBending
89
90   static Int_t fgManuPerBusSwp2B[12];   //!< array containing the first manuId for each buspatch st2, Bending
91   static Int_t fgManuPerBusSwp2NB[12];  //!< array containing the first manuId for each buspatch st2, NBending
92   
93   TStopwatch fTrackerTimer;             //!< time watcher for tracker part
94   TStopwatch fTriggerTimer;             //!< time watcher for trigger part
95   TStopwatch fMappingTimer;             //!< time watcher for mapping-tracker part
96   
97   AliMpSegFactory* fSegFactory;         //!< mapping segmentation factory
98   
99   ClassDef(AliMUONRawWriter,1) // MUON cluster reconstructor in ALICE
100 };
101         
102 #endif