CHROMA
hadron_2pt.cc
Go to the documentation of this file.
1 /*! \file
2  * \brief Construct hadron 2pt correlators
3  */
4 
6 #include "util/ft/sftmom.h"
7 
8 namespace Chroma
9 {
10 
11  // Serialize the structure
13  {
15  output->xml << xml;
16  output->xml_regres << xml_regres;
17 
18  // Run over the momentum list
19  for(std::list<Hadron2PtCorrs_t::Mom_t>::const_iterator mom_ptr= corrs.begin();
20  mom_ptr != corrs.end();
21  ++mom_ptr)
22  {
23  write(output->bin, mom_ptr->mom);
24  write(output->bin, mom_ptr->corr);
25  }
26 
27  return output;
28  }
29 
30 
31  //! Project onto fixed momenta
32  std::list< Handle<HadronContractResult_t> >
33  Hadron2PtCorr::project(const std::list< Handle<Hadron2PtContract_t> >& had_list,
34  const SftMomParams_t& params) const
35  {
36  std::list< Handle<HadronContractResult_t> > corrs;
37 
38  SftMom phases(params);
39 
40  int length = phases.numSubsets();
41 
42  // Run over the input list,
43  for(std::list< Handle<Hadron2PtContract_t> >::const_iterator had_ptr= had_list.begin();
44  had_ptr != had_list.end();
45  ++had_ptr)
46  {
47  const Hadron2PtContract_t& had_cont = **had_ptr;
48  multi2d<DComplex> hsum(phases.sft(had_cont.corr)); // slow fourier-transform
49 
50  // Copy onto output structure
51  Hadron2PtCorrs_t had_corrs;
52  had_corrs.xml << had_cont.xml;
53 
54  for(int sink_mom_num=0; sink_mom_num < phases.numMom(); ++sink_mom_num)
55  {
57  had_mom.mom = phases.numToMom(sink_mom_num);
58 
59  had_mom.corr.resize(length); // QUESTION: DO WE WANT TO CHANGE THE ORIGIN CONVENTION?? YES!!
60  for (int t=0; t < length; ++t)
61  {
62 // int t_eff = (t - t0 + length) % length;
63  had_mom.corr[t] = hsum[sink_mom_num][t];
64  }
65 
66  had_corrs.corrs.push_back(had_mom);
67  }
68 
69  // Use the zero momentum data as a regression output
70  // NOTE: the name of this group is not important, and you can jam whatever
71  // you want into here. It is used for the regressions to latch onto something
72  // from the output since it is all in binary
73  push(had_corrs.xml_regres, "Hadron2Pt");
74  write(had_corrs.xml_regres, "ZeroMom", hsum[0]);
75  pop(had_corrs.xml_regres);
76 
77  // Serialize the object and put it onto the end of the list
78  corrs.push_back(had_corrs.serialize());
79  }
80 
81  return corrs;
82  }
83 
84 
85 } // end namespace Chroma
virtual std::list< Handle< HadronContractResult_t > > project(const std::list< Handle< Hadron2PtContract_t > > &had_list, const SftMomParams_t &p) const
Convenience function to project onto fixed momenta.
Definition: hadron_2pt.cc:33
Class for counted reference semantics.
Definition: handle.h:33
Fourier transform phase factor support.
Definition: sftmom.h:35
int numSubsets() const
Number of subsets - length in decay direction.
Definition: sftmom.h:63
multi1d< int > numToMom(int mom_num) const
Convert momenta id to actual array of momenta.
Definition: sftmom.h:78
multi2d< DComplex > sft(const LatticeComplex &cf) const
Do a sumMulti(cf*phases,getSet())
Definition: sftmom.cc:524
int numMom() const
Number of momenta.
Definition: sftmom.h:60
void write(XMLWriter &xml, const std::string &path, const AsqtadFermActParams &param)
Writer parameters.
Construct hadron 2pt correlators.
Params params
int t
Definition: meslate.cc:37
Asqtad Staggered-Dirac operator.
Definition: klein_gord.cc:10
push(xml_out,"Condensates")
pop(xml_out)
Fourier transform phase factor support.
The result of hadron 2pt correlators.
Definition: hadron_2pt.h:17
Momentum projected correlator.
Definition: hadron_2pt.h:31
multi1d< DComplex > corr
Definition: hadron_2pt.h:33
The result of hadron 2pt correlators.
Definition: hadron_2pt.h:26
std::list< Mom_t > corrs
Definition: hadron_2pt.h:37
XMLBufferWriter xml_regres
Definition: hadron_2pt.h:39
Handle< HadronContractResult_t > serialize() const
Definition: hadron_2pt.cc:12
XMLBufferWriter xml
Definition: hadron_2pt.h:36
The result of hadron contractions.
Param struct for SftMom.
Definition: sftmom.h:20