00001 #ifndef G3VOLUME_H
00002 #define G3VOLUME_H
00003
00004
00005
00006
00007
00008 #include <TGListTree.h>
00009 #include "TROOT.h"
00010
00011 #include "TGeant3.h"
00012 #include "TArrayF.h"
00013 #include "TNamed.h"
00014 #include "TList.h"
00015
00016 class TShape;
00017 class TMaterial;
00018
00019 class G3Volume : public TNamed
00020 {
00021 public:
00022 G3Volume() {;}
00023 G3Volume(const char* name);
00024 virtual ~G3Volume(){;}
00025
00026 virtual void Draw(Option_t * option =0);
00027
00028 virtual void DrawSpec();
00029
00030 virtual void SetParam(Int_t i, Float_t param);
00031
00032 virtual Float_t GetParam(Int_t i);
00033
00034 virtual void SetIdVolume(Int_t id) {fIdVolume = id;}
00035
00036 virtual void SetIdCopy(Int_t id) {fIdCopy = id;}
00037
00038 virtual void SetIdMedium(Int_t id) {fIdMedium = id;}
00039
00040 virtual void SetIdMaterial(Int_t id) {fIdMaterial = id;}
00041
00042 virtual Int_t GetIdVolume() const {return fIdVolume;}
00043
00044 virtual Int_t GetIdCopy() const {return fIdCopy;}
00045
00046 virtual Int_t Medium() const {return fIdMedium;}
00047
00048 virtual Int_t Material() const {return fIdMaterial;}
00049
00050 virtual void AddCopy() {fIdCopy ++;}
00051
00052 virtual void SetItem(TObject *item) {fItem = item;}
00053
00054 virtual void SetPosition(Float_t x, Float_t y, Float_t z);
00055 virtual TArrayF Position(Int_t i) const;
00056
00057 virtual void SetRotMatrix(Int_t irot) {fRotMatrix = irot;}
00058 virtual Int_t RotMatrix() const {return fRotMatrix;}
00059 virtual void SetShape(Int_t shape) {fShape = shape;}
00060 virtual Int_t Shape() const {return fShape;}
00061 virtual void SetParameters(Int_t np, Float_t* param);
00062 virtual Int_t NParam() const {return fNParam;}
00063 virtual void Parameters(Int_t i, TArrayF& param) const;
00064 virtual TList* Copies() const {return fCopies;}
00065 virtual void AddCopy(G3Volume* volume);
00066 virtual G3Volume* MakeCopy(Int_t i);
00067
00068 virtual Int_t NCopies() const {return fNCopies;}
00069 virtual Bool_t Posp() const {return fPosp;}
00070 virtual void SetPosp(Bool_t flag) {fPosp = flag;}
00071 virtual void CreateTShape(char* nameV, TMaterial* mat);
00072 virtual void SetDivision(Int_t ndiv, Int_t axis, Float_t start, Float_t step);
00073 virtual void Division(Int_t& ndiv, Int_t& axis, Float_t& start, Float_t& step) const;
00074 virtual Int_t Axis() {return fAxis;}
00075 virtual Int_t Ndiv() {return fNdiv;}
00076 virtual Float_t Step() {return fStep;}
00077 virtual Float_t StartC() {return fStartC;}
00078
00079
00080
00081 virtual TObject* GetItem() {return fItem;}
00082
00083 G3Volume(const G3Volume&);
00084
00085
00086 private:
00087
00088 TArrayF fPosition;
00089 TArrayF fParameters;
00090 TList* fCopies;
00091 Bool_t fPosp;
00092 Int_t fNCopies;
00093 Int_t fRotMatrix;
00094 Int_t fNParam;
00095 Int_t fAxis;
00096 Int_t fNdiv;
00097 Float_t fStep;
00098 Float_t fStartC;
00099 Int_t fShape;
00100 Float_t fTheta;
00101 Float_t fPhi;
00102 Float_t fPsi;
00103 Float_t fU;
00104 Float_t fV;
00105 Float_t fUscale;
00106 Float_t fVscale;
00107 Bool_t fHide;
00108 Bool_t fShadow;
00109 Int_t fFill;
00110 Int_t fSeen;
00111 Bool_t fClip;
00112 Float_t fClipXmin;
00113 Float_t fClipXmax;
00114 Float_t fClipYmin;
00115 Float_t fClipYmax;
00116 Float_t fClipZmin;
00117 Float_t fClipZmax;
00118 Int_t fIdVolume;
00119 Int_t fIdMedium;
00120 Int_t fIdMaterial;
00121 Int_t fIdCopy;
00122 TObject* fItem;
00123 G3Volume & operator=(const G3Volume&) {return *this;}
00124
00125 ClassDef(G3Volume,1)
00126 };
00127
00128
00129
00130 enum G3DrawParamId {
00131 kTheta,
00132 kPhi,
00133 kPsi,
00134 kU,
00135 kV,
00136 kUscale,
00137 kVscale,
00138 kShadow,
00139 kHide,
00140 kFill,
00141 kSeen,
00142 kClip,
00143 kClipXmin,
00144 kClipXmax,
00145 kClipYmin,
00146 kClipYmax,
00147 kClipZmin,
00148 kClipZmax
00149 };
00150
00151
00152 #endif