TPC ALTRO mapping class
[u/mrichter/AliRoot.git] / FMD / AliFMD.h
CommitLineData
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.
088f8e79 14// AliFMDv1, AliFMDv0, and AliFMDAlla
15// provides concrete implementations.
16// This class is sooooo crowded
37c4363a 17//
4347b38f 18#ifndef ALIDETECTOR_H
19# include <AliDetector.h>
20#endif
4347b38f 21#ifndef ROOT_TBranch
22# include <TBranch.h>
23#endif
1a1fdef7 24class TBranch;
25class TClonesArray;
26class TBrowser;
27class AliDigitizer;
54e415a8 28#ifdef USE_PRE_MOVE
1a1fdef7 29class AliFMDSimulator;
54e415a8 30#endif
54240c8d 31class AliFMDHit;
4347b38f 32
33//____________________________________________________________________
34class AliFMD : public AliDetector
35{
fe4da5cc 36public:
37 AliFMD();
1a1fdef7 38 AliFMD(const char *name, const char *title);
56b1929b 39 AliFMD(const AliFMD& other);
4347b38f 40 virtual ~AliFMD();
56b1929b 41 AliFMD& operator=(const AliFMD& other);
4ac75127 42 // Use old implementation
43 void UseOld(Bool_t use=kTRUE) { fUseOld = use; }
4ac75127 44 void UseAssembly(Bool_t use=kTRUE) { fUseAssembly = use; }
54240c8d 45 void UseDetailed(Bool_t use=kTRUE) { fDetailed = use; }
4ac75127 46
4347b38f 47 // GEometry ANd Tracking (GEANT :-)
48 virtual void CreateGeometry();
49 virtual void CreateMaterials();
fe4da5cc 50 virtual void Init();
4347b38f 51 virtual void StepManager() = 0;
54240c8d 52 virtual void FinishEvent();
53
4347b38f 54 // Graphics and event display
55 virtual void BuildGeometry();
56 virtual void DrawDetector();
17323043 57 virtual Int_t DistanceToPrimitive(Int_t px, Int_t py);
3d44ce66 58
4347b38f 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);
54240c8d 66 virtual AliFMDHit* AddHitByFields(Int_t track,
69b696b9 67 UShort_t detector,
68 Char_t ring,
69 UShort_t sector,
70 UShort_t strip,
71 Float_t x=0,
72 Float_t y=0,
73 Float_t z=0,
74 Float_t px=0,
75 Float_t py=0,
76 Float_t pz=0,
77 Float_t edep=0,
78 Int_t pdg=0,
088f8e79 79 Float_t t=0,
80 Float_t len=0,
81 Bool_t stopped=kFALSE);
69b696b9 82 virtual void AddDigit(Int_t *digits, Int_t* notused=0);
83 virtual void AddDigitByFields(UShort_t detector=0,
84 Char_t ring='\0',
85 UShort_t sector=0,
86 UShort_t strip=0,
87 UShort_t count1=0,
88 Short_t count2=-1,
89 Short_t count3=-1);
4347b38f 90 virtual void AddSDigit(Int_t *digits);
69b696b9 91 virtual void AddSDigitByFields(UShort_t detector=0,
92 Char_t ring='\0',
93 UShort_t sector=0,
94 UShort_t strip=0,
95 Float_t edep=0,
96 UShort_t count1=0,
97 Short_t count2=-1,
98 Short_t count3=-1);
4347b38f 99
100 // Digitisation
c92eb8ad 101 virtual AliDigitizer* CreateDigitizer(AliRunDigitizer* manager) const;
4347b38f 102 virtual void Hits2Digits();
103 virtual void Hits2SDigits();
104
105 // Raw data
106 virtual void Digits2Raw();
107
4347b38f 108 // Utility
109 void Browse(TBrowser* b);
4347b38f 110protected:
56b1929b 111 TClonesArray* HitsArray();
112 TClonesArray* DigitsArray();
113 TClonesArray* SDigitsArray();
114
56b1929b 115 TClonesArray* fSDigits; // Summable digits
116 Int_t fNsdigits; // Number of digits
1a1fdef7 117 Bool_t fDetailed; // Use detailed geometry
4ac75127 118 Bool_t fUseOld; // Use old approx geometry
4ac75127 119 Bool_t fUseAssembly; // Use divided volumes
1a1fdef7 120
54e415a8 121 enum {
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
131 };
132
133#ifdef USE_PRE_MOVE
1a1fdef7 134 AliFMDSimulator* fSimulator; // Simulator task
54e415a8 135#endif
136 TObjArray* fBad; //! debugging - bad hits
1a1fdef7 137
394d8216 138 ClassDef(AliFMD,11) // Base class FMD entry point
fe4da5cc 139};
dc8af42e 140
4347b38f 141#endif
142//____________________________________________________________________
143//
0d0e6995 144// Local Variables:
145// mode: C++
146// End:
147//
4347b38f 148// EOF
149//