]> git.uio.no Git - u/mrichter/AliRoot.git/blame - FMD/AliFMDSimulator.h
TPC ALTRO mapping class
[u/mrichter/AliRoot.git] / FMD / AliFMDSimulator.h
CommitLineData
1a1fdef7 1#ifndef ALIFMDSIMULATOR_H
2#define ALIFMDSIMULATOR_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#ifndef TTask
11# include <TTask.h>
12#endif
13#ifndef TLorentzVector
14# include <TLorentzVector.h>
15#endif
4ac75127 16#ifndef TArrayI
17# include <TArrayI.h>
18#endif
1a1fdef7 19class TVector3;
20class AliFMD;
21class AliFMDRing;
22class AliFMDDetector;
23class AliFMD1;
24class AliFMD2;
25class AliFMD3;
54240c8d 26class TObjArray;
1a1fdef7 27
28/** Simulation of the FMD.
29 This class builds the geometry, and processes hits in the FMD */
30class AliFMDSimulator : public TTask
31{
32public:
33 AliFMDSimulator();
34 /** CTOR */
35 AliFMDSimulator(AliFMD* fmd, Bool_t detailed=kTRUE);
36 virtual ~AliFMDSimulator() {}
37 /** Initialize */
38 virtual void DefineMaterials();
39 /** Register */
40 virtual void DefineGeometry() = 0;
41 /** Deal with a hit in the FMD */
42 virtual void Exec(Option_t* option="");
54240c8d 43 virtual void EndEvent();
54e415a8 44 /** @param use Wheher to use a divided geometry */
4ac75127 45 virtual void UseDivided(Bool_t use=kTRUE) { fUseDivided = use; }
54e415a8 46 /** @param use Wheher to assemblies in the geometry definition */
4ac75127 47 virtual void UseAssembly(Bool_t use=kTRUE) { fUseAssembly = use; }
54e415a8 48 /** Whether to make a detailed geometry or not.
49 @param use If true, make a detailed geometry */
50 virtual void SetDetailed(Bool_t use) { fDetailed = use; }
1a1fdef7 51protected:
52 AliFMD* fFMD; //! Pointer to module
1a1fdef7 53 TLorentzVector fCurrentV; //! Current hit postition
54 TLorentzVector fCurrentP; //! Current hit momentum
4ac75127 55 TArrayI fActiveId; //! Active volume ID's
1a1fdef7 56 Int_t fCurrentPdg; //! Current hit particle code
57 Double_t fCurrentDeltaE; //! Current hit energy loss
4ac75127 58
59 Bool_t IsActive(Int_t volId) const;
60 Bool_t VMC2FMD(Int_t copy, TLorentzVector& v,
61 UShort_t& detector, Char_t& ring,
62 UShort_t& sector, UShort_t& stripe);
63 Bool_t VMC2FMD(TLorentzVector& v, UShort_t& detector,
64 Char_t& ring, UShort_t& sector, UShort_t& strip);
1a1fdef7 65
66 static const Char_t* fgkActiveName; // Name of Active volumes
67 static const Char_t* fgkSectorName; // Name of Sector volumes
68 static const Char_t* fgkStripName; // Name of Strip volumes
69 static const Char_t* fgkModuleName; // Name of Module volumes
70 static const Char_t* fgkPCBName; // Name of PCB volumes
71 static const Char_t* fgkLongLegName; // Name of LongLeg volumes
72 static const Char_t* fgkShortLegName; // Name of ShortLeg volumes
73 static const Char_t* fgkFrontVName; // Name of Front volumes
74 static const Char_t* fgkBackVName; // Name of Back volumes
75 static const Char_t* fgkRingName; // Name of Ring volumes
76 static const Char_t* fgkTopHCName; // Name of TopHC volumes
77 static const Char_t* fgkBotHCName; // Name of BotHC volumes
78 static const Char_t* fgkTopIHCName; // Name of TopIHC volumes
79 static const Char_t* fgkBotIHCName; // Name of BotIHC volumes
80 static const Char_t* fgkNoseName; // Name of Nose volumes
81 static const Char_t* fgkBackName; // Name of Back volumes
82 static const Char_t* fgkBeamName; // Name of Beam volumes
83 static const Char_t* fgkFlangeName; // Name of Flange volumes
84
85 enum {
86 kSiId, // ID index of Si medium
87 kAirId, // ID index of Air medium
88 kPlasticId, // ID index of Plastic medium
89 kPcbId, // ID index of PCB medium
90 kSiChipId, // ID index of Si Chip medium
91 kAlId, // ID index of Al medium
4ac75127 92 kCarbonId, // ID index of Carbon medium
93 kCopperId, // ID index of Copper Medium
94 kKaptonId // ID index of Kapton Medium
1a1fdef7 95 };
96
54e415a8 97 Bool_t fDetailed; // Whether to make a detailed simulation
98 Bool_t fUseDivided; // Divided volumes
99 Bool_t fUseAssembly; // Assembly volumes
1a1fdef7 100 Int_t fSectorOff; // Sector offset in volume tree
101 Int_t fModuleOff; // Module offset in volume tree
102 Int_t fRingOff; // Ring offset in the volume tree
103 Int_t fDetectorOff; // Detector offfset in the volume tree
54240c8d 104 TObjArray* fBad; //! List of bad hits
1a1fdef7 105
106 ClassDef(AliFMDSimulator,0) // Simulation class for the FMD
107};
108
109
110
111#endif
112//____________________________________________________________________
113//
114// Local Variables:
115// mode: C++
116// End:
117//
118// EOF
119//