susy_cfa  b611ccad937ea179f86a1f5663960264616c0a20
generate_cfa.hpp
Go to the documentation of this file.
1 #ifndef H_GEN_CFA
2 #define H_GEN_CFA
3 
4 #include <map>
5 #include <set>
6 #include <utility>
7 #include <string>
8 #include <vector>
9 
10 #include "TChain.h"
11 
12 class Variable{
13 public:
14  Variable(const std::string &name, const bool from_chain_a,
15  const std::string &type, const std::string &to_type);
16  Variable(const std::string &name, const bool from_chain_a, const std::string &type);
17  Variable();
18 
19  const std::string &Name() const;
20  Variable &Name(const std::string &name);
21 
22  const std::string &FromType() const;
23  Variable &FromType(const std::string &name);
24 
25  const std::string &ToType() const;
26  Variable &ToType(const std::string &name);
27 
28  const bool &FromChainA() const;
29  Variable &FromChainA(const bool from_chain_a);
30 
31  bool Converted() const;
32 
33 private:
34  std::string name_, to_type_, from_type_;
36 };
37 
38 typedef std::map<std::string, std::vector<std::pair<bool, std::string> > > Dictionary;
39 //Map of variable names to vector containing is_chain_a, type pair for each file read in
40 
41 typedef std::set<std::pair<std::string, std::string> > Typelist;
42 //set of name-type pairs
43 
44 typedef std::vector<std::pair<std::string, std::vector<std::string> > > RepList;
45 //vector of pairs of mux output names and vector of mux input names
46 
47 typedef std::map<std::pair<std::string, std::string>, std::vector<std::string> > RepMap;
48 //map of name-type pair to vector of mux input names
49 
50 void GetVariables(TChain &chain, const bool is_chain_a,
51  const size_t file, const size_t num_files,
52  Dictionary &vars);
53 
54 void ClassifyVariables(const Dictionary &all_var,
55  std::vector<Variable> &base_vars, std::vector<Variable> &virtual_vars,
56  std::vector<std::vector<Variable> > &file_vars);
57 
58 void WriteBaseHeader(const std::vector<Variable> &base_vars,
59  const std::vector<Variable> &virtual_variables);
60 void WriteBaseSource(const std::vector<Variable> &base_vars,
61  const std::vector<Variable> &virtual_variables);
62 
63 void WriteDerivedHeader(const std::string &class_name,
64  const std::vector<Variable> &vars);
65 void WriteDerivedSource(const std::string &class_name,
66  const std::vector<Variable> &vars);
67 
68 void WriteMergedHeader(const Typelist &typelist, const RepMap &overwritten,
69  const RepMap &new_funcs);
70 void WriteMergedSource(const Typelist &typelist, const RepMap &overwritten,
71  const RepMap &new_funcs, const std::vector<std::string> &class_names);
72 
73 void AddToTypelist(const std::vector<Variable> &vars,
74  Typelist &typelist);
75 void PrintAccessor(const Variable &var, std::ofstream &file, const std::string &class_name);
76 
77 void GetRules(RepList &reps);
78 void GetReplacements(const Typelist &typelist, const RepList &pats, RepMap &reps);
79 void GetOverwritten(const Typelist &typelist, const RepMap &replacements,
80  RepMap &overwritten, RepMap &new_funcs);
81 
82 #endif
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)
bool from_chain_a_
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 PrintAccessor(const Variable &var, std::ofstream &file, const std::string &class_name)
const std::string & Name() const
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)
std::string from_type_
std::string to_type_
void GetVariables(TChain &chain, const bool is_chain_a, const size_t file, const size_t num_files, Dictionary &vars)
const std::string & ToType() const
void WriteDerivedSource(const std::string &class_name, const std::vector< Variable > &vars)
string name
Definition: disk_usage.cxx:14
void ClassifyVariables(const Dictionary &all_var, std::vector< Variable > &base_vars, std::vector< Variable > &virtual_vars, std::vector< std::vector< Variable > > &file_vars)
std::string name_
const bool & FromChainA() const
bool Converted() const
std::map< std::string, std::vector< std::pair< bool, std::string > > > Dictionary
const std::string & FromType() const