#include <TGeoVolume.h>
#include <TGeoNode.h>
#include <TGeoManager.h>
+#include <TVirtualGeoPainter.h>
using namespace Reve;
//______________________________________________________________________
// GeoTopNodeRnrEl
//
+// A wrapper over a TGeoNode, possibly displaced with a global
+// trasformation fGlobalTrans (the matrix is owned by this class).
/**************************************************************************/
ClassImp(GeoTopNodeRnrEl)
Int_t visopt, Int_t vislvl) :
GeoNodeRnrEl(node),
fManager(manager),
+ fGlobalTrans(0),
+ fUseNodeTrans(kFALSE),
fVisOption(visopt), fVisLevel(vislvl)
{
fRnrElement = true;
}
+GeoTopNodeRnrEl::~GeoTopNodeRnrEl()
+{
+ delete fGlobalTrans;
+}
+
+/**************************************************************************/
+
+void GeoTopNodeRnrEl::SetGlobalTrans(TGeoHMatrix* m)
+{
+ delete fGlobalTrans;
+ fGlobalTrans = m;
+}
+
+void GeoTopNodeRnrEl::SetUseNodeTrans(Bool_t u)
+{
+ fUseNodeTrans = u;
+}
+
/**************************************************************************/
void GeoTopNodeRnrEl::SetVisOption(Int_t visopt)
fManager->SetVisLevel(fVisLevel);
fManager->SetTopVolume(fNode->GetVolume());
gPad = pad;
- fNode->Paint(option);
+ TVirtualGeoPainter* vgp = fManager->GetGeomPainter();
+ if(vgp != 0) {
+#if ROOT_VERSION_CODE > ROOT_VERSION(5,11,7)
+ vgp->PaintNode(fNode, option, fUseNodeTrans ? fNode->GetMatrix() : fGlobalTrans);
+#else
+ vgp->PaintNode(fNode, option);
+#endif
+ }
fManager->SetTopVolume(top_volume);
}
}
class TGeoVolume;
class TGeoNode;
+class TGeoHMatrix;
class TGeoManager;
namespace Reve {
friend class GeoNodeRnrElEditor;
protected:
- TGeoNode* fNode;
+ TGeoNode *fNode;
public:
GeoNodeRnrEl(TGeoNode* node);
{
protected:
TGeoManager* fManager;
+ TGeoHMatrix* fGlobalTrans;
+ Bool_t fUseNodeTrans;
Int_t fVisOption;
Int_t fVisLevel;
public:
GeoTopNodeRnrEl(TGeoManager* manager, TGeoNode* node, Int_t visopt=1, Int_t vislvl=3);
+ virtual ~GeoTopNodeRnrEl();
+
+ TGeoHMatrix *GetGlobalTrans() const { return fGlobalTrans; }
+ void SetGlobalTrans(TGeoHMatrix* m);
+ Bool_t GetUseNodeTrans() const { return fUseNodeTrans; }
+ void SetUseNodeTrans(Bool_t u=kTRUE);
Int_t GetVisOption() const { return fVisOption; }
void SetVisOption(Int_t visopt);