3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights
6 * Latest changes by Christian Holm Christensen <cholm@nbi.dk>
8 * See cxx source for full Copyright notice
11 //____________________________________________________________________
13 // Manager class for the FMD - Base class.
16 # include <AliDetector.h>
18 #ifndef ALIFMDSUBDETECTOR_H
19 # include "AliFMDSubDetector.h"
22 # include "AliFMDRing.h"
31 //____________________________________________________________________
32 class AliFMD : public AliDetector
36 AliFMD(const char *name, const char *title, bool detailed);
37 AliFMD(const AliFMD& FMD) : AliDetector(FMD) {} //copy ctor
39 AliFMD& operator=(const AliFMD&) {return *this;}
41 // GEometry ANd Tracking (GEANT :-)
42 virtual void CreateGeometry();
43 virtual void CreateMaterials();
45 virtual void StepManager() = 0;
46 AliFMDSubDetector* GetFMD1() const { return fFMD1; }
47 AliFMDSubDetector* GetFMD2() const { return fFMD2; }
48 AliFMDSubDetector* GetFMD3() const { return fFMD3; }
49 AliFMDRing* GetInner() const { return fInner; }
50 AliFMDRing* GetOuter() const { return fOuter; }
52 // Graphics and event display
53 virtual void BuildGeometry();
54 virtual void DrawDetector();
55 virtual Int_t DistanceToPrimitive(Int_t px, Int_t py);
57 // Hit and digit management
58 virtual void MakeBranch(Option_t *opt=" ");
59 virtual void SetHitsAddressBranch(TBranch *b);
60 virtual void SetTreeAddress();
61 virtual TClonesArray* SDigits() { return fSDigits; }
62 virtual void ResetSDigits();
63 virtual void AddHit(Int_t track, Int_t *vol, Float_t *hits);
64 virtual void AddHit(Int_t track,
78 virtual void AddDigit(Int_t *digits);
79 virtual void AddDigit(UShort_t detector=0,
86 virtual void AddSDigit(Int_t *digits);
87 virtual void AddSDigit(UShort_t detector=0,
97 virtual AliDigitizer* CreateDigitizer(AliRunDigitizer* manager) const;
98 virtual void Hits2Digits();
99 virtual void Hits2SDigits();
102 virtual void Digits2Raw();
104 // Set various parameters
105 void SetLegLength(Double_t length=1);
106 void SetLegRadius(Double_t radius=.5);
107 void SetLegOffset(Double_t offset=.5);
108 void SetModuleSpacing(Double_t spacing=1);
110 // Get various parameters
111 Int_t GetSiId() const { return (*fIdtmed)[kSiId]; }
112 Int_t GetAirId() const { return (*fIdtmed)[kAirId]; }
113 Int_t GetPlasticId() const { return (*fIdtmed)[kPlasticId]; }
114 Int_t GetPcbId() const { return (*fIdtmed)[kPcbId]; }
115 Int_t GetKaptionId() const { return (*fIdtmed)[kKaptionId]; }
116 Int_t GetCarbonId() const { return (*fIdtmed)[kCarbonId]; }
117 Int_t GetPrintboardRotationId() const { return fPrintboardRotationId; }
118 Int_t GetShortLegId() const { return fShortLegId; }
119 Int_t GetLongLegId() const { return fLongLegId; }
120 Double_t GetLegLength() const { return fLegLength; }
121 Double_t GetLegRadius() const { return fLegRadius; }
122 Double_t GetModuleSpacing() const { return fModuleSpacing; }
125 void Browse(TBrowser* b);
126 Float_t GetSiDensity() const { return fSiDensity; }
128 kBaseDDL = 0x1000 // DDL offset for the FMD
132 kSiId, // ID of Si medium
133 kAirId, // ID of Air medium
134 kPlasticId, // ID of Plastic medium
135 kPcbId, // ID of PCB medium
136 kSiChipId, // ID of Si Chip medium
137 kKaptionId, // ID of Kaption medium
138 kCarbonId // ID of Carbon medium
141 void SetSiDensity(Float_t r=2.33) { fSiDensity = r; }
142 TClonesArray* HitsArray();
143 TClonesArray* DigitsArray();
144 TClonesArray* SDigitsArray();
146 AliFMDRing* fInner; // Inner ring structure
147 AliFMDRing* fOuter; // Outer ring structure
148 AliFMDSubDetector* fFMD1; // FMD1 structure
149 AliFMDSubDetector* fFMD2; // FMD2 structure
150 AliFMDSubDetector* fFMD3; // FMD3 structure
152 TClonesArray* fSDigits;
155 Float_t fSiDensity; // Density of Silicon
156 Int_t fPrintboardRotationId; // ID of Rotation of print bard
157 Int_t fIdentityRotationId; // ID of identity matrix
158 Int_t fShortLegId; // ID short leg volume
159 Int_t fLongLegId; // ID long leg volume
160 Double_t fLegLength; // Leg length
161 Double_t fLegRadius; // Leg radius
162 Double_t fModuleSpacing; // Staggering offset
164 ClassDef(AliFMD,8) // Base class FMD entry point
168 //____________________________________________________________________