TOF geometry updating (addition of AliTOFGeometry)
[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 // getters for AliTOF object status
42   Int_t GetNStripA() const {return fNStripA;}
43   Int_t GetNStripB() const {return fNStripB;}
44   Int_t GetNStripC() const {return fNStripC;}
45   Int_t GetNpadX()   const {return fNpadX;}
46   Int_t GetNpadZ()   const {return fNpadZ;}
47   Int_t GetPadXStr() const {return fPadXStr;}
48   Float_t GetTimeRes() const {return fTimeRes;}
49   Float_t GetChrgRes() const {return fChrgRes;}
50
51   virtual void    SetTreeAddress();
52   virtual void    AddHit(Int_t track, Int_t* vol, Float_t* hits);
53   virtual void    AddT0Hit(Int_t track, Int_t* vol, Float_t* hits);
54   virtual void    AddDigit(Int_t* tracks, Int_t* vol, Float_t* digits);
55   virtual void    AddSDigit(Int_t tracknum, Int_t* vol, Float_t* digits);
56   virtual void    CreateGeometry();
57   virtual void    CreateMaterials();
58   virtual void    Init();
59 //  virtual void    MakeBranch(Option_t* option, const char *file=0);
60   virtual void    MakeBranch(Option_t *opt=" ");
61   virtual void    Makehits(Bool_t hits=1);
62   virtual void    FinishEvent();
63   virtual Int_t   IsVersion() const =0;
64   Int_t           DistancetoPrimitive(Int_t px, Int_t py) const;
65   virtual void    StepManager()=0;
66   virtual void    TOFpc(Float_t /*xtof*/, Float_t /*ytof*/, Float_t /*zlenC*/,
67                         Float_t /*zlenB*/, Float_t /*zlenA*/, Float_t /*ztof0*/){}
68   virtual void    DrawModule() const;
69   virtual void    DrawDetectorModules()=0;
70   virtual void    DrawDetectorStrips()=0;
71 //  virtual void   DrawDetectorModulesinFrame()=0;
72 //  virtual void   DrawDetectorStripsinFrame()=0;
73           void    CreateTOFFolders();
74   Bool_t    CheckOverlap(Int_t* vol, Float_t* digit, Int_t Track);
75   virtual void    SDigits2Digits();
76   virtual void    SetMerger(AliTOFMerger* merger);
77   virtual AliTOFMerger* Merger();
78 //  virtual void    Hits2Digits();   
79   virtual void    Hits2SDigits();
80   virtual void    Hits2SDigits(Int_t evNumber1, Int_t evNumber2);
81   virtual AliDigitizer* CreateDigitizer(AliRunDigitizer* manager) const; 
82   virtual void    Digits2Reco() {cout << "AliTOF::Digits2Reco()  dummy function called" << endl;}
83           void    Digits2Raw (Int_t evNumber=0);
84           void    Raw2Digits (Int_t evNumber=0);
85   virtual void    ResetHits();
86   virtual void    ResetDigits();
87   virtual void    ResetSDigits();
88   TClonesArray *SDigits() const {return fSDigits;}
89   TClonesArray *ReconParticles() const {return fReconParticles;}
90   void RecreateSDigitsArray();
91   void CreateSDigitsArray();
92   AliTOFGeometry *GetGeometry() const { return fTOFGeometry; }; 
93
94   Int_t   fNevents ;        // Number of events to digitize
95
96 protected:
97   TFolder* fFGeom ;       //  Folder that holds the Geometry definition
98   TTask*   fDTask ;       //  TOF Digitizer container
99   TTask*   fReTask;       //  TOF Reconstructioner container
100   TClonesArray* fSDigits; //!  List of summable digits
101   Int_t    fNSDigits;           //! Number of sdigits
102   TClonesArray* fReconParticles; // List of reconstructed particles
103   AliTOFMerger *fMerger;   // ! pointer to merger
104   Int_t   fNTof;  // number of TOF sectors
105   Float_t fRmax;  // upper bound for radial extension of TOF detector
106   Float_t fRmin;  // lower bound for radial extension of TOF detector
107   Float_t fZlenA; // length along z-axis of type A module 
108   Float_t fZlenB; // length along z-axis of type B module
109   Float_t fZlenC; // length along z-axis of type C module
110   Float_t fZtof;  // total semi-length of TOF detector
111   Float_t fStripLn;  //  Strip Length
112   Float_t fSpace;    //  Space Beetween the strip and the bottom of the plate
113   Float_t fDeadBndZ; //  Dead Boundaries of a Strip along Z direction (width)
114   Float_t fDeadBndX; //  Dead Boundaries of a Strip along X direction (length)
115   Float_t fXpad;  //  X size of a pad
116   Float_t fZpad;  //  Z size of a pad
117   Float_t fGapA;  //  Gap beetween tilted strip in A-type plate
118   Float_t fGapB;  //  Gap beetween tilted strip in B-type plate
119   Float_t fOverSpc; // Space available for sensitive layers in radial direction
120   Int_t   fNpadX; // Number of pads in a strip along the X direction
121   Int_t   fNpadZ; // Number of pads in a strip along the Z direction
122   Int_t   fPadXStr; // Number of pads per strip
123   Int_t   fNStripA; // number of strips in A type module
124   Int_t   fNStripB; // number of strips in B type module
125   Int_t   fNStripC; // number of strips in C type module
126   Float_t fTimeRes; // time resolution of the TOF
127   Float_t fChrgRes; // charge resolution of ADC
128   Int_t   fPadXSector; // number of pads per sector
129   Int_t   fNRoc;       // number of ROC
130   Int_t   fNFec;       // number of FEC
131   Int_t   fNTdc;       // number of TDC
132   Int_t   fNPadXRoc;   // number of pads for each ROC
133   Int_t   fIdSens;     // the unique identifier for sensitive volume FPAD 
134   Bool_t  fTZero;      // flag indicating if T0 is used
135   AliTOFGeometry *fTOFGeometry; //The TOF Geometry parameters
136  
137 private:
138
139   ClassDef(AliTOF,6)  // Time Of Flight base class
140 };
141  
142 #endif /* ALITOF_H */