Line data Source code
1 : /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2 : * See cxx source for full Copyright notice */
3 :
4 : // $Id$
5 : // Revision of includes 07/05/2004
6 :
7 : /// \ingroup geometry
8 : /// \class AliMUONGeometryEnvelope
9 : /// \brief Geometry envelope helper class
10 : ///
11 : /// Helper class for definititon of an assembly of volumes.
12 : ///
13 : /// \author Ivana Hrivnacova, IPN Orsay
14 :
15 : #ifndef ALI_MUON_GEOMETRY_ENVELOPE_H
16 : #define ALI_MUON_GEOMETRY_ENVELOPE_H
17 :
18 : #include <TNamed.h>
19 :
20 : class TGeoTranslation;
21 : class TGeoRotation;
22 : class TGeoCombiTrans;
23 : class TObjArray;
24 :
25 : class AliMUONGeometryEnvelope : public TNamed
26 : {
27 : public:
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();
34 :
35 : // methods
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);
44 :
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);
57 :
58 : void SetTranslation(const TGeoTranslation& translation);
59 : void SetRotation(const TGeoRotation& rotation);
60 : void SetTransform(const TGeoCombiTrans& transform);
61 :
62 : // get methods
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;
68 :
69 : protected:
70 : /// Not implemented
71 : AliMUONGeometryEnvelope(const AliMUONGeometryEnvelope& rhs);
72 : /// Not implemented
73 : AliMUONGeometryEnvelope& operator = (const AliMUONGeometryEnvelope& rhs);
74 :
75 : private:
76 : Bool_t fIsVirtual; ///< \brief true if envelope is not represented
77 : /// by a real volume
78 : Bool_t fIsMANY; ///< \brief true if envelope is placed with
79 : /// MANY option
80 : Int_t fCopyNo; ///< \brief copy number
81 : /// (only non virtual envelope can have
82 : /// more than one copy)
83 : TGeoCombiTrans* fTransformation;///< \brief the envelope transformation wrt to the
84 : /// mother frame (the chamber position)
85 : TObjArray* fConstituents; ///< \brief the constituents names and transformations
86 : /// wrt to the envelope position
87 :
88 43286 : ClassDef(AliMUONGeometryEnvelope,1) // MUON chamber geometry base class
89 : };
90 :
91 : // inline functions
92 :
93 : /// Return true if envelope is virtual
94 : inline Bool_t AliMUONGeometryEnvelope::IsVirtual() const
95 10816 : { return fIsVirtual; }
96 :
97 : /// Return true if envelope is placed with MANY option
98 : inline Bool_t AliMUONGeometryEnvelope::IsMANY() const
99 2704 : { return fIsMANY; }
100 :
101 : /// Return copy number
102 : inline Int_t AliMUONGeometryEnvelope::GetCopyNo() const
103 3160 : { return fCopyNo; }
104 :
105 : /// Return the envelope transformation wrt to the mother frame
106 : /// (the chamber position)
107 : inline const TGeoCombiTrans* AliMUONGeometryEnvelope::GetTransformation() const
108 3160 : { return fTransformation; }
109 :
110 : /// Return the array of constituents names and transformations
111 : /// wrt to the envelope position
112 : inline const TObjArray* AliMUONGeometryEnvelope::GetConstituents() const
113 18616 : { return fConstituents; }
114 :
115 : #endif //ALI_MUON_GEOMETRY_ENVELOPE_H
|