00001
00002
00003
00004
00005
00006
00007
00008
00010
00011 #ifndef GEOMEDIUM_H
00012 #define GEOMEDIUM_H
00013
00014 #include <TGeoMedium.h>
00015 #include "Util/UtilMCFlag.h"
00016 #include "GeoGeometry/Geo.h"
00017
00018 class GeoMedium : public TGeoMedium {
00019
00020 public:
00021
00022
00023
00024 typedef std::map<UtilMCFlag::EProcess,Int_t> ProcessMap;
00025 typedef ProcessMap::const_iterator ProcessMapConstItr;
00026 typedef ProcessMap::iterator ProcessMapItr;
00027
00028 typedef std::map<UtilMCFlag::ECut,Double_t> CutMap;
00029 typedef CutMap::const_iterator CutMapConstItr;
00030 typedef CutMap::iterator CutMapItr;
00031
00032
00033 GeoMedium();
00034
00035 GeoMedium(const char* medname, Int_t medId, Int_t matId, Int_t isvol,
00036 Geo::ESwimMethod ifield, Double_t fieldm, Double_t tmaxfd,
00037 Double_t stemax, Double_t deemax, Double_t epsil, Double_t stmin);
00038 GeoMedium(const char* medname, Int_t medId, const TGeoMaterial* mat,
00039 Double_t* params = 0);
00040 virtual ~GeoMedium();
00041
00042
00043 static void PrintHeader(Option_t* option="");
00044 virtual void Print(Option_t* option="") const;
00045 const CutMap& GetCutMap() const { return fCutMap; }
00046 const ProcessMap& GetProcessMap() const { return fProcessMap; }
00047
00048
00049 Double_t GetCut(UtilMCFlag::ECut cutflg) const;
00050 Int_t GetProcess(UtilMCFlag::EProcess processflg) const;
00051 Double_t GetTracking(UtilMCFlag::ETracking trackingflg) const;
00052
00053
00054 void SetCut(UtilMCFlag::ECut cutflg, Double_t cutval)
00055 { fCutMap[cutflg] = cutval; }
00056 void SetProcess(UtilMCFlag::EProcess processflg, Int_t processval)
00057 { fProcessMap[processflg] = processval; }
00058 void SetTracking(UtilMCFlag::ETracking trackingflg, Double_t trackingval);
00059
00060 protected:
00061
00062 private:
00063
00064
00065 ProcessMap fProcessMap;
00066 CutMap fCutMap;
00067
00068 ClassDef(GeoMedium,1)
00069
00070 };
00071 #endif // GEOMEDIUM_H