]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TFluka/TFluka.h
Cerenkov photon update.
[u/mrichter/AliRoot.git] / TFluka / TFluka.h
index 2c0e8b3ebb0b44881d669f0f89f350546f24fa8e..e85068586d8c632d0606164dbb41bbab2cda5820 100644 (file)
@@ -15,6 +15,7 @@
 
 
 #include "TVirtualMC.h"
+#include "TMCOptical.h"
 #include "TFlukaCodes.h"
 #include "TFlukaMCGeometry.h"
 
@@ -132,7 +133,22 @@ class TFluka : public TVirtualMC {
   virtual void   SetCerenkov(Int_t itmed, Int_t npckov, Double_t *ppckov,
                             Double_t *absco, Double_t *effic, Double_t *rindex, Double_t *rfl);
   
+//
+  virtual void   DefineOpSurface(const char* name, EMCOpSurfaceModel model, EMCOpSurfaceType surface,
+                                EMCOpSurfaceFinish surfaceFinish, Double_t sigmaAlpha);
+  
+  virtual void  SetBorderSurface(const char* name, const char* vol1Name, int vol1CopyNo, const char* vol2Name, int vol2CopyNo,
+                                const char* opSurfaceName);
+  
+  
+  virtual void  SetSkinSurface(const char* name, const char* volName, const char* opSurfaceName);
   
+  virtual void  SetMaterialProperty(Int_t itmed, const char* propertyName, Int_t np, Double_t* pp, Double_t* values);
+
+  virtual void  SetMaterialProperty(Int_t itmed, const char* propertyName, Double_t value);
+
+  virtual void  SetMaterialProperty(const char* surfaceName, const char* propertyName, Int_t np, Double_t* pp, Double_t* values);
+
   // Functions for drawing
   virtual void   DrawOneSpec(const char* /*name*/)
       {Warning("DrawOneSpec",  "Not yet implemented !\n");}
@@ -152,6 +168,9 @@ class TFluka : public TVirtualMC {
   virtual const  char* VolName(Int_t id) const;
   virtual Int_t  NofVolumes() const {return fNVolumes;}
   virtual Int_t  VolId2Mate(Int_t id) const;
+  // Return the unique numeric identifier for medium name mediumName
+  virtual Int_t MediumId(const Text_t* mediumName) const;
+
   //
   // Methods for physics management
   // ------------------------------------------------
@@ -352,7 +371,7 @@ class TFluka : public TVirtualMC {
   void  SetXsco(Double_t x) {fXsco = x;}
   void  SetYsco(Double_t y) {fYsco = y;}
   void  SetZsco(Double_t z) {fZsco = z;}
-
+  void  SetPint(Double_t px, Double_t py, Double_t pz, Double_t e) {fPint[0] = px; fPint[1] = py; fPint[2] = pz; fPint[3] = e;}
   void  SetTrackIsEntering(){fTrackIsEntering = kTRUE; fTrackIsExiting = kFALSE;}
   void  SetTrackIsExiting() {fTrackIsExiting  = kTRUE; fTrackIsEntering = kFALSE;}
   void  SetTrackIsInside()  {fTrackIsExiting  = kFALSE; fTrackIsEntering = kFALSE;}
@@ -362,10 +381,6 @@ class TFluka : public TVirtualMC {
   Int_t  GetDummyBoundary() const {return fDummyBoundary;}
   Bool_t IsDummyBoundary() const {return (fDummyBoundary==0)?kFALSE:kTRUE;}
   
-
-  void   SetGeneratePemf(Bool_t flag = kTRUE) {fGeneratePemf = flag;}
-  Bool_t IsGeneratePemf() const {return fGeneratePemf;}
-  
   void   EnableField(Bool_t flag=kTRUE) {fFieldFlag = flag;}
   Bool_t IsFieldEnabled() const {return fFieldFlag;}
   
@@ -384,17 +399,19 @@ class TFluka : public TVirtualMC {
   Double_t GetPrimaryElectronKineticEnergy(Int_t i) const;
   void     GetPrimaryElectronPosition(Int_t i, Double_t& x, Double_t& y, Double_t& z) const;
   void     SetCurrentPrimaryElectronIndex(Int_t i)  {fPrimaryElectronIndex = i;}
-
+  void     PrimaryIonisationStepping(Int_t nprim);
  private:
    
   // Copy constructor and operator= declared but not implemented (-Weff++ flag)
   TFluka(const TFluka &mc); //: TVirtualMC(mc) {;}
   TFluka & operator=(const TFluka &); // {return (*this);}
  
-  void PrintHeader();
-  void AddParticlesToPdgDataBase() const;
+  void  PrintHeader();
+  void  AddParticlesToPdgDataBase() const;
+  Int_t GetIonPdg(Int_t z, Int_t a, Int_t i = 0) const;
+  Float_t* CreateFloatArray(Double_t* array, Int_t size) const;
+  
   //
-
   Int_t   fVerbosityLevel; //Verbosity level (0 lowest - 3 highest)
   Int_t   fNEvent;         //Current event number
   TString fInputFileName;     //Name of the real input file 
@@ -407,11 +424,11 @@ class TFluka : public TVirtualMC {
   Double_t              fXsco;             // Fluka Draw procedures formal parameter
   Double_t              fYsco;             // Fluka Draw procedures formal parameter
   Double_t              fZsco;             // Fluka Draw procedures formal parameter
+  Double_t              fPint[4];          // 4-vector of particle after interaction
   Bool_t   fTrackIsEntering;      // Flag for track entering
   Bool_t   fTrackIsExiting;       // Flag for track exiting  
   Bool_t   fTrackIsNew;           // Flag for new track
   Bool_t   fFieldFlag;            // Flag for magnetic field
-  Bool_t   fGeneratePemf;         // Flag for automatic .pemf generation
   Int_t    fDummyBoundary;        // Flag for crossing dummy boundaries
   Bool_t   fStopped;              // Flag for stopping 
   Bool_t   fStopEvent;            // Flag for stopped event
@@ -455,6 +472,45 @@ class TFluka : public TVirtualMC {
   }
 
 
+inline void TFluka::DefineOpSurface(const char* /*name*/, EMCOpSurfaceModel /*model*/, EMCOpSurfaceType /*surface*/,
+                                   EMCOpSurfaceFinish /*surfaceFinish*/, Double_t /*sigmaAlpha*/)
+{
+    Warning("DefineOpSurface", "New function - not yet implemented.");
+}
+
+
+inline void TFluka::SetBorderSurface(const char* /*name*/, const char* /*vol1Name*/, int /*vol1CopyNo*/, const char* /*vol2Name*/,
+                                    int /*vol2CopyNo*/, const char* /*opSurfaceName*/)
+{
+    Warning("SetBorderSurface", "New function - not yet implemented."); 
+}
+
+  
+inline void TFluka::SetSkinSurface(const char* /*name*/, const char* /*volName*/, const char* /*opSurfaceName*/)
+{
+    Warning("SetSkinSurface", "New function - not yet implemented.");
+}
+
+  
+inline void TFluka::SetMaterialProperty(Int_t /*itmed*/, const char* /*propertyName*/, Int_t /*np*/, Double_t* /*pp*/, Double_t* /*values*/)
+{
+    Warning("SetMaterialProperty", "New function - not yet implemented."); 
+}
+
+
+inline void TFluka::SetMaterialProperty(Int_t /*itmed*/, const char* /*propertyName*/, Double_t /*value*/)
+{
+    Warning("SetMaterialProperty", "New function - not yet implemented.");
+}
+
+
+inline void TFluka::SetMaterialProperty(const char* /*surfaceName*/, const char* /*propertyName*/, Int_t /*np*/,
+                                       Double_t* /*pp*/, Double_t* /*values*/)
+{
+    Warning("SetMaterialProperty", "New function - not yet implemented.");      
+}
+
+
 
 #endif //TFLUKA