Geometry builder classes moved from base to sim.
[u/mrichter/AliRoot.git] / TFluka / TFlukaConfigOption.h
1 #ifndef TFLUKACONFIGOPTION
2 #define TFLUKACONFIGOPTION
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 /* $Id$ */
8
9 ///////////////////////////////////////////////////////////////////////////////
10 //                                                                           //
11 //                                                                           //
12 // Class to store FLUKA and VMC configuration options:                       // 
13 // Cuts, Processes, User Scoring                                             // 
14 //                                                                           //
15 //                                                                           //
16 // Author: andreas.morsch@cern.ch                                            // 
17 //                                                                           //  
18 //                                                                           //
19 ///////////////////////////////////////////////////////////////////////////////
20 //
21
22
23 //
24
25 #include <TObject.h>
26
27 typedef enum {kDCAY, kPAIR, kCOMP, kPHOT, kPFIS, kDRAY, kANNI, kBREM,
28               kMUNU, kCKOV, kHADR, kLOSS, kMULS, kRAYL, kSTRA} FlukaProcessOption_t;
29 typedef enum {kCUTGAM, kCUTELE, kCUTNEU, kCUTHAD, kCUTMUO, kBCUTE, kBCUTM, kDCUTE, kDCUTM, kPPCUTM, kTOFMAX}  FlukaCutOption_t;
30 class TFlukaMCGeometry;
31 class TGeoMaterial;
32
33 class TFlukaConfigOption : public TObject
34 {
35 public:
36     // Constructors
37     TFlukaConfigOption();
38     TFlukaConfigOption(Int_t imed);
39     // Getters
40     Double_t Cut(FlukaCutOption_t i)      const {return fCutValue[i];}
41     Int_t    Flag(FlukaProcessOption_t i) const {return fProcessFlag[i];}
42     Int_t    Medium()                     const {return fMedium;}    
43     // Setters
44     void     SetCut(const char* flagname, Double_t val);
45     void     SetProcess(const char* flagname, Int_t flagValue);
46     void     SetMedium(Int_t imed)       {fMedium = imed;}
47     //
48     void     WriteFlukaInputCards();
49     void     ProcessDCAY();
50     void     ProcessPAIR();
51     void     ProcessBREM();
52     void     ProcessCOMP();
53     void     ProcessPHOT();
54     void     ProcessANNI();
55     void     ProcessPFIS();
56     void     ProcessMUNU();
57     void     ProcessRAYL();
58     void     ProcessCKOV();
59     void     ProcessHADR();
60     void     ProcessMULS();
61     void     ProcessLOSS();
62     void     ProcessSTRA();
63     
64     
65     void     ProcessCUTGAM();
66     void     ProcessCUTELE();
67     void     ProcessCUTNEU();
68     void     ProcessCUTHAD();
69     void     ProcessCUTMUO();
70     void     ProcessTOFMAX();
71     void     ProcessSensitiveMedium();
72     
73     //
74     static void SetStaticInfo(FILE* file, Float_t matMin, Float_t matMax, TFlukaMCGeometry* geom)
75         {fgFile = file; fgMatMin = matMin; fgMatMax = matMax; fgGeom = geom;}
76     static Double_t DefaultCut(FlukaCutOption_t i) {return fgDCutValue[i];}
77     static Int_t    DefaultProcessFlag(FlukaProcessOption_t i) {return fgDProcessFlag[i];}
78  protected:
79     Double_t fCutValue[11];            // User cut
80     Int_t    fProcessFlag[15];         // User flag assigned to processes
81     Int_t    fMedium;                  // Material assigned to user settings
82     Float_t  fCMatMin;                 // Minimum material number used for current card 
83     Float_t  fCMatMax;                 // Maximum material number used for current card
84     TGeoMaterial* fCMaterial;          // Current material
85     
86     // static
87     static Double_t  fgDCutValue[11];     // User default cut
88     static Int_t     fgDProcessFlag[15];  // User default flag assigned to processes
89     static Float_t   fgMatMin;            // Minimum material number 
90     static Float_t   fgMatMax;            // Maximum meterial number
91     static FILE*     fgFile;              // Output file
92     static TFlukaMCGeometry* fgGeom;      // Pointer to geometry     
93     ClassDef(TFlukaConfigOption, 1)    // Fluka Configuration Option
94 };
95         
96 #endif
97