Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

G3Volume.h

Go to the documentation of this file.
00001 #ifndef G3VOLUME_H
00002 #define G3VOLUME_H
00003 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
00004  * See cxx source for full Copyright notice                               */
00005 
00006 /* $Id: G3Volume.h,v 1.3 2009/02/16 08:26:59 schubert Exp $ */
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     // G3 the volume
00026     virtual void    Draw(Option_t * option =0);
00027     // G3 volume specs
00028     virtual void    DrawSpec();
00029     // Set volume parameter i
00030     virtual void    SetParam(Int_t i, Float_t param);
00031     // Get volume parameters i
00032     virtual Float_t GetParam(Int_t i);
00033     // Set volume id
00034     virtual void  SetIdVolume(Int_t id) {fIdVolume = id;}
00035     // Set volume copy number
00036     virtual void  SetIdCopy(Int_t id)   {fIdCopy = id;}
00037     // Set volume medium number
00038     virtual void  SetIdMedium(Int_t id)   {fIdMedium = id;}
00039     // Set volume material number
00040     virtual void  SetIdMaterial(Int_t id) {fIdMaterial = id;}
00041     // Get volume id
00042     virtual Int_t GetIdVolume() const {return fIdVolume;}
00043     // Get copy number
00044     virtual Int_t GetIdCopy() const {return fIdCopy;}
00045     // Get medium number
00046     virtual Int_t Medium() const  {return fIdMedium;}
00047     // Get material number
00048     virtual Int_t Material() const {return fIdMaterial;}
00049     // Increase copy number by one
00050     virtual void  AddCopy() {fIdCopy ++;}
00051     // Set link to ListTree Item
00052     virtual void  SetItem(TObject *item) {fItem = item;}
00053     // Get link to ListTree Item
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;     // position with respect to mother volume
00089     TArrayF  fParameters;   // volume parameters
00090     TList*   fCopies;       // volume copies
00091     Bool_t   fPosp;         // flag for G3 POSP
00092     Int_t    fNCopies;      // number of copies
00093     Int_t    fRotMatrix;    // rotation with respect to mother volume
00094     Int_t    fNParam;       // number of volume parameters
00095     Int_t    fAxis;         // division axis
00096     Int_t    fNdiv;         // number of divisions
00097     Float_t  fStep;         // number of steps
00098     Float_t  fStartC;       // start coordinate
00099     Int_t    fShape;       // G3 volume shape
00100     Float_t  fTheta;       // theta-angle for drawing
00101     Float_t  fPhi;         // phi-angle   for drawing
00102     Float_t  fPsi;         // psi-angle   for drawing
00103     Float_t  fU;           // u-position
00104     Float_t  fV;           // v-position
00105     Float_t  fUscale;      // u-scaling factor
00106     Float_t  fVscale;      // v-scaling factor
00107     Bool_t   fHide;        // hide flag
00108     Bool_t   fShadow;      // shadow flag
00109     Int_t    fFill;        // fill option 1-6
00110     Int_t    fSeen;        // seen option -2 - 1
00111     Bool_t   fClip;        // clipping flag
00112     Float_t  fClipXmin;    // clip box range xmin
00113     Float_t  fClipXmax;    // clip box range xmax
00114     Float_t  fClipYmin;    // clip box range ymin
00115     Float_t  fClipYmax;    // clip box range ymax
00116     Float_t  fClipZmin;    // clip box range zmin
00117     Float_t  fClipZmax;    // clip box range zmax
00118     Int_t    fIdVolume;    // geant volume id
00119     Int_t    fIdMedium;    // geant medium id
00120     Int_t    fIdMaterial;  // geant material id
00121     Int_t    fIdCopy;      // copy flag
00122     TObject* fItem;        
00123     G3Volume & operator=(const G3Volume&) {return *this;}
00124 
00125     ClassDef(G3Volume,1) // G3 Volume for G3 GUI
00126 };
00127 
00128 //
00129 // Drawing parameter tags
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

Generated on Mon Feb 15 11:06:45 2010 for loon by  doxygen 1.3.9.1