1df5fa54 |
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 | // |
1df5fa54 |
21 | |
22 | |
fb2cbbec |
23 | // |
1df5fa54 |
24 | |
fb2cbbec |
25 | #include <TObject.h> |
1df5fa54 |
26 | |
fb2cbbec |
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; |
8134b16b |
31 | class TGeoMaterial; |
fb2cbbec |
32 | |
33 | class TFlukaConfigOption : public TObject |
1df5fa54 |
34 | { |
35 | public: |
36 | // Constructors |
37 | TFlukaConfigOption(); |
fb2cbbec |
38 | TFlukaConfigOption(Int_t imed); |
1df5fa54 |
39 | // Getters |
fb2cbbec |
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;} |
1df5fa54 |
43 | // Setters |
fb2cbbec |
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(); |
f79639f2 |
71 | void ProcessSensitiveMedium(); |
fb2cbbec |
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;} |
0b072430 |
76 | static Double_t DefaultCut(FlukaCutOption_t i) {return fgDCutValue[i];} |
f79639f2 |
77 | static Int_t DefaultProcessFlag(FlukaProcessOption_t i) {return fgDProcessFlag[i];} |
1df5fa54 |
78 | protected: |
fb2cbbec |
79 | Double_t fCutValue[11]; // User cut |
80 | Int_t fProcessFlag[15]; // User flag assigned to processes |
89aa6d28 |
81 | Int_t fMedium; // Material assigned to user settings |
fb2cbbec |
82 | Float_t fCMatMin; // Minimum material number used for current card |
83 | Float_t fCMatMax; // Maximum material number used for current card |
8134b16b |
84 | TGeoMaterial* fCMaterial; // Current material |
fb2cbbec |
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 |
1df5fa54 |
93 | ClassDef(TFlukaConfigOption, 1) // Fluka Configuration Option |
94 | }; |
95 | |
96 | #endif |
97 | |