Home > reduc > read_arcSouthTiming.m

read_arcSouthTiming

PURPOSE ^

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

SYNOPSIS ^

function d = read_arcSouthTiming(start, finish, regs, arcdir, calfile)

DESCRIPTION ^

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  function d = read_arc(start, finish, regs, arcdir, calfile)

 start/finish=start finish times as strings with format e.g.:
 01-Jan-2005:00:00:00
 optional regs=regs to extract if other than the standard set
 optional arcdir=directory containing archive files
 optional calfile=cal file

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SUBFUNCTIONS ^

SOURCE CODE ^

0001 function d = read_arcSouthTiming(start, finish, regs, arcdir, calfile)
0002 
0003 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0004 %  function d = read_arc(start, finish, regs, arcdir, calfile)
0005 %
0006 % start/finish=start finish times as strings with format e.g.:
0007 % 01-Jan-2005:00:00:00
0008 % optional regs=regs to extract if other than the standard set
0009 % optional arcdir=directory containing archive files
0010 % optional calfile=cal file
0011 %
0012 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0013 
0014 if(~exist('regs'))
0015     regs=[];
0016 end
0017 if(~exist('arcdir'))
0018   arcdir=[];
0019 end
0020 if(~exist('calfile'))
0021   calfile=[];
0022 end
0023 
0024 if(isempty(regs))
0025   regs={'array.frame.received'...
0026       'array.frame.utc double',...
0027       'array.frame.features',...
0028       'antenna0.roach1.LLfreq double',...
0029       'antenna0.roach1.utc double',...
0030       'antenna0.roach1.intCount double',...
0031       'antenna0.roach1.buffBacklog double',...
0032       'antenna0.roach2.buffBacklog double',...
0033       'antenna0.roach2.LLfreq double',...
0034       'antenna0.roach2.utc double',...
0035       'antenna0.roach2.intCount double',...
0036       'antenna0.roach1.switchstatus double',...
0037       'antenna0.roach2.switchstatus double',...
0038       'antenna0.thermal.utc double',...
0039       'antenna0.roach1.version double',...
0040       'antenna0.servo.fast_az_pos double',...
0041       'antenna0.servo.fast_el_pos double',...
0042       'antenna0.servo.fast_az_err double',...
0043       'antenna0.servo.fast_el_err double',...
0044       'antenna0.servo.utc double',...
0045       'antenna0.servo.utcFast double',...
0046     'antenna0.tracker.lst double',...
0047     'antenna0.tracker.lacking double',...
0048     'antenna0.tracker.equat_geoc double',...
0049     'antenna0.tracker.horiz_topo double',...
0050     'antenna0.tracker.horiz_mount double',...
0051     'antenna0.tracker.flexure double',...
0052     'antenna0.tracker.horiz_off double',...
0053     'antenna0.tracker.tilts double',...
0054     'antenna0.tracker.fixedCollimation double',...
0055     'antenna0.tracker.encoder_off double',...
0056     'antenna0.tracker.sky_xy_off double',...
0057     'antenna0.tracker.source string',...
0058     'antenna0.tracker.scan_off double',...
0059     'antenna0.tracker.refraction double',...
0060     'antenna0.tracker.ut1utc double',...
0061     'antenna0.tracker.eqneqx double',...
0062     'antenna0.tracker.utc double',...
0063     'antenna0.tracker.time_diff double',...
0064     'antenna0.tracker.offSource double',...
0065     'antenna0.tracker.siteActual double',...
0066     'antenna0.tracker.siteFiducial double',...
0067     'array.weather.airTemperature double',...
0068     'array.weather.pressure double',...
0069     'array.weather.relativeHumidity double',...
0070     'antenna0.thermal.ccTemperatureLoad double',...
0071     'antenna0.thermal.ccHeaterCurrent double',...
0072     'antenna0.thermal.lsTemperatureSensors double',...
0073     'antenna0.servo.servoSecond double',...
0074     'antenna0.servo.servouSecond double',...
0075     'antenna0.roach1.roachSample double',...
0076     'antenna0.roach2.roachSample double',...
0077     'antenna0.roach1.ntpSeconds double',...
0078     'antenna0.roach2.ntpSeconds double',...
0079     'antenna0.roach1.ntpUSeconds double',...
0080     'antenna0.roach2.ntpUSeconds double',...
0081     'antenna0.servo.ntpSecond double',...
0082     'antenna0.servo.ntpUSecond double',...
0083     'antenna0.roach1.fpgaClockStamp',...
0084     'antenna0.roach2.fpgaClockStamp',...
0085   };
0086 end
0087 
0088 % Ensure regs unique
0089   if(any(size(unique(regs))~=size(regs)))
0090     error('read_arcSouthTiming:: regs should be unique');
0091 end
0092 
0093 % Here we want to have the function know which directory to look for the
0094 % data depending on the machine name.
0095 [defaultDataDir defaultCalFile defaultReaderPath] = whichHostSa();
0096 
0097 if(isempty(arcdir))
0098 
0099   arcdir = defaultDataDir;
0100 end
0101 if(isempty(calfile))
0102   calfile = defaultCalFile;
0103 end
0104 
0105 eval(sprintf('addpath %s', defaultReaderPath));
0106 
0107 % let's get the previous 5 seconds and post 5 seconds, and then cut it down
0108 % to the right size.
0109 mjdstartorig = tstr2mjd(start);
0110 mjdstart = mjdstartorig - 5/60/60/24;
0111 mjdstoporig  = tstr2mjd(finish);
0112 mjdstop  = mjdstoporig  + 5/60/60/24;
0113 
0114 %display('read_arcSouthTiming:: cbassMatReadArcOpt')
0115 d = cbassMatReadArcOpt(regs, mjd2string(mjdstart), mjd2string(mjdstop), arcdir, calfile);
0116 
0117 
0118 %display('read_arcSouthTiming:: MassageData')
0119 d = massageDataSa(d);
0120 %display('read_arcSouthTiming:: reshapeResgister');
0121 % reshape the registers
0122 d = reshapeRegisters(d);
0123 %display('read_arcSouthTiming:: interpRegisters');
0124 % interpolate as needed.
0125 %d = interpRegistersSa(d);
0126 %display('read_arcSouthTiming:: cut Desired Date');
0127 % cut to the desired data
0128 %d = apparentAzElSouth(d);
0129 
0130 %d = determineIndicesSouth(d);
0131 %d = cutDesiredData(d, mjdstartorig, mjdstoporig);
0132 %display('read_arcSouthTiming:: here')
0133 return;
0134 
0135 % update the separate functions
0136 %function [defaultDataDir defaultCalfile defaultReader] = whichHost()
0137 %
0138 %% Here we want to have the function know which directory to look for the
0139 %% data depending on the machine name.
0140 %% For simplicity, we assign numbers to each hostname as follows:
0141 %% 0 - cbasscontrol  (OVRO)
0142 %% 1 - haggis  (CALTECH)
0143 %% 2 - falcon  (MANCHESTER)
0144 %% 3 - aslx10  (OXFORD)
0145 %% 4 - asosx48 (OXFORD)
0146 %% 5 - asosx39 (OXFORD)
0147 %% 6  - aslx2   (OXFORD)
0148 %% 7  - pravda  (Oliver)
0149 %
0150 %[s w] = unix('hostname');
0151 %
0152 %hostNum = nan;
0153 %
0154 %% check for cbasscontrol
0155 %host = strfind(w, 'cbasscontrol');
0156 %if(~isempty(host))
0157 %  hostNum = 0;
0158 %  defaultDataDir = '/mnt/data/cbass/arc';
0159 %  defaultCalfile = '/home/cbass/gcpCbass/control/conf/cbass/cal';
0160 %  defaultReader  = '/home/cbass/gcpCbass/matlab/common/';
0161 %end
0162 %
0163 %% check for haggis
0164 %host = strfind(w, 'haggis');
0165 %if(~isempty(host))
0166 %  hostNum = 1;
0167 %  defaultDataDir = '/scr/cbassarc/data/arc';
0168 %  defaultCalfile = '/home/cbassuser/cbass/gcpCbass/control/conf/cbass/cal';
0169 %  defaultReader  = '/home/cbassuser/cbass/gcpCbass/matlab/common/';
0170 %end
0171 %
0172 %% check for falcon
0173 %host = strfind(w, 'falcon');
0174 %if(~isempty(host))
0175 %  hostNum = 2;
0176 %  defaultDataDir = '/scratch/falcon_4/cdickins/cbass/cbassarc/data/arc';
0177 %  defaultCalfile = '/home/muchovej/cbass/gcpCbass/control/conf/cbass/cal';
0178 %  defaultReader  = '/home/muchovej/cbass/gcpCbass/matlab/common/';
0179 %end
0180 %
0181 %% check for aslx
0182 %host = strfind(w, 'aslx10');
0183 %if(~isempty(host))
0184 %  hostNum = 3;
0185 %  defaultDataDir = '/data/cbassuser/data/arc';
0186 %  defaultCalfile = '/home/Muchovej/cbass/gcpCbass/control/conf/cbass/cal';
0187 %  defaultReader  = '/home/Muchovej/cbass/gcpCbass/matlab/common/';
0188 %end
0189 %
0190 %% check for asosx48
0191 %host = strfind(w, 'asosx48');
0192 %if(~isempty(host))
0193 %  hostNum = 4;
0194 %defaultDataDir = '/Volumes/Data2/CBASS_ARC';
0195 %%defaultDataDir = '/Volumes/C-BASS-1';
0196 %%defaultDataDir = '/Volumes/C-BASS/data';
0197 %
0198 %defaultCalfile = '/Users/taylorA/CBASS/cbass/gcpCbass/control/conf/cbass/cal';
0199 %defaultReader  = '/Users/taylorA/CBASS/cbass/gcpCbass/matlab/common/';
0200 %end
0201 %
0202 %% check for pravda
0203 %host = strfind(w, 'pravda');
0204 %if(~isempty(host))
0205 %  hostNum = 7;
0206 %  defaultDataDir = '/Volumes/DATA/cbass/arc';
0207 %  defaultCalfile = '/Users/oliver/C-BASS/software/cbass/gcpCbass/control/conf/cbass/cal';
0208 %  defaultReader  = '/Users/oliver/C-BASS/software/cbass/gcpCbass/matlab/common/';
0209 %end
0210 %
0211 %host = strfind(w, 'asosx39');
0212 %if(~isempty(host))
0213 %  hostNum = 5;
0214 %defaultDataDir = '/Volumes/My Book/zuntz/cbass/arc';
0215 %defaultCalfile = '/Users/zuntz/src/cbass/cbass/gcpCbass/control/conf/cbass/cal';
0216 %defaultReader  = '/Users/zuntz/src/cbass/cbass/gcpCbass/matlab/common/';
0217 %end
0218 %
0219 %host = strfind(w, 'aslx2');
0220 %if(~isempty(host))
0221 %  hostNum = 6;
0222 %defaultDataDir = '/home/jxl/cbass_data/arc';
0223 %defaultCalfile = '/home/jxl/cbass/gcpCbass/control/conf/cbass/cal';
0224 %defaultReader  = '/home/jxl/cbass/gcpCbass/matlab/common/';
0225 %end
0226 %
0227 host = strfind(w, 'aslx5');                                                     
0228 if(~isempty(host))
0229  hostNum = 7; 
0230 defaultDataDir = '/home/cbassuser/cbass_data/arc';
0231 defaultCalfile = '/home/cbassuser/cbass/gcpCbass/control/conf/cbass/cal';
0232 defaultReader  = '/home/cbassuser/cbass/gcpCbass/matlab/common/';
0233 end                                                                                                                                                    
0234 %
0235 %
0236 %
0237 %if(isnan(hostNum))
0238 %  error('read_arcSouthTiming:: Can not match your host name to a recognized one');
0239 %  error('read_arcSouthTiming:: Update read_arc.m to reflect your host');
0240 %end
0241 %
0242 %return;
0243 
0244 
0245 
0246 
0247 % cut to the desired data
0248 function d = cutDesiredData(d, mjdstartorig, mjdstoporig)
0249 
0250 if(~isfield(d, 'array'))
0251   return;
0252 end
0253 
0254 if(~isfield(d, 'antenna0'))
0255   return;
0256 end
0257 
0258 if(issubfield(d.antenna0, 'receiver', 'utc'))
0259   indFast = d.antenna0.receiver.utc>=mjdstartorig & ...
0260       d.antenna0.receiver.utc<mjdstoporig;
0261   noRx = 0;
0262 else
0263   indFast = ones(length(d.array.frame.utc)*100,1);
0264   indFast = logical(indFast);
0265   noRx = 1;
0266 end
0267 
0268 if(isfield(d.antenna0, 'servo'))
0269   indMed  = d.antenna0.servo.utc>=mjdstartorig & ...
0270       d.antenna0.servo.utc<mjdstoporig;
0271   noServo = 0;
0272 else
0273   indMed = ones(length(d.array.frame.utc)*5,1);
0274   indMed = logical(indMed);
0275   noServo = 1;
0276 end
0277 
0278 indSlow = d.array.frame.utc>=mjdstartorig & d.array.frame.utc<mjdstoporig;
0279 
0280 
0281 indF = reshape(indFast, [5 20 length(indSlow)]);
0282 indF = permute(indF, [3 1 2]);
0283 indFs = mean(mean(indF,3),2)==1;
0284 
0285 indM = reshape(indMed, [5 length(indSlow)]);
0286 indM = permute(indM, [2 1]);
0287 indMs = mean(indM,2)==1;
0288 
0289 ind  = indMs & indFs & indSlow;
0290 
0291 % these are the real ind on the slow scale.  now we up it to the longer
0292 % scales -- already done in framecut.
0293 
0294 d = framecut(d, ind, 'regular');
0295 
0296 return;
0297

Generated on Sun 14-Jun-2015 17:12:45 by m2html © 2005