14 #include "TLeafObject.h" 16 int main(
int argc,
char *argv[]){
18 if(argc<=2)
throw std::runtime_error(
"At least two arguments required.");
19 if(!(argc & 1))
throw std::runtime_error(
"Even number of arguments required.");
23 std::vector<std::string> class_names(0);
26 for(
int arg = 1; (arg+1) < argc; arg+=2){
27 TFile in_file(argv[arg],
"read");
28 if(!in_file.IsOpen() || in_file.IsZombie())
throw std::runtime_error(std::string(
"Could not open file ")+argv[arg]);
30 std::string file_name = argv[arg];
31 std::string dir_name =
"cfA";
32 if (file_name.find(
"cfa_file_8")!=std::string::npos) dir_name =
"configurableAnalysis";
33 TChain *ptr_chain_a(static_cast<TChain*>(in_file.Get((dir_name+
"/eventA").c_str())));
35 throw std::runtime_error(std::string(
"Could not find chainA in ")+argv[arg]);
38 TChain *ptr_chain_b(static_cast<TChain*>(in_file.Get((dir_name+
"/eventB").c_str())));
40 throw std::runtime_error(std::string(
"Could not find chainB in ")+argv[arg]);
43 GetVariables(*ptr_chain_a,
true, (arg-1)/2, (argc-1)/2, full_varset);
44 GetVariables(*ptr_chain_b,
false, (arg-1)/2, (argc-1)/2, full_varset);
46 class_names.push_back(argv[arg+1]);
49 std::vector<Variable> base_variables(0), virtual_variables(0);
50 std::vector<std::vector<Variable> > file_variables(0);
52 ClassifyVariables(full_varset, base_variables, virtual_variables, file_variables);
57 for(
size_t file = 0; file<file_variables.size(); ++file){
72 RepMap overwrites, new_funcs;
78 catch(std::exception& ex){
79 std::cerr <<
"An exception occurred: " << ex.what() << std::endl;
83 std::cerr <<
"An unknown exception occurred." << std::endl;
std::set< std::pair< std::string, std::string > > Typelist
std::vector< std::pair< std::string, std::vector< std::string > > > RepList
void AddToTypelist(const std::vector< Variable > &vars, Typelist &typelist)
void WriteBaseSource(const std::vector< Variable > &base_vars, const std::vector< Variable > &virtual_variables)
void WriteMergedHeader(const Typelist &typelist, const RepMap &overwritten, const RepMap &new_funcs)
void WriteMergedSource(const Typelist &typelist, const RepMap &overwritten, const RepMap &new_funcs, const std::vector< std::string > &class_names)
void GetReplacements(const Typelist &typelist, const RepList &pats, RepMap &reps)
void GetOverwritten(const Typelist &typelist, const RepMap &replacements, RepMap &overwritten, RepMap &new_funcs)
void GetRules(RepList &reps)
void WriteBaseHeader(const std::vector< Variable > &base_vars, const std::vector< Variable > &virtual_variables)
std::map< std::pair< std::string, std::string >, std::vector< std::string > > RepMap
void WriteDerivedHeader(const std::string &class_name, const std::vector< Variable > &vars)
void GetVariables(TChain &chain, const bool is_chain_a, const size_t file, const size_t num_files, Dictionary &vars)
int main(int argc, char *argv[])
void WriteDerivedSource(const std::string &class_name, const std::vector< Variable > &vars)
void ClassifyVariables(const Dictionary &all_var, std::vector< Variable > &base_vars, std::vector< Variable > &virtual_vars, std::vector< std::vector< Variable > > &file_vars)
std::map< std::string, std::vector< std::pair< bool, std::string > > > Dictionary