3 // Class AliMUONVGeometryBuilder
4 // -----------------------------
5 // Abstract base class for geometry construction per chamber(s).
7 // Author: Ivana Hrivnacova, IPN Orsay
9 #ifndef ALI_MUON_V_GEOMETRY_BUILDER_H
10 #define ALI_MUON_V_GEOMETRY_BUILDER_H
14 class TGeoTranslation;
20 class AliMUONChamberGeometry;
22 class AliMUONVGeometryBuilder : public TObject
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();
36 AliMUONVGeometryBuilder& operator = (const AliMUONVGeometryBuilder& rhs);
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
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
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
61 // The sensitive volumes Ids for each chamber
62 // should be defined and set to its geometry class.
66 AliMUONChamber* GetChamber(Int_t chamberId) const;
70 TObjArray* fChambers; // the chambers which geometry will be built
73 ClassDef(AliMUONVGeometryBuilder,1) // MUON chamber geometry base class
76 #endif //ALI_MUON_V_GEOMETRY_BUILDER_H