]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/AliMUONVGeometryBuilder.h
Replacing rindex by strrchr
[u/mrichter/AliRoot.git] / MUON / AliMUONVGeometryBuilder.h
1 // $Id$
2 //
3 // Class AliMUONVGeometryBuilder
4 // -----------------------------
5 // Abstract base class for geometry construction per chamber(s).
6 //
7 // Author: Ivana Hrivnacova, IPN Orsay
8
9 #ifndef ALI_MUON_V_GEOMETRY_BUILDER_H
10 #define ALI_MUON_V_GEOMETRY_BUILDER_H
11
12 #include <TObject.h>
13
14 class TGeoTranslation;
15 class TGeoRotation;
16 class TGeoCombiTrans;
17 class TObjArray;
18
19 class AliMUONChamber;
20 class AliMUONChamberGeometry;
21
22 class AliMUONVGeometryBuilder : public TObject
23 {
24   public:
25     AliMUONVGeometryBuilder(AliMUONChamber* ch1,
26                             AliMUONChamber* ch2 = 0,
27                             AliMUONChamber* ch3 = 0,
28                             AliMUONChamber* ch4 = 0,
29                             AliMUONChamber* ch5 = 0,
30                             AliMUONChamber* ch6 = 0);
31     AliMUONVGeometryBuilder(const AliMUONVGeometryBuilder& rhs);
32     AliMUONVGeometryBuilder();
33     virtual ~AliMUONVGeometryBuilder();
34
35     // operators  
36     AliMUONVGeometryBuilder& operator = (const AliMUONVGeometryBuilder& rhs);
37   
38     // methods
39     virtual void CreateMaterials() {}  // make = 0; ?
40                   // Function to be overriden in a concrete chamber/station
41                   // geometry builder class.
42                   // Only materials that are not defined in the common
43                   // functions should be defined here.
44     virtual void CreateGeometry() = 0;
45                   // Function to be overriden in a concrete chamber/station
46                   // geometry builder class.
47                   // The geometry built there should not be placed
48                   // in ALIC; but all volumes going to ALIC
49                   // have to be added as envelopes to the chamber
50                   // geometries
51                   // (They will be then placed automatically 
52                   // usind the provided transformation.
53     virtual void SetTransformations() = 0;
54                   // Function to be overriden in a concrete chamber/station
55                   // geometry class.
56                   // The transformation of each chamber(s) wrt ALICE
57                   // should be defined and set to its geometry class. 
58     virtual void SetSensitiveVolumes() = 0;
59                   // Function to be overriden in a concrete chamber/station
60                   // geometry class.
61                   // The sensitive volumes Ids for each chamber
62                   // should be defined and set to its geometry class. 
63                    
64   protected:
65     // methods
66     AliMUONChamber* GetChamber(Int_t chamberId) const;
67     
68   private:
69     // data members
70     TObjArray*  fChambers; // the chambers which geometry will be built
71                            // by this builder
72     
73   ClassDef(AliMUONVGeometryBuilder,1) // MUON chamber geometry base class
74 };
75
76 #endif //ALI_MUON_V_GEOMETRY_BUILDER_H