Skip to content

Commit c667c8f

Browse files
author
Karl Smith
committed
Updated paramScan.
The intial value is now reset after paramScan has finished. Also, extended the number of peaks to search for to 100. A correction for exiting the program early and improperly getting the time to run the MCA.
1 parent b2c7157 commit c667c8f

1 file changed

Lines changed: 26 additions & 10 deletions

File tree

Setup/source/paramScan.cpp

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)