ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitPhysics/Utils/src/PhotonFix.cc
Revision: 1.1
Committed: Wed Jul 27 15:17:37 2011 UTC (13 years, 9 months ago) by bendavid
Content type: text/plain
Branch: MAIN
CVS Tags: Mit_024b, Mit_024a, Mit_024
Log Message:
update photon stuff

File Contents

# User Rev Content
1 bendavid 1.1 #include <cmath>
2     #include <cassert>
3     #include <fstream>
4     #include <iomanip>
5    
6     // ensure that this include points to the appropriate location for PhotonFix.h
7     #include "../interface/PhotonFix.h"
8    
9     PhotonFix::PhotonFix(double e, double eta, double phi, double r9) :
10     _e(e), _eta(eta), _phi(phi), _r9(r9) {
11    
12     setup();
13     }
14    
15     void PhotonFix::setup(){
16     // Check constants have been set up
17     assert(_initialised);
18    
19     // Determine if EB or EE
20     _be=(fabs(_eta)<1.48?0:1);
21    
22     // Determine if high or low R9
23     if(_be==0) _hl=(_r9>=0.94?0:1);
24     else _hl=(_r9>=0.95?0:1);
25    
26     // Coordinates relative to cracks
27     double r2Min;
28     if(_be==0) {
29    
30     r2Min=1.0e6;
31     for(unsigned i(0);i<169;i++) {
32     for(unsigned j(0);j<360;j++) {
33     double de(_eta-_barrelCGap[i][j][0]);
34     double df(dPhi(_phi,_barrelCGap[i][j][1]));
35     double r2(de*de+df*df);
36    
37     if(r2<r2Min) {
38     r2Min=r2;
39     if(i>=84) {
40     _aC= de;
41     _bC=-df;
42     } else {
43     _aC=-de;
44     _bC= df;
45     }
46     }
47     }
48     }
49    
50     r2Min=1.0e6;
51     for(unsigned i(0);i<33;i++) {
52     for(unsigned j(0);j<180;j++) {
53     double de(_eta-_barrelSGap[i][j][0]);
54     double df(dPhi(_phi,_barrelSGap[i][j][1]));
55     double r2(de*de+df*df);
56    
57     if(r2<r2Min) {
58     r2Min=r2;
59     if(i>=16) {
60     _aS= de;
61     _bS=-df;
62     } else {
63     _aS=-de;
64     _bS= df;
65     }
66     }
67     }
68     }
69    
70     r2Min=1.0e6;
71     for(unsigned i(0);i<7;i++) {
72     for(unsigned j(0);j<18;j++) {
73     double de(_eta-_barrelMGap[i][j][0]);
74     double df(dPhi(_phi,_barrelMGap[i][j][1]));
75     double r2(de*de+df*df);
76    
77     if(r2<r2Min) {
78     r2Min=r2;
79     if(i>=3) {
80     _aM= de;
81     _bM=-df;
82     } else {
83     _aM=-de;
84     _bM= df;
85     }
86     }
87     }
88     }
89    
90     } else {
91     unsigned iz(_eta>=0.0?0:1);
92     double r[2]={xZ(),yZ()};
93    
94     r2Min=1.0e6;
95     for(unsigned i(0);i<7080;i++) {
96     double dx(r[0]-_endcapCGap[iz][i][0]);
97     double dy(r[1]-_endcapCGap[iz][i][1]);
98     double r2(dx*dx+dy*dy);
99    
100     if(r2<r2Min) {
101     r2Min=r2;
102     if(r[0]>0.0) _aC= dx;
103     else _aC=-dx;
104     if(r[1]>0.0) _bC= dy;
105     else _bC=-dy;
106     }
107     }
108    
109     r2Min=1.0e6;
110     for(unsigned i(0);i<264;i++) {
111     double dx(r[0]-_endcapSGap[iz][i][0]);
112     double dy(r[1]-_endcapSGap[iz][i][1]);
113     double r2(dx*dx+dy*dy);
114    
115     if(r2<r2Min) {
116     r2Min=r2;
117     if(r[0]>0.0) _aS= dx;
118     else _aS=-dx;
119     if(r[1]>0.0) _bS= dy;
120     else _bS=-dy;
121     }
122     }
123    
124     r2Min=1.0e6;
125     for(unsigned i(0);i<1;i++) {
126     double dx(r[0]-_endcapMGap[iz][i][0]);
127     double dy(r[1]-_endcapMGap[iz][i][1]);
128     double r2(dx*dx+dy*dy);
129    
130     if(r2<r2Min) {
131     r2Min=r2;
132     if(iz==0) {_aM= dx;_bM= dy;}
133     else {_aM=-dx;_bM=-dy;}
134     }
135     }
136     }
137     }
138    
139     double PhotonFix::fixedEnergy() const {
140     double f(0.0);
141    
142     // Overall scale and energy(T) dependence
143     f =_meanScale[_be][_hl][0];
144     f+=_meanScale[_be][_hl][1]*_e;
145     f+=_meanScale[_be][_hl][2]*_e/cosh(_eta);
146     f+=_meanScale[_be][_hl][3]*cosh(_eta)/_e;
147    
148     // Eta or x crystal, submodule and module dependence
149     f+=expCorrection(_aC,_meanAC[_be][_hl]);
150     f+=expCorrection(_aS,_meanAS[_be][_hl]);
151     f+=expCorrection(_aM,_meanAM[_be][_hl]);
152    
153     // Phi or y crystal, submodule and module dependence
154     f+=expCorrection(_bC,_meanBC[_be][_hl]);
155     f+=expCorrection(_bS,_meanBS[_be][_hl]);
156     f+=expCorrection(_bM,_meanBM[_be][_hl]);
157    
158     // R9 dependence
159     if(_hl==0) {
160     f+=_meanR9[_be][_hl][1]*(_r9-_meanR9[_be][_hl][0])*(_r9-_meanR9[_be][_hl][0])
161     +_meanR9[_be][_hl][2]*(_r9-_meanR9[_be][_hl][0])*(_r9-_meanR9[_be][_hl][0])*(_r9-_meanR9[_be][_hl][0]);
162     } else {
163     f+=_meanR9[_be][_hl][0]*_r9+_meanR9[_be][_hl][1]*_r9*_r9+_meanR9[_be][_hl][2]*_r9*_r9*_r9;
164     }
165    
166     return _e*f;
167     }
168    
169     double PhotonFix::sigmaEnergy() const {
170    
171     // Overall resolution scale vs energy
172     double sigma;
173     if(_be==0) {
174     sigma =_sigmaScale[_be][_hl][0]*_sigmaScale[_be][_hl][0];
175     sigma+=_sigmaScale[_be][_hl][1]*_sigmaScale[_be][_hl][1]*_e;
176     sigma+=_sigmaScale[_be][_hl][2]*_sigmaScale[_be][_hl][2]*_e*_e;
177     } else {
178     sigma =_sigmaScale[_be][_hl][0]*_sigmaScale[_be][_hl][0]*cosh(_eta)*cosh(_eta);
179     sigma+=_sigmaScale[_be][_hl][1]*_sigmaScale[_be][_hl][1]*_e;
180     sigma+=_sigmaScale[_be][_hl][2]*_sigmaScale[_be][_hl][2]*_e*_e;
181     }
182     sigma=sqrt(sigma);
183    
184     double f(1.0);
185    
186     // General eta or zeta dependence
187     if(_be==0) {
188     f+=_sigmaAT[_be][_hl][0]*_eta*_eta;
189     f+=expCorrection(_eta,_sigmaBT[_be][_hl]);
190     } else {
191     f+=_sigmaAT[_be][_hl][0]*xZ()*xZ();
192     f+=_sigmaBT[_be][_hl][0]*yZ()*yZ();
193     }
194    
195     // Eta or x crystal, submodule and module dependence
196     f+=expCorrection(_aC,_sigmaAC[_be][_hl]);
197     f+=expCorrection(_aS,_sigmaAS[_be][_hl]);
198     f+=expCorrection(_aM,_sigmaAM[_be][_hl]);
199    
200     // Phi or y crystal, submodule and module dependence
201     f+=expCorrection(_bC,_sigmaBC[_be][_hl]);
202     f+=expCorrection(_bS,_sigmaBS[_be][_hl]);
203     f+=expCorrection(_bM,_sigmaBM[_be][_hl]);
204    
205     // R9 dependence
206     if(_hl==0) {
207     f+=_sigmaR9[_be][_hl][1]*(_r9-_sigmaR9[_be][_hl][0])*(_r9-_sigmaR9[_be][_hl][0])
208     +_sigmaR9[_be][_hl][2]*(_r9-_sigmaR9[_be][_hl][0])*(_r9-_sigmaR9[_be][_hl][0])*(_r9-_sigmaR9[_be][_hl][0]);
209     } else {
210     f+=_sigmaR9[_be][_hl][0]*_r9+_sigmaR9[_be][_hl][1]*_r9*_r9;
211     }
212    
213     return sigma*f;
214     }
215    
216     double PhotonFix::rawEnergy() const {
217     return _e;
218     }
219    
220     double PhotonFix::eta() const {
221     return _eta;
222     }
223    
224     double PhotonFix::phi() const {
225     return _phi;
226     }
227    
228     double PhotonFix::r9() const {
229     return _r9;
230     }
231    
232     double PhotonFix::etaC() const {
233     assert(_be==0);
234     return _aC;
235     }
236    
237     double PhotonFix::etaS() const {
238     assert(_be==0);
239     return _aS;
240     }
241    
242     double PhotonFix::etaM() const {
243     assert(_be==0);
244     return _aM;
245     }
246    
247     double PhotonFix::phiC() const {
248     assert(_be==0);
249     return _bC;
250     }
251    
252     double PhotonFix::phiS() const {
253     assert(_be==0);
254     return _bS;
255     }
256    
257     double PhotonFix::phiM() const {
258     assert(_be==0);
259     return _bM;
260     }
261    
262     double PhotonFix::xZ() const {
263     assert(_be==1);
264     return asinh(cos(_phi)/sinh(_eta));
265     }
266    
267     double PhotonFix::xC() const {
268     assert(_be==1);
269     return _aC;
270     }
271    
272     double PhotonFix::xS() const {
273     assert(_be==1);
274     return _aS;
275     }
276    
277     double PhotonFix::xM() const {
278     assert(_be==1);
279     return _aM;
280     }
281    
282     double PhotonFix::yZ() const {
283     assert(_be==1);
284     return asinh(sin(_phi)/sinh(_eta));
285     }
286    
287     double PhotonFix::yC() const {
288     assert(_be==1);
289     return _bC;
290     }
291    
292     double PhotonFix::yS() const {
293     assert(_be==1);
294     return _bS;
295     }
296    
297     double PhotonFix::yM() const {
298     assert(_be==1);
299     return _bM;
300     }
301    
302     double PhotonFix::GetaPhi(double f0, double f1){
303     return aPhi(f0,f1);
304     }
305    
306     void PhotonFix::barrelCGap(unsigned i, unsigned j, unsigned k, double c){
307     _barrelCGap[i][j][k] = c;
308     }
309     void PhotonFix::barrelSGap(unsigned i, unsigned j, unsigned k, double c){
310     _barrelSGap[i][j][k] = c;
311     }
312     void PhotonFix::barrelMGap(unsigned i, unsigned j, unsigned k, double c){
313     _barrelMGap[i][j][k] = c;
314     }
315     void PhotonFix::endcapCrystal(unsigned i, unsigned j, bool c){
316     _endcapCrystal[i][j] = c;
317     }
318     void PhotonFix::endcapCGap(unsigned i, unsigned j, unsigned k, double c){
319     _endcapCGap[i][j][k] = c;
320     }
321     void PhotonFix::endcapSGap(unsigned i, unsigned j, unsigned k, double c){
322     _endcapSGap[i][j][k] = c;
323     }
324     void PhotonFix::endcapMGap(unsigned i, unsigned j, unsigned k, double c){
325     _endcapMGap[i][j][k] = c;
326     }
327    
328    
329     void PhotonFix::print() const {
330     std::cout << "PhotonFix: e,eta,phi,r9 = " << _e << ", " << _eta << ", " << _phi << ", " << _r9 << ", gaps "
331     << _aC << ", " << _aS << ", " << _aM << ", "
332     << _bC << ", " << _bS << ", " << _bM << std::endl;
333     }
334    
335     void PhotonFix::setParameters(unsigned be, unsigned hl, const double *p) {
336     for(unsigned i(0);i<4;i++) {
337     _meanScale[be][hl][i] =p[i+ 0*4];
338     _meanAC[be][hl][i] =p[i+ 1*4];
339     _meanAS[be][hl][i] =p[i+ 2*4];
340     _meanAM[be][hl][i] =p[i+ 3*4];
341     _meanBC[be][hl][i] =p[i+ 4*4];
342     _meanBS[be][hl][i] =p[i+ 5*4];
343     _meanBM[be][hl][i] =p[i+ 6*4];
344     _meanR9[be][hl][i] =p[i+ 7*4];
345    
346     _sigmaScale[be][hl][i]=p[i+ 8*4];
347     _sigmaAT[be][hl][i] =p[i+ 9*4];
348     _sigmaAC[be][hl][i] =p[i+10*4];
349     _sigmaAS[be][hl][i] =p[i+11*4];
350     _sigmaAM[be][hl][i] =p[i+12*4];
351     _sigmaBT[be][hl][i] =p[i+13*4];
352     _sigmaBC[be][hl][i] =p[i+14*4];
353     _sigmaBS[be][hl][i] =p[i+15*4];
354     _sigmaBM[be][hl][i] =p[i+16*4];
355     _sigmaR9[be][hl][i] =p[i+17*4];
356     }
357     }
358    
359     void PhotonFix::getParameters(unsigned be, unsigned hl, double *p) {
360     for(unsigned i(0);i<4;i++) {
361     p[i+ 0*4]=_meanScale[be][hl][i];
362     p[i+ 1*4]=_meanAC[be][hl][i];
363     p[i+ 2*4]=_meanAS[be][hl][i];
364     p[i+ 3*4]=_meanAM[be][hl][i];
365     p[i+ 4*4]=_meanBC[be][hl][i];
366     p[i+ 5*4]=_meanBS[be][hl][i];
367     p[i+ 6*4]=_meanBM[be][hl][i];
368     p[i+ 7*4]=_meanR9[be][hl][i];
369    
370     p[i+ 8*4]=_sigmaScale[be][hl][i];
371     p[i+ 9*4]=_sigmaAT[be][hl][i];
372     p[i+10*4]=_sigmaAC[be][hl][i];
373     p[i+11*4]=_sigmaAS[be][hl][i];
374     p[i+12*4]=_sigmaAM[be][hl][i];
375     p[i+13*4]=_sigmaBT[be][hl][i];
376     p[i+14*4]=_sigmaBC[be][hl][i];
377     p[i+15*4]=_sigmaBS[be][hl][i];
378     p[i+16*4]=_sigmaBM[be][hl][i];
379     p[i+17*4]=_sigmaR9[be][hl][i];
380     }
381     }
382    
383     void PhotonFix::dumpParameters(std::ostream &o) {
384     for(unsigned be(0);be<2;be++) {
385     for(unsigned hl(0);hl<2;hl++) {
386     for(unsigned i(0);i<4;i++) {
387     o << " _meanScale[" << be << "][" << hl << "][" << i << "]=" << _meanScale[be][hl][i] << ";" << std::endl;
388     }
389     for(unsigned i(0);i<4;i++) {
390     o << " _meanAC[" << be << "][" << hl << "][" << i << "]=" << _meanAC[be][hl][i] << ";" << std::endl;
391     }
392     for(unsigned i(0);i<4;i++) {
393     o << " _meanAS[" << be << "][" << hl << "][" << i << "]=" << _meanAS[be][hl][i] << ";" << std::endl;
394     }
395     for(unsigned i(0);i<4;i++) {
396     o << " _meanAM[" << be << "][" << hl << "][" << i << "]=" << _meanAM[be][hl][i] << ";" << std::endl;
397     }
398     for(unsigned i(0);i<4;i++) {
399     o << " _meanBC[" << be << "][" << hl << "][" << i << "]=" << _meanBC[be][hl][i] << ";" << std::endl;
400     }
401     for(unsigned i(0);i<4;i++) {
402     o << " _meanBS[" << be << "][" << hl << "][" << i << "]=" << _meanBS[be][hl][i] << ";" << std::endl;
403     }
404     for(unsigned i(0);i<4;i++) {
405     o << " _meanBM[" << be << "][" << hl << "][" << i << "]=" << _meanBM[be][hl][i] << ";" << std::endl;
406     }
407     for(unsigned i(0);i<4;i++) {
408     o << " _meanR9[" << be << "][" << hl << "][" << i << "]=" << _meanR9[be][hl][i] << ";" << std::endl;
409     }
410     o << std::endl;
411    
412     for(unsigned i(0);i<4;i++) {
413     o << " _sigmaScale[" << be << "][" << hl << "][" << i << "]=" << _sigmaScale[be][hl][i] << ";" << std::endl;
414     }
415     for(unsigned i(0);i<4;i++) {
416     o << " _sigmaAT[" << be << "][" << hl << "][" << i << "]=" << _sigmaAT[be][hl][i] << ";" << std::endl;
417     }
418     for(unsigned i(0);i<4;i++) {
419     o << " _sigmaAC[" << be << "][" << hl << "][" << i << "]=" << _sigmaAC[be][hl][i] << ";" << std::endl;
420     }
421     for(unsigned i(0);i<4;i++) {
422     o << " _sigmaAS[" << be << "][" << hl << "][" << i << "]=" << _sigmaAS[be][hl][i] << ";" << std::endl;
423     }
424     for(unsigned i(0);i<4;i++) {
425     o << " _sigmaAM[" << be << "][" << hl << "][" << i << "]=" << _sigmaAM[be][hl][i] << ";" << std::endl;
426     }
427     for(unsigned i(0);i<4;i++) {
428     o << " _sigmaBT[" << be << "][" << hl << "][" << i << "]=" << _sigmaBT[be][hl][i] << ";" << std::endl;
429     }
430     for(unsigned i(0);i<4;i++) {
431     o << " _sigmaBC[" << be << "][" << hl << "][" << i << "]=" << _sigmaBC[be][hl][i] << ";" << std::endl;
432     }
433     for(unsigned i(0);i<4;i++) {
434     o << " _sigmaBS[" << be << "][" << hl << "][" << i << "]=" << _sigmaBS[be][hl][i] << ";" << std::endl;
435     }
436     for(unsigned i(0);i<4;i++) {
437     o << " _sigmaBM[" << be << "][" << hl << "][" << i << "]=" << _sigmaBM[be][hl][i] << ";" << std::endl;
438     }
439     for(unsigned i(0);i<4;i++) {
440     o << " _sigmaR9[" << be << "][" << hl << "][" << i << "]=" << _sigmaR9[be][hl][i] << ";" << std::endl;
441     }
442     o << std::endl;
443     }
444     }
445     }
446    
447     void PhotonFix::printParameters(std::ostream &o) {
448     o << "PhotonFix::printParameters()" << std::endl;
449    
450     for(unsigned be(0);be<2;be++) {
451     for(unsigned hl(0);hl<2;hl++) {
452     o << " Parameters for " << (be==0?"barrel":"endcap")
453     << ", " << (hl==0?"high":"low") << " R9" << std::endl;
454    
455     o << " Mean scaling ";
456     for(unsigned i(0);i<4;i++) o << std::setw(14) << _meanScale[be][hl][i];
457     o << std::endl;
458     o << " Mean " << (be==0?"Eta ":"ZetaX") << " crystal ";
459     for(unsigned i(0);i<4;i++) o << std::setw(14) << _meanAC[be][hl][i];
460     o << std::endl;
461     o << " Mean " << (be==0?"Eta ":"ZetaX") << " submodule";
462     for(unsigned i(0);i<4;i++) o << std::setw(14) << _meanAS[be][hl][i];
463     o << std::endl;
464     o << " Mean " << (be==0?"Eta ":"ZetaX") << " module ";
465     for(unsigned i(0);i<4;i++) o << std::setw(14) << _meanAM[be][hl][i];
466     o << std::endl;
467     o << " Mean " << (be==0?"Phi ":"ZetaY") << " crystal ";
468     for(unsigned i(0);i<4;i++) o << std::setw(14) << _meanBC[be][hl][i];
469     o << std::endl;
470     o << " Mean " << (be==0?"Phi ":"ZetaY") << " submodule";
471     for(unsigned i(0);i<4;i++) o << std::setw(14) << _meanBS[be][hl][i];
472     o << std::endl;
473     o << " Mean " << (be==0?"Phi ":"ZetaY") << " module ";
474     for(unsigned i(0);i<4;i++) o << std::setw(14) << _meanBM[be][hl][i];
475     o << std::endl;
476     o << " Mean R9 ";
477     for(unsigned i(0);i<4;i++) o << std::setw(14) << _meanR9[be][hl][i];
478     o << std::endl;
479    
480     o << " Sigma scaling ";
481     for(unsigned i(0);i<4;i++) o << std::setw(14) << _sigmaScale[be][hl][i];
482     o << std::endl;
483     o << " Sigma " << (be==0?"Eta ":"ZetaX") << " total ";
484     for(unsigned i(0);i<4;i++) o << std::setw(14) << _sigmaAT[be][hl][i];
485     o << std::endl;
486     o << " Sigma " << (be==0?"Eta ":"ZetaX") << " crystal ";
487     for(unsigned i(0);i<4;i++) o << std::setw(14) << _sigmaAC[be][hl][i];
488     o << std::endl;
489     o << " Sigma " << (be==0?"Eta ":"ZetaX") << " submodule";
490     for(unsigned i(0);i<4;i++) o << std::setw(14) << _sigmaAS[be][hl][i];
491     o << std::endl;
492     o << " Sigma " << (be==0?"Eta ":"ZetaX") << " module ";
493     for(unsigned i(0);i<4;i++) o << std::setw(14) << _sigmaAM[be][hl][i];
494     o << std::endl;
495     o << " Sigma " << (be==0?"Eta ":"ZetaY") << " total ";
496     for(unsigned i(0);i<4;i++) o << std::setw(14) << _sigmaBT[be][hl][i];
497     o << std::endl;
498     o << " Sigma " << (be==0?"Eta ":"ZetaY") << " crystal ";
499     for(unsigned i(0);i<4;i++) o << std::setw(14) << _sigmaBC[be][hl][i];
500     o << std::endl;
501     o << " Sigma " << (be==0?"Phi ":"ZetaY") << " submodule";
502     for(unsigned i(0);i<4;i++) o << std::setw(14) << _sigmaBS[be][hl][i];
503     o << std::endl;
504     o << " Sigma " << (be==0?"Phi ":"ZetaY") << " module ";
505     for(unsigned i(0);i<4;i++) o << std::setw(14) << _sigmaBM[be][hl][i];
506     o << std::endl;
507     o << " Sigma R9 ";
508     for(unsigned i(0);i<4;i++) o << std::setw(14) << _sigmaR9[be][hl][i];
509     o << std::endl;
510     }
511     }
512     }
513    
514     double PhotonFix::asinh(double s) {
515     if(s>=0.0) return log(sqrt(s*s+1.0)+s);
516     else return -log(sqrt(s*s+1.0)-s);
517     }
518    
519     void PhotonFix::dumpGaps(std::ostream &o) {
520     o << std::setprecision(15);
521    
522     for(unsigned i(0);i<169;i++) {
523     for(unsigned j(0);j<360;j++) {
524     for(unsigned k(0);k<2;k++) {
525     o << _barrelCGap[i][j][k] << std::endl;
526     }
527     }
528     }
529    
530     for(unsigned i(0);i<33;i++) {
531     for(unsigned j(0);j<180;j++) {
532     for(unsigned k(0);k<2;k++) {
533     o << _barrelSGap[i][j][k] << std::endl;
534     }
535     }
536     }
537    
538     for(unsigned i(0);i<7;i++) {
539     for(unsigned j(0);j<18;j++) {
540     for(unsigned k(0);k<2;k++) {
541     o << _barrelMGap[i][j][k] << std::endl;
542     }
543     }
544     }
545    
546     for(unsigned i(0);i<100;i++) {
547     for(unsigned j(0);j<100;j++) {
548     if(_endcapCrystal[i][j]) o << 0 << std::endl;
549     else o << 1 << std::endl;
550     }
551     }
552    
553     for(unsigned i(0);i<2;i++) {
554     for(unsigned j(0);j<7080;j++) {
555     for(unsigned k(0);k<2;k++) {
556     o << _endcapCGap[i][j][k] << std::endl;
557     }
558     }
559     }
560    
561     for(unsigned i(0);i<2;i++) {
562     for(unsigned j(0);j<264;j++) {
563     for(unsigned k(0);k<2;k++) {
564     o << _endcapSGap[i][j][k] << std::endl;
565     }
566     }
567     }
568    
569     for(unsigned i(0);i<2;i++) {
570     for(unsigned j(0);j<1;j++) {
571     for(unsigned k(0);k<2;k++) {
572     o << _endcapMGap[i][j][k] << std::endl;
573     }
574     }
575     }
576     }
577    
578     double PhotonFix::dPhi(double f0, double f1) {
579     double df(f0-f1);
580     if(df> _onePi) df-=_twoPi;
581     if(df<-_onePi) df+=_twoPi;
582     return df;
583     }
584    
585     double PhotonFix::aPhi(double f0, double f1) {
586     double af(0.5*(f0+f1));
587     if(fabs(dPhi(af,f0))>0.5*_onePi) {
588     if(af>=0.0) af-=_onePi;
589     else af+=_onePi;
590     }
591    
592     assert(fabs(dPhi(af,f0))<0.5*_onePi);
593     assert(fabs(dPhi(af,f1))<0.5*_onePi);
594    
595     return af;
596     }
597    
598     double PhotonFix::expCorrection(double a, const double *p) {
599     if(p[1]==0.0 || p[2]==0.0 || p[3]==0.0) return 0.0;
600    
601     double b(a-p[0]);
602     if(b>=0.0) return p[1]*exp(-fabs(p[2])*b);
603     else return p[1]*exp( fabs(p[3])*b);
604     }
605    
606     double PhotonFix::gausCorrection(double a, const double *p) {
607     if(p[1]==0.0 || p[2]==0.0 || p[3]==0.0) return 0.0;
608    
609     double b(a-p[0]);
610     if(b>=0.0) return p[1]*exp(-0.5*p[2]*p[2]*b*b);
611     else return p[1]*exp(-0.5*p[3]*p[3]*b*b);
612     }
613     bool PhotonFix::initialised() {
614     return _initialised;
615     }
616     bool PhotonFix::initialise(const std::string &s, const std::string &infile) {
617     if(_initialised) return false;
618    
619    
620     initialiseParameters(s);
621     initialiseGeometry(s,infile);
622     return true;
623     }
624    
625     bool PhotonFix::initialiseParameters(const std::string &s) {
626     _initialised=false;
627    
628     if(s=="Nominal") {
629     for(unsigned be(0);be<2;be++) {
630     for(unsigned hl(0);hl<2;hl++) {
631     for(unsigned i(0);i<4;i++) {
632     _meanScale[be][hl][i]=0;
633     _meanAC[be][hl][i]=0;
634     _meanAS[be][hl][i]=0;
635     _meanAM[be][hl][i]=0;
636     _meanBC[be][hl][i]=0;
637     _meanBS[be][hl][i]=0;
638     _meanBM[be][hl][i]=0;
639     _meanR9[be][hl][i]=0;
640    
641     _sigmaScale[be][hl][i]=0;
642     _sigmaAT[be][hl][i]=0;
643     _sigmaAC[be][hl][i]=0;
644     _sigmaAS[be][hl][i]=0;
645     _sigmaAM[be][hl][i]=0;
646     _sigmaBT[be][hl][i]=0;
647     _sigmaBC[be][hl][i]=0;
648     _sigmaBS[be][hl][i]=0;
649     _sigmaBM[be][hl][i]=0;
650     _sigmaR9[be][hl][i]=0;
651     }
652    
653     _meanScale[be][hl][0]=1.0;
654     if(be==0) {
655     _sigmaScale[be][hl][0]=0.2;
656     _sigmaScale[be][hl][1]=0.03;
657     _sigmaScale[be][hl][2]=0.006;
658     } else {
659     _sigmaScale[be][hl][0]=0.25;
660     _sigmaScale[be][hl][1]=0.05;
661     _sigmaScale[be][hl][2]=0.010;
662     }
663     }
664     }
665    
666     _initialised=true;
667     }
668    
669     if(s=="3_8") {
670     _meanScale[0][0][0]=0.994724;
671     _meanScale[0][0][1]=1.98102e-06;
672     _meanScale[0][0][2]=1.43015e-05;
673     _meanScale[0][0][3]=-0.0908525;
674     _meanAC[0][0][0]=-0.00352041;
675     _meanAC[0][0][1]=0.00982015;
676     _meanAC[0][0][2]=434.32;
677     _meanAC[0][0][3]=529.508;
678     _meanAS[0][0][0]=-1.1;
679     _meanAS[0][0][1]=0.00135995;
680     _meanAS[0][0][2]=295.712;
681     _meanAS[0][0][3]=5.13202e+07;
682     _meanAM[0][0][0]=-0.00140562;
683     _meanAM[0][0][1]=0.156322;
684     _meanAM[0][0][2]=263.097;
685     _meanAM[0][0][3]=222.294;
686     _meanBC[0][0][0]=-0.00294295;
687     _meanBC[0][0][1]=0.011533;
688     _meanBC[0][0][2]=562.905;
689     _meanBC[0][0][3]=421.097;
690     _meanBS[0][0][0]=-0.00204373;
691     _meanBS[0][0][1]=0.00347592;
692     _meanBS[0][0][2]=36.5614;
693     _meanBS[0][0][3]=1265.25;
694     _meanBM[0][0][0]=-0.00275381;
695     _meanBM[0][0][1]=0.0812447;
696     _meanBM[0][0][2]=216.885;
697     _meanBM[0][0][3]=264.754;
698     _meanR9[0][0][0]=0.952584;
699     _meanR9[0][0][1]=22.7119;
700     _meanR9[0][0][2]=402.816;
701     _meanR9[0][0][3]=0;
702    
703     _sigmaScale[0][0][0]=0.167184;
704     _sigmaScale[0][0][1]=6.14323e-11;
705     _sigmaScale[0][0][2]=0.00769693;
706     _sigmaScale[0][0][3]=0;
707     _sigmaAT[0][0][0]=0.228255;
708     _sigmaAT[0][0][1]=0;
709     _sigmaAT[0][0][2]=0;
710     _sigmaAT[0][0][3]=0;
711     _sigmaAC[0][0][0]=-0.00411906;
712     _sigmaAC[0][0][1]=0.077799;
713     _sigmaAC[0][0][2]=23.1033;
714     _sigmaAC[0][0][3]=-3e+17;
715     _sigmaAS[0][0][0]=0;
716     _sigmaAS[0][0][1]=0;
717     _sigmaAS[0][0][2]=0;
718     _sigmaAS[0][0][3]=0;
719     _sigmaAM[0][0][0]=-0.000130695;
720     _sigmaAM[0][0][1]=11.2121;
721     _sigmaAM[0][0][2]=468.535;
722     _sigmaAM[0][0][3]=407.652;
723     _sigmaBT[0][0][0]=1.33384e-05;
724     _sigmaBT[0][0][1]=8.77098;
725     _sigmaBT[0][0][2]=324.048;
726     _sigmaBT[0][0][3]=239.868;
727     _sigmaBC[0][0][0]=-0.00281964;
728     _sigmaBC[0][0][1]=0.125811;
729     _sigmaBC[0][0][2]=538.949;
730     _sigmaBC[0][0][3]=1358.76;
731     _sigmaBS[0][0][0]=0;
732     _sigmaBS[0][0][1]=0;
733     _sigmaBS[0][0][2]=0;
734     _sigmaBS[0][0][3]=0;
735     _sigmaBM[0][0][0]=-0.00293676;
736     _sigmaBM[0][0][1]=8.88276;
737     _sigmaBM[0][0][2]=350.032;
738     _sigmaBM[0][0][3]=580.354;
739     _sigmaR9[0][0][0]=0.955876;
740     _sigmaR9[0][0][1]=2254.5;
741     _sigmaR9[0][0][2]=14627;
742     _sigmaR9[0][0][3]=0;
743    
744     _meanScale[0][1][0]=0.888348;
745     _meanScale[0][1][1]=1.20452e-05;
746     _meanScale[0][1][2]=-1.04458e-05;
747     _meanScale[0][1][3]=-0.542383;
748     _meanAC[0][1][0]=-0.00320856;
749     _meanAC[0][1][1]=0.0240109;
750     _meanAC[0][1][2]=115.145;
751     _meanAC[0][1][3]=205.859;
752     _meanAS[0][1][0]=0.0349736;
753     _meanAS[0][1][1]=-0.00232864;
754     _meanAS[0][1][2]=318.584;
755     _meanAS[0][1][3]=1.4e+09;
756     _meanAM[0][1][0]=-0.00104798;
757     _meanAM[0][1][1]=0.208249;
758     _meanAM[0][1][2]=297.049;
759     _meanAM[0][1][3]=220.609;
760     _meanBC[0][1][0]=-0.00420429;
761     _meanBC[0][1][1]=0.00203991;
762     _meanBC[0][1][2]=172.278;
763     _meanBC[0][1][3]=410.677;
764     _meanBS[0][1][0]=-0.0430854;
765     _meanBS[0][1][1]=0.0961883;
766     _meanBS[0][1][2]=0.196958;
767     _meanBS[0][1][3]=11442.2;
768     _meanBM[0][1][0]=-0.00389457;
769     _meanBM[0][1][1]=0.0449086;
770     _meanBM[0][1][2]=78.9252;
771     _meanBM[0][1][3]=103.237;
772     _meanR9[0][1][0]=0.0182102;
773     _meanR9[0][1][1]=-0.03752;
774     _meanR9[0][1][2]=0.0198881;
775     _meanR9[0][1][3]=0;
776    
777     _sigmaScale[0][1][0]=0.386681;
778     _sigmaScale[0][1][1]=0.0913412;
779     _sigmaScale[0][1][2]=0.00119232;
780     _sigmaScale[0][1][3]=0;
781     _sigmaAT[0][1][0]=1.36562;
782     _sigmaAT[0][1][1]=0;
783     _sigmaAT[0][1][2]=0;
784     _sigmaAT[0][1][3]=0;
785     _sigmaAC[0][1][0]=-0.00504613;
786     _sigmaAC[0][1][1]=-1.09115;
787     _sigmaAC[0][1][2]=8.57406;
788     _sigmaAC[0][1][3]=57.1351;
789     _sigmaAS[0][1][0]=0;
790     _sigmaAS[0][1][1]=0;
791     _sigmaAS[0][1][2]=0;
792     _sigmaAS[0][1][3]=0;
793     _sigmaAM[0][1][0]=-0.00014319;
794     _sigmaAM[0][1][1]=5.39527;
795     _sigmaAM[0][1][2]=432.566;
796     _sigmaAM[0][1][3]=265.165;
797     _sigmaBT[0][1][0]=-0.040161;
798     _sigmaBT[0][1][1]=2.65711;
799     _sigmaBT[0][1][2]=-0.398357;
800     _sigmaBT[0][1][3]=-0.440649;
801     _sigmaBC[0][1][0]=0.00580015;
802     _sigmaBC[0][1][1]=-0.631833;
803     _sigmaBC[0][1][2]=18594.3;
804     _sigmaBC[0][1][3]=4.00955e+08;
805     _sigmaBS[0][1][0]=0;
806     _sigmaBS[0][1][1]=0;
807     _sigmaBS[0][1][2]=0;
808     _sigmaBS[0][1][3]=0;
809     _sigmaBM[0][1][0]=-0.00376665;
810     _sigmaBM[0][1][1]=3.74316;
811     _sigmaBM[0][1][2]=102.72;
812     _sigmaBM[0][1][3]=157.396;
813     _sigmaR9[0][1][0]=-3.12696;
814     _sigmaR9[0][1][1]=1.75114;
815     _sigmaR9[0][1][2]=0;
816     _sigmaR9[0][1][3]=0;
817    
818     _meanScale[1][0][0]=0.999461;
819     _meanScale[1][0][1]=4.37414e-06;
820     _meanScale[1][0][2]=4.92078e-06;
821     _meanScale[1][0][3]=-0.121609;
822     _meanAC[1][0][0]=-0.000396058;
823     _meanAC[1][0][1]=0.0144837;
824     _meanAC[1][0][2]=1374.93;
825     _meanAC[1][0][3]=945.634;
826     _meanAS[1][0][0]=-0.000871036;
827     _meanAS[1][0][1]=0.0442747;
828     _meanAS[1][0][2]=645.709;
829     _meanAS[1][0][3]=962.845;
830     _meanAM[1][0][0]=0.000434298;
831     _meanAM[1][0][1]=0.0658628;
832     _meanAM[1][0][2]=1928.49;
833     _meanAM[1][0][3]=728.522;
834     _meanBC[1][0][0]=-0.000452212;
835     _meanBC[1][0][1]=0.0129968;
836     _meanBC[1][0][2]=1056.08;
837     _meanBC[1][0][3]=759.102;
838     _meanBS[1][0][0]=-0.000786157;
839     _meanBS[1][0][1]=0.0346555;
840     _meanBS[1][0][2]=592.239;
841     _meanBS[1][0][3]=854.285;
842     _meanBM[1][0][0]=-0.0665038;
843     _meanBM[1][0][1]=-0.00211713;
844     _meanBM[1][0][2]=4.84395;
845     _meanBM[1][0][3]=11.6644;
846     _meanR9[1][0][0]=0.971355;
847     _meanR9[1][0][1]=47.2751;
848     _meanR9[1][0][2]=536.907;
849     _meanR9[1][0][3]=0;
850    
851     _sigmaScale[1][0][0]=0.254641;
852     _sigmaScale[1][0][1]=0.00264818;
853     _sigmaScale[1][0][2]=0.0114953;
854     _sigmaScale[1][0][3]=0;
855     _sigmaAT[1][0][0]=0.935839;
856     _sigmaAT[1][0][1]=0;
857     _sigmaAT[1][0][2]=0;
858     _sigmaAT[1][0][3]=0;
859     _sigmaAC[1][0][0]=-0.00476475;
860     _sigmaAC[1][0][1]=2.14548;
861     _sigmaAC[1][0][2]=29937;
862     _sigmaAC[1][0][3]=2.6e+11;
863     _sigmaAS[1][0][0]=-8.17285e-05;
864     _sigmaAS[1][0][1]=1.5821;
865     _sigmaAS[1][0][2]=1928.83;
866     _sigmaAS[1][0][3]=902.519;
867     _sigmaAM[1][0][0]=0.0278577;
868     _sigmaAM[1][0][1]=0.58439;
869     _sigmaAM[1][0][2]=43.3575;
870     _sigmaAM[1][0][3]=19.7836;
871     _sigmaBT[1][0][0]=-0.456051;
872     _sigmaBT[1][0][1]=0;
873     _sigmaBT[1][0][2]=0;
874     _sigmaBT[1][0][3]=0;
875     _sigmaBC[1][0][0]=-0.00264527;
876     _sigmaBC[1][0][1]=0.696043;
877     _sigmaBC[1][0][2]=7.49509e+12;
878     _sigmaBC[1][0][3]=96843;
879     _sigmaBS[1][0][0]=0.000258933;
880     _sigmaBS[1][0][1]=1.28387;
881     _sigmaBS[1][0][2]=1668.71;
882     _sigmaBS[1][0][3]=730.716;
883     _sigmaBM[1][0][0]=0.00121506;
884     _sigmaBM[1][0][1]=0.938541;
885     _sigmaBM[1][0][2]=9003.57;
886     _sigmaBM[1][0][3]=288.897;
887     _sigmaR9[1][0][0]=1.01207;
888     _sigmaR9[1][0][1]=-816.244;
889     _sigmaR9[1][0][2]=-16283.8;
890     _sigmaR9[1][0][3]=0;
891    
892     _meanScale[1][1][0]=0.324634;
893     _meanScale[1][1][1]=9.48206e-05;
894     _meanScale[1][1][2]=1.0e-12;
895     _meanScale[1][1][3]=1.0e-12;
896     _meanAC[1][1][0]=-0.00158311;
897     _meanAC[1][1][1]=0.0106161;
898     _meanAC[1][1][2]=338.964;
899     _meanAC[1][1][3]=797.172;
900     _meanAS[1][1][0]=-0.00960269;
901     _meanAS[1][1][1]=-0.00496491;
902     _meanAS[1][1][2]=934.472;
903     _meanAS[1][1][3]=8.32667e-16;
904     _meanAM[1][1][0]=-0.00219814;
905     _meanAM[1][1][1]=0.653906;
906     _meanAM[1][1][2]=0.0949848;
907     _meanAM[1][1][3]=0.0977831;
908     _meanBC[1][1][0]=-0.00423472;
909     _meanBC[1][1][1]=0.0279695;
910     _meanBC[1][1][2]=28073.7;
911     _meanBC[1][1][3]=118612;
912     _meanBS[1][1][0]=-0.0012476;
913     _meanBS[1][1][1]=0.02744;
914     _meanBS[1][1][2]=390.697;
915     _meanBS[1][1][3]=727.861;
916     _meanBM[1][1][0]=-1.36573e-05;
917     _meanBM[1][1][1]=0.0667504;
918     _meanBM[1][1][2]=-80154.4;
919     _meanBM[1][1][3]=576.637;
920     _meanR9[1][1][0]=0.113317;
921     _meanR9[1][1][1]=0.0142669;
922     _meanR9[1][1][2]=-0.125721;
923     _meanR9[1][1][3]=0;
924    
925     _sigmaScale[1][1][0]=0.471767;
926     _sigmaScale[1][1][1]=0.211196;
927     _sigmaScale[1][1][2]=0.0240124;
928     _sigmaScale[1][1][3]=0;
929     _sigmaAT[1][1][0]=0.404395;
930     _sigmaAT[1][1][1]=0;
931     _sigmaAT[1][1][2]=0;
932     _sigmaAT[1][1][3]=0;
933     _sigmaAC[1][1][0]=0.00173151;
934     _sigmaAC[1][1][1]=-0.479291;
935     _sigmaAC[1][1][2]=11583.5;
936     _sigmaAC[1][1][3]=-7e+09;
937     _sigmaAS[1][1][0]=0.000450387;
938     _sigmaAS[1][1][1]=0.662978;
939     _sigmaAS[1][1][2]=924.051;
940     _sigmaAS[1][1][3]=448.417;
941     _sigmaAM[1][1][0]=0.00335603;
942     _sigmaAM[1][1][1]=0.648407;
943     _sigmaAM[1][1][2]=134.672;
944     _sigmaAM[1][1][3]=27.4139;
945     _sigmaBT[1][1][0]=0.602402;
946     _sigmaBT[1][1][1]=0;
947     _sigmaBT[1][1][2]=0;
948     _sigmaBT[1][1][3]=0;
949     _sigmaBC[1][1][0]=-0.00256192;
950     _sigmaBC[1][1][1]=2.01276;
951     _sigmaBC[1][1][2]=114558;
952     _sigmaBC[1][1][3]=2.15421e+06;
953     _sigmaBS[1][1][0]=0.00151576;
954     _sigmaBS[1][1][1]=0.359084;
955     _sigmaBS[1][1][2]=329.414;
956     _sigmaBS[1][1][3]=154.509;
957     _sigmaBM[1][1][0]=-0.0452587;
958     _sigmaBM[1][1][1]=1.26253;
959     _sigmaBM[1][1][2]=1.9e+09;
960     _sigmaBM[1][1][3]=1058.76;
961     _sigmaR9[1][1][0]=4.59667;
962     _sigmaR9[1][1][1]=-5.14404;
963     _sigmaR9[1][1][2]=0;
964     _sigmaR9[1][1][3]=0;
965    
966     _initialised=true;
967     }
968    
969     if(s=="3_11") {
970     _meanScale[0][0][0]=0.994363;
971     _meanScale[0][0][1]=4.84904e-07;
972     _meanScale[0][0][2]=1.54475e-05;
973     _meanScale[0][0][3]=-0.103309;
974     _meanAC[0][0][0]=-0.00360057;
975     _meanAC[0][0][1]=0.00970858;
976     _meanAC[0][0][2]=409.406;
977     _meanAC[0][0][3]=527.952;
978     _meanAS[0][0][0]=-1.1;
979     _meanAS[0][0][1]=0.00135995;
980     _meanAS[0][0][2]=295.712;
981     _meanAS[0][0][3]=5.13202e+07;
982     _meanAM[0][0][0]=-0.00129854;
983     _meanAM[0][0][1]=0.151466;
984     _meanAM[0][0][2]=261.828;
985     _meanAM[0][0][3]=214.662;
986     _meanBC[0][0][0]=-0.00286864;
987     _meanBC[0][0][1]=0.0114118;
988     _meanBC[0][0][2]=563.962;
989     _meanBC[0][0][3]=412.922;
990     _meanBS[0][0][0]=-0.00210996;
991     _meanBS[0][0][1]=0.00327867;
992     _meanBS[0][0][2]=23.617;
993     _meanBS[0][0][3]=1018.45;
994     _meanBM[0][0][0]=-0.002287;
995     _meanBM[0][0][1]=0.0848984;
996     _meanBM[0][0][2]=235.575;
997     _meanBM[0][0][3]=260.773;
998     _meanR9[0][0][0]=0.951724;
999     _meanR9[0][0][1]=23.7181;
1000     _meanR9[0][0][2]=177.34;
1001     _meanR9[0][0][3]=0;
1002    
1003     _sigmaScale[0][0][0]=0.187578;
1004     _sigmaScale[0][0][1]=-0.000901045;
1005     _sigmaScale[0][0][2]=0.00673186;
1006     _sigmaScale[0][0][3]=0;
1007     _sigmaAT[0][0][0]=0.183777;
1008     _sigmaAT[0][0][1]=0;
1009     _sigmaAT[0][0][2]=0;
1010     _sigmaAT[0][0][3]=0;
1011     _sigmaAC[0][0][0]=-0.00430202;
1012     _sigmaAC[0][0][1]=0.122501;
1013     _sigmaAC[0][0][2]=51.9772;
1014     _sigmaAC[0][0][3]=-3e+17;
1015     _sigmaAS[0][0][0]=0;
1016     _sigmaAS[0][0][1]=0;
1017     _sigmaAS[0][0][2]=0;
1018     _sigmaAS[0][0][3]=0;
1019     _sigmaAM[0][0][0]=0.00101883;
1020     _sigmaAM[0][0][1]=11.2009;
1021     _sigmaAM[0][0][2]=593.111;
1022     _sigmaAM[0][0][3]=345.433;
1023     _sigmaBT[0][0][0]=-6.02356e-05;
1024     _sigmaBT[0][0][1]=6.99896;
1025     _sigmaBT[0][0][2]=235.996;
1026     _sigmaBT[0][0][3]=196;
1027     _sigmaBC[0][0][0]=-0.00282254;
1028     _sigmaBC[0][0][1]=0.18764;
1029     _sigmaBC[0][0][2]=509.825;
1030     _sigmaBC[0][0][3]=1400.14;
1031     _sigmaBS[0][0][0]=0;
1032     _sigmaBS[0][0][1]=0;
1033     _sigmaBS[0][0][2]=0;
1034     _sigmaBS[0][0][3]=0;
1035     _sigmaBM[0][0][0]=-0.00252199;
1036     _sigmaBM[0][0][1]=39.1544;
1037     _sigmaBM[0][0][2]=612.481;
1038     _sigmaBM[0][0][3]=905.994;
1039     _sigmaR9[0][0][0]=0.95608;
1040     _sigmaR9[0][0][1]=2203.31;
1041     _sigmaR9[0][0][2]=-22454.2;
1042     _sigmaR9[0][0][3]=0;
1043    
1044     _meanScale[0][1][0]=0.889415;
1045     _meanScale[0][1][1]=1.21788e-05;
1046     _meanScale[0][1][2]=-4.3438e-06;
1047     _meanScale[0][1][3]=-0.629968;
1048     _meanAC[0][1][0]=-0.00313701;
1049     _meanAC[0][1][1]=0.0227998;
1050     _meanAC[0][1][2]=128.653;
1051     _meanAC[0][1][3]=234.333;
1052     _meanAS[0][1][0]=0.0346198;
1053     _meanAS[0][1][1]=-0.00261336;
1054     _meanAS[0][1][2]=177.983;
1055     _meanAS[0][1][3]=1.19839e+14;
1056     _meanAM[0][1][0]=-0.00100745;
1057     _meanAM[0][1][1]=0.264247;
1058     _meanAM[0][1][2]=337.255;
1059     _meanAM[0][1][3]=251.454;
1060     _meanBC[0][1][0]=-0.00397794;
1061     _meanBC[0][1][1]=0.00219079;
1062     _meanBC[0][1][2]=176.842;
1063     _meanBC[0][1][3]=450.29;
1064     _meanBS[0][1][0]=-2e+07;
1065     _meanBS[0][1][1]=0.0957598;
1066     _meanBS[0][1][2]=-8.88573e-27;
1067     _meanBS[0][1][3]=11442.2;
1068     _meanBM[0][1][0]=-0.00366315;
1069     _meanBM[0][1][1]=0.0622186;
1070     _meanBM[0][1][2]=94.5155;
1071     _meanBM[0][1][3]=126.404;
1072     _meanR9[0][1][0]=0.00636789;
1073     _meanR9[0][1][1]=0.000336062;
1074     _meanR9[0][1][2]=-0.0092699;
1075     _meanR9[0][1][3]=0;
1076    
1077     _sigmaScale[0][1][0]=0.685096;
1078     _sigmaScale[0][1][1]=0.129065;
1079     _sigmaScale[0][1][2]=-0.00212486;
1080     _sigmaScale[0][1][3]=0;
1081     _sigmaAT[0][1][0]=0.898865;
1082     _sigmaAT[0][1][1]=0;
1083     _sigmaAT[0][1][2]=0;
1084     _sigmaAT[0][1][3]=0;
1085     _sigmaAC[0][1][0]=-0.00492979;
1086     _sigmaAC[0][1][1]=-1.20123;
1087     _sigmaAC[0][1][2]=2.89231;
1088     _sigmaAC[0][1][3]=18.2059;
1089     _sigmaAS[0][1][0]=0;
1090     _sigmaAS[0][1][1]=0;
1091     _sigmaAS[0][1][2]=0;
1092     _sigmaAS[0][1][3]=0;
1093     _sigmaAM[0][1][0]=-0.000727825;
1094     _sigmaAM[0][1][1]=8.42395;
1095     _sigmaAM[0][1][2]=512.032;
1096     _sigmaAM[0][1][3]=415.962;
1097     _sigmaBT[0][1][0]=-0.0336364;
1098     _sigmaBT[0][1][1]=2.45182;
1099     _sigmaBT[0][1][2]=-0.284353;
1100     _sigmaBT[0][1][3]=-0.31679;
1101     _sigmaBC[0][1][0]=0.00510553;
1102     _sigmaBC[0][1][1]=-0.953869;
1103     _sigmaBC[0][1][2]=113872;
1104     _sigmaBC[0][1][3]=1.35966e+09;
1105     _sigmaBS[0][1][0]=0;
1106     _sigmaBS[0][1][1]=0;
1107     _sigmaBS[0][1][2]=0;
1108     _sigmaBS[0][1][3]=0;
1109     _sigmaBM[0][1][0]=-0.0034071;
1110     _sigmaBM[0][1][1]=4.19719;
1111     _sigmaBM[0][1][2]=128.952;
1112     _sigmaBM[0][1][3]=180.604;
1113     _sigmaR9[0][1][0]=-3.38988;
1114     _sigmaR9[0][1][1]=2.0714;
1115     _sigmaR9[0][1][2]=0;
1116     _sigmaR9[0][1][3]=0;
1117    
1118     _meanScale[1][0][0]=1.0009;
1119     _meanScale[1][0][1]=-4.79805e-06;
1120     _meanScale[1][0][2]=3.34625e-05;
1121     _meanScale[1][0][3]=-0.194267;
1122     _meanAC[1][0][0]=-0.000177563;
1123     _meanAC[1][0][1]=0.0122839;
1124     _meanAC[1][0][2]=1798.92;
1125     _meanAC[1][0][3]=776.856;
1126     _meanAS[1][0][0]=-0.000533039;
1127     _meanAS[1][0][1]=0.0642604;
1128     _meanAS[1][0][2]=969.596;
1129     _meanAS[1][0][3]=1004.15;
1130     _meanAM[1][0][0]=0.000163185;
1131     _meanAM[1][0][1]=0.085936;
1132     _meanAM[1][0][2]=1593.17;
1133     _meanAM[1][0][3]=681.623;
1134     _meanBC[1][0][0]=-0.000518186;
1135     _meanBC[1][0][1]=0.0121868;
1136     _meanBC[1][0][2]=1112.53;
1137     _meanBC[1][0][3]=933.281;
1138     _meanBS[1][0][0]=-0.000750734;
1139     _meanBS[1][0][1]=0.03859;
1140     _meanBS[1][0][2]=547.579;
1141     _meanBS[1][0][3]=775.887;
1142     _meanBM[1][0][0]=-0.190395;
1143     _meanBM[1][0][1]=-0.00362647;
1144     _meanBM[1][0][2]=5.25687;
1145     _meanBM[1][0][3]=-2.8e+08;
1146     _meanR9[1][0][0]=0.972346;
1147     _meanR9[1][0][1]=53.9185;
1148     _meanR9[1][0][2]=1354.5;
1149     _meanR9[1][0][3]=0;
1150    
1151     _sigmaScale[1][0][0]=0.348019;
1152     _sigmaScale[1][0][1]=-6.43731e-11;
1153     _sigmaScale[1][0][2]=0.0158647;
1154     _sigmaScale[1][0][3]=0;
1155     _sigmaAT[1][0][0]=0.215239;
1156     _sigmaAT[1][0][1]=0;
1157     _sigmaAT[1][0][2]=0;
1158     _sigmaAT[1][0][3]=0;
1159     _sigmaAC[1][0][0]=-0.00492298;
1160     _sigmaAC[1][0][1]=-3.40058;
1161     _sigmaAC[1][0][2]=17263.9;
1162     _sigmaAC[1][0][3]=2.6e+11;
1163     _sigmaAS[1][0][0]=-0.000237998;
1164     _sigmaAS[1][0][1]=3.0258;
1165     _sigmaAS[1][0][2]=1811.25;
1166     _sigmaAS[1][0][3]=1846.79;
1167     _sigmaAM[1][0][0]=0.0210134;
1168     _sigmaAM[1][0][1]=0.328359;
1169     _sigmaAM[1][0][2]=22.49;
1170     _sigmaAM[1][0][3]=14.5021;
1171     _sigmaBT[1][0][0]=-0.495072;
1172     _sigmaBT[1][0][1]=0;
1173     _sigmaBT[1][0][2]=0;
1174     _sigmaBT[1][0][3]=0;
1175     _sigmaBC[1][0][0]=-0.00265007;
1176     _sigmaBC[1][0][1]=0.970549;
1177     _sigmaBC[1][0][2]=-6.89119e+07;
1178     _sigmaBC[1][0][3]=180110;
1179     _sigmaBS[1][0][0]=0.00045833;
1180     _sigmaBS[1][0][1]=2.16342;
1181     _sigmaBS[1][0][2]=3582.4;
1182     _sigmaBS[1][0][3]=1100.36;
1183     _sigmaBM[1][0][0]=0.00188871;
1184     _sigmaBM[1][0][1]=1.66177;
1185     _sigmaBM[1][0][2]=3.2e+08;
1186     _sigmaBM[1][0][3]=2163.81;
1187     _sigmaR9[1][0][0]=-220.415;
1188     _sigmaR9[1][0][1]=5.19136e-08;
1189     _sigmaR9[1][0][2]=3.04028e-10;
1190     _sigmaR9[1][0][3]=0;
1191    
1192     _meanScale[1][1][0]=0.338011;
1193     _meanScale[1][1][1]=9.47815e-05;
1194     _meanScale[1][1][2]=-0.000238735;
1195     _meanScale[1][1][3]=-0.846414;
1196     _meanAC[1][1][0]=-0.00125367;
1197     _meanAC[1][1][1]=0.013324;
1198     _meanAC[1][1][2]=203.988;
1199     _meanAC[1][1][3]=431.951;
1200     _meanAS[1][1][0]=0.000282607;
1201     _meanAS[1][1][1]=0.0307431;
1202     _meanAS[1][1][2]=343.509;
1203     _meanAS[1][1][3]=274.957;
1204     _meanAM[1][1][0]=0.0020258;
1205     _meanAM[1][1][1]=0.643913;
1206     _meanAM[1][1][2]=0.0693877;
1207     _meanAM[1][1][3]=0.0816029;
1208     _meanBC[1][1][0]=-0.00513833;
1209     _meanBC[1][1][1]=5.94424e+08;
1210     _meanBC[1][1][2]=-62814.9;
1211     _meanBC[1][1][3]=118612;
1212     _meanBS[1][1][0]=-0.00152129;
1213     _meanBS[1][1][1]=0.0234694;
1214     _meanBS[1][1][2]=186.483;
1215     _meanBS[1][1][3]=754.201;
1216     _meanBM[1][1][0]=-0.000404987;
1217     _meanBM[1][1][1]=0.156384;
1218     _meanBM[1][1][2]=-1.7e+08;
1219     _meanBM[1][1][3]=1793.83;
1220     _meanR9[1][1][0]=0.0645278;
1221     _meanR9[1][1][1]=0.161614;
1222     _meanR9[1][1][2]=-0.215822;
1223     _meanR9[1][1][3]=0;
1224    
1225     _sigmaScale[1][1][0]=1.07376;
1226     _sigmaScale[1][1][1]=7.47238e-13;
1227     _sigmaScale[1][1][2]=0.0289594;
1228     _sigmaScale[1][1][3]=0;
1229     _sigmaAT[1][1][0]=-0.520907;
1230     _sigmaAT[1][1][1]=0;
1231     _sigmaAT[1][1][2]=0;
1232     _sigmaAT[1][1][3]=0;
1233     _sigmaAC[1][1][0]=0.00165941;
1234     _sigmaAC[1][1][1]=-0.351422;
1235     _sigmaAC[1][1][2]=8968.94;
1236     _sigmaAC[1][1][3]=-7e+09;
1237     _sigmaAS[1][1][0]=0.000490279;
1238     _sigmaAS[1][1][1]=0.554531;
1239     _sigmaAS[1][1][2]=469.111;
1240     _sigmaAS[1][1][3]=457.541;
1241     _sigmaAM[1][1][0]=0.00102079;
1242     _sigmaAM[1][1][1]=0.628055;
1243     _sigmaAM[1][1][2]=53.9452;
1244     _sigmaAM[1][1][3]=72.911;
1245     _sigmaBT[1][1][0]=-0.461542;
1246     _sigmaBT[1][1][1]=0;
1247     _sigmaBT[1][1][2]=0;
1248     _sigmaBT[1][1][3]=0;
1249     _sigmaBC[1][1][0]=-0.00219303;
1250     _sigmaBC[1][1][1]=0.874327;
1251     _sigmaBC[1][1][2]=71353.2;
1252     _sigmaBC[1][1][3]=2.09924e+08;
1253     _sigmaBS[1][1][0]=0.00104021;
1254     _sigmaBS[1][1][1]=0.236098;
1255     _sigmaBS[1][1][2]=482.954;
1256     _sigmaBS[1][1][3]=191.984;
1257     _sigmaBM[1][1][0]=-0.000116086;
1258     _sigmaBM[1][1][1]=2.4438;
1259     _sigmaBM[1][1][2]=1.9e+09;
1260     _sigmaBM[1][1][3]=-700.271;
1261     _sigmaR9[1][1][0]=4.59374;
1262     _sigmaR9[1][1][1]=-5.06202;
1263     _sigmaR9[1][1][2]=0;
1264     _sigmaR9[1][1][3]=0;
1265    
1266     _initialised=true;
1267     }
1268    
1269     if(s=="4_2") {
1270     _meanScale[0][0][0]=0.996799;
1271     _meanScale[0][0][1]=5.60811e-07;
1272     _meanScale[0][0][2]=1.75671e-05;
1273     _meanScale[0][0][3]=-0.0972943;
1274     _meanAC[0][0][0]=-0.00348412;
1275     _meanAC[0][0][1]=0.010197;
1276     _meanAC[0][0][2]=463.582;
1277     _meanAC[0][0][3]=520.443;
1278     _meanAS[0][0][0]=-1.1;
1279     _meanAS[0][0][1]=0.00135995;
1280     _meanAS[0][0][2]=295.712;
1281     _meanAS[0][0][3]=5.13202e+07;
1282     _meanAM[0][0][0]=-0.00120395;
1283     _meanAM[0][0][1]=0.1436;
1284     _meanAM[0][0][2]=262.307;
1285     _meanAM[0][0][3]=202.913;
1286     _meanBC[0][0][0]=-0.00274879;
1287     _meanBC[0][0][1]=0.0126012;
1288     _meanBC[0][0][2]=612.055;
1289     _meanBC[0][0][3]=397.039;
1290     _meanBS[0][0][0]=-0.00203352;
1291     _meanBS[0][0][1]=0.00374733;
1292     _meanBS[0][0][2]=48.7328;
1293     _meanBS[0][0][3]=1128;
1294     _meanBM[0][0][0]=-0.00183083;
1295     _meanBM[0][0][1]=0.0683669;
1296     _meanBM[0][0][2]=218.027;
1297     _meanBM[0][0][3]=210.899;
1298     _meanR9[0][0][0]=0.946449;
1299     _meanR9[0][0][1]=18.7205;
1300     _meanR9[0][0][2]=215.858;
1301     _meanR9[0][0][3]=0;
1302    
1303     _sigmaScale[0][0][0]=0.170521;
1304     _sigmaScale[0][0][1]=0.0219663;
1305     _sigmaScale[0][0][2]=0.00652237;
1306     _sigmaScale[0][0][3]=0;
1307     _sigmaAT[0][0][0]=0.169953;
1308     _sigmaAT[0][0][1]=0;
1309     _sigmaAT[0][0][2]=0;
1310     _sigmaAT[0][0][3]=0;
1311     _sigmaAC[0][0][0]=-0.00383749;
1312     _sigmaAC[0][0][1]=0.0873992;
1313     _sigmaAC[0][0][2]=48.3297;
1314     _sigmaAC[0][0][3]=-3e+17;
1315     _sigmaAS[0][0][0]=0;
1316     _sigmaAS[0][0][1]=0;
1317     _sigmaAS[0][0][2]=0;
1318     _sigmaAS[0][0][3]=0;
1319     _sigmaAM[0][0][0]=0.000929953;
1320     _sigmaAM[0][0][1]=10.4322;
1321     _sigmaAM[0][0][2]=599.042;
1322     _sigmaAM[0][0][3]=302.713;
1323     _sigmaBT[0][0][0]=-0.00237746;
1324     _sigmaBT[0][0][1]=2.84349;
1325     _sigmaBT[0][0][2]=125.522;
1326     _sigmaBT[0][0][3]=144.262;
1327     _sigmaBC[0][0][0]=-0.00170611;
1328     _sigmaBC[0][0][1]=0.260614;
1329     _sigmaBC[0][0][2]=985.412;
1330     _sigmaBC[0][0][3]=806.274;
1331     _sigmaBS[0][0][0]=0;
1332     _sigmaBS[0][0][1]=0;
1333     _sigmaBS[0][0][2]=0;
1334     _sigmaBS[0][0][3]=0;
1335     _sigmaBM[0][0][0]=-0.00252749;
1336     _sigmaBM[0][0][1]=50.861;
1337     _sigmaBM[0][0][2]=673.202;
1338     _sigmaBM[0][0][3]=1011.63;
1339     _sigmaR9[0][0][0]=0.953432;
1340     _sigmaR9[0][0][1]=1814.6;
1341     _sigmaR9[0][0][2]=25838.3;
1342     _sigmaR9[0][0][3]=0;
1343    
1344     _meanScale[0][1][0]=0.888925;
1345     _meanScale[0][1][1]=-1.74431e-05;
1346     _meanScale[0][1][2]=2.96023e-05;
1347     _meanScale[0][1][3]=-0.651503;
1348     _meanAC[0][1][0]=-0.00322338;
1349     _meanAC[0][1][1]=0.0220617;
1350     _meanAC[0][1][2]=137.003;
1351     _meanAC[0][1][3]=237.095;
1352     _meanAS[0][1][0]=0.0331431;
1353     _meanAS[0][1][1]=-0.00594756;
1354     _meanAS[0][1][2]=2675.67;
1355     _meanAS[0][1][3]=1.4e+09;
1356     _meanAM[0][1][0]=-0.000636963;
1357     _meanAM[0][1][1]=0.15048;
1358     _meanAM[0][1][2]=395.704;
1359     _meanAM[0][1][3]=306.8;
1360     _meanBC[0][1][0]=-0.00357393;
1361     _meanBC[0][1][1]=0.00449012;
1362     _meanBC[0][1][2]=887.818;
1363     _meanBC[0][1][3]=855.377;
1364     _meanBS[0][1][0]=-297.287;
1365     _meanBS[0][1][1]=0.0956803;
1366     _meanBS[0][1][2]=-4.74338e-20;
1367     _meanBS[0][1][3]=11442.2;
1368     _meanBM[0][1][0]=-0.00320834;
1369     _meanBM[0][1][1]=0.043721;
1370     _meanBM[0][1][2]=132.981;
1371     _meanBM[0][1][3]=171.418;
1372     _meanR9[0][1][0]=0.0136009;
1373     _meanR9[0][1][1]=-0.0214006;
1374     _meanR9[0][1][2]=0.00866824;
1375     _meanR9[0][1][3]=0;
1376    
1377     _sigmaScale[0][1][0]=0.445368;
1378     _sigmaScale[0][1][1]=0.0898336;
1379     _sigmaScale[0][1][2]=-0.00333875;
1380     _sigmaScale[0][1][3]=0;
1381     _sigmaAT[0][1][0]=1.25749;
1382     _sigmaAT[0][1][1]=0;
1383     _sigmaAT[0][1][2]=0;
1384     _sigmaAT[0][1][3]=0;
1385     _sigmaAC[0][1][0]=-0.00360692;
1386     _sigmaAC[0][1][1]=-1.04963;
1387     _sigmaAC[0][1][2]=10.3527;
1388     _sigmaAC[0][1][3]=29.0662;
1389     _sigmaAS[0][1][0]=0;
1390     _sigmaAS[0][1][1]=0;
1391     _sigmaAS[0][1][2]=0;
1392     _sigmaAS[0][1][3]=0;
1393     _sigmaAM[0][1][0]=-0.000973088;
1394     _sigmaAM[0][1][1]=12.859;
1395     _sigmaAM[0][1][2]=466.397;
1396     _sigmaAM[0][1][3]=464.686;
1397     _sigmaBT[0][1][0]=-0.0284288;
1398     _sigmaBT[0][1][1]=2.6772;
1399     _sigmaBT[0][1][2]=-0.414022;
1400     _sigmaBT[0][1][3]=-0.424373;
1401     _sigmaBC[0][1][0]=0.00567218;
1402     _sigmaBC[0][1][1]=-0.829286;
1403     _sigmaBC[0][1][2]=48132;
1404     _sigmaBC[0][1][3]=3.1211e+08;
1405     _sigmaBS[0][1][0]=0;
1406     _sigmaBS[0][1][1]=0;
1407     _sigmaBS[0][1][2]=0;
1408     _sigmaBS[0][1][3]=0;
1409     _sigmaBM[0][1][0]=-0.00270505;
1410     _sigmaBM[0][1][1]=6.07197;
1411     _sigmaBM[0][1][2]=149.784;
1412     _sigmaBM[0][1][3]=203.478;
1413     _sigmaR9[0][1][0]=-2.78021;
1414     _sigmaR9[0][1][1]=1.33952;
1415     _sigmaR9[0][1][2]=0;
1416     _sigmaR9[0][1][3]=0;
1417    
1418     _meanScale[1][0][0]=0.99928;
1419     _meanScale[1][0][1]=-3.23928e-05;
1420     _meanScale[1][0][2]=0.000126742;
1421     _meanScale[1][0][3]=-0.103714;
1422     _meanAC[1][0][0]=-0.000283383;
1423     _meanAC[1][0][1]=0.0150483;
1424     _meanAC[1][0][2]=1379.81;
1425     _meanAC[1][0][3]=750.912;
1426     _meanAS[1][0][0]=-0.00053446;
1427     _meanAS[1][0][1]=0.0702291;
1428     _meanAS[1][0][2]=835.991;
1429     _meanAS[1][0][3]=1023.41;
1430     _meanAM[1][0][0]=2.63208e-05;
1431     _meanAM[1][0][1]=0.258572;
1432     _meanAM[1][0][2]=2428.89;
1433     _meanAM[1][0][3]=2073.45;
1434     _meanBC[1][0][0]=-0.000345234;
1435     _meanBC[1][0][1]=0.0149896;
1436     _meanBC[1][0][2]=1403.55;
1437     _meanBC[1][0][3]=847.164;
1438     _meanBS[1][0][0]=-0.000411942;
1439     _meanBS[1][0][1]=0.0543678;
1440     _meanBS[1][0][2]=889.136;
1441     _meanBS[1][0][3]=937.071;
1442     _meanBM[1][0][0]=-0.186801;
1443     _meanBM[1][0][1]=-0.00221346;
1444     _meanBM[1][0][2]=3.52258;
1445     _meanBM[1][0][3]=3.17997e+06;
1446     _meanR9[1][0][0]=0.964924;
1447     _meanR9[1][0][1]=31.8205;
1448     _meanR9[1][0][2]=459.004;
1449     _meanR9[1][0][3]=0;
1450    
1451     _sigmaScale[1][0][0]=0.344806;
1452     _sigmaScale[1][0][1]=6.93889e-18;
1453     _sigmaScale[1][0][2]=0.0154355;
1454     _sigmaScale[1][0][3]=0;
1455     _sigmaAT[1][0][0]=0.954147;
1456     _sigmaAT[1][0][1]=0;
1457     _sigmaAT[1][0][2]=0;
1458     _sigmaAT[1][0][3]=0;
1459     _sigmaAC[1][0][0]=48.1275;
1460     _sigmaAC[1][0][1]=1.50005e+08;
1461     _sigmaAC[1][0][2]=21231.6;
1462     _sigmaAC[1][0][3]=2.6e+11;
1463     _sigmaAS[1][0][0]=-0.000195931;
1464     _sigmaAS[1][0][1]=2.61977;
1465     _sigmaAS[1][0][2]=1321.33;
1466     _sigmaAS[1][0][3]=1267.31;
1467     _sigmaAM[1][0][0]=0.0277744;
1468     _sigmaAM[1][0][1]=0.316244;
1469     _sigmaAM[1][0][2]=21.1765;
1470     _sigmaAM[1][0][3]=13.0875;
1471     _sigmaBT[1][0][0]=-0.633404;
1472     _sigmaBT[1][0][1]=0;
1473     _sigmaBT[1][0][2]=0;
1474     _sigmaBT[1][0][3]=0;
1475     _sigmaBC[1][0][0]=-0.00320087;
1476     _sigmaBC[1][0][1]=8.94207;
1477     _sigmaBC[1][0][2]=7.49509e+12;
1478     _sigmaBC[1][0][3]=5.00279e+06;
1479     _sigmaBS[1][0][0]=0.000299388;
1480     _sigmaBS[1][0][1]=2.43008;
1481     _sigmaBS[1][0][2]=2885.75;
1482     _sigmaBS[1][0][3]=1072.72;
1483     _sigmaBM[1][0][0]=0.00154631;
1484     _sigmaBM[1][0][1]=23.6989;
1485     _sigmaBM[1][0][2]=1.2565e+07;
1486     _sigmaBM[1][0][3]=43957.4;
1487     _sigmaR9[1][0][0]=98.4538;
1488     _sigmaR9[1][0][1]=1.85379e-07;
1489     _sigmaR9[1][0][2]=-5.66067e-10;
1490     _sigmaR9[1][0][3]=0;
1491    
1492     _meanScale[1][1][0]=0.325367;
1493     _meanScale[1][1][1]=8.5347e-05;
1494     _meanScale[1][1][2]=-0.000187217;
1495     _meanScale[1][1][3]=-0.991423;
1496     _meanAC[1][1][0]=-0.00114884;
1497     _meanAC[1][1][1]=0.00816447;
1498     _meanAC[1][1][2]=314.939;
1499     _meanAC[1][1][3]=614.316;
1500     _meanAS[1][1][0]=-0.00877504;
1501     _meanAS[1][1][1]=-0.00376867;
1502     _meanAS[1][1][2]=1471.46;
1503     _meanAS[1][1][3]=3.88578e-16;
1504     _meanAM[1][1][0]=0.000631949;
1505     _meanAM[1][1][1]=0.645715;
1506     _meanAM[1][1][2]=0.0241907;
1507     _meanAM[1][1][3]=0.0376477;
1508     _meanBC[1][1][0]=-0.00501182;
1509     _meanBC[1][1][1]=-5303.12;
1510     _meanBC[1][1][2]=41522.7;
1511     _meanBC[1][1][3]=118612;
1512     _meanBS[1][1][0]=-0.00133119;
1513     _meanBS[1][1][1]=0.0239645;
1514     _meanBS[1][1][2]=308.148;
1515     _meanBS[1][1][3]=752.554;
1516     _meanBM[1][1][0]=-8.08678e-05;
1517     _meanBM[1][1][1]=0.0502046;
1518     _meanBM[1][1][2]=-7.5e+06;
1519     _meanBM[1][1][3]=870.829;
1520     _meanR9[1][1][0]=0.20763;
1521     _meanR9[1][1][1]=-0.0992461;
1522     _meanR9[1][1][2]=-0.114749;
1523     _meanR9[1][1][3]=0;
1524    
1525     _sigmaScale[1][1][0]=1.05009;
1526     _sigmaScale[1][1][1]=1.38778e-17;
1527     _sigmaScale[1][1][2]=0.0256383;
1528     _sigmaScale[1][1][3]=0;
1529     _sigmaAT[1][1][0]=-0.668389;
1530     _sigmaAT[1][1][1]=0;
1531     _sigmaAT[1][1][2]=0;
1532     _sigmaAT[1][1][3]=0;
1533     _sigmaAC[1][1][0]=0.00168503;
1534     _sigmaAC[1][1][1]=-0.540635;
1535     _sigmaAC[1][1][2]=95975.1;
1536     _sigmaAC[1][1][3]=-7e+09;
1537     _sigmaAS[1][1][0]=8.02356e-05;
1538     _sigmaAS[1][1][1]=0.854919;
1539     _sigmaAS[1][1][2]=526.113;
1540     _sigmaAS[1][1][3]=666.797;
1541     _sigmaAM[1][1][0]=-0.00504173;
1542     _sigmaAM[1][1][1]=0.910018;
1543     _sigmaAM[1][1][2]=45.1636;
1544     _sigmaAM[1][1][3]=754.491;
1545     _sigmaBT[1][1][0]=-0.816975;
1546     _sigmaBT[1][1][1]=0;
1547     _sigmaBT[1][1][2]=0;
1548     _sigmaBT[1][1][3]=0;
1549     _sigmaBC[1][1][0]=-0.00208737;
1550     _sigmaBC[1][1][1]=3.20678;
1551     _sigmaBC[1][1][2]=214874;
1552     _sigmaBC[1][1][3]=-5.1e+09;
1553     _sigmaBS[1][1][0]=0.0017277;
1554     _sigmaBS[1][1][1]=0.290957;
1555     _sigmaBS[1][1][2]=535.114;
1556     _sigmaBS[1][1][3]=317.952;
1557     _sigmaBM[1][1][0]=-0.0454821;
1558     _sigmaBM[1][1][1]=4.776;
1559     _sigmaBM[1][1][2]=1.9e+09;
1560     _sigmaBM[1][1][3]=14413;
1561     _sigmaR9[1][1][0]=4.83148;
1562     _sigmaR9[1][1][1]=-5.29859;
1563     _sigmaR9[1][1][2]=0;
1564     _sigmaR9[1][1][3]=0;
1565    
1566     _initialised=true;
1567     }
1568    
1569     assert(_initialised);
1570     return true;
1571     }
1572    
1573     // Get the geometry of cracks and gaps from file
1574     bool PhotonFix::initialiseGeometry(const std::string &s, const std::string &infile) {
1575    
1576     std::ifstream fin(infile.c_str());
1577     assert(fin);
1578    
1579     std::cout << "Reading in here" << std::endl;
1580     for(unsigned i(0);i<169;i++) {
1581     for(unsigned j(0);j<360;j++) {
1582     for(unsigned k(0);k<2;k++) {
1583     fin >> _barrelCGap[i][j][k];
1584     }
1585     }
1586     }
1587    
1588     for(unsigned i(0);i<33;i++) {
1589     for(unsigned j(0);j<180;j++) {
1590     for(unsigned k(0);k<2;k++) {
1591     fin >> _barrelSGap[i][j][k];
1592     }
1593     }
1594     }
1595    
1596     for(unsigned i(0);i<7;i++) {
1597     for(unsigned j(0);j<18;j++) {
1598     for(unsigned k(0);k<2;k++) {
1599     fin >> _barrelMGap[i][j][k];
1600     }
1601     }
1602     }
1603     for(unsigned i(0);i<100;i++) {
1604     for(unsigned j(0);j<100;j++) {
1605     unsigned k;
1606     fin >> k;
1607     _endcapCrystal[i][j]=(k==0);
1608     }
1609     }
1610    
1611     for(unsigned i(0);i<2;i++) {
1612     for(unsigned j(0);j<7080;j++) {
1613     for(unsigned k(0);k<2;k++) {
1614     fin >> _endcapCGap[i][j][k];
1615     }
1616     }
1617     }
1618    
1619     for(unsigned i(0);i<2;i++) {
1620     for(unsigned j(0);j<264;j++) {
1621     for(unsigned k(0);k<2;k++) {
1622     fin >> _endcapSGap[i][j][k];
1623     }
1624     }
1625     }
1626    
1627     for(unsigned i(0);i<2;i++) {
1628     for(unsigned j(0);j<1;j++) {
1629     for(unsigned k(0);k<2;k++) {
1630     fin >> _endcapMGap[i][j][k];
1631     }
1632     }
1633     }
1634    
1635     assert(fin);
1636    
1637     return true;
1638     }
1639    
1640     const double PhotonFix::_onePi(acos(-1.0));
1641     const double PhotonFix::_twoPi(2.0*acos(-1.0));
1642    
1643     bool PhotonFix::_initialised=false;
1644    
1645     double PhotonFix::_meanScale[2][2][4];
1646     double PhotonFix::_meanAC[2][2][4];
1647     double PhotonFix::_meanAS[2][2][4];
1648     double PhotonFix::_meanAM[2][2][4];
1649     double PhotonFix::_meanBC[2][2][4];
1650     double PhotonFix::_meanBS[2][2][4];
1651     double PhotonFix::_meanBM[2][2][4];
1652     double PhotonFix::_meanR9[2][2][4];
1653    
1654     double PhotonFix::_sigmaScale[2][2][4];
1655     double PhotonFix::_sigmaAT[2][2][4];
1656     double PhotonFix::_sigmaAC[2][2][4];
1657     double PhotonFix::_sigmaAS[2][2][4];
1658     double PhotonFix::_sigmaAM[2][2][4];
1659     double PhotonFix::_sigmaBT[2][2][4];
1660     double PhotonFix::_sigmaBC[2][2][4];
1661     double PhotonFix::_sigmaBS[2][2][4];
1662     double PhotonFix::_sigmaBM[2][2][4];
1663     double PhotonFix::_sigmaR9[2][2][4];
1664    
1665     double PhotonFix::_barrelCGap[169][360][2];
1666     double PhotonFix::_barrelSGap[33][180][2];
1667     double PhotonFix::_barrelMGap[7][18][2];
1668    
1669     bool PhotonFix::_endcapCrystal[100][100];
1670     double PhotonFix::_endcapCGap[2][7080][2];
1671     double PhotonFix::_endcapSGap[2][264][2];
1672     double PhotonFix::_endcapMGap[2][1][2];