c20c73139e924bb2cfe880a7cfe0de97f78b7aa7
[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 "AliMpBusPatch.h"
17 #include "AliMUONSubEventTracker.h"
18
19 class TArrayI;
20 class AliLoader;
21 class AliMUONData;
22 class AliMUONDigit;
23 class AliMUONDDLTracker;
24 class AliMUONDDLTrigger;
25 class AliMUONGlobalTrigger;
26 class AliMUONSubEventTrigger;
27 class AliRawReader;
28 class AliMUONGlobalTrigger;
29 class AliMpSegFactory;
30
31 class AliMUONRawWriter : public TObject 
32 {
33  public:
34   AliMUONRawWriter(AliLoader* loader, AliMUONData* data); // Constructor
35   virtual ~AliMUONRawWriter(void); // Destructor
36     
37   // write raw data
38   Int_t   Digits2Raw();
39
40   AliMUONData*   GetMUONData() {return fMUONData;}
41
42   void AddData(const AliMUONSubEventTracker* event) {
43     TClonesArray &temp = *fSubEventArray;
44     new(temp[temp.GetEntriesFast()])AliMUONSubEventTracker(*event); 
45   }
46
47   // could be private function (public for debugging)
48   Int_t GetInvMapping(const AliMUONDigit* digit, Int_t &busPatchId,
49                        UShort_t &manuId, UChar_t &channelId);
50
51   Int_t GetGlobalTriggerPattern(const AliMUONGlobalTrigger* gloTrg) const;
52
53   void  SetScalerEvent() {fScalerEvent = kTRUE;}
54
55  protected:
56   AliMUONRawWriter();                  // Default constructor
57   AliMUONRawWriter (const AliMUONRawWriter& rhs); // copy constructor
58   AliMUONRawWriter& operator=(const AliMUONRawWriter& rhs); // assignment operator
59
60  private:
61
62   AliMUONData*  fMUONData;           //! Data container for MUON subsystem 
63  
64   AliLoader*    fLoader;             //! alice loader
65  
66   AliMpSegFactory* fSegFactory;      //! Mapping segmentation factory
67
68   FILE*         fFile[2];            //! DDL binary file pointer one per 1/2 chamber
69
70   TClonesArray* fSubEventArray;      //! array to sub event tracker
71    
72   AliMUONDDLTracker* fDDLTracker;    //! DDL tracker class pointers
73   AliMUONDDLTrigger* fDDLTrigger;    //! DDL trigger class pointers
74
75   AliMpBusPatch* fBusPatchManager;   //! buspatch versus DE's & DDL
76
77   Bool_t fScalerEvent;               // flag to generates scaler event
78
79   static Int_t fgManuPerBusSwp1B[12];   //! array containing the first manuId for each buspatch st1, Bending
80   static Int_t fgManuPerBusSwp1NB[12];  //! array containing the first manuId for each buspatch st1, NBending
81
82   static Int_t fgManuPerBusSwp2B[12];   //! array containing the first manuId for each buspatch st2, Bending
83   static Int_t fgManuPerBusSwp2NB[12];  //! array containing the first manuId for each buspatch st2, NBending
84
85   // writing raw data
86   Int_t WriteTrackerDDL(Int_t iCh);
87   Int_t WriteTriggerDDL();
88
89   ClassDef(AliMUONRawWriter,1) // MUON cluster reconstructor in ALICE
90 };
91         
92 #endif