@@ -36,6 +36,7 @@ int main(int argc, char *argv[]) {
3636 const double stopVal;
3737 double value;
3838 double stepSize;
39+ double initialVal; // /<Value of parameter prior to scan.
3940 };
4041 int mod = atoi (argv[1 ]);
4142 int ch = atoi (argv[2 ]);
@@ -46,15 +47,15 @@ int main(int argc, char *argv[]) {
4647 if (argc < 11 ) {
4748 isTwoDim = false ;
4849 par2 = new parInfo{" " ,1 ,0 ,0 };
49- if (argc > 8 )
50+ if (argc > 7 )
5051 runTime = atoi (argv[7 ]);
5152 if (argc == 9 )
5253 outputFilename = argv[8 ];
5354 }
5455 else {
5556 isTwoDim = true ;
5657 par2 = new parInfo{argv[7 ],atoi (argv[8 ]),atof (argv[9 ]), atof (argv[10 ])};
57- if (argc > 12 )
58+ if (argc > 11 )
5859 runTime = atoi (argv[11 ]);
5960 if (argc == 13 )
6061 outputFilename = argv[12 ];
@@ -63,12 +64,10 @@ int main(int argc, char *argv[]) {
6364 std::cout << " Scanning M" << mod << " C" << ch << " \n " ;
6465 std::cout << " Scanning " << par1->parName << " over " << par1->numSteps << " steps from " << par1->startVal << " ->" << par1->stopVal << " \n " ;
6566 if (isTwoDim) std::cout << " Scanning " << par2->parName << " over " << par2->numSteps << " steps from " << par2->startVal << " ->" << par2->stopVal << " \n " ;
66- std::cout << " MCA Runs : " << runTime << " s\n " ;
67+ std::cout << " MCA Run time : " << runTime << " s\n " ;
6768 std::cout << " Scan output: " << outputFilename << " \n " ;
6869
6970
70- return EXIT_FAILURE;
71-
7271 PixieInterface pif (" pixie.cfg" );
7372 pif.GetSlots ();
7473
@@ -82,17 +81,24 @@ int main(int argc, char *argv[]) {
8281
8382 pif.RemovePresetRunLength (0 );
8483
84+ pif.ReadSglChanPar (par1->parName , &par1->initialVal , mod, ch);
85+ std::cout << par1->parName << " initial value: " << par1->initialVal << " \n " ;
86+ if (isTwoDim) {
87+ pif.ReadSglChanPar (par2->parName , &par2->initialVal , mod, ch);
88+ std::cout << par2->parName << " initial value: " << par2->initialVal << " \n " ;
89+ }
90+
8591 TFile *f = new TFile (outputFilename," RECREATE" );
8692 TGraphErrors *gr = new TGraphErrors ();
8793 TGraph2DErrors *gr2d = new TGraph2DErrors ();
8894
8995 MCA_ROOT *mca = new MCA_ROOT (&pif," MCA" );
9096
9197 // Set inital par1 steps
92- par1->stepSize = (par1->stopVal - par1->startVal ) / (par1->numSteps - 1 );
98+ par1->stepSize = (par1->stopVal - par1->startVal ) / (par1->numSteps );
9399 par1->value = par1->startVal - par1->stepSize ;
94100 // Set inital par2 steps
95- par2->stepSize = (par2->stopVal - par2->startVal ) / (par2->numSteps - 1 );
101+ par2->stepSize = (par2->stopVal - par2->startVal ) / (par2->numSteps );
96102
97103 printf (" Par 1 step size: %f\n " ,par1->stepSize );
98104 if (isTwoDim) printf (" Par 2 step size: %f\n " ,par2->stepSize );
@@ -114,7 +120,7 @@ int main(int argc, char *argv[]) {
114120 pif.SaveDSPParameters ();
115121 printf (" Readback : %f\n " ,readback);
116122 }
117- if (par1->value > par1->stopVal || readback > par2 ->stopVal ) break ;
123+ if (par1->value > par1->stopVal || readback > par1 ->stopVal ) break ;
118124 par1->value = readback;
119125
120126 // Reset par2 value
@@ -132,10 +138,10 @@ int main(int argc, char *argv[]) {
132138
133139 // Write parameter value
134140 pif.WriteSglChanPar (par2->parName ,par2->value ,mod,ch);
141+ pif.SaveDSPParameters ();
135142 // Read back the value to see what it actually was set to.
136143 pif.PrintSglChanPar (par2->parName , mod, ch);
137144 pif.ReadSglChanPar (par2->parName , &readback, mod, ch);
138- pif.SaveDSPParameters ();
139145 }
140146 if (par2->value > par2->stopVal || readback > par2->stopVal ) break ;
141147 par2->value = readback;
@@ -145,7 +151,7 @@ int main(int argc, char *argv[]) {
145151 mca->Run (runTime);
146152
147153 TH1* hist = mca->GetHistogram (mod,ch);
148- TSpectrum *s = new TSpectrum (2 );
154+ TSpectrum *s = new TSpectrum (100 );
149155 s->Search (hist);
150156 TF1 *func = new TF1 (" func" ," gaus" );
151157
@@ -223,10 +229,20 @@ int main(int argc, char *argv[]) {
223229
224230 delete mca;
225231
232+ std::cout << " Restoring initial parameter values.\n " ;
233+ pif.WriteSglChanPar (par1->parName , par1->initialVal , mod, ch);
234+ pif.PrintSglChanPar (par1->parName , mod, ch);
235+ if (isTwoDim) {
236+ pif.WriteSglChanPar (par2->parName , par2->initialVal , mod, ch);
237+ pif.PrintSglChanPar (par2->parName , mod, ch);
238+ }
239+ pif.SaveDSPParameters ();
240+
226241 f->cd ();
227242 if (!isTwoDim) gr->Write (" resGraph" );
228243 else gr2d->Write (" resGraph" );
229244 f->Write (0 ,TObject::kOverwrite );
230245 f->Close ();
231246 delete f;
247+
232248}
0 commit comments