TRIQS/triqs_cthyb 4.0.0
A TRIQS application
Loading...
Searching...
No Matches
double_remove.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 <algorithm>
24#include "../qmc_data.hpp"
25
26namespace triqs_cthyb {
27
28 // Removal of 2 C and 2 C^dagger operator
29 class move_remove_c_c_cdag_cdag {
30
31 qmc_data &data;
32 configuration &config;
33 mc_tools::random_generator &rng;
34 int block_index1, block_index2, block_size1, block_size2;
35 // Analysis histograms
36 histogram *histo_proposed1, *histo_proposed2;
37 histogram *histo_accepted1, *histo_accepted2;
38 double dtau1, dtau2;
39 h_scalar_t new_atomic_weight, new_atomic_reweighting;
40 time_pt tau1, tau2, tau3, tau4;
41
42 histogram *add_histo(std::string const &name, histo_map_t *histos);
43
44 public:
45 move_remove_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}