]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TFluka/TFlukaConfigOption.h
track matching macros from Alberto
[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 typedef enum {kPRIMION, kPRIMIOE}  FlukaModelOption_t;
31
32 class TFlukaMCGeometry;
33 class TGeoMaterial;
34
35 class TFlukaConfigOption : public TObject
36 {
37 public:
38     // Constructors
39     TFlukaConfigOption();
40     TFlukaConfigOption(Int_t imed);
41     // Getters
42     Double_t Cut(FlukaCutOption_t i)              const {return fCutValue[i];}
43     Int_t    Flag(FlukaProcessOption_t i)         const {return fProcessFlag[i];}
44     Double_t  ModelParameter(FlukaModelOption_t i) const {return fModelParameter[i];}
45     Int_t    Medium()                             const {return fMedium;}    
46     // Setters
47     void     SetCut(const char* flagname, Double_t val);
48     void     SetModelParameter(const char* flagname, Double_t val);
49     void     SetProcess(const char* flagname, Int_t flagValue);
50     void     SetMedium(Int_t imed)       {fMedium = imed;}
51     //
52     void     WriteFlukaInputCards();
53     void     ProcessDCAY();
54     void     ProcessPAIR();
55     void     ProcessBREM();
56     void     ProcessCOMP();
57     void     ProcessPHOT();
58     void     ProcessANNI();
59     void     ProcessPFIS();
60     void     ProcessMUNU();
61     void     ProcessRAYL();
62     void     ProcessCKOV();
63     void     ProcessHADR();
64     void     ProcessMULS();
65     void     ProcessLOSS();
66     void     ProcessSTRA();
67     
68     
69     void     ProcessCUTGAM();
70     void     ProcessCUTELE();
71     void     ProcessCUTNEU();
72     void     ProcessCUTHAD();
73     void     ProcessCUTMUO();
74     void     ProcessTOFMAX();
75     void     ProcessSensitiveMedium();
76     
77     //
78     static void SetStaticInfo(FILE* file, Float_t matMin, Float_t matMax, TFlukaMCGeometry* geom)
79         {fgFile = file; fgMatMin = matMin; fgMatMax = matMax; fgGeom = geom;}
80     static Double_t DefaultCut(FlukaCutOption_t i) {return fgDCutValue[i];}
81     static Int_t    DefaultProcessFlag(FlukaProcessOption_t i) {return fgDProcessFlag[i];}
82  
83     
84  protected:
85     Double_t fCutValue[11];            // User cut
86     Int_t    fProcessFlag[15];         // User flag assigned to processes
87     Double_t fModelParameter[15];      // User model parameter
88     Int_t    fMedium;                  // Material assigned to user settings
89     Float_t  fCMatMin;                 // Minimum material number used for current card 
90     Float_t  fCMatMax;                 // Maximum material number used for current card
91     TGeoMaterial* fCMaterial;          // Current material
92     
93     // static
94     static Double_t  fgDCutValue[11];     // User default cut
95     static Int_t     fgDProcessFlag[15];  // User default flag assigned to processes
96     static Float_t   fgMatMin;            // Minimum material number 
97     static Float_t   fgMatMax;            // Maximum meterial number
98     static FILE*     fgFile;              // Output file
99     static TFlukaMCGeometry* fgGeom;      // Pointer to geometry     
100
101  private:
102     // Copy constructor and operator= declared but not implemented (-Weff++ flag)
103     TFlukaConfigOption(const TFlukaConfigOption&);
104     TFlukaConfigOption& operator=(const TFlukaConfigOption&);
105     
106     ClassDef(TFlukaConfigOption, 1)    // Fluka Configuration Option
107 };
108         
109 #endif
110