TRIQS/triqs_cthyb 4.0.0
A TRIQS application
Loading...
Searching...
No Matches
double_insert.hpp
1/*******************************************************************************
2 *
3 * TRIQS: a Toolbox for Research in Interacting Quantum Systems
4 *
5 * Copyright (C) 2014, P. Seth, I. Krivenko, M. Ferrero and O. Parcollet
6 *
7 * TRIQS is free software: you can redistribute it and/or modify it under the
8 * terms of the GNU General Public License as published by the Free Software
9 * Foundation, either version 3 of the License, or (at your option) any later
10 * version.
11 *
12 * TRIQS is distributed in the hope that it will be useful, but WITHOUT ANY
13 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
14 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
15 * details.
16 *
17 * You should have received a copy of the GNU General Public License along with
18 * TRIQS. If not, see <http://www.gnu.org/licenses/>.
19 *
20 ******************************************************************************/
21#pragma once
22#include <triqs/mc_tools.hpp>
23#include "../qmc_data.hpp"
24
25namespace triqs_cthyb {
26
27 // Insertion of 2 C and 2 C^dagger operators
28 class move_insert_c_c_cdag_cdag {
29
30 qmc_data &data;
31 configuration &config;
32 mc_tools::random_generator &rng;
33 int block_index1, block_index2, block_size1, block_size2;
34 // Analysis histograms
35 histogram *histo_proposed1, *histo_proposed2;
36 histogram *histo_accepted1, *histo_accepted2;
37 double dtau1, dtau2;
38 h_scalar_t new_atomic_weight, new_atomic_reweighting;
39 time_pt tau1, tau2, tau3, tau4;
40 op_desc op1, op2, op3, op4;
41
42 histogram *add_histo(std::string const &name, histo_map_t *histos);
43
44 public:
45 move_insert_c_c_cdag_cdag(int block_index1, int block_index2, int block_size1, int block_size2, std::string const &block_name1,
46 std::string const &block_name2, qmc_data &data, mc_tools::random_generator &rng, histo_map_t *histos);
47
48 mc_weight_t attempt();
49 mc_weight_t accept();
50 void reject();
51 };
52}