152 std::set<std::string> keysA, keysB;
153 TIter nextA(
a->GetListOfKeys()), nextB(b->GetListOfKeys());
154 while(TObject*
x = nextA()) keysA.insert(
x->GetName());
155 while(TObject*
x = nextB()) keysB.insert(
x->GetName());
157 std::vector<std::string> onlyA, onlyB, bothAB;
158 std::set_difference (keysA.begin(), keysA.end(), keysB.begin(), keysB.end(), std::back_inserter(onlyA));
159 std::set_difference (keysB.begin(), keysB.end(), keysA.begin(), keysA.end(), std::back_inserter(onlyB));
160 std::set_intersection(keysA.begin(), keysA.end(), keysB.begin(), keysB.end(), std::back_inserter(bothAB));
165 bool ok = onlyA.empty() && onlyB.empty();
167 for(
const std::string& key: bothAB){
168 TObject* objA =
a->Get(key.c_str());
169 TObject* objB = b->Get(key.c_str());
171 TDirectory* dirA =
dynamic_cast<TDirectoryFile*
>(objA);
172 TDirectory* dirB =
dynamic_cast<TDirectoryFile*
>(objB);
process_name opflash particleana ie x
bool CheckDirectory(TDirectory *a, TDirectory *b, std::string path="")
bool CompareObjects(const TObject &a, const TObject &b, const std::string &key)
BEGIN_PROLOG triggeremu_data_config_icarus settings PMTADCthresholds sequence::icarus_stage0_multiTPC_TPC physics sequence::icarus_stage0_EastHits_TPC physics sequence::icarus_stage0_WestHits_TPC physics producers purityana0 caloskimCalorimetryCryoE physics caloskimCalorimetryCryoW physics path
std::string ConcatPath(const std::string &a, const std::string &b)
void ReportUnique(const std::vector< std::string > &only, TDirectory *dir)