DQM configure file
[u/mrichter/AliRoot.git] / MUON / AliMUONGeometryEnvelope.h
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   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 { return fIsVirtual; }  
96
97 /// Return true if envelope is placed with MANY option
98 inline Bool_t AliMUONGeometryEnvelope::IsMANY() const
99 { return fIsMANY; }  
100
101 /// Return copy number
102 inline Int_t AliMUONGeometryEnvelope::GetCopyNo() const
103 { 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 { 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 { return fConstituents; }
114
115 #endif //ALI_MUON_GEOMETRY_ENVELOPE_H