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.
14 // AliFMDv1, AliFMDv0, and AliFMDAlla
15 // provides concrete implementations.
16 // This class is sooooo crowded
19 # include <AliDetector.h>
29 class AliFMDSimulator;
33 //____________________________________________________________________
34 class AliFMD : public AliDetector
38 AliFMD(const char *name, const char *title);
39 AliFMD(const AliFMD& other);
41 AliFMD& operator=(const AliFMD& other);
42 // Use old implementation
43 void UseOld(Bool_t use=kTRUE) { fUseOld = use; }
44 void UseAssembly(Bool_t use=kTRUE) { fUseAssembly = use; }
45 void UseDetailed(Bool_t use=kTRUE) { fDetailed = use; }
47 // GEometry ANd Tracking (GEANT :-)
48 virtual void CreateGeometry();
49 virtual void CreateMaterials();
51 virtual void StepManager() = 0;
52 virtual void FinishEvent();
54 // Graphics and event display
55 virtual void BuildGeometry();
56 virtual void DrawDetector();
57 virtual Int_t DistanceToPrimitive(Int_t px, Int_t py);
59 // Hit and digit management
60 virtual void MakeBranch(Option_t *opt=" ");
61 virtual void SetHitsAddressBranch(TBranch *b);
62 virtual void SetTreeAddress();
63 virtual TClonesArray* SDigits() { return fSDigits; }
64 virtual void ResetSDigits();
65 virtual void AddHit(Int_t track, Int_t *vol, Float_t *hits);
66 virtual AliFMDHit* AddHitByFields(Int_t track,
81 Bool_t stopped=kFALSE);
82 virtual void AddDigit(Int_t *digits, Int_t* notused=0);
83 virtual void AddDigitByFields(UShort_t detector=0,
90 virtual void AddSDigit(Int_t *digits);
91 virtual void AddSDigitByFields(UShort_t detector=0,
101 virtual AliDigitizer* CreateDigitizer(AliRunDigitizer* manager) const;
102 virtual void Hits2Digits();
103 virtual void Hits2SDigits();
106 virtual void Digits2Raw();
109 void Browse(TBrowser* b);
111 TClonesArray* HitsArray();
112 TClonesArray* DigitsArray();
113 TClonesArray* SDigitsArray();
115 TClonesArray* fSDigits; // Summable digits
116 Int_t fNsdigits; // Number of digits
117 Bool_t fDetailed; // Use detailed geometry
118 Bool_t fUseOld; // Use old approx geometry
119 Bool_t fUseAssembly; // Use divided volumes
122 kSiId, // ID index of Si medium
123 kAirId, // ID index of Air medium
124 kPlasticId, // ID index of Plastic medium
125 kPcbId, // ID index of PCB medium
126 kSiChipId, // ID index of Si Chip medium
127 kAlId, // ID index of Al medium
128 kCarbonId, // ID index of Carbon medium
129 kCopperId, // ID index of Copper Medium
130 kKaptonId // ID index of Kapton Medium
134 AliFMDSimulator* fSimulator; // Simulator task
136 TObjArray* fBad; //! debugging - bad hits
138 ClassDef(AliFMD,11) // Base class FMD entry point
142 //____________________________________________________________________