3 // Class AliMUONGeometryEnvelopeStore
4 // -----------------------------
5 // Class for definititon of the temporary volume envelopes
6 // used in geometry construction
8 // Author: Ivana Hrivnacova, IPN Orsay
10 #ifndef ALI_MUON_GEOMETRY_ENVELOPE_STORE_H
11 #define ALI_MUON_GEOMETRY_ENVELOPE_STORE_H
16 class TGeoTranslation;
23 class AliMUONGeometryEnvelope;
24 class AliMUONGeometryTransformStore;
26 class AliMUONGeometryEnvelopeStore : public TObject
29 AliMUONGeometryEnvelopeStore(AliMUONGeometryTransformStore* transforms);
30 AliMUONGeometryEnvelopeStore();
31 AliMUONGeometryEnvelopeStore(const AliMUONGeometryEnvelopeStore& rhs);
32 virtual ~AliMUONGeometryEnvelopeStore();
35 AliMUONGeometryEnvelopeStore& operator = (const AliMUONGeometryEnvelopeStore& rhs);
39 // adding virtual envelopes
40 // (not placed in MC geometry, only logical assembly of volumes,
41 // cannot have more copies)
42 void AddEnvelope(const TString& name, Int_t id,
43 Bool_t isVirtual, const char* only="ONLY");
44 void AddEnvelope(const TString& name, Int_t id,
46 const TGeoTranslation& translation,
47 const char* only="ONLY");
48 void AddEnvelope(const TString& name, Int_t id,
50 const TGeoTranslation& translation,
51 const TGeoRotation& rotation,
52 const char* only="ONLY");
53 void AddEnvelope(const TString& name, Int_t id,
55 const TGeoCombiTrans& transform,
56 const char* only="ONLY");
58 // adding non-virtual envelopes
59 // (placed in MC geometry with transformation composed
60 // of transformation of chamber and their transformation,
61 // can have more copies )
62 void AddEnvelope(const TString& name, Int_t id,
63 Int_t copyNo, const char* only="ONLY");
64 void AddEnvelope(const TString& name, Int_t id,
66 const TGeoTranslation& translation,
67 const char* only="ONLY");
68 void AddEnvelope(const TString& name, Int_t id,
70 const TGeoTranslation& translation,
71 const TGeoRotation& rotation,
72 const char* only="ONLY");
73 void AddEnvelope(const TString& name, Int_t id,
75 const TGeoCombiTrans& transform,
76 const char* only="ONLY");
78 // adding constituents to virtual envelopes
79 // (placed in MC geometry with transformation composed
80 // of transformation of chamber, envelope and their own
82 void AddEnvelopeConstituent(const TString& name, const TString& envName,
84 void AddEnvelopeConstituent(const TString& name, const TString& envName,
85 Int_t copyNo, const TGeoTranslation& translation);
86 void AddEnvelopeConstituent(const TString& name, const TString& envName,
87 Int_t copyNo, const TGeoTranslation& translation,
88 const TGeoRotation& rotation);
89 void AddEnvelopeConstituent(const TString& name, const TString& envName,
90 Int_t copyNo, const TGeoCombiTrans& transform);
92 // adding constituents to virtual envelopes with specified shape
94 // (placed in MC geometry with transformation composed
95 // of transformation of chamber, envelope and their own
97 void AddEnvelopeConstituentParam(const TString& name, const TString& envName,
98 Int_t copyNo, Int_t npar, Double_t* param);
99 void AddEnvelopeConstituentParam(const TString& name, const TString& envName,
100 Int_t copyNo, const TGeoTranslation& translation,
101 Int_t npar, Double_t* param);
102 void AddEnvelopeConstituentParam(const TString& name, const TString& envName,
103 Int_t copyNo, const TGeoTranslation& translation,
104 const TGeoRotation& rotation, Int_t npar, Double_t* param);
105 void AddEnvelopeConstituentParam(const TString& name, const TString& envName,
106 Int_t copyNo, const TGeoCombiTrans& transform,
107 Int_t npar, Double_t* param);
109 void SetDebug(Bool_t debug);
112 virtual Bool_t GetAlign() const;
113 virtual void SetAlign(Bool_t align);
116 const TObjArray* GetEnvelopes() const;
120 AliMUONGeometryEnvelope* FindEnvelope(const TString& name) const;
121 Bool_t AlignEnvelope(AliMUONGeometryEnvelope* envelope) const;
124 AliMUONGeometryTransformStore* fDETransforms; // det elements transformations
125 TObjArray* fEnvelopes; // the envelopes names and transformations
126 // wrt to the chamber position in mother volume
127 Bool_t fDebug; // Switch for debugging
128 Bool_t fAlign; // option to read transformations from a file
130 ClassDef(AliMUONGeometryEnvelopeStore,1) // MUON envelope store
135 inline void AliMUONGeometryEnvelopeStore::SetDebug(Bool_t debug)
138 inline Bool_t AliMUONGeometryEnvelopeStore::GetAlign() const
141 inline void AliMUONGeometryEnvelopeStore::SetAlign(Bool_t align)
144 inline const TObjArray* AliMUONGeometryEnvelopeStore::GetEnvelopes() const
145 { return fEnvelopes; }
147 #endif //ALI_MUON_CHAMBER_ENVELOPE_STORE_H