Home > cbassSouthFunctions > ACTFunctions > read_arcSouth_ACT.m

read_arcSouth_ACT

PURPOSE ^

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

SYNOPSIS ^

function d = read_arc(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_arc(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.LL double',...
0029       'antenna0.roach1.LLfreq double',...
0030       'antenna0.roach1.RR double',...
0031       'antenna0.roach1.RRfreq double',...
0032       'antenna0.roach1.U double',...
0033       'antenna0.roach1.Ufreq double',...
0034        'antenna0.roach1.Utime double',...
0035       'antenna0.roach1.Q double',...
0036       'antenna0.roach1.Qfreq double',...
0037       'antenna0.roach1.Qtime double',...
0038       'antenna0.roach1.load1 double',...
0039       'antenna0.roach1.load1freq double',...
0040       'antenna0.roach1.load2 double',...
0041       'antenna0.roach1.load2freq double',...
0042       'antenna0.roach1.utc double',...
0043       'antenna0.roach2.LL double',...
0044       'antenna0.roach2.LLfreq double',...
0045       'antenna0.roach2.RR double',...
0046       'antenna0.roach2.RRfreq double',...
0047       'antenna0.roach2.U double',...
0048       'antenna0.roach2.Ufreq double',...
0049        'antenna0.roach2.Utime double',...
0050       'antenna0.roach2.Q double',...
0051       'antenna0.roach2.Qfreq double',...
0052       'antenna0.roach2.Qtime double',...
0053       'antenna0.roach2.load1 double',...
0054       'antenna0.roach2.load1freq double',...
0055       'antenna0.roach2.load2 double',...
0056       'antenna0.roach2.load2freq double',...
0057       'antenna0.roach2.utc double',...
0058       'antenna0.roach1.switchstatus double',...
0059       'antenna0.roach2.switchstatus double',...
0060       'antenna0.thermal.ccTemperatureLoad double',...
0061       'antenna0.thermal.ccHeaterCurrent double',...
0062       'antenna0.thermal.lsTemperatureSensors double',...
0063       'antenna0.thermal.utc double',...
0064       'antenna0.roach1.version double',...
0065       'antenna0.servo.fast_az_pos double',...
0066       'antenna0.servo.fast_el_pos double',...
0067       'antenna0.servo.fast_az_err double',...
0068       'antenna0.servo.fast_el_err double',...
0069       'antenna0.servo.utc double',...
0070       'antenna0.tracker.siteActual double',...
0071       'antenna0.tracker.utc double',...
0072   };
0073 end
0074 
0075 % Ensure regs unique
0076   if(any(size(unique(regs))~=size(regs)))
0077     error('regs should be unique');
0078 end
0079 
0080 % Here we want to have the function know which directory to look for the
0081 % data depending on the machine name.
0082 [defaultDataDir defaultCalFile defaultReaderPath] = whichHostSa();
0083 
0084 if(isempty(arcdir))
0085 
0086   arcdir = defaultDataDir;
0087 end
0088 if(isempty(calfile))
0089   calfile = defaultCalFile;
0090 end
0091 
0092 eval(sprintf('addpath %s', defaultReaderPath));
0093 
0094 % let's get the previous 5 seconds and post 5 seconds, and then cut it down
0095 % to the right size.
0096 mjdstartorig = tstr2mjd(start);
0097 mjdstart = mjdstartorig - 5/60/60/24;
0098 mjdstoporig  = tstr2mjd(finish);
0099 mjdstop  = mjdstoporig  + 5/60/60/24;
0100 
0101 %display('cbassMatReadArcOpt')
0102 d = cbassMatReadArcOpt(regs, mjd2string(mjdstart), mjd2string(mjdstop), arcdir, calfile);
0103 
0104 %display('MassageData')
0105 d = massageData(d);
0106 %display('reshapeResgister');
0107 % reshape the registers
0108 d = reshapeRegisters(d);
0109 %display('interpRegisters');
0110 % interpolate as needed.
0111 d = interpRegistersSa(d);
0112 %display('cut Desired Date');
0113 % cut to the desired data
0114 %d = cutDesiredData(d, mjdstartorig, mjdstoporig);
0115 %display('here')
0116 return;
0117 
0118 % update the separate functions
0119 %function [defaultDataDir defaultCalfile defaultReader] = whichHost()
0120 %
0121 %% Here we want to have the function know which directory to look for the
0122 %% data depending on the machine name.
0123 %% For simplicity, we assign numbers to each hostname as follows:
0124 %% 0 - cbasscontrol  (OVRO)
0125 %% 1 - haggis  (CALTECH)
0126 %% 2 - falcon  (MANCHESTER)
0127 %% 3 - aslx10  (OXFORD)
0128 %% 4 - asosx48 (OXFORD)
0129 %% 5 - asosx39 (OXFORD)
0130 %% 6  - aslx2   (OXFORD)
0131 %% 7  - pravda  (Oliver)
0132 %
0133 %[s w] = unix('hostname');
0134 %
0135 %hostNum = nan;
0136 %
0137 %% check for cbasscontrol
0138 %host = strfind(w, 'cbasscontrol');
0139 %if(~isempty(host))
0140 %  hostNum = 0;
0141 %  defaultDataDir = '/mnt/data/cbass/arc';
0142 %  defaultCalfile = '/home/cbass/gcpCbass/control/conf/cbass/cal';
0143 %  defaultReader  = '/home/cbass/gcpCbass/matlab/common/';
0144 %end
0145 %
0146 %% check for haggis
0147 %host = strfind(w, 'haggis');
0148 %if(~isempty(host))
0149 %  hostNum = 1;
0150 %  defaultDataDir = '/scr/cbassarc/data/arc';
0151 %  defaultCalfile = '/home/cbassuser/cbass/gcpCbass/control/conf/cbass/cal';
0152 %  defaultReader  = '/home/cbassuser/cbass/gcpCbass/matlab/common/';
0153 %end
0154 %
0155 %% check for falcon
0156 %host = strfind(w, 'falcon');
0157 %if(~isempty(host))
0158 %  hostNum = 2;
0159 %  defaultDataDir = '/scratch/falcon_4/cdickins/cbass/cbassarc/data/arc';
0160 %  defaultCalfile = '/home/muchovej/cbass/gcpCbass/control/conf/cbass/cal';
0161 %  defaultReader  = '/home/muchovej/cbass/gcpCbass/matlab/common/';
0162 %end
0163 %
0164 %% check for aslx
0165 %host = strfind(w, 'aslx10');
0166 %if(~isempty(host))
0167 %  hostNum = 3;
0168 %  defaultDataDir = '/data/cbassuser/data/arc';
0169 %  defaultCalfile = '/home/Muchovej/cbass/gcpCbass/control/conf/cbass/cal';
0170 %  defaultReader  = '/home/Muchovej/cbass/gcpCbass/matlab/common/';
0171 %end
0172 %
0173 %% check for asosx48
0174 %host = strfind(w, 'asosx48');
0175 %if(~isempty(host))
0176 %  hostNum = 4;
0177 %defaultDataDir = '/Volumes/Data2/CBASS_ARC';
0178 %%defaultDataDir = '/Volumes/C-BASS-1';
0179 %%defaultDataDir = '/Volumes/C-BASS/data';
0180 %
0181 %defaultCalfile = '/Users/taylorA/CBASS/cbass/gcpCbass/control/conf/cbass/cal';
0182 %defaultReader  = '/Users/taylorA/CBASS/cbass/gcpCbass/matlab/common/';
0183 %end
0184 %
0185 %% check for pravda
0186 %host = strfind(w, 'pravda');
0187 %if(~isempty(host))
0188 %  hostNum = 7;
0189 %  defaultDataDir = '/Volumes/DATA/cbass/arc';
0190 %  defaultCalfile = '/Users/oliver/C-BASS/software/cbass/gcpCbass/control/conf/cbass/cal';
0191 %  defaultReader  = '/Users/oliver/C-BASS/software/cbass/gcpCbass/matlab/common/';
0192 %end
0193 %
0194 %host = strfind(w, 'asosx39');
0195 %if(~isempty(host))
0196 %  hostNum = 5;
0197 %defaultDataDir = '/Volumes/My Book/zuntz/cbass/arc';
0198 %defaultCalfile = '/Users/zuntz/src/cbass/cbass/gcpCbass/control/conf/cbass/cal';
0199 %defaultReader  = '/Users/zuntz/src/cbass/cbass/gcpCbass/matlab/common/';
0200 %end
0201 %
0202 %host = strfind(w, 'aslx2');
0203 %if(~isempty(host))
0204 %  hostNum = 6;
0205 %defaultDataDir = '/home/jxl/cbass_data/arc';
0206 %defaultCalfile = '/home/jxl/cbass/gcpCbass/control/conf/cbass/cal';
0207 %defaultReader  = '/home/jxl/cbass/gcpCbass/matlab/common/';
0208 %end
0209 %
0210 host = strfind(w, 'aslx5');                                                     
0211 if(~isempty(host))
0212  hostNum = 7; 
0213 defaultDataDir = '/home/cbassuser/cbass_data/arc';
0214 defaultCalfile = '/home/cbassuser/cbass/gcpCbass/control/conf/cbass/cal';
0215 defaultReader  = '/home/cbassuser/cbass/gcpCbass/matlab/common/';
0216 end                                                                                                                                                    
0217 %
0218 %
0219 %
0220 %if(isnan(hostNum))
0221 %  error('Can not match your host name to a recognized one');
0222 %  error('Update read_arc.m to reflect your host');
0223 %end
0224 %
0225 %return;
0226 
0227 
0228 
0229 
0230 % cut to the desired data
0231 function d = cutDesiredData(d, mjdstartorig, mjdstoporig)
0232 
0233 if(~isfield(d, 'array'))
0234   return;
0235 end
0236 
0237 if(~isfield(d, 'antenna0'))
0238   return;
0239 end
0240 
0241 if(issubfield(d.antenna0, 'receiver', 'utc'))
0242   indFast = d.antenna0.receiver.utc>=mjdstartorig & ...
0243       d.antenna0.receiver.utc<mjdstoporig;
0244   noRx = 0;
0245 else
0246   indFast = ones(length(d.array.frame.utc)*100,1);
0247   indFast = logical(indFast);
0248   noRx = 1;
0249 end
0250 
0251 if(isfield(d.antenna0, 'servo'))
0252   indMed  = d.antenna0.servo.utc>=mjdstartorig & ...
0253       d.antenna0.servo.utc<mjdstoporig;
0254   noServo = 0;
0255 else
0256   indMed = ones(length(d.array.frame.utc)*5,1);
0257   indMed = logical(indMed);
0258   noServo = 1;
0259 end
0260 
0261 indSlow = d.array.frame.utc>=mjdstartorig & d.array.frame.utc<mjdstoporig;
0262 
0263 
0264 indF = reshape(indFast, [5 20 length(indSlow)]);
0265 indF = permute(indF, [3 1 2]);
0266 indFs = mean(mean(indF,3),2)==1;
0267 
0268 indM = reshape(indMed, [5 length(indSlow)]);
0269 indM = permute(indM, [2 1]);
0270 indMs = mean(indM,2)==1;
0271 
0272 ind  = indMs & indFs & indSlow;
0273 
0274 % these are the real ind on the slow scale.  now we up it to the longer
0275 % scales -- already done in framecut.
0276 
0277 d = framecut(d, ind, 'regular');
0278 
0279 return;
0280

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