1 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2 * See cxx source for full Copyright notice */
5 // Revision of includes 07/05/2004
8 /// \class AliMUONGeometryEnvelope
9 /// \brief Geometry envelope helper class
11 /// Helper class for definititon of an assembly of volumes.
13 /// \author Ivana Hrivnacova, IPN Orsay
15 #ifndef ALI_MUON_GEOMETRY_ENVELOPE_H
16 #define ALI_MUON_GEOMETRY_ENVELOPE_H
20 class TGeoTranslation;
25 class AliMUONGeometryEnvelope : public TNamed
28 AliMUONGeometryEnvelope(const TString& name, Int_t id,
29 Bool_t isVirtual, const char* only);
30 AliMUONGeometryEnvelope(const TString& name, Int_t id,
31 Int_t copyNo, const char* only);
32 AliMUONGeometryEnvelope();
33 virtual ~AliMUONGeometryEnvelope();
36 void AddConstituent(const TString& name, Int_t copyNo);
37 void AddConstituent(const TString& name, Int_t copyNo,
38 const TGeoTranslation& translation);
39 void AddConstituent(const TString& name, Int_t copyNo,
40 const TGeoTranslation& translation,
41 const TGeoRotation& rotation);
42 void AddConstituent(const TString& name, Int_t copyNo,
43 const TGeoCombiTrans& transform);
45 void AddConstituentParam(const TString& name, Int_t copyNo,
46 Int_t npar, Double_t* param);
47 void AddConstituentParam(const TString& name, Int_t copyNo,
48 const TGeoTranslation& translation,
49 Int_t npar, Double_t* param);
50 void AddConstituentParam(const TString& name, Int_t copyNo,
51 const TGeoTranslation& translation,
52 const TGeoRotation& rotation,
53 Int_t npar, Double_t* param);
54 void AddConstituentParam(const TString& name, Int_t copyNo,
55 const TGeoCombiTrans& transform,
56 Int_t npar, Double_t* param);
58 void SetTranslation(const TGeoTranslation& translation);
59 void SetRotation(const TGeoRotation& rotation);
60 void SetTransform(const TGeoCombiTrans& transform);
63 Bool_t IsVirtual() const;
64 Bool_t IsMANY() const;
65 Int_t GetCopyNo() const;
66 const TGeoCombiTrans* GetTransformation() const;
67 const TObjArray* GetConstituents() const;
70 AliMUONGeometryEnvelope(const AliMUONGeometryEnvelope& rhs);
71 AliMUONGeometryEnvelope& operator = (const AliMUONGeometryEnvelope& rhs);
74 Bool_t fIsVirtual; ///< \brief true if envelope is not represented
76 Bool_t fIsMANY; ///< \brief true if envelope is placed with
78 Int_t fCopyNo; ///< \brief copy number
79 /// (only non virtual envelope can have
80 /// more than one copy)
81 TGeoCombiTrans* fTransformation;///< \brief the envelope transformation wrt to the
82 /// mother frame (the chamber position)
83 TObjArray* fConstituents; ///< \brief the constituents names and transformations
84 /// wrt to the envelope position
86 ClassDef(AliMUONGeometryEnvelope,1) // MUON chamber geometry base class
91 /// Return true if envelope is virtual
92 inline Bool_t AliMUONGeometryEnvelope::IsVirtual() const
93 { return fIsVirtual; }
95 /// Return true if envelope is placed with MANY option
96 inline Bool_t AliMUONGeometryEnvelope::IsMANY() const
99 /// Return copy number
100 inline Int_t AliMUONGeometryEnvelope::GetCopyNo() const
103 /// Return the envelope transformation wrt to the mother frame
104 /// (the chamber position)
105 inline const TGeoCombiTrans* AliMUONGeometryEnvelope::GetTransformation() const
106 { return fTransformation; }
108 /// Return the array of constituents names and transformations
109 /// wrt to the envelope position
110 inline const TObjArray* AliMUONGeometryEnvelope::GetConstituents() const
111 { return fConstituents; }
113 #endif //ALI_MUON_GEOMETRY_ENVELOPE_H