/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/EventDisplay/BesVisLib/BesVisLib-00-04-04/BesVisLib/BesGeometry.h

Go to the documentation of this file.
00001 //
00002 // BesGeometry.h
00003 //
00004 
00005 #ifndef BES_GEOMETRY
00006 #define BES_GEOMETRY
00007 
00008 #include <TGeometry.h>
00009 
00010 #include "BesView.h"
00011 #include "MdcROOTGeo.h"
00012 #include "TofROOTGeo.h"
00013 #include "EmcROOTGeo.h"
00014 #include "MucROOTGeo.h"
00015 #include "BesCircle2D.h"
00016 #include "BesPolygon2D.h"
00017 
00018 class BesGeometry : public TObject {
00019 
00020  public:
00021   BesGeometry();
00022   virtual ~BesGeometry();
00023 
00024   virtual void        InitFromGDML(const TString fPath);
00025   virtual void        InitFromROOT(TGeoVolume* volBes);
00026   virtual void        InitGeometry();
00027 
00028   const   char*       GetFilename(const char* RunPeriod);
00029   virtual void        SetDefaultVis();
00030   virtual void        Draw(Option_t *option = "3D");
00031   virtual void        Draw3D();
00032   virtual void        Draw2DXY();
00033   virtual void        Draw2DZR();
00034 
00035   Float_t             GetBesR() { return m_BesR; }
00036   Float_t             GetBesZ() { return m_BesZ; }
00037 
00038   TGeoVolume         *GetVolBes()     { return m_Bes; }
00039   TGeoVolume         *GetVolumeBeamPipe() { return m_BeamPipe; } 
00040 
00041   MdcROOTGeo         *GetMdcROOTGeo() { return m_MdcROOTGeo; }
00042   TofROOTGeo         *GetTofROOTGeo() { return m_TofROOTGeo; }
00043   EmcROOTGeo         *GetEmcROOTGeo() { return m_EmcROOTGeo; }
00044   MucROOTGeo         *GetMucROOTGeo() { return m_MucROOTGeo; }
00045 
00046   TGeoVolume         *GetVolumeMdc()  { return m_MdcROOTGeo->GetVolumeMdc(); }
00047   TGeoVolume         *GetVolumeMdcSegment(int segment) { return m_MdcROOTGeo->GetVolumeSegment(segment); }
00048   TGeoVolume         *GetVolumeMdcLayer(int layer)     { return m_MdcROOTGeo->GetVolumeLayer(layer); }
00049   TGeoVolume         *GetVolumeMdcReplica(int layer)   { return m_MdcROOTGeo->GetVolumeReplica(layer); }
00050   TGeoPhysicalNode   *GetPhysicalMdcReplica(int layer, int replica) { return m_MdcROOTGeo->GetPhysicalReplica(layer, replica); }
00051   
00052   TGeoVolume         *GetVolumeTof() { return m_TofROOTGeo->GetVolumeTof(); }
00053   //TGeoVolumeAssembly *GetVolumeTofAssembly(int part) { return m_TofROOTGeo->GetVolumeAssembly(part); }
00054   //TGeoVolume         *GetVolumeTofScin(int part)     { return m_TofROOTGeo->GetVolumeScin(part); }
00055   //TGeoVolume         *GetVolumeTofBucket(int part)   { return m_TofROOTGeo->GetVolumeBucket(part); }
00056   TGeoPhysicalNode   *GetPhysicalTofScin(int part, int layer, int scin) { return m_TofROOTGeo->GetPhysicalScin(part, layer, scin); }
00057 
00058   TGeoVolume         *GetVolumeEmc() { return m_EmcROOTGeo->GetVolumeEmc(); }
00059   TGeoVolume         *GetVolumeEmcPart(int part) { return m_EmcROOTGeo->GetVolumePart(part); }
00060   TGeoVolume         *GetVolumeEmcPhi(int part, int phi) { return m_EmcROOTGeo->GetVolumePhi(part, phi); }
00061   TGeoVolume         *GetVolumeEmcTheta(int part, int phi, int theta)     { return m_EmcROOTGeo->GetVolumeTheta(part, phi, theta); }
00062   TGeoVolume         *GetVolumeEmcCrystal(int part, int phi, int theta)   { return m_EmcROOTGeo->GetVolumeCrystal(part, phi, theta); }
00063   TGeoPhysicalNode   *GetPhysicalEmcCrystal(int part, int phi, int theta) { return m_EmcROOTGeo->GetPhysicalCrystal(part, phi, theta); }
00064 
00065   TGeoVolume         *GetVolumeMuc()  { return m_MucROOTGeo->GetVolumeMuc(); }
00066   TGeoVolume         *GetVolumeMucAbsorber(int part, int seg, int absorber) {  return m_MucROOTGeo->GetVolumeAbsorber(part, seg, absorber); }
00067   TGeoVolume         *GetVolumeMucAbsorberPanel(int part, int seg, int absorber, int panel) { return m_MucROOTGeo->GetVolumeAbsorberPanel(part, seg, absorber, panel); }
00068   TGeoVolume         *GetVolumeMucGap(int part, int seg, int gap) { return m_MucROOTGeo->GetVolumeGap(part, seg, gap); }
00069   TGeoVolume         *GetVolumeMucStripPlane(int part, int seg, int gap) { return m_MucROOTGeo->GetVolumeStripPlane(part, seg, gap); }
00070   TGeoVolume         *GetVolumeMucStrip(int part, int seg, int gap, int strip) { return m_MucROOTGeo->GetVolumeStripPlane(part, seg, gap); }
00071   TGeoVolume         *GetVolumeMucGasChamber(int part, int seg, int gap, int panel, int gasChamber)  { return m_MucROOTGeo->GetVolumeGasChamber(part, seg, gap, panel, gasChamber); }
00072   TGeoVolume         *GetVolumeMucBakelite(int part, int seg, int gap, int RpcUpDown, int panel, int bakelite) { return m_MucROOTGeo->GetVolumeBakelite(part, seg, gap, RpcUpDown, panel, bakelite); }
00073   TGeoPhysicalNode   *GetPhysicalMucGap(int part, int seg, int gap) { return m_MucROOTGeo->GetPhysicalGap(part, seg, gap); }
00074   TGeoPhysicalNode   *GetPhysicalMucStrip(int part, int seg, int gap, int strip) { return m_MucROOTGeo->GetPhysicalStrip(part, seg, gap, strip); }
00075 
00076  private:
00077   Double_t          m_BesR;
00078   Double_t          m_BesZ;
00079 
00080   Double_t          m_BeamPipeRMin;
00081   Double_t          m_BeamPipeRMax;
00082   Double_t          m_BeamPipeZ;
00083 
00084   TGeoVolume       *m_Bes;                  //Bes world volume
00085   TGeoVolume       *m_BeamPipe;             //Beam Pipe volume
00086   TGeoVolume       *m_Mdc;
00087   TGeoVolume       *m_Tof;
00088   TGeoVolume       *m_Emc;
00089   TGeoVolume       *m_Muc;
00090 
00091   MdcROOTGeo       *m_MdcROOTGeo;           //MdcROOTGeo
00092   TofROOTGeo       *m_TofROOTGeo;           //TofROOTGeo
00093   EmcROOTGeo       *m_EmcROOTGeo;           //EmcROOTGeo
00094   MucROOTGeo       *m_MucROOTGeo;           //MucROOTGeo
00095 
00096   BesCircle2D      *m_BeamPipeXY;
00097   BesPolygon2D     *m_BeamPipeZR;
00098   BesPolygon2D     *m_ZRPlaneOnXY;
00099 
00100   ClassDef(BesGeometry, 1) // Bes Geometry
00101 };
00102 
00103 R__EXTERN BesGeometry *gBesGeometry;
00104 
00105 #endif 

Generated on Tue Nov 29 23:12:01 2016 for BOSS_7.0.2 by  doxygen 1.4.7