TOF raw data: preliminary implementation and style changes
[u/mrichter/AliRoot.git] / TOF / AliTOF.h
1 ////////////////////////////////////////////////
2 //                                            //
3 //  Manager classe for TOF                    //
4 //  Interface :                               //
5 //  AliTOF                                    //
6 //  Associations between TOF related objects  //
7 //  are defined here                          //
8 // -- Authors: Pierella, Seganti, Vicinanza   //
9 //    (Bologna and Salerno University)        //
10 //                                            //
11 ////////////////////////////////////////////////
12
13 #ifndef ALITOF_H
14 #define ALITOF_H
15 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
16  * See cxx source for full Copyright notice                               */
17
18 /* $Id$ */
19
20 class TFile;
21 class TDirectory;
22 class TString ;  
23 class TTask ;
24 class TFolder ;
25 class AliTOFMerger;
26
27 #include "TObject.h"
28 #include "TTree.h" 
29 #include "AliDetector.h"
30 #include <Riostream.h>
31 #include "AliTOFMerger.h"
32 #include "AliTOFSDigitizer.h"
33 #include "AliTOFGeometry.h"
34
35
36 class AliTOF : public AliDetector {
37 public:
38   AliTOF(); 
39   AliTOF(const char *name, const char *title, Option_t *option="noTimeZero");
40   virtual ~AliTOF() ;
41
42   static  Int_t NDDL()        { return kNDDL;};
43   static  Int_t NTRM()        { return kNTRM;}
44   static  Int_t NTdc()        { return kNTdc;};
45   static  Int_t NCh()         { return kNCh;};
46   static  Int_t NPadXTRM()    { return kNCh*kNTdc;};
47
48 // getters for AliTOF object status
49   //Float_t GetTimeRes() const {return fTimeRes;};
50   //Float_t GetChrgRes() const {return fChrgRes;};
51
52   virtual void    SetTreeAddress();
53   virtual void    AddHit(Int_t track, Int_t* vol, Float_t* hits);
54   virtual void    AddT0Hit(Int_t track, Int_t* vol, Float_t* hits);
55   virtual void    AddDigit(Int_t* tracks, Int_t* vol, Float_t* digits);
56   virtual void    AddSDigit(Int_t tracknum, Int_t* vol, Float_t* digits);
57   virtual void    CreateGeometry();
58   virtual void    CreateMaterials();
59   virtual void    Init();
60   //virtual void    MakeBranch(Option_t* option, const char *file=0);
61   virtual void    MakeBranch(Option_t *opt=" ");
62   virtual void    Makehits(Bool_t hits=1);
63   virtual void    FinishEvent();
64   virtual Int_t   IsVersion() const =0;
65   Int_t           DistancetoPrimitive(Int_t px, Int_t py) const;
66   virtual void    StepManager()=0;
67   virtual void    TOFpc(Float_t /*xtof*/, Float_t /*ytof*/, Float_t /*zlenC*/,
68                         Float_t /*zlenB*/, Float_t /*zlenA*/, Float_t /*ztof0*/){}
69   virtual void    DrawModule() const;
70   virtual void    DrawDetectorModules()=0;
71   virtual void    DrawDetectorStrips()=0;
72   //virtual void   DrawDetectorModulesinFrame()=0;
73   //virtual void   DrawDetectorStripsinFrame()=0;
74           void    CreateTOFFolders();
75   Bool_t    CheckOverlap(Int_t* vol, Float_t* digit, Int_t Track);
76   virtual void    SDigits2Digits();
77   virtual void    SetMerger(AliTOFMerger* merger);
78   virtual AliTOFMerger* Merger();
79   //virtual void    Hits2Digits();   
80   virtual void    Hits2SDigits();
81   virtual void    Hits2SDigits(Int_t evNumber1, Int_t evNumber2);
82   virtual AliDigitizer* CreateDigitizer(AliRunDigitizer* manager) const; 
83   virtual void    Digits2Reco() {};
84           void    Digits2Raw ();
85           void    Raw2Digits (){};
86   virtual void    ResetHits();
87   virtual void    ResetDigits();
88   virtual void    ResetSDigits();
89   TClonesArray *SDigits() const {return fSDigits;}
90   TClonesArray *ReconParticles() const {return fReconParticles;}
91   void RecreateSDigitsArray();
92   void CreateSDigitsArray();
93   AliTOFGeometry *GetGeometry() const { return fTOFGeometry; }; 
94
95 protected:
96   TFolder* fFGeom ;       //  Folder that holds the Geometry definition
97   TTask*   fDTask ;       //  TOF Digitizer container
98   TTask*   fReTask;       //  TOF Reconstructioner container
99   TClonesArray* fSDigits; //! List of summable digits
100   Int_t   fNSDigits;      //! Number of sdigits
101   TClonesArray* fReconParticles; // List of reconstructed particles
102   AliTOFMerger *fMerger;  // ! pointer to merger
103
104   //Float_t fGapA;     //  Gap beetween tilted strip in A-type plate
105   //Float_t fGapB;     //  Gap beetween tilted strip in B-type plate
106
107   //Float_t fTimeRes;  //  Time resolution of the TOF
108   //Float_t fChrgRes;  //  Charge resolution of ADC
109
110   Int_t   fIdSens;     // The unique identifier for sensitive volume FPAD 
111
112   Bool_t  fTZero;      // Flag indicating if T0 is used
113   AliTOFGeometry *fTOFGeometry; //The TOF Geometry parameters
114  
115 private:
116
117   // DAQ characteristics
118   // cfr. TOF-TDR pag. 105 for Glossary
119   // TARODA : TOF-ALICE Read Out and Data Acquisition system
120   enum {
121     kNDDL        =    4, // Number of DDL (Detector Data Link) per sector
122     kNTRM        =   10, // Number of TRM ( Readout Module) per DDL
123     kNTdc        =   30, // Number of Tdc (Time to Digital Converter) per TRM
124     kNCh         =    8  // Number of channels per Tdc
125   };
126
127   ClassDef(AliTOF,7)  // Time Of Flight base class
128 };
129  
130 #endif /* ALITOF_H */