Class Reference for E1039 Core & Analysis Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
recoConsts.cc
Go to the documentation of this file.
1 #include "recoConsts.h"
2 
3 #include <iostream>
4 #include <wordexp.h>
5 
8 {
9  if(__instance == nullptr)
10  {
11  __instance = new recoConsts();
13  }
14 
15  return __instance;
16 }
17 
19 {}
20 
21 void recoConsts::set_CharFlag(const std::string& name, const std::string& flag)
22 {
23  std::string flag_expanded = ExpandEnvironmentals(flag);
24  charflag[name] = flag_expanded;
25 }
26 
27 std::string recoConsts::ExpandEnvironmentals(const std::string& input)
28 {
29  wordexp_t exp_result;
30  if(wordexp(input.c_str(), &exp_result, 0) != 0)
31  {
32  std::cout << "ExpandEnvironmentals - ERROR - Your string '" << input << "' cannot be understood!" << std::endl;
33  return "";
34  }
35  const std::string output(exp_result.we_wordv[0]);
36  return output;
37 }
38 
40 {
41  //Following constants are shared between simulation and reconstruction
42  set_DoubleFlag("KMAGSTR", 1.0);
43  set_DoubleFlag("FMAGSTR", 1.0);
44 
45  //Following flags control the running mode and must be
46  //set to appropriate values in the configuration set
47  set_BoolFlag("KMAG_ON", true);
48  set_BoolFlag("COARSE_MODE", false);
49  set_BoolFlag("MC_MODE", false);
50  set_BoolFlag("COSMIC_MODE", false);
51 
52  //Following values are fed to GeomSvc
53  set_BoolFlag("OnlineAlignment", false);
54  set_BoolFlag("IdealGeom", false);
55 
56  set_CharFlag("AlignmentMille", "$E1039_RESOURCE/alignment/run6/align_mille.txt");
57  set_CharFlag("AlignmentHodo", "$E1039_RESOURCE/alignment/run6/alignment_hodo.txt");
58  set_CharFlag("AlignmentProp", "$E1039_RESOURCE/alignment/run6/alignment_prop.txt");
59  set_CharFlag("Calibration", "$E1039_RESOURCE/alignment/run6/calibration.txt");
60 
61  set_CharFlag("MySQLURL", "mysql://e906-db1.fnal.gov:3306");
62  set_CharFlag("Geometry", "user_e1039_geom_plane.param_G9_run5_2");
63 
64  set_CharFlag("TRIGGER_Repo", "$TRIGGER_ROOT");
65  set_CharFlag("TRIGGER_L1", "67");
66 
67  set_CharFlag("fMagFile", "$GEOMETRY_ROOT/magnetic_fields/Fmag.root");
68  set_CharFlag("kMagFile", "$GEOMETRY_ROOT/magnetic_fields/Kmag.root");
69 
70  //Following flags adjust the performance/efficiency of the reconstruction,
71  //thus should be included in the configuration set
72  set_DoubleFlag("TX_MAX", 0.15);
73  set_DoubleFlag("TY_MAX", 0.1);
74  set_DoubleFlag("X0_MAX", 150.);
75  set_DoubleFlag("Y0_MAX", 50.);
76  set_DoubleFlag("INVP_MIN", 0.01);
77  set_DoubleFlag("INVP_MAX", 0.2);
78  set_DoubleFlag("PROB_LOOSE", 0.);
79  set_DoubleFlag("PROB_TIGHT", 1.E-12);
80  set_DoubleFlag("BAD_HIT_REJECTION", 3.);
81  set_DoubleFlag("MERGE_THRESH", 0.015);
82  set_DoubleFlag("RESOLUTION_FACTOR", 1.6);
83 
84  set_DoubleFlag("X_BEAM", 0.);
85  set_DoubleFlag("Y_BEAM", 0.);
86  set_DoubleFlag("SIGX_BEAM", 2.);
87  set_DoubleFlag("SIGY_BEAM", 2.);
88 
89  set_CharFlag("EventReduceOpts", "aoc");
90 
91  set_BoolFlag("USE_V1495_HIT", true);
92  set_BoolFlag("USE_TWTDC_HIT", false);
93 
94  set_IntFlag("NSTEPS_FMAG", 100);
95  set_IntFlag("NSTEPS_SHIELDING", 50);
96  set_IntFlag("NSTEPS_TARGET", 100);
97 
98  set_DoubleFlag("TDCTimeOffset", 0.);
99 
100  set_DoubleFlag("RejectWinDC0", 0.12);
101  set_DoubleFlag("RejectWinDC1", 0.12);
102  set_DoubleFlag("RejectWinDC2", 0.15);
103  set_DoubleFlag("RejectWinDC3p", 0.16);
104  set_DoubleFlag("RejectWinDC3m", 0.14);
105 
106  set_IntFlag("MaxHitsDC0", 100);
107  set_IntFlag("MaxHitsDC1", 100);
108  set_IntFlag("MaxHitsDC2", 100);
109  set_IntFlag("MaxHitsDC3p", 100);
110  set_IntFlag("MaxHitsDC3m", 100);
111 
112  //Following numbers are related to the geometric set up thus should not
113  //change under most circumstances, unless one is studying the effects of these cuts
114  //could be excluded from the configuration set
115  set_DoubleFlag("SAGITTA_TARGET_CENTER", 1.85);
116  set_DoubleFlag("SAGITTA_TARGET_WIDTH", 0.25);
117  set_DoubleFlag("SAGITTA_DUMP_CENTER", 1.5);
118  set_DoubleFlag("SAGITTA_DUMP_WIDTH", 0.3);
119 
120  set_IntFlag("MUID_MINHITS", 1);
121  set_DoubleFlag("MUID_REJECTION", 4.);
122  set_DoubleFlag("MUID_THE_P0", 0.11825);
123  set_DoubleFlag("MUID_EMP_P0", 0.00643);
124  set_DoubleFlag("MUID_EMP_P1", -0.00009);
125  set_DoubleFlag("MUID_EMP_P2", 0.00000046);
126  set_DoubleFlag("MUID_Z_REF", 2028.19);
127  set_DoubleFlag("MUID_R_CUT", 3.0);
128 
129  set_DoubleFlag("DEDX_FE_P0", 7.18274);
130  set_DoubleFlag("DEDX_FE_P1", 0.0361447);
131  set_DoubleFlag("DEDX_FE_P2", -0.000718127);
132  set_DoubleFlag("DEDX_FE_P3", 7.97312e-06);
133  set_DoubleFlag("DEDX_FE_P4", -3.05481e-08);
134 
135  set_DoubleFlag("PT_KICK_KMAG", 0.4016);
136  set_DoubleFlag("PT_KICK_FMAG", 2.909);
137 
138  set_DoubleFlag("Z_KMAG_BEND", 1064.26);
139  set_DoubleFlag("Z_FMAG_BEND", 251.4);
140  set_DoubleFlag("Z_KFMAG_BEND", 375.);
141  set_DoubleFlag("ELOSS_KFMAG", 8.12);
142  set_DoubleFlag("ELOSS_ABSORBER", 1.81);
143  set_DoubleFlag("Z_ST2", 1347.36);
144  set_DoubleFlag("Z_ABSORBER", 2028.19);
145  set_DoubleFlag("Z_REF", 0.);
146  set_DoubleFlag("Z_TARGET", -300.00);
147  set_DoubleFlag("Z_DUMP", 42.);
148  set_DoubleFlag("Z_ST1", 600.);
149  set_DoubleFlag("Z_ST3", 1910.);
150  set_DoubleFlag("FMAG_HOLE_LENGTH", 27.94);
151  set_DoubleFlag("FMAG_HOLE_RADIUS", 1.27);
152  set_DoubleFlag("FMAG_LENGTH", 502.92);
153  set_DoubleFlag("Z_UPSTREAM", -500.);
154  set_DoubleFlag("Z_DOWNSTREAM", 500.);
155 }
156 
157 void recoConsts::init(int runNo, bool verbose)
158 {
159  //TODO: initialization based on run range
160  return;
161 }
162 
163 void recoConsts::init(const std::string& setname, bool verbose)
164 {
165  if(setname == "cosmic")
166  {
167  set_BoolFlag("KMAG_ON", false);
168  set_BoolFlag("COSMIC_MODE", true);
169 
170  set_DoubleFlag("TX_MAX", 1.);
171  set_DoubleFlag("TY_MAX", 1.);
172  set_DoubleFlag("X0_MAX", 1000.);
173  set_DoubleFlag("Y0_MAX", 1000.);
174  }
175 
176  if(verbose) Print();
177 }
178 
179 void recoConsts::initfile(const std::string& filename, bool verbose)
180 {
181  ReadFromFile(filename, verbose);
182  return;
183 }
184 
185 void recoConsts::Print() const
186 {
187  // methods from PHFlag
188  PrintCharFlags();
189  PrintFloatFlags();
191  PrintIntFlags();
192  PrintBoolFlags();
193 }
virtual void set_DoubleFlag(const std::string &name, const double flag)
Definition: PHFlag.cc:77
virtual void set_BoolFlag(const std::string &name, const bool flag)
Definition: PHFlag.cc:179
void init(int runNo=0, bool verbose=false)
initialize the constants by the runNo - not implemented yet
Definition: recoConsts.cc:157
virtual void PrintDoubleFlags() const
Definition: PHFlag.cc:207
virtual void PrintFloatFlags() const
Definition: PHFlag.cc:219
void Print() const
print all the parameters
Definition: recoConsts.cc:185
virtual void set_IntFlag(const std::string &name, const int flag)
Definition: PHFlag.cc:145
std::map< std::string, std::string > charflag
Definition: PHFlag.h:68
static recoConsts * instance()
Definition: recoConsts.cc:7
virtual void PrintCharFlags() const
Definition: PHFlag.cc:231
virtual void PrintIntFlags() const
Definition: PHFlag.cc:195
std::string ExpandEnvironmentals(const std::string &input)
Definition: recoConsts.cc:27
virtual void PrintBoolFlags() const
Definition: PHFlag.cc:243
static recoConsts * __instance
Definition: recoConsts.h:44
void set_defaults()
set the default value for all the constants needed - user is supposed to add a default value here to ...
Definition: recoConsts.cc:39
virtual void set_CharFlag(const std::string &name, const std::string &flag)
overide the virtual function to expand the environmental variables
Definition: recoConsts.cc:21
void initfile(const std::string &filename, bool verbose=false)
initialize by reading a file
Definition: recoConsts.cc:179
virtual void ReadFromFile(const std::string &name, bool verbose=false)
Definition: PHFlag.cc:285