27 #ifndef MEASUREMENTS_H
28 #define MEASUREMENTS_H
39 template <
class Matrix,
class SymmGroup>
45 , archive_path(archive_path_)
46 , eigenstate(eigenstate_)
53 maquis::cout <<
"Measuring " << meas.
name() << std::endl;
57 ar[archive_path] << meas;
61 std::string rfile, archive_path;
75 template <
class Matrix,
class SymmGroup>
78 return std::find(list.begin(), list.end(), term.
name()) == list.end();
82 std::vector<std::string>
const& list;
86 template <
class Matrix,
class SymmGroup>
87 boost::ptr_vector<measurement<Matrix, SymmGroup> > &
88 operator<< (boost::ptr_vector<measurement<Matrix, SymmGroup> > & lhs,
89 boost::ptr_vector<measurement<Matrix, SymmGroup> >
const& rhs)
91 lhs.insert(lhs.end(), rhs.begin(), rhs.end());
95 template <
class Matrix,
class SymmGroup>
96 boost::ptr_vector<measurement<Matrix, SymmGroup> >
98 std::vector<std::string>
const& meas_list)
100 boost::ptr_vector<measurement<Matrix, SymmGroup> > sublist(m.clone());
122 template <
class Matrix,
class SymmGroup>
123 boost::ptr_vector<measurement<Matrix, SymmGroup> >
134 boost::ptr_vector<measurement<Matrix, SymmGroup> > meas;
135 boost::regex expression(
"^MEASURE_OVERLAP\\[([a-zA-Z]+)(\\(([0-9]+)\\))?\\]$");
137 for (BaseParameters::const_iterator it=parms.begin();it != parms.end();++it) {
138 std::string lhs = it->key();
139 if (boost::regex_match(lhs, what, expression)) {
140 if (sweep && !what[3].matched)
continue;
141 if (sweep && what[3].matched && boost::lexical_cast<long>(what.str(3)) != sweep.get())
continue;
143 std::string name = what.str(1), bra_chkp = it->value();
virtual void evaluate(MPS< Matrix, SymmGroup > const &, boost::optional< reduced_mps< Matrix, SymmGroup > const & >=boost::none)=0
name_not_in_list(std::vector< std::string > const &list_)
measure_and_save(std::string const &rfile_, std::string const &archive_path_, MPS< Matrix, SymmGroup > const &mps_, int eigenstate_=0)
boost::ptr_vector< measurement< Matrix, SymmGroup > > overlap_measurements(BaseParameters const &parms, boost::optional< size_t > sweep=boost::none)
boost::ptr_vector< measurement< Matrix, SymmGroup > > meas_sublist(boost::ptr_vector< measurement< Matrix, SymmGroup > > const &m, std::vector< std::string > const &meas_list)
bool operator()(measurement< Matrix, SymmGroup > const &term) const
void operator()(measurement< Matrix, SymmGroup > &meas) const
std::string const & name() const