class TFlukaMCGeometry : public TVirtualMCGeometry {
public:
+ enum EFlukaLatticeTypes {
+ kLttcOutside = 999999999,
+ kLttcVirtual = 1000000000
+ };
+
TFlukaMCGeometry();
TFlukaMCGeometry(const char* name, const char* title);
virtual ~TFlukaMCGeometry();
const char* CurrentVolName() const;
const char* CurrentVolOffName(Int_t off) const;
Int_t GetMedium() const;
+ Int_t *GetRegionList(Int_t imed, Int_t &nreg);
+ Int_t *GetMaterialList(Int_t imat, Int_t &nreg);
+ Int_t GetFlukaMaterial(Int_t imed) const;
+ Int_t GetLastMaterialIndex() const {return fLastMaterial;}
virtual Int_t VolId(const Text_t* volName) const;
virtual const char* VolName(Int_t id) const;
virtual Int_t NofVolumes() const;
virtual Int_t VolId2Mate(Int_t id) const;
// FLUKA specific methods
- void CreateFlukaMatFile(const char *fname=0) const;
+ void CreateFlukaMatFile(const char *fname=0);
void PrintHeader(ofstream &out, const char *text) const;
+ Bool_t IsDebugging() const {return fDebug;}
+ void SetDebugMode(Bool_t flag=kTRUE) {fDebug = flag;}
+ void SetMreg(Int_t mreg);
+ void SetCurrentRegion(Int_t mreg, Int_t latt);
+ void GetCurrentRegion(Int_t &mreg, Int_t &latt) const {mreg=fCurrentRegion; latt=fCurrentLattice;}
+ void SetNextRegion(Int_t mreg, Int_t latt);
+ void GetNextRegion(Int_t &mreg, Int_t &latt) const {mreg=fNextRegion; latt=fNextLattice;}
Int_t RegionId() const;
void ToFlukaString(TString &str) const;
TFlukaMCGeometry& operator=(const TFlukaMCGeometry& rhs) {return (*this);}
static TFlukaMCGeometry* fgInstance; // singleton instance
-
+ Bool_t fDebug; // debug flag
+ Int_t fLastMaterial; // last FLUKA material index
+ Int_t fCurrentRegion; // current region number
+ Int_t fCurrentLattice; // current lattice history
+ Int_t fNextRegion; // next region number
+ Int_t fNextLattice; // next lattice history
+ Int_t *fRegionList; //! region list matching a given medium number
ClassDef(TFlukaMCGeometry,1) //Virtual MonteCarlo Interface
};