Migrated to a geometry implemented via AliFMDGeometry (derives from
[u/mrichter/AliRoot.git] / FMD / AliFMDSimulator.h
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
16 class TVector3;
17 class AliFMD;
18 class AliFMDRing;
19 class AliFMDDetector;
20 class AliFMD1;
21 class AliFMD2;
22 class AliFMD3;
23
24 /** Simulation of the FMD. 
25     This class builds the geometry, and processes hits in the FMD */ 
26 class AliFMDSimulator : public TTask  
27 {
28 public:
29   AliFMDSimulator();
30   /** CTOR */
31   AliFMDSimulator(AliFMD* fmd, Bool_t detailed=kTRUE);
32   virtual ~AliFMDSimulator() {}
33   /** Initialize */
34   virtual void DefineMaterials();
35   /** Register */
36   virtual void DefineGeometry() = 0;
37   /** Deal with a hit in the FMD */
38   virtual void Exec(Option_t* option="");
39
40 protected:  
41   AliFMD*        fFMD;           //! Pointer to module 
42   Bool_t         fDetailed;      // Whether to make a detailed simulation 
43   Int_t          fInnerId;       //! ID of inner ring strips
44   Int_t          fOuterId;       //! ID of outer ring strips
45   TLorentzVector fCurrentV;      //! Current hit postition 
46   TLorentzVector fCurrentP;      //! Current hit momentum
47   Int_t          fCurrentPdg;    //! Current hit particle code 
48   Double_t       fCurrentDeltaE; //! Current hit energy loss
49
50   static const Char_t* fgkActiveName;   // Name of Active volumes
51   static const Char_t* fgkSectorName;   // Name of Sector volumes
52   static const Char_t* fgkStripName;    // Name of Strip volumes
53   static const Char_t* fgkModuleName;   // Name of Module volumes
54   static const Char_t* fgkPCBName;      // Name of PCB volumes
55   static const Char_t* fgkLongLegName;  // Name of LongLeg volumes
56   static const Char_t* fgkShortLegName; // Name of ShortLeg volumes
57   static const Char_t* fgkFrontVName;   // Name of Front volumes
58   static const Char_t* fgkBackVName;    // Name of Back volumes
59   static const Char_t* fgkRingName;     // Name of Ring volumes
60   static const Char_t* fgkTopHCName;    // Name of TopHC volumes
61   static const Char_t* fgkBotHCName;    // Name of BotHC volumes
62   static const Char_t* fgkTopIHCName;   // Name of TopIHC volumes
63   static const Char_t* fgkBotIHCName;   // Name of BotIHC volumes
64   static const Char_t* fgkNoseName;     // Name of Nose volumes
65   static const Char_t* fgkBackName;     // Name of Back volumes
66   static const Char_t* fgkBeamName;     // Name of Beam volumes
67   static const Char_t* fgkFlangeName;   // Name of Flange volumes
68   
69   enum {
70     kSiId,                 // ID index of Si medium
71     kAirId,                // ID index of Air medium
72     kPlasticId,            // ID index of Plastic medium
73     kPcbId,                // ID index of PCB medium
74     kSiChipId,             // ID index of Si Chip medium
75     kAlId,                 // ID index of Al medium
76     kCarbonId              // ID index of Carbon medium
77   };  
78
79   Int_t fSectorOff;        // Sector offset in volume tree 
80   Int_t fModuleOff;        // Module offset in volume tree
81   Int_t fRingOff;          // Ring offset in the volume tree 
82   Int_t fDetectorOff;      // Detector offfset in the volume tree 
83   
84   ClassDef(AliFMDSimulator,0) // Simulation class for the FMD
85 };
86
87
88
89 #endif
90 //____________________________________________________________________
91 //
92 // Local Variables:
93 //   mode: C++
94 // End:
95 //
96 // EOF
97 //