CHROMA
hadron_seqsource.h
Go to the documentation of this file.
1 // -*- C++ -*-
2 /*! \file
3  * \brief Construct hadron sequential sources
4  */
5 
6 #ifndef __hadron_seqsource_h__
7 #define __hadron_seqsource_h__
8 
9 #include "chromabase.h"
10 #include "io/qprop_io.h"
11 
12 namespace Chroma
13 {
14  //! Construct hadron sequential sources
15  /*! @ingroup hadron
16  *
17  * Supports creation of hadron sequential sources
18  */
19  template<typename T>
21  {
22  public:
23  //! Virtual destructor to help with cleanup;
24  virtual ~HadronSeqSource() {}
25 
26  //! Construct the source
27  virtual T operator()(const multi1d<LatticeColorMatrix>& u,
28  const multi1d<ForwardProp_t>& forward_headers,
29  const multi1d<T>& forward_props) = 0;
30 
31  //! Evaluate the seqprop back at the source - this is the 2-pt at the sink
32  /*!
33  * For the case of a meson, we have evaluated as the sequential source
34  *
35  * H(y, 0; tx, p) = \sum exp{ip.x} U(y,x) \gamma_5\Gamma_f^\dag\gamma_5 D(x,0)
36  *
37  * H^\dag(y, 0; tx, p) = \sum_x exp{-ip.x} \gamma_5 D(0,x) \Gamma_f U(x,y) \gamma_5
38  *
39  * Thus we can see that
40  *
41  * Tr[ \gamma_5 H^\dag(0,0; tx, p)\gamma_5 \Gamma_i] =
42  * \sum_x exp{-ip.x} Tr[ D(0,x)\Gamma_f U(x,0) \Gamma_i ]
43  *
44  * which is the desired meson correlator at momentum p and timslice tx
45  */
46  virtual Complex tieBack(const multi1d<LatticeColorMatrix>& u,
47  const SequentialProp_t& seqprop_header,
48  const T& seqprop,
49  int gamma_insertion);
50 
51  //! Compute the 2-pt at the sink
52  virtual Complex twoPtSink(const multi1d<LatticeColorMatrix>& u,
53  const multi1d<ForwardProp_t>& forward_headers,
54  const multi1d<T>& forward_props,
55  int gamma_insertion) = 0;
56 
57  protected:
58  //! Project onto a definite time-slice
59  virtual T project(const LatticePropagator& src_prop_tmp) const;
60 
61  //! Construct phases
62  virtual LatticeComplex phases() const;
63 
64  //! Convenience function to yank the source location from the forward prop headers
65  virtual void setTSrce(const multi1d<ForwardProp_t>& forward_headers);
66 
67  //! Set t_srce
68  virtual multi1d<int>& getTSrce() = 0;
69 
70  //! Get t_srce
71  virtual const multi1d<int>& getTSrce() const = 0;
72 
73  //! Get t_sink
74  virtual int getTSink() const = 0;
75 
76  //! Get sink_mom
77  virtual const multi1d<int>& getSinkMom() const = 0;
78 
79  //! Get decay_dir
80  virtual int getDecayDir() const = 0;
81  };
82 
83 }
84 
85 
86 #endif
Primary include file for CHROMA library code.
Construct hadron sequential sources.
virtual Complex tieBack(const multi1d< LatticeColorMatrix > &u, const SequentialProp_t &seqprop_header, const T &seqprop, int gamma_insertion)
Evaluate the seqprop back at the source - this is the 2-pt at the sink.
virtual const multi1d< int > & getTSrce() const =0
Get t_srce.
virtual const multi1d< int > & getSinkMom() const =0
Get sink_mom.
virtual ~HadronSeqSource()
Virtual destructor to help with cleanup;.
virtual int getDecayDir() const =0
Get decay_dir.
virtual Complex twoPtSink(const multi1d< LatticeColorMatrix > &u, const multi1d< ForwardProp_t > &forward_headers, const multi1d< T > &forward_props, int gamma_insertion)=0
Compute the 2-pt at the sink.
virtual multi1d< int > & getTSrce()=0
Set t_srce.
virtual T project(const LatticePropagator &src_prop_tmp) const
Project onto a definite time-slice.
virtual LatticeComplex phases() const
Construct phases.
virtual int getTSink() const =0
Get t_sink.
virtual void setTSrce(const multi1d< ForwardProp_t > &forward_headers)
Convenience function to yank the source location from the forward prop headers.
virtual T operator()(const multi1d< LatticeColorMatrix > &u, const multi1d< ForwardProp_t > &forward_headers, const multi1d< T > &forward_props)=0
Construct the source.
multi1d< ForwardProp_t > & forward_headers
Asqtad Staggered-Dirac operator.
Definition: klein_gord.cc:10
static multi1d< LatticeColorMatrix > u
LinOpSysSolverMGProtoClover::T T
Routines associated with Chroma propagator IO.
Mega structure holding a full sequential prop.
Definition: qprop_io.h:140