@@ -359,29 +359,14 @@ void TRestDataSet::GenerateDataSet() {
359359
360360 // /// Disentangling process observables --> producing finalList
361361 TRestRun run (fFileSelection .front ());
362- std::vector <std::string> finalList;
363- finalList.push_back (" runOrigin" );
364- finalList.push_back (" eventID" );
365- finalList.push_back (" timeStamp" );
362+ std::set <std::string> finalList;
363+ finalList.insert (" runOrigin" );
364+ finalList.insert (" eventID" );
365+ finalList.insert (" timeStamp" );
366366
367367 auto obsNames = run.GetAnalysisTree ()->GetObservableNames ();
368- for (const auto & obs : fObservablesList ) {
369- if (std::find (obsNames.begin (), obsNames.end (), obs) != obsNames.end ()) {
370- finalList.push_back (obs);
371- } else {
372- RESTWarning << " Observable " << obs << " not found in observable list, skipping..." << RESTendl;
373- }
374- }
375-
376- for (const auto & name : obsNames) {
377- for (const auto & pcs : fProcessObservablesList ) {
378- if (name.find (pcs) == 0 ) finalList.push_back (name);
379- }
380- }
381-
382- // Remove duplicated observables if any
383- std::sort (finalList.begin (), finalList.end ());
384- finalList.erase (std::unique (finalList.begin (), finalList.end ()), finalList.end ());
368+ auto obsFromList = TRestTools::GetMatchingStrings (obsNames, fObservablesList );
369+ finalList.insert (obsFromList.begin (), obsFromList.end ());
385370
386371 if (fMT )
387372 ROOT::EnableImplicitMT ();
@@ -397,11 +382,11 @@ void TRestDataSet::GenerateDataSet() {
397382 // Adding new user columns added to the dataset
398383 for (const auto & [cName, cExpression] : fColumnNameExpressions ) {
399384 RESTInfo << " Adding column to dataset: " << cName << RESTendl;
400- finalList.emplace_back (cName);
385+ finalList.emplace (cName);
401386 fDataFrame = DefineColumn (cName, cExpression);
402387 }
403388
404- RegenerateTree (finalList);
389+ RegenerateTree (std::vector<std::string>( finalList. begin (), finalList. end ()) );
405390
406391 RESTInfo << " - Dataset generated!" << RESTendl;
407392}
@@ -672,21 +657,13 @@ void TRestDataSet::PrintMetadata() {
672657 RESTMetadata << " " << RESTendl;
673658
674659 if (!fObservablesList .empty ()) {
675- RESTMetadata << " Single observables added:" << RESTendl;
660+ RESTMetadata << " Observables added:" << RESTendl;
676661 RESTMetadata << " -------------------------" << RESTendl;
677662 for (const auto & l : fObservablesList ) RESTMetadata << " - " << l << RESTendl;
678663
679664 RESTMetadata << " " << RESTendl;
680665 }
681666
682- if (!fProcessObservablesList .empty ()) {
683- RESTMetadata << " Process observables added: " << RESTendl;
684- RESTMetadata << " -------------------------- " << RESTendl;
685- for (const auto & l : fProcessObservablesList ) RESTMetadata << " - " << l << RESTendl;
686-
687- RESTMetadata << " " << RESTendl;
688- }
689-
690667 if (!fFilterMetadata .empty ()) {
691668 RESTMetadata << " Metadata filters: " << RESTendl;
692669 RESTMetadata << " ----------------- " << RESTendl;
@@ -811,7 +788,10 @@ void TRestDataSet::InitFromConfigFile() {
811788
812789 std::vector<std::string> obsList = REST_StringHelper::Split (observables, " ," );
813790
814- for (const auto & l : obsList) fProcessObservablesList .push_back (l);
791+ for (const auto & l : obsList) {
792+ std::string processObsPattern = l + " _*" ;
793+ fObservablesList .push_back (processObsPattern);
794+ }
815795
816796 obsProcessDefinition = GetNextElement (obsProcessDefinition);
817797 }
@@ -1033,7 +1013,6 @@ TRestDataSet& TRestDataSet::operator=(TRestDataSet& dS) {
10331013 fFilePattern = dS.GetFilePattern ();
10341014 fObservablesList = dS.GetObservablesList ();
10351015 fFileSelection = dS.GetFileSelection ();
1036- fProcessObservablesList = dS.GetProcessObservablesList ();
10371016 fFilterMetadata = dS.GetFilterMetadata ();
10381017 fFilterContains = dS.GetFilterContains ();
10391018 fFilterGreaterThan = dS.GetFilterGreaterThan ();
0 commit comments