Hall-D Software  alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
MakeParameterFile.C
Go to the documentation of this file.
2 
3  // Choose which parameters you would like to fix
4  bool fixCDCWires = true;
5  bool fixCDCt0 = true;
6  bool fixCDCGlobalX = false;
7  bool fixCDCGlobalY = false;
8  bool fixCDCGlobalZ = true;
9  bool fixCDCGlobalPhiX = true;
10  bool fixCDCGlobalPhiY = true;
11  bool fixCDCGlobalPhiZ = true;
12  bool fixFDCt0 = true;
13  bool fixFDCGains = true;
14  bool fixFDCCathodeOffsets = true;
15  bool fixFDCCathodeAngles = true;
16  bool fixFDCCellOffsetsWires = true;
17  bool fixFDCCellOffsetsCathodes = true;
18  bool fixFDCWireRotationX = true;
19  bool fixFDCWireRotationY = true;
20  bool fixFDCWireRotationZ = true;
21  bool fixFDCZ = true;
22  bool fixFDCPitch = true;
23  bool fixFDCGap = true;
24 
25  double scale = 1.0;
26  double translationPresigma = 0.0005;
27  double rotationPresigma = 0.0001;
28  double gainPresigma = 0.01;
29  double pitchPresigma = 0.001;
30  double t0Presigma=10.0;
31 
32  ofstream outfile;
33  outfile.open("Parameters.txt");
34 
35  outfile << "Parameter" << endl;
36 
37  // CDC
38  if(fixCDCGlobalX) outfile << "1 0.0 -1" << endl;
39  else outfile << "1 0.0 " << translationPresigma << endl;
40 
41  if(fixCDCGlobalY) outfile << "2 0.0 -1" << endl;
42  else outfile << "2 0.0 " << translationPresigma << endl;
43 
44  if(fixCDCGlobalZ) outfile << "3 0.0 -1" << endl;
45  else outfile << "3 0.0 " << translationPresigma << endl;
46 
47  if(fixCDCGlobalPhiX) outfile << "4 0.0 -1" << endl;
48  else outfile << "4 0.0 " << rotationPresigma << endl;
49 
50  if(fixCDCGlobalPhiY) outfile << "5 0.0 -1" << endl;
51  else outfile << "5 0.0 " << rotationPresigma << endl;
52 
53  if(fixCDCGlobalPhiZ) outfile << "6 0.0 -1" << endl;
54  else outfile << "6 0.0 " << rotationPresigma << endl;
55 
56  for (unsigned int i=16001; i <= 19522; i++){
57  if (fixCDCt0) outfile << i << " 0.0 -1.0" << endl;
58  else outfile << i << " 0.0 " << t0Presigma << endl;
59  }
60 
61  for (unsigned int i=1001; i <= 15088; i++){
62  if (fixCDCWires) outfile << i << " 0.0 -1.0" << endl;
63  else outfile << i << " 0.0 " << translationPresigma << endl;
64  }
65 
66  // Possibility of varying presigma around the detector
67  /*
68  int straw_offset[29] = {0,0,42,84,138,192,258,324,404,484,577,670,776,882,1005,1128,1263,1398,1544,1690,1848,2006,2176,2346,2528,2710,2907,3104,3313};
69  int Nstraws[28] = {42, 42, 54, 54, 66, 66, 80, 80, 93, 93, 106, 106, 123, 123, 135, 135, 146, 146, 158, 158, 170, 170, 182, 182, 197, 197, 209, 209};
70  double radius[28] = {10.72134, 12.08024, 13.7795, 15.14602, 18.71726, 20.2438, 22.01672, 23.50008, 25.15616, 26.61158, 28.33624, 29.77388, 31.3817, 32.75838, 34.43478, 35.81146, 38.28542, 39.7002, 41.31564, 42.73042, 44.34078, 45.75302, 47.36084, 48.77054, 50.37582, 51.76012, 53.36286, 54.74716};
71  double phiOffset[28] = {0, 0.074707844, 0.038166294, 0.096247609, 0.05966371, 0.012001551, 0.040721951, 0.001334527, 0.014963808, 0.048683644, 0.002092645, 0.031681749, 0.040719354, 0.015197341, 0.006786058, 0.030005892, 0.019704045, -0.001782064, -0.001306618, 0.018592421, 0.003686784, 0.022132975, 0.019600866, 0.002343723, 0.021301449, 0.005348855, 0.005997358, 0.021018761};
72 
73  // Need to use smaller presigma for values that are not very aligned for
74  unsigned int ring = 1;
75  for (unsigned int i=1001; i <= 15088; i++){
76  unsigned int strawNumber = (i-1001)/4 +1;
77  strawNumber-=straw_offset[ring];
78  double phi = phiOffset[ring-1] + (strawNumber -1) * (2*TMath::Pi()/Nstraws[ring-1]);
79  // sin for x cos for y
80  double xTranslationPresigma = translationPresigma - (0.009) * cos(phi) * cos(phi);
81  double yTranslationPresigma = translationPresigma - (0.009) * sin(phi) * sin(phi);
82  // x offsets
83  if (i%4 == 1 || i%4 == 3){
84  outfile << i << " 0.0 " << xTranslationPresigma << endl;
85  }
86  //y offsets
87  else{
88  outfile << i << " 0.0 " << yTranslationPresigma << endl;
89  }
90  if (i%4 == 0 && strawNumber==Nstraws[ring-1]) ring++;
91  }
92  */
93 
94  // FDC
95  for (unsigned int i=1; i<=24; i++){
96 
97  int indexOffset = 100000 + i*1000;
98  if(fixFDCZ){
99  outfile<< indexOffset + 5 << " 0.0 -1.0" << endl;
100  }
101  else {
102  outfile<< indexOffset + 5 << " 0.0 " << translationPresigma << endl;
103  }
104  if (fixFDCCellOffsetsWires){
105  outfile << indexOffset + 1 << " 0.0 -1.0" << endl;
106  }
107  else{
108  outfile << indexOffset + 1 << " 0.0 " << translationPresigma << endl;
109  }
110  if (fixFDCCellOffsetsCathodes){
111  outfile << indexOffset + 100 << " 0.0 -1.0" << endl;
112  }
113  else{
114  outfile << indexOffset + 100 << " 0.0 " << translationPresigma << endl;
115  }
116 
117  if (fixFDCWireRotationX) outfile << indexOffset + 2 << " 0.0 -1.0" << endl;
118  else outfile << indexOffset + 2 << " 0.0 " << rotationPresigma << endl;
119 
120  if (fixFDCWireRotationY) outfile << indexOffset + 3 << " 0.0 -1.0" << endl;
121  else outfile << indexOffset + 3 << " 0.0 " << rotationPresigma << endl;
122 
123  if (fixFDCWireRotationZ) outfile << indexOffset + 4 << " 0.0 -1.0" << endl;
124  else outfile << indexOffset + 4 << " 0.0 " << rotationPresigma << endl;
125 
126  if (fixFDCCathodeOffsets){
127  outfile << indexOffset + 101 << " 0.0 -1.0" << endl;
128  outfile << indexOffset + 102 << " 0.0 -1.0" << endl;
129  }
130  else{
131  outfile << indexOffset + 101 << " 0.0 " << translationPresigma << endl;
132  outfile << indexOffset + 102 << " 0.0 " << translationPresigma << endl;
133  }
134 
135  if (fixFDCCathodeAngles){
136  // dPhiU, dPhiV
137  outfile << indexOffset + 103 << " 0.0 -1.0" << endl;
138  outfile << indexOffset + 104 << " 0.0 -1.0" << endl;
139  }
140  else{
141  // dPhiU, dPhiV
142  outfile << indexOffset + 103 << " 0.0 " << rotationPresigma << endl;
143  outfile << indexOffset + 104 << " 0.0 " << rotationPresigma << endl;
144  }
145 
146  //Strip Pitch
147  if (fixFDCPitch){
148  outfile << indexOffset + 200 << " 0.0 -1.0" << endl;
149  outfile << indexOffset + 202 << " 0.0 -1.0" << endl;
150  outfile << indexOffset + 204 << " 0.0 -1.0" << endl;
151  outfile << indexOffset + 205 << " 0.0 -1.0" << endl;
152  outfile << indexOffset + 207 << " 0.0 -1.0" << endl;
153  outfile << indexOffset + 209 << " 0.0 -1.0" << endl;
154  }
155  else{
156  outfile << indexOffset + 200 << " 0.0 " << pitchPresigma << endl;
157  outfile << indexOffset + 202 << " 0.0 " << pitchPresigma << endl;
158  outfile << indexOffset + 204 << " 0.0 " << pitchPresigma << endl;
159  outfile << indexOffset + 205 << " 0.0 " << pitchPresigma << endl;
160  outfile << indexOffset + 207 << " 0.0 " << pitchPresigma << endl;
161  outfile << indexOffset + 209 << " 0.0 " << pitchPresigma << endl;
162  }
163  //Strip gap
164 
165  if (fixFDCGap){
166  outfile << indexOffset + 201 << " 0.0 -1.0" << endl;
167  outfile << indexOffset + 203 << " 0.0 -1.0" << endl;
168  outfile << indexOffset + 206 << " 0.0 -1.0" << endl;
169  outfile << indexOffset + 208 << " 0.0 -1.0" << endl;
170  }
171  else{
172  outfile << indexOffset + 201 << " 0.0 " << translationPresigma << endl;
173  outfile << indexOffset + 203 << " 0.0 " << translationPresigma << endl;
174  outfile << indexOffset + 206 << " 0.0 " << translationPresigma << endl;
175  outfile << indexOffset + 208 << " 0.0 " << translationPresigma << endl;
176  }
177 
178  //Strip Gain
179  for (unsigned int j = 301; j <= 517; j++){
180  if (fixFDCGains) outfile << indexOffset + j << " 0.0 -1.0" << endl;
181  else outfile << indexOffset + j << " 0.0 " << gainPresigma << endl;
182  }
183 
184  for (unsigned int j = 601; j <= 817; j++){
185  if (fixFDCGains) outfile << indexOffset + j << " 0.0 -1.0" << endl;
186  else outfile << indexOffset + j << " 0.0 " << gainPresigma << endl;
187  }
188 
189  //t0
190  for (unsigned int j = 901; j <= 996; j++){
191  if (fixFDCt0) outfile << indexOffset + j << " 0.0 -1.0" << endl;
192  else outfile << indexOffset + j << " 0.0 " << t0Presigma << endl;
193  }
194 
195  }
196 
197  outfile.close();
198 }
199 
200 
TFile * outfile
Definition: tw_corr.C:46
void MakeParameterFile()