CHROMA
distillution_factory.cc
Go to the documentation of this file.
1 /*! \file
2  * \brief Distillution factory for producing keys * sources
3  *
4  * Distillution factory for producing keys * sources
5  */
6 
8 
9 namespace Chroma
10 {
11  //----------------------------------------------------------------------------
12  //! Get sink key
14  {
15  KeyPropDistillution_t snk_key;
16 
17  snk_key.prop_type = "SNK";
18  snk_key.annihP = peram_key.annihP;
19  snk_key.t_source = peram_key.t_source;
20  snk_key.t_slice = peram_key.t_slice;
21  snk_key.dist_src = dist_src;
22  snk_key.spin_src = peram_key.spin_src;
23  snk_key.spin_snk = peram_key.spin_snk;
24  snk_key.quark_line = peram_key.quark_line;
25  snk_key.mass = peram_key.mass;
26 
27  return snk_key;
28  }
29 
30 
31 
32  //----------------------------------------------------------------------------
33  //----------------------------------------------------------------------------
34  //! Utilities
35  namespace DistillutionFactoryEnv
36  {
37  // More utilities
38  namespace
39  {
40  //! Check time dilutions
41  int checkTimeDils(int num_time_dils, int Lt)
42  {
43  int num = num_time_dils;
44 
45  // Reset/barf if bogus
46  if (num_time_dils == 0)
47  {
48  num = Lt;
49  }
50  else if (num_time_dils < 0 || num_time_dils > Lt)
51  {
52  QDPIO::cerr << __func__ << ": invalid size of num_time_dils = " << num_time_dils << std::endl;
53  QDP_abort(1);
54  }
55  else if ((Lt % num_time_dils) != 0)
56  {
57  QDPIO::cerr << __func__
58  << ": num_time_dils = " << num_time_dils
59  << " not a divisor of the time extent = " << Lt
60  << std::endl;
61  QDP_abort(1);
62  }
63 
64  return num;
65  }
66  } // anonymous namespace
67 
68 
69 
70  //----------------------------------------------------------------------------
71  //----------------------------------------------------------------------------
72  //----------------------------------------------------------------------------
73  namespace Connected
74  {
75  //! Parameter structure
76  struct Params
77  {
78  Params();
79  Params(XMLReader& xml_in, const std::string& path);
80  void writeXML(XMLWriter& xml_out, const std::string& path) const;
81 
82  int num_vecs; /*!< Number of vectors */
83  int num_space_dils; /*!< Number of eigenstd::vector dilutions to use */
84 
85  std::vector<int> t_sources; /*!< Time sources */
86  int Nt_forward; /*!< Time-slices in the forward direction */
87  int Nt_backward; /*!< Time-slices in the backward direction */
88  };
89 
90 
91  //! Propagator input
92  Params::Params(XMLReader& xml, const std::string& path)
93  {
94  XMLReader inputtop(xml, path);
95 
96  read(inputtop, "num_vecs", num_vecs);
97  read(inputtop, "num_space_dils", num_space_dils);
98  read(inputtop, "t_sources", t_sources);
99  read(inputtop, "Nt_forward", Nt_forward);
100  read(inputtop, "Nt_backward", Nt_backward);
101  }
102 
103  //! Propagator output
104  void Params::writeXML(XMLWriter& xml, const std::string& path) const
105  {
106  push(xml, path);
107 
108  write(xml, "num_vecs", num_vecs);
109  write(xml, "num_space_dils", num_space_dils);
110  write(xml, "t_sources", t_sources);
111  write(xml, "Nt_forward", Nt_forward);
112  write(xml, "Nt_backward", Nt_backward);
113 
114  pop(xml);
115  }
116 
117  //! Propagator input
118  void read(XMLReader& xml, const std::string& path, Params& input)
119  {
120  Params tmp(xml, path);
121  input = tmp;
122  }
123 
124  //! Propagator output
125  void write(XMLWriter& xml, const std::string& path, const Params& input)
126  {
127  input.writeXML(xml, path);
128  }
129 
130 
131  //----------------------------------------------------------------------------
132  //! Connected quark lines
133  /*!<
134  * Pull out a time-slice of the color std::vector source, and add it in a crystal fashion
135  * with other vectors
136  */
138  {
139  public:
140  //! Constructor
141  QuarkLineFact(const Params& params_,
142  const DistillutionNoise& dist_noise_obj_,
143  QDP::MapObjectDisk<KeyPropDistillution_t, TimeSliceIO<LatticeColorVectorF> >& source_obj_,
144  const TimeSliceSet& time_slice_set_,
145  int quark_line_,
146  const std::string& mass_);
147 
148  //! Get a source
149  virtual LatticeColorVector getSrc(int t_source, int dist_src) const;
150 
151  //! Get number of vectors
152  virtual int getNumVecs() const {return params.num_vecs;}
153 
154  //! Get number of space dilutions
155  virtual int getNumSpaceDils() const {return params.num_space_dils;}
156 
157  //! Get number of time dilutions
158  virtual int getNumTimeDils() const {return Layout::lattSize()[dist_noise_obj.getDecayDir()];}
159 
160  //! Get quark line number
161  virtual int getQuarkLine() const {return quark_line;}
162 
163  //! Get mass
164  virtual std::string getMass() const {return mass;}
165 
166  //! Get annihilation flag
167  virtual bool getAnnihP() const {return false;}
168 
169  //! Get the time sources
170  virtual std::vector<int> getTimeSources() const {return params.t_sources;}
171 
172  //! Get source keys
173  virtual std::list<KeyPropDistillution_t> getSrcKeys(int t_source, int dist_src) const;
174 
175  //! Get sink keys
176  virtual std::list<KeyPropDistillution_t> getSnkKeys(int t_source, int dist_src) const;
177 
178  //! Get perambulator keys
179  virtual std::list<KeyPeramDistillution_t> getPeramKeys(int t_source) const;
180 
181  //! Get perambulator key time slices
182  virtual std::list<int> getTslices(int t_source) const;
183 
184  private:
185  //! The active time slices for this source
186  virtual std::vector<bool> getActiveTSlices(int t_source) const;
187 
188  //! Get source key
189  virtual KeyPropDistillution_t getSrcKey(int t_source, int dist_src) const;
190 
191  private:
192  // Arguments
195  QDP::MapObjectDisk<KeyPropDistillution_t, TimeSliceIO<LatticeColorVectorF> >& source_obj;
199  };
200 
201 
202 
203  //----------------------------------------------------------------------------
204  //! Constructor
206  const DistillutionNoise& dist_noise_obj_,
207  QDP::MapObjectDisk<KeyPropDistillution_t, TimeSliceIO<LatticeColorVectorF> >& source_obj_,
208  const TimeSliceSet& time_slice_set_,
209  int quark_line_,
210  const std::string& mass_)
211  : params(params_),
212  dist_noise_obj(dist_noise_obj_), source_obj(source_obj_), time_slice_set(time_slice_set_),
213  quark_line(quark_line_), mass(mass_)
214  {
215  }
216 
217  //----------------------------------------------------------------------------
218  //! Prepare a distilluted source
219  LatticeColorVector QuarkLineFact::getSrc(int t_source, int dist_src) const
220  {
221  QDPIO::cout << "CONN: getSrc on t_source= " << t_source << " dist_src= " << dist_src << std::endl;
222 
223  // Get the actual time slice
224  int t_actual = dist_noise_obj.getTime(t_source);
225 
226  // Get the source std::vector
227  KeyPropDistillution_t src_key = getSrcKey(t_source, dist_src);
228  LatticeColorVectorF vec_srce = zero;
229 
230  TimeSliceIO<LatticeColorVectorF> time_slice_io(vec_srce, t_actual);
231  source_obj.get(src_key, time_slice_io);
232 
233  return vec_srce;
234  }
235 
236 
237  //----------------------------------------------------------------------------
238  //! Get active time-slices
239  std::vector<bool> QuarkLineFact::getActiveTSlices(int t_source) const
240  {
241  // Initialize the active time slices
242  const int decay_dir = dist_noise_obj.getDecayDir();
243  const int Lt = Layout::lattSize()[decay_dir];
244 
245  std::vector<bool> active_t_slices(Lt);
246  for(int t=0; t < Lt; ++t)
247  {
248  active_t_slices[t] = false;
249  }
250 
251  // Forward
252  for(int dt=0; dt < params.Nt_forward; ++dt)
253  {
254  int t = t_source + dt;
255  active_t_slices[t % Lt] = true;
256  }
257 
258  // Backward
259  for(int dt=0; dt < params.Nt_backward; ++dt)
260  {
261  int t = t_source - dt;
262  while (t < 0) {t += Lt;}
263 
264  active_t_slices[t % Lt] = true;
265  }
266 
267  return active_t_slices;
268  }
269 
270 
271  //----------------------------------------------------------------------------
272  //! Get source key
274  {
276 
277  key.prop_type = "SRC";
278  key.annihP = false;
279  key.t_source = t_source;
280  key.t_slice = t_source;
281  key.dist_src = dist_src;
282  key.spin_src = -1;
283  key.spin_snk = -1;
284  key.quark_line = quark_line;
285  key.mass = mass;
286 
287  return key;
288  }
289 
290 
291  //----------------------------------------------------------------------------
292  //! Get source keys
293  std::list<KeyPropDistillution_t> QuarkLineFact::getSrcKeys(int t_source, int dist_src) const
294  {
295  std::list<KeyPropDistillution_t> keys;
296 
297  keys.push_back(getSrcKey(t_source,dist_src));
298 
299  return keys;
300  }
301 
302 
303  //----------------------------------------------------------------------------
304  //! Get sink keys
305  std::list<KeyPropDistillution_t> QuarkLineFact::getSnkKeys(int t_source, int dist_src) const
306  {
307  std::list<KeyPropDistillution_t> keys;
308 
309  std::vector<bool> active_t_slices = getActiveTSlices(t_source);
310 
311  const int Lt = Layout::lattSize()[dist_noise_obj.getDecayDir()];
312 
313  for(int spin_source=0; spin_source < Ns; ++spin_source)
314  {
315  for(int spin_sink=0; spin_sink < Ns; ++spin_sink)
316  {
317  for(int t=0; t < Lt; ++t)
318  {
319  if (! active_t_slices[t]) {continue;}
320 
322 
323  key.prop_type = "SNK";
324  key.annihP = false;
325  key.t_source = t_source;
326  key.t_slice = t;
327  key.dist_src = dist_src;
328  key.spin_src = spin_source;
329  key.spin_snk = spin_sink;
330  key.quark_line = quark_line;
331  key.mass = mass;
332 
333 // QDPIO::cout << key << std::flush;
334 
335  keys.push_back(key);
336  } // for t
337  } // for spin_sink
338  } // for spin_source
339 
340  return keys;
341  }
342 
343  //----------------------------------------------------------------------------
344  //! Get perambulator keys
345  std::list<KeyPeramDistillution_t> QuarkLineFact::getPeramKeys(int t_source) const
346  {
347  std::list<KeyPeramDistillution_t> keys;
348 
349  std::vector<bool> active_t_slices = getActiveTSlices(t_source);
350 
351  const int Lt = Layout::lattSize()[dist_noise_obj.getDecayDir()];
352 
353  for(int spin_source=0; spin_source < Ns; ++spin_source)
354  {
355  for(int spin_sink=0; spin_sink < Ns; ++spin_sink)
356  {
357  for(int t=0; t < Lt; ++t)
358  {
359  if (! active_t_slices[t]) {continue;}
360 
362 
363  key.quark_line = quark_line;
364  key.annihP = false;
365  key.t_slice = t;
366  key.t_source = t_source;
367  key.spin_src = spin_source;
368  key.spin_snk = spin_sink;
369  key.mass = mass;
370 
371 // QDPIO::cout << key << std::flush;
372 
373  keys.push_back(key);
374  } // for t
375  } // for spin_sink
376  } // for spin_source
377 
378  return keys;
379  }
380 
381 
382  //----------------------------------------------------------------------------
383  //! Get perambulator key time slices
384  std::list<int> QuarkLineFact::getTslices(int t_source) const
385  {
386  std::list<int> keys;
387 
388  std::vector<bool> active_t_slices = getActiveTSlices(t_source);
389 
390  const int Lt = Layout::lattSize()[dist_noise_obj.getDecayDir()];
391 
392  for(int t=0; t < Lt; ++t)
393  {
394  if (active_t_slices[t])
395  {
396  keys.push_back(t);
397  }
398  } // for t
399 
400  return keys;
401  }
402 
403 
404  } // namespace Connected
405 
406 
407 
408 
409  //----------------------------------------------------------------------------
410  //----------------------------------------------------------------------------
411  //----------------------------------------------------------------------------
412  namespace Annihilation
413  {
414  //! Parameter structure
415  struct Params
416  {
418  Params(XMLReader& xml_in, const std::string& path);
419  void writeXML(XMLWriter& xml_out, const std::string& path) const;
420 
421  int num_vecs; /*!< Number of vectors */
422  int num_space_dils; /*!< Number of eigenstd::vector dilutions to use in space direction */
423  int num_time_dils; /*!< Number of eigenstd::vector dilutions to use in time direction */
424  };
425 
426 
427  //! Propagator input
428  Params::Params(XMLReader& xml, const std::string& path)
429  {
430  XMLReader inputtop(xml, path);
431 
432  read(inputtop, "num_vecs", num_vecs);
433  read(inputtop, "num_space_dils", num_space_dils);
434  read(inputtop, "num_time_dils", num_time_dils);
435  }
436 
437  //! Propagator output
438  void Params::writeXML(XMLWriter& xml, const std::string& path) const
439  {
440  push(xml, path);
441 
442  write(xml, "num_vecs", num_vecs);
443  write(xml, "num_space_dils", num_space_dils);
444  write(xml, "num_time_dils", num_time_dils);
445 
446  pop(xml);
447  }
448 
449  //! Propagator input
450  void read(XMLReader& xml, const std::string& path, Params& input)
451  {
452  Params tmp(xml, path);
453  input = tmp;
454  }
455 
456  //! Propagator output
457  void write(XMLWriter& xml, const std::string& path, const Params& input)
458  {
459  input.writeXML(xml, path);
460  }
461 
462 
463  //----------------------------------------------------------------------------
464  //! Annihilation quark lines
465  /*!<
466  * Pull out a time-slice of the color std::vector source, and add it in a crystal fashion
467  * with other vectors
468  */
470  {
471  public:
472  //! Constructor
473  QuarkLineFact(const Params& params_,
474  const DistillutionNoise& dist_noise_obj_,
475  QDP::MapObjectDisk<KeyPropDistillution_t, TimeSliceIO<LatticeColorVectorF> >& source_obj_,
476  const TimeSliceSet& time_slice_set_,
477  int quark_line_,
478  const std::string& mass_);
479 
480  //! Get a source
481  virtual LatticeColorVector getSrc(int t_source, int dist_src) const;
482 
483  //! Get number of vectors
484  virtual int getNumVecs() const {return params.num_vecs;}
485 
486  //! Get number of space dilutions
487  virtual int getNumSpaceDils() const {return params.num_space_dils;}
488 
489  //! Get number of time dilutions
490  virtual int getNumTimeDils() const {return Layout::lattSize()[dist_noise_obj.getDecayDir()];}
491 
492  //! Get quark line number
493  virtual int getQuarkLine() const {return quark_line;}
494 
495  //! Get mass
496  virtual std::string getMass() const {return mass;}
497 
498  //! Get annihilation flag
499  virtual bool getAnnihP() const {return true;}
500 
501  //! Get the time sources
502  virtual std::vector<int> getTimeSources() const;
503 
504  //! Get source keys
505  virtual std::list<KeyPropDistillution_t> getSrcKeys(int t_source, int dist_src) const;
506 
507  //! Get sink keys
508  virtual std::list<KeyPropDistillution_t> getSnkKeys(int t_source, int dist_src) const;
509 
510  //! Get perambulator keys
511  virtual std::list<KeyPeramDistillution_t> getPeramKeys(int t_source) const;
512 
513  //! Get perambulator key time slices
514  virtual std::list<int> getTslices(int t_source) const;
515 
516  private:
517  //! Get source key
518  virtual KeyPropDistillution_t getSrcKey(int t_source, int dist_src) const;
519 
520  private:
521  // Arguments
524  QDP::MapObjectDisk<KeyPropDistillution_t, TimeSliceIO<LatticeColorVectorF> >& source_obj;
528  };
529 
530 
531 
532  //----------------------------------------------------------------------------
533  //! Constructor
535  const DistillutionNoise& dist_noise_obj_,
536  QDP::MapObjectDisk<KeyPropDistillution_t, TimeSliceIO<LatticeColorVectorF> >& source_obj_,
537  const TimeSliceSet& time_slice_set_,
538  int quark_line_,
539  const std::string& mass_)
540  : params(params_),
541  dist_noise_obj(dist_noise_obj_), source_obj(source_obj_), time_slice_set(time_slice_set_),
542  quark_line(quark_line_), mass(mass_)
543  {
544  // Reset/barf if bogus
545  params.num_time_dils = checkTimeDils(params.num_time_dils, Layout::lattSize()[dist_noise_obj.getDecayDir()]);
546  }
547 
548 
549  //----------------------------------------------------------------------------
550  //! Get the time sources
551  std::vector<int> QuarkLineFact::getTimeSources() const
552  {
553  std::vector<int> t_sources;
554 
555  for(int t=0; t < params.num_time_dils; ++t)
556  {
557  t_sources.push_back(t);
558  }
559 
560  return t_sources;
561  }
562 
563 
564  //----------------------------------------------------------------------------
565  //! Prepare a distilluted source
566  LatticeColorVector QuarkLineFact::getSrc(int t_src, int dist_src) const
567  {
568  QDPIO::cout << "ANNIH: getSrc on t_source= " << t_src << " dist_src= " << dist_src << std::endl;
569 
570  LatticeColorVector vec_srce = zero;
571 
572  const int Lt = Layout::lattSize()[dist_noise_obj.getDecayDir()];
573 
574  for(int time_source=t_src; time_source < Lt; time_source += params.num_time_dils)
575  {
576  // Get the actual time slice
577  int t_actual = dist_noise_obj.getTime(time_source);
578 
579  // Get the source std::vector
580  KeyPropDistillution_t src_key = getSrcKey(time_source, dist_src);
581  LatticeColorVectorF vec_tmp = zero;
582 
583  TimeSliceIO<LatticeColorVectorF> time_slice_io(vec_tmp, t_actual);
584  source_obj.get(src_key, time_slice_io);
585 
586  vec_srce[time_slice_set.getSet()[t_actual]] += vec_tmp;
587  } // for time_source
588 
589  return vec_srce;
590  }
591 
592 
593  //----------------------------------------------------------------------------
594  //! Get source keys
596  {
598 
599  key.prop_type = "SRC";
600  key.annihP = true;
601  key.t_source = t_source;
602  key.t_slice = t_source;
603  key.dist_src = dist_src;
604  key.spin_src = -1;
605  key.spin_snk = -1;
606  key.quark_line = quark_line;
607  key.mass = mass;
608 
609  return key;
610  }
611 
612 
613  //----------------------------------------------------------------------------
614  //! Get source keys
615  std::list<KeyPropDistillution_t> QuarkLineFact::getSrcKeys(int t_source, int dist_src) const
616  {
617  std::list<KeyPropDistillution_t> keys;
618 
619  const int Lt = Layout::lattSize()[dist_noise_obj.getDecayDir()];
620 
621  for(int t=t_source; t < Lt; t += params.num_time_dils)
622  {
623  keys.push_back(getSrcKey(t, dist_src));
624  }
625 
626  return keys;
627  }
628 
629 
630  //----------------------------------------------------------------------------
631  //! Get sink keys
632  std::list<KeyPropDistillution_t> QuarkLineFact::getSnkKeys(int t_source, int dist_src) const
633  {
634  std::list<KeyPropDistillution_t> keys;
635 
636  const int Lt = Layout::lattSize()[dist_noise_obj.getDecayDir()];
637 
638  for(int spin_source=0; spin_source < Ns; ++spin_source)
639  {
640  for(int spin_sink=0; spin_sink < Ns; ++spin_sink)
641  {
642  for(int t=t_source; t < Lt; t += params.num_time_dils)
643  {
645 
646  key.prop_type = "SNK";
647  key.annihP = true;
648  key.t_source = t;
649  key.t_slice = t;
650  key.dist_src = dist_src;
651  key.spin_src = spin_source;
652  key.spin_snk = spin_sink;
653  key.quark_line = quark_line;
654  key.mass = mass;
655 
656 // QDPIO::cout << key << std::flush;
657 
658  keys.push_back(key);
659  } // for t
660  } // for spin_sink
661  } // for spin_source
662 
663  return keys;
664  }
665 
666  //----------------------------------------------------------------------------
667  //! Get perambulator keys
668  std::list<KeyPeramDistillution_t> QuarkLineFact::getPeramKeys(int t_source) const
669  {
670  std::list<KeyPeramDistillution_t> keys;
671 
672  const int Lt = Layout::lattSize()[dist_noise_obj.getDecayDir()];
673 
674  for(int spin_source=0; spin_source < Ns; ++spin_source)
675  {
676  for(int spin_sink=0; spin_sink < Ns; ++spin_sink)
677  {
678  for(int t=t_source; t < Lt; t += params.num_time_dils)
679  {
681 
682  key.quark_line = quark_line;
683  key.annihP = true;
684  key.t_slice = t;
685  key.t_source = t;
686  key.spin_src = spin_source;
687  key.spin_snk = spin_sink;
688  key.mass = mass;
689 
690 // QDPIO::cout << key << std::flush;
691 
692  keys.push_back(key);
693  } // for t
694  } // for spin_sink
695  } // for spin_source
696 
697  return keys;
698  }
699 
700  //----------------------------------------------------------------------------
701  //! Get perambulator key time slices
702  std::list<int> QuarkLineFact::getTslices(int t_source) const
703  {
704  std::list<int> keys;
705 
706  const int Lt = Layout::lattSize()[dist_noise_obj.getDecayDir()];
707 
708  for(int t=t_source; t < Lt; t += params.num_time_dils)
709  {
710  keys.push_back(t);
711  } // for t
712 
713  return keys;
714  }
715 
716  } // namespace Annihilation
717 
718 
719  //----------------------------------------------------------------------------
720  namespace
721  {
722  AbsQuarkLine* createConn(XMLReader& xml_in,
723  const std::string& path,
724  const DistillutionNoise& dist_noise_obj,
725  QDP::MapObjectDisk<KeyPropDistillution_t, TimeSliceIO<LatticeColorVectorF> >& source_obj,
727  int quark_line,
728  const std::string& mass)
729  {
730  return new Connected::QuarkLineFact(Connected::Params(xml_in, path),
731  dist_noise_obj, source_obj, time_slice_set,
732  quark_line, mass);
733  }
734 
735  AbsQuarkLine* createAnnih(XMLReader& xml_in,
736  const std::string& path,
737  const DistillutionNoise& dist_noise_obj,
738  QDP::MapObjectDisk<KeyPropDistillution_t, TimeSliceIO<LatticeColorVectorF> >& source_obj,
740  int quark_line,
741  const std::string& mass)
742  {
743  return new Annihilation::QuarkLineFact(Annihilation::Params(xml_in, path),
744  dist_noise_obj, source_obj, time_slice_set,
745  quark_line, mass);
746  }
747 
748  //! Local registration flag
749  bool registered = false;
750  }
751 
752  //----------------------------------------------------------------------------
753  //! Register all the factories
754  bool registerAll()
755  {
756  bool success = true;
757  if (! registered)
758  {
759  success &= TheQuarkLineFactory::Instance().registerObject(std::string("CONN"), createConn);
760  success &= TheQuarkLineFactory::Instance().registerObject(std::string("ANNIH"), createAnnih);
761  registered = true;
762  }
763  return success;
764  }
765 
766  } // namespace DistillutionFactoryEnv
767 
768 
769 } // namespace Chroma
Abstract type for quarkline construction.
virtual KeyPropDistillution_t getSnkKey(const KeyPeramDistillution_t &peram_key, int dist_src) const
Get sink key.
virtual int getNumSpaceDils() const
Get number of space dilutions.
virtual std::vector< int > getTimeSources() const
Get the time sources.
virtual KeyPropDistillution_t getSrcKey(int t_source, int dist_src) const
Get source key.
QDP::MapObjectDisk< KeyPropDistillution_t, TimeSliceIO< LatticeColorVectorF > > & source_obj
virtual int getNumTimeDils() const
Get number of time dilutions.
virtual std::list< int > getTslices(int t_source) const
Get perambulator key time slices.
QuarkLineFact(const Params &params_, const DistillutionNoise &dist_noise_obj_, QDP::MapObjectDisk< KeyPropDistillution_t, TimeSliceIO< LatticeColorVectorF > > &source_obj_, const TimeSliceSet &time_slice_set_, int quark_line_, const std::string &mass_)
Constructor.
virtual std::list< KeyPropDistillution_t > getSnkKeys(int t_source, int dist_src) const
Get sink keys.
virtual LatticeColorVector getSrc(int t_source, int dist_src) const
Get a source.
virtual std::list< KeyPeramDistillution_t > getPeramKeys(int t_source) const
Get perambulator keys.
virtual std::list< KeyPropDistillution_t > getSrcKeys(int t_source, int dist_src) const
Get source keys.
virtual bool getAnnihP() const
Get annihilation flag.
virtual LatticeColorVector getSrc(int t_source, int dist_src) const
Get a source.
virtual int getNumTimeDils() const
Get number of time dilutions.
virtual std::list< int > getTslices(int t_source) const
Get perambulator key time slices.
virtual int getQuarkLine() const
Get quark line number.
virtual std::list< KeyPropDistillution_t > getSrcKeys(int t_source, int dist_src) const
Get source keys.
virtual KeyPropDistillution_t getSrcKey(int t_source, int dist_src) const
Get source key.
virtual std::vector< int > getTimeSources() const
Get the time sources.
virtual std::list< KeyPropDistillution_t > getSnkKeys(int t_source, int dist_src) const
Get sink keys.
QuarkLineFact(const Params &params_, const DistillutionNoise &dist_noise_obj_, QDP::MapObjectDisk< KeyPropDistillution_t, TimeSliceIO< LatticeColorVectorF > > &source_obj_, const TimeSliceSet &time_slice_set_, int quark_line_, const std::string &mass_)
Constructor.
QDP::MapObjectDisk< KeyPropDistillution_t, TimeSliceIO< LatticeColorVectorF > > & source_obj
virtual int getNumSpaceDils() const
Get number of space dilutions.
virtual std::list< KeyPeramDistillution_t > getPeramKeys(int t_source) const
Get perambulator keys.
virtual int getNumVecs() const
Get number of vectors.
virtual std::vector< bool > getActiveTSlices(int t_source) const
The active time slices for this source.
virtual int getTime(int t_slice) const
Convenience - get shifted time.
virtual int getDecayDir() const
Return the decay direction.
static T & Instance()
Definition: singleton.h:432
Builds time slice subsets.
const Set & getSet() const
The set to be used in sumMulti.
EXTERN Real dt
Distillution factory for producing keys * sources.
TimeSliceSet time_slice_set
Params params
int t
Definition: meslate.cc:37
static bool registered
Local registration flag.
void read(XMLReader &xml, const std::string &path, Params &input)
Propagator input.
void write(XMLWriter &xml, const std::string &path, const Params &input)
Propagator output.
void read(XMLReader &xml, const std::string &path, Params &input)
Propagator input.
void write(XMLWriter &xml, const std::string &path, const Params &input)
Propagator output.
bool registerAll()
Register all the factories.
Asqtad Staggered-Dirac operator.
Definition: klein_gord.cc:10
LatticeFermion tmp
Definition: mespbg5p_w.cc:36
push(xml_out,"Condensates")
Double mass
Definition: pbg5p_w.cc:54
pop(xml_out)
Double zero
Definition: invbicg.cc:106
::std::string string
Definition: gtest.h:1979
void writeXML(XMLWriter &xml_out, const std::string &path) const
Propagator output.
void writeXML(XMLWriter &xml_out, const std::string &path) const
Propagator output.
Distillution propagators.