Skip to content

Commit 2cb15ea

Browse files
authored
Merge pull request #365 from JeffersonLab/seedfile_naming
Avoid duplicate seedfile extension in PWA fit
2 parents 307fc77 + 71d7542 commit 2cb15ea

2 files changed

Lines changed: 46 additions & 8 deletions

File tree

src/programs/AmplitudeAnalysis/fit/fit.cc

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,10 @@ void runRndFits(ConfigurationInfo* cfgInfo, bool useMinos, bool hesse, int maxIt
151151
ati.finalizeFit(to_string(i));
152152

153153
if( seedfile.size() != 0 && !fitFailed ){
154-
string seedfile_rand = seedfile + Form("_%d.txt", i);
154+
string seedfileBaseName = seedfile.substr(0, seedfile.find_last_of("."));
155+
string seedfileExtension = seedfile.substr(seedfile.find_last_of("."));
156+
157+
string seedfile_rand = seedfileBaseName + Form("_%d%s", i, seedfileExtension.data());
155158
ati.fitResults()->writeSeed( seedfile_rand );
156159
}
157160

@@ -167,8 +170,11 @@ void runRndFits(ConfigurationInfo* cfgInfo, bool useMinos, bool hesse, int maxIt
167170
else {
168171
cout << "MINIMUM LIKELIHOOD FROM " << minFitTag << " of " << numRnd << " RANDOM PRODUCTION PARS = " << minLL << endl;
169172
gSystem->Exec(Form("cp %s_%d.fit %s.fit", fitName.data(), minFitTag, fitName.data()));
170-
if( seedfile.size() != 0 )
171-
gSystem->Exec(Form("cp %s_%d.txt %s.txt", seedfile.data(), minFitTag, seedfile.data()));
173+
if( seedfile.size() != 0 ){
174+
string seedfileBaseName = seedfile.substr(0, seedfile.find_last_of("."));
175+
string seedfileExtension = seedfile.substr(seedfile.find_last_of("."));
176+
gSystem->Exec(Form("cp %s_%d%s %s", seedfileBaseName.data(), minFitTag, seedfileExtension.data(), seedfile.data()));
177+
}
172178
}
173179
}
174180

@@ -249,7 +255,10 @@ void runParScan(ConfigurationInfo* cfgInfo, bool useMinos, bool hesse, int maxIt
249255
ati.finalizeFit(to_string(i));
250256

251257
if( seedfile.size() != 0 && !fitFailed ){
252-
string seedfile_scan = seedfile + Form("_scan_%d.txt", i);
258+
string seedfileBaseName = seedfile.substr(0, seedfile.find_last_of("."));
259+
string seedfileExtension = seedfile.substr(seedfile.find_last_of("."));
260+
261+
string seedfile_scan = seedfileBaseName + Form("_scan_%d%s", i, seedfileExtension.data());
253262
ati.fitResults()->writeSeed( seedfile_scan );
254263
}
255264
}
@@ -387,6 +396,16 @@ int main( int argc, char* argv[] ){
387396
AmpToolsInterface::registerDataReader( ROOTDataReaderHist() );
388397
AmpToolsInterface::registerDataReader( FSRootDataReader() );
389398

399+
// normalize seedFile file extension if not already set by user
400+
if (seedfile.size() != 0){
401+
if (seedfile.find(".") == string::npos) seedfile += ".txt";
402+
else{
403+
// this ensures the file has an extension for cases like "./my_seed_file"
404+
string fileExtension = seedfile.substr(seedfile.find_last_of("."));
405+
if (fileExtension.find("/") != string::npos) seedfile += ".txt";
406+
}
407+
}
408+
390409
if(noFit)
391410
getLikelihood(cfgInfo);
392411
else if(printAmps)

src/programs/AmplitudeAnalysis/fitMPI/fitMPI.cc

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,10 @@ void runRndFits(ConfigurationInfo* cfgInfo, bool useMinos, bool hesse, int maxIt
168168
ati.finalizeFit(to_string(i));
169169

170170
if( seedfile.size() != 0 && !fitFailed ){
171-
string seedfile_rand = seedfile + Form("_%d.txt", i);
171+
string seedfileBaseName = seedfile.substr(0, seedfile.find_last_of("."));
172+
string seedfileExtension = seedfile.substr(seedfile.find_last_of("."));
173+
174+
string seedfile_rand = seedfileBaseName + Form("_%d%s", i, seedfileExtension.data());
172175
ati.fitResults()->writeSeed( seedfile_rand );
173176
}
174177

@@ -187,8 +190,11 @@ void runRndFits(ConfigurationInfo* cfgInfo, bool useMinos, bool hesse, int maxIt
187190
else {
188191
cout << "MINIMUM LIKELIHOOD FROM " << minFitTag << " of " << numRnd << " RANDOM PRODUCTION PARS = " << minLH << endl;
189192
gSystem->Exec(Form("cp %s_%d.fit %s.fit", fitName.data(), minFitTag, fitName.data()));
190-
if( seedfile.size() != 0 )
191-
gSystem->Exec(Form("cp %s_%d.txt %s.txt", seedfile.data(), minFitTag, seedfile.data()));
193+
if( seedfile.size() != 0 ) {
194+
string seedfileBaseName = seedfile.substr(0, seedfile.find_last_of("."));
195+
string seedfileExtension = seedfile.substr(seedfile.find_last_of("."));
196+
gSystem->Exec(Form("cp %s_%d%s %s", seedfileBaseName.data(), minFitTag, seedfileExtension.data(), seedfile.data()));
197+
}
192198
}
193199
}
194200

@@ -281,7 +287,10 @@ void runParScan(ConfigurationInfo* cfgInfo, bool useMinos, bool hesse, int maxIt
281287

282288
ati.finalizeFit(to_string(i));
283289
if( seedfile.size() != 0 && !fitFailed ){
284-
string seedfile_scan = seedfile + Form("_scan_%d.dat", i);
290+
string seedfileBaseName = seedfile.substr(0, seedfile.find_last_of("."));
291+
string seedfileExtension = seedfile.substr(seedfile.find_last_of("."));
292+
293+
string seedfile_scan = seedfileBaseName + Form("_scan_%d%s", i, seedfileExtension.data());
285294
ati.fitResults()->writeSeed( seedfile_scan );
286295
}
287296
}
@@ -415,6 +424,16 @@ int main( int argc, char* argv[] ){
415424
AmpToolsInterface::registerDataReader( DataReaderMPI<ROOTDataReaderTEM>() );
416425
AmpToolsInterface::registerDataReader( DataReaderMPI<FSRootDataReader>() );
417426

427+
// normalize seedFile file extension if not already set by user
428+
if (seedfile.size() != 0){
429+
if (seedfile.find(".") == string::npos) seedfile += ".txt";
430+
else{
431+
// this ensures the file has an extension for cases like "./my_seed_file"
432+
string fileExtension = seedfile.substr(seedfile.find_last_of("."));
433+
if (fileExtension.find("/") != string::npos) seedfile += ".txt";
434+
}
435+
}
436+
418437
if(noFit)
419438
getLikelihood(cfgInfo);
420439
else if(numRnd==0){

0 commit comments

Comments
 (0)