]> git.uio.no Git - u/mrichter/AliRoot.git/blob - FMD/AliFMD.h
bac21f080e4ed353291e1889162b6f526c58e115
[u/mrichter/AliRoot.git] / FMD / AliFMD.h
1 #ifndef ALIFMD_H
2 #define ALIFMD_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights
4  * reserved. 
5  *
6  * Latest changes by Christian Holm Christensen <cholm@nbi.dk>
7  *
8  * See cxx source for full Copyright notice                               
9  */
10
11 //____________________________________________________________________
12 //
13 //  Manager class for the FMD - Base class.
14 //
15 #ifndef ALIDETECTOR_H 
16 # include <AliDetector.h>
17 #endif
18 #ifndef ROOT_TBranch
19 # include <TBranch.h>
20 #endif
21 class TBranch;
22 class TClonesArray;
23 class TBrowser;
24 class AliDigitizer;
25 class AliFMDSimulator;
26
27 //____________________________________________________________________
28 class AliFMD : public AliDetector 
29 {
30 public:
31   AliFMD();
32   AliFMD(const char *name, const char *title);
33   AliFMD(const AliFMD& other);
34   virtual ~AliFMD(); 
35   AliFMD& operator=(const AliFMD& other);
36
37   // GEometry ANd Tracking (GEANT :-)
38   virtual void   CreateGeometry();
39   virtual void   CreateMaterials(); 
40   virtual void   Init();
41   virtual void   StepManager() = 0;
42
43   // Graphics and event display 
44   virtual        void   BuildGeometry();
45   virtual        void   DrawDetector();
46   virtual        Int_t  DistanceToPrimitive(Int_t px, Int_t py);
47
48   // Hit and digit management 
49   virtual void          MakeBranch(Option_t *opt=" ");
50   virtual void          SetHitsAddressBranch(TBranch *b);
51   virtual void          SetTreeAddress();
52   virtual TClonesArray* SDigits() { return fSDigits; }        
53   virtual void          ResetSDigits();
54   virtual void          AddHit(Int_t track, Int_t *vol, Float_t *hits);
55   virtual void          AddHitByFields(Int_t    track, 
56                                        UShort_t detector, 
57                                        Char_t   ring, 
58                                        UShort_t sector, 
59                                        UShort_t strip, 
60                                        Float_t  x=0,
61                                        Float_t  y=0, 
62                                        Float_t  z=0,
63                                        Float_t  px=0, 
64                                        Float_t  py=0, 
65                                        Float_t  pz=0,
66                                        Float_t  edep=0,
67                                        Int_t    pdg=0,
68                                        Float_t  t=0);
69   virtual        void   AddDigit(Int_t *digits, Int_t* notused=0);
70   virtual        void   AddDigitByFields(UShort_t detector=0, 
71                                          Char_t   ring='\0', 
72                                          UShort_t sector=0, 
73                                          UShort_t strip=0, 
74                                          UShort_t count1=0, 
75                                          Short_t  count2=-1, 
76                                          Short_t  count3=-1);
77   virtual        void   AddSDigit(Int_t *digits);
78   virtual        void   AddSDigitByFields(UShort_t detector=0, 
79                                           Char_t   ring='\0', 
80                                           UShort_t sector=0, 
81                                           UShort_t strip=0, 
82                                           Float_t  edep=0,
83                                           UShort_t count1=0, 
84                                           Short_t  count2=-1, 
85                                           Short_t  count3=-1);
86
87   // Digitisation
88   virtual AliDigitizer* CreateDigitizer(AliRunDigitizer* manager) const;
89   virtual        void   Hits2Digits();
90   virtual        void   Hits2SDigits();
91
92   // Raw data 
93   virtual        void   Digits2Raw();
94
95   // Utility
96   void   Browse(TBrowser* b);
97 protected:
98   TClonesArray*      HitsArray();
99   TClonesArray*      DigitsArray();
100   TClonesArray*      SDigitsArray();
101
102   TClonesArray*      fSDigits;              // Summable digits
103   Int_t              fNsdigits;             // Number of digits  
104   Bool_t             fDetailed;             // Use detailed geometry
105   
106   AliFMDSimulator*   fSimulator;            // Simulator task
107   
108   ClassDef(AliFMD,10)     // Base class FMD entry point
109 };
110
111 #endif
112 //____________________________________________________________________
113 //
114 // Local Variables:
115 //   mode: C++
116 // End:
117 //
118 // EOF
119 //