00001 #include "TROOT.h" 00002 #include "TGeoNode.h" 00003 #include "TGeoVolume.h" 00004 #include "TGeoManager.h" 00005 #include "TVirtualGeoPainter.h" 00006 00007 //_______________________________________________________________________________ 00008 class iterplugin : public TGeoIteratorPlugin 00009 { 00010 public: 00011 iterplugin() : TGeoIteratorPlugin(), fColor(kGreen), fReplica(1) {} 00012 virtual ~iterplugin() {} 00013 // Process current node 00014 virtual void ProcessNode(); 00015 void Select(Int_t replica, Int_t color) {fReplica=replica; fColor=color;} 00016 00017 Int_t fColor; // Current color 00018 Int_t fReplica; // replica number (1 to 4) 00019 00020 ClassDef(iterplugin, 0) // A simple user iterator plugin that changes volume color 00021 }; 00022 00023 ClassImp(iterplugin) 00024 00025 void iterplugin::ProcessNode() 00026 { 00027 if (!fIterator) return; 00028 TString path; 00029 fIterator->GetPath(path); 00030 if (!path.Contains(Form("REPLICA_%d",fReplica))) return; 00031 Int_t level = fIterator->GetLevel(); 00032 TGeoVolume *vol = fIterator->GetNode(level)->GetVolume(); 00033 vol->SetLineColor(fColor); 00034 } 00035