d28dcc0d |
1 | #ifndef ALIFMD_H |
2 | #define ALIFMD_H |
4347b38f |
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 | */ |
3da30618 |
10 | |
37c4363a |
11 | //____________________________________________________________________ |
12 | // |
13 | // Manager class for the FMD - Base class. |
14 | // |
4347b38f |
15 | #ifndef ALIDETECTOR_H |
16 | # include <AliDetector.h> |
17 | #endif |
4347b38f |
18 | #ifndef ROOT_TBranch |
19 | # include <TBranch.h> |
20 | #endif |
1a1fdef7 |
21 | class TBranch; |
22 | class TClonesArray; |
23 | class TBrowser; |
24 | class AliDigitizer; |
25 | class AliFMDSimulator; |
54240c8d |
26 | class AliFMDHit; |
4347b38f |
27 | |
28 | //____________________________________________________________________ |
29 | class AliFMD : public AliDetector |
30 | { |
fe4da5cc |
31 | public: |
32 | AliFMD(); |
1a1fdef7 |
33 | AliFMD(const char *name, const char *title); |
56b1929b |
34 | AliFMD(const AliFMD& other); |
4347b38f |
35 | virtual ~AliFMD(); |
56b1929b |
36 | AliFMD& operator=(const AliFMD& other); |
4ac75127 |
37 | // Use old implementation |
38 | void UseOld(Bool_t use=kTRUE) { fUseOld = use; } |
39 | void UseDivided(Bool_t use=kTRUE) { fUseDivided = use; } |
40 | void UseAssembly(Bool_t use=kTRUE) { fUseAssembly = use; } |
41 | void UseGeo(Bool_t use=kTRUE) { fUseGeo = use; } |
54240c8d |
42 | void UseDetailed(Bool_t use=kTRUE) { fDetailed = use; } |
4ac75127 |
43 | |
4347b38f |
44 | // GEometry ANd Tracking (GEANT :-) |
45 | virtual void CreateGeometry(); |
46 | virtual void CreateMaterials(); |
fe4da5cc |
47 | virtual void Init(); |
4347b38f |
48 | virtual void StepManager() = 0; |
54240c8d |
49 | virtual void FinishEvent(); |
50 | |
4347b38f |
51 | // Graphics and event display |
52 | virtual void BuildGeometry(); |
53 | virtual void DrawDetector(); |
17323043 |
54 | virtual Int_t DistanceToPrimitive(Int_t px, Int_t py); |
3d44ce66 |
55 | |
4347b38f |
56 | // Hit and digit management |
57 | virtual void MakeBranch(Option_t *opt=" "); |
58 | virtual void SetHitsAddressBranch(TBranch *b); |
59 | virtual void SetTreeAddress(); |
60 | virtual TClonesArray* SDigits() { return fSDigits; } |
61 | virtual void ResetSDigits(); |
62 | virtual void AddHit(Int_t track, Int_t *vol, Float_t *hits); |
54240c8d |
63 | virtual AliFMDHit* AddHitByFields(Int_t track, |
69b696b9 |
64 | UShort_t detector, |
65 | Char_t ring, |
66 | UShort_t sector, |
67 | UShort_t strip, |
68 | Float_t x=0, |
69 | Float_t y=0, |
70 | Float_t z=0, |
71 | Float_t px=0, |
72 | Float_t py=0, |
73 | Float_t pz=0, |
74 | Float_t edep=0, |
75 | Int_t pdg=0, |
76 | Float_t t=0); |
77 | virtual void AddDigit(Int_t *digits, Int_t* notused=0); |
78 | virtual void AddDigitByFields(UShort_t detector=0, |
79 | Char_t ring='\0', |
80 | UShort_t sector=0, |
81 | UShort_t strip=0, |
82 | UShort_t count1=0, |
83 | Short_t count2=-1, |
84 | Short_t count3=-1); |
4347b38f |
85 | virtual void AddSDigit(Int_t *digits); |
69b696b9 |
86 | virtual void AddSDigitByFields(UShort_t detector=0, |
87 | Char_t ring='\0', |
88 | UShort_t sector=0, |
89 | UShort_t strip=0, |
90 | Float_t edep=0, |
91 | UShort_t count1=0, |
92 | Short_t count2=-1, |
93 | Short_t count3=-1); |
4347b38f |
94 | |
95 | // Digitisation |
c92eb8ad |
96 | virtual AliDigitizer* CreateDigitizer(AliRunDigitizer* manager) const; |
4347b38f |
97 | virtual void Hits2Digits(); |
98 | virtual void Hits2SDigits(); |
99 | |
100 | // Raw data |
101 | virtual void Digits2Raw(); |
102 | |
4347b38f |
103 | // Utility |
104 | void Browse(TBrowser* b); |
4347b38f |
105 | protected: |
56b1929b |
106 | TClonesArray* HitsArray(); |
107 | TClonesArray* DigitsArray(); |
108 | TClonesArray* SDigitsArray(); |
109 | |
56b1929b |
110 | TClonesArray* fSDigits; // Summable digits |
111 | Int_t fNsdigits; // Number of digits |
1a1fdef7 |
112 | Bool_t fDetailed; // Use detailed geometry |
4ac75127 |
113 | Bool_t fUseOld; // Use old approx geometry |
114 | Bool_t fUseDivided; // Use divided volumes |
115 | Bool_t fUseAssembly; // Use divided volumes |
116 | Bool_t fUseGeo; // Allow use of TGeo impl. |
1a1fdef7 |
117 | |
118 | AliFMDSimulator* fSimulator; // Simulator task |
119 | |
120 | ClassDef(AliFMD,10) // Base class FMD entry point |
fe4da5cc |
121 | }; |
dc8af42e |
122 | |
4347b38f |
123 | #endif |
124 | //____________________________________________________________________ |
125 | // |
0d0e6995 |
126 | // Local Variables: |
127 | // mode: C++ |
128 | // End: |
129 | // |
4347b38f |
130 | // EOF |
131 | // |