本文整理汇总了C++中reference::To::convert_state方法的典型用法代码示例。如果您正苦于以下问题:C++ To::convert_state方法的具体用法?C++ To::convert_state怎么用?C++ To::convert_state使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类reference::To
的用法示例。
在下文中一共展示了To::convert_state方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: clone
void Pulsar::CalibratorSpectrum::prepare (const Archive* data)
{
Reference::To<Archive> clone;
if (plot_Ip && data->get_state() != Signal::Stokes)
{
clone = data -> clone();
clone->convert_state(Signal::Stokes);
data = clone;
}
vector< vector< Estimate<double> > > hi;
vector< vector< Estimate<double> > > lo;
unsigned nchan = data->get_nchan();
unsigned npol = data->get_npol();
Reference::To<const Integration> subint = get_Integration(data, isubint);
ReferenceCalibrator::get_levels (subint, nchan, hi, lo);
assert (hi.size() == npol);
unsigned ipol, ipt, npt = hi[0].size();
if (!plot_total)
for (ipol=0; ipol<npol; ipol++)
for (ipt=0; ipt<npt; ipt++)
hi[ipol][ipt] -= lo[ipol][ipt];
if (plot_low)
for (ipol=0; ipol<npol; ipol++)
for (ipt=0; ipt<npt; ipt++)
hi[ipol][ipt] = lo[ipol][ipt];
if (plot_Ip)
{
for (ipt=0; ipt<npt; ipt++)
if (hi[0][ipt].get_variance() != 0)
hi[1][ipt] = sqrt( sqr(hi[1][ipt]) +
sqr(hi[2][ipt]) +
sqr(hi[3][ipt]) );
npol = 2;
}
double cfreq = data->get_centre_frequency();
double bw = data->get_bandwidth();
plotter.clear ();
plotter.set_xrange (cfreq-0.5*bw, cfreq+0.5*bw);
for (ipol=0; ipol<npol; ipol++)
plotter.add_plot (hi[ipol]);
get_frame()->get_y_scale()->set_minmax (plotter.get_y_min(),
plotter.get_y_max());
}
示例2: set_standard
void psrflux::set_standard(Archive *arch)
{
// Convert
stdarch = arch->total();
stdarch->convert_state(Signal::Intensity);
// Set up DS calculation
Reference::To<StandardFlux> flux = new StandardFlux;
flux->set_fit_shift(true); // always init with true, choose later
flux->set_standard(stdarch->get_Profile(0,0,0));
ds.set_flux_method(flux);
}
示例3: main
//.........这里部分代码省略.........
// Of course it would be nice to do this with pointers.... but oh well I guess copying will have to do HSK 27/8/04
unsigned nchan = arch->get_nchan();
for( unsigned isub=0; isub<arch->get_nsubint(); isub++){
for( unsigned ipol =0; ipol<arch->get_npol(); ipol++){
for( unsigned ichan=0; ichan<nchan/2; ichan++){
Reference::To<Pulsar::Profile> lo = arch->get_Profile(isub,ipol,ichan);
Reference::To<Pulsar::Profile> tmp = lo->clone();
Reference::To<Pulsar::Profile> hi = arch->get_Profile(isub,ipol,nchan-1-ichan);
lo->operator=(*hi);
hi->operator=(*tmp);
}
}
}
arch->set_bandwidth( -1.0 * arch->get_bandwidth() );
}
if (reset_weights) {
arch->uniform_weight(new_weight);
if (verbose)
cout << "All profile weights set to " << new_weight << endl;
}
if (rotate)
arch->rotate_phase (rphase);
if (scattered_power_correction) {
Pulsar::ScatteredPowerCorrection spc;
if (arch->get_state() == Signal::Stokes)
arch->convert_state(Signal::Coherence);
spc.correct (arch);
}
if (newdm)
{
arch->set_dispersion_measure(dm);
if (verbose)
cout << "Archive dispersion measure set to " << dm << endl;
if (arch->get_dedispersed())
{
arch->dedisperse();
if (verbose)
cout << "Archive re-dedipsersed" << endl;
}
}
if (dedisperse)
{
arch->dedisperse();
if (verbose)
cout << "Archive dedipsersed" << endl;
}
if (dededisperse)
{
Pulsar::Dispersion correction;
correction.revert (arch);
}
示例4: main
int main(int argc, char* argv[]) try
{
if (argc < 2) {
usage();
return EXIT_SUCCESS;
}
int gotc = 0;
while ((gotc = getopt(argc, argv, "hvV")) != -1) {
switch (gotc) {
case 'h':
usage();
return EXIT_SUCCESS;
case 'V':
Pulsar::Archive::set_verbosity(3);
break;
case 'v':
Pulsar::Archive::set_verbosity(2);
break;
}
}
if (optind >= argc)
{
cerr << "pazi: please specify filename" << endl;
return -1;
}
string filename = argv[optind];
string extension = filename.substr(filename.length() - 2, 2);
if (extension == "rf")
extension = "rz";
else if (extension == "cf")
extension = "cz";
else
extension = "pazi";
string write_filename = filename + ".";
write_filename += extension;
cerr << "pazi: loading data" << endl;
base_archive = Archive::load(filename);
if (base_archive->get_npol() == 4)
{
original_state = base_archive->get_state();
base_archive->convert_state( Signal::Stokes );
}
backup_archive = base_archive->clone();
cerr << "pazi: making fscrunched clone" << endl;
mod_archive = base_archive->clone();
mod_archive->pscrunch();
mod_archive->remove_baseline();
mod_archive->dedisperse();
mod_archive->fscrunch();
scrunched_archive = mod_archive->clone();
scrunched_archive->tscrunch();
ranges.second = get_max_value(base_archive, plot_type);
positive_direction = base_archive->get_bandwidth() < 0.0;
time_orig_plot = factory.construct("time");
time_mod_plot = factory.construct("time");
time_fui = time_mod_plot->get_frame_interface();
freq_orig_plot = factory.construct("freq");
freq_mod_plot = factory.construct("freq");
freq_fui = freq_mod_plot->get_frame_interface();
total_plot = factory.construct("flux");
total_plot->configure("info=1");
subint_orig_plot = new ProfilePlot;
subint_mod_plot = new ProfilePlot;
subint_fui = subint_mod_plot->get_frame_interface();
subint_orig_plot->configure("info=1");
subint_mod_plot->configure("info=1");
unsigned window = 0;
char device [8];
for (unsigned i=0; i<2; i++) do {
window ++;
snprintf (device, 8, "%u/XS", window);
}
while ( cpgopen (device) < 0 );
cpgask(0);
cerr << endl << "Total S/N = " <<
scrunched_archive->get_Profile(0,0,0)->snr() << endl << endl;
total_plot->plot(scrunched_archive);
cpgslct(1);
time_orig_plot->plot(mod_archive);
//.........这里部分代码省略.........
示例5: create_histograms
void psrspa::create_histograms ( Reference::To<Archive> archive )
{
if ( verbose )
cerr << "psrspa::create_histograms entered" << endl;
// ensure Stokes parameters if creating polarisation histograms
if ( create_polar_degree || create_polar_angle )
{
archive->convert_state ( Signal::Stokes );
if ( verbose )
cerr << "psrspa::create_histograms converted state of the archive to Stokes" << endl;
}
// auxillary vectors
//vector< Estimate<float > > aux_vec_f;
vector< Estimate<double > > aux_vec_d;
// Full Stokes profile
Reference::To<PolnProfile> profile;
// Polarized flux
Reference::To<Profile> P;
P = new Profile;
// Total flux
float *T_amps = new float [ nbin ];
float *P_amps = new float [ nbin ];
unsigned bin_min, bin_max;
if ( verbose && max_bscrunch > 1 )
cerr << "psrspa::create_histograms entering the bscrunch loop for the " << archive->get_filename () << " archive" << endl;
// TODO Uh, this should be fixed up. The first idea was to enable the phase resolved histograms to be bscrunch-aware as well, but I think it doesn't make much sense so I decided to keep only the max flux bscrunch aware. This can be done much more neatly probably in such a case
for ( current_bscrunch = 1 ; current_bscrunch <= max_bscrunch ; current_bscrunch *= 2 )
{
// in each passage, we bscrunch by a factor of 2
if ( current_bscrunch > 1 )
{
if ( verbose )
cerr << "psrspa::create_histograms bscrunching the archive " << archive->get_filename () << " by a factor of 2" << endl;
archive->bscrunch ( 2 );
}
if ( verbose )
cerr << "psrspa::create_histograms entering the loop through subints of the " << archive->get_filename () << " archive" << endl;
// loop through subints
for ( unsigned isub = 0; isub < archive->get_nsubint (); isub++ )
{
if ( verbose )
cerr << "psrspa::create_histograms creating necessary profiles for subint " << isub << " of " << archive->get_filename () << endl;
if ( create_polar_angle || create_polar_degree && current_bscrunch == 1 )
{
profile = archive->get_Integration(isub)->new_PolnProfile(0);
if ( verbose )
cerr << "psrspa::create_histograms retrieved PolnProfile for subint " << isub << " of " << archive->get_filename () << endl;
}
if ( create_polar_angle && current_bscrunch == 1 )
{
profile->get_orientation ( aux_vec_d, 0 );
if ( verbose )
cerr << "psrspa::create_histograms retrieved polarisation angle for subint " << isub << " of " << archive->get_filename () << endl;
}
if ( create_polar_degree || create_flux || find_max_amp_in_range )
{
stats.set_profile ( archive->get_Profile ( isub, 0, 0 ) );
b_sigma = sqrt ( stats.get_baseline_variance ().get_value () );
T_amps = archive->get_Profile ( isub, 0, 0 )->get_amps ();
if ( verbose )
cerr << "psrspa::create_histograms retrieved total flux amps for subint " << isub << " of " << archive->get_filename () << endl;
if ( create_polar_degree && current_bscrunch == 1 )
{
profile->get_polarized ( P );
if ( verbose )
cerr << "psrspa::create_histograms retrieved polarized flux profile for subint " << isub << " of " << archive->get_filename () << endl;
P_amps = P->get_amps ();
if ( verbose )
cerr << "psrspa::create_histograms retrieved polarized flux amps for subint " << isub << " of " << archive->get_filename () << endl;
}
}
if ( verbose )
cerr << "psrspa::create_histograms looping through the provided phase ranges for subint " << isub << " of " << archive->get_filename () << endl;
unsigned curr_hist = 0;
// loop through phase ranges
for ( unsigned irange = 0; irange < phase_range.size () ; irange++ )
{
if ( irange%2 == 0)
{
bin_min = unsigned( floor ( phase_range[irange] * float(nbin / current_bscrunch ) + 0.5 ) );
if ( verbose )
cerr << "psrspa::create_histograms set minimal bin to " << bin_min << endl;
}
else
{
bin_max = unsigned( floor ( phase_range[irange] * float(nbin / current_bscrunch ) + 0.5 ) );
if ( bin_max == nbin )
bin_max = nbin - 1 ;
if ( verbose )
cerr << "psrspa::create_histograms set maximum bin to " << bin_max << endl;
// loop through bins in the given phase range
for ( unsigned ibin = bin_min; ibin <= bin_max; ibin++ )
{
if ( create_polar_angle && current_bscrunch == 1 )
{
//.........这里部分代码省略.........