Many corrections and upgrades. (A. Gheata)
[u/mrichter/AliRoot.git] / TFluka / TFlukaMCGeometry.h
index 9f5433eede13117081a1d29cd888f9f7f319415a..5541baa4221bbf332e657fe9a2ab5b50d1e061a3 100644 (file)
 class TFlukaMCGeometry : public TVirtualMCGeometry {
 
   public:
+    enum EFlukaLatticeTypes {
+       kLttcOutside = 999999999,
+       kLttcVirtual = 1000000000
+    };   
+  
     TFlukaMCGeometry();
     TFlukaMCGeometry(const char* name, const char* title);
     virtual ~TFlukaMCGeometry();
@@ -109,14 +114,25 @@ class TFlukaMCGeometry : public TVirtualMCGeometry {
     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;
 
@@ -128,7 +144,13 @@ class TFlukaMCGeometry : public TVirtualMCGeometry {
     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
 };