Closed PhilippaHartley closed 5 years ago
I wrote some code to simulate (and solve for) various pointing errors back around 2010. I'll try to find it. @o-smirnov we seem to have ended up with multiple subdirectories for meqtrees related issues,
@twillis449 That would be great, thank you!
I found my code. Amazingly most of it still seems to run! I will put things into some kind of comprehensible package for you. May take a day or two.
That would be brilliant, thank you very much!
The attached tar file contains various pointing scripts, 2 pdf files, and a README. I'm completely rusty on this stuff, but maybe you will find the scripts vaguely useful.
Tony
Thank you very much - greatly appreciated!
A quick update on this: I made a workaround by using the noise node GaussNoise(). The result is a set of pointing errors that are random in time and across antenne:
class RandDynamic (RandomError):
def __init__ (self,name,nominal_value=0,typical_error=0,**kw):
ErrorGenerator.__init__(self,name,nominal_value,typical_error,**kw);
self.opts.append(TDLOption("sigma","Random Gaussian pointing errors with sigma %s"%name,0
,more=float,namespace=self));
self.ngen = 0
def make_node (self,node,**kw):
ns = node.Subscope();
# pick a random starting phase
print ('self.ngen', self.ngen);
node << (Meq.Time()*0)+Meq.GaussNoise(stddev = self.sigma/206265., seed = self.ngen);
self.ngen+=1
return node;
Thanks again for your help!
I would like to be able to add dynamic pointing errors per antenna. I'm currently attempting this using ListOfValues but I realised that only the set of pointing errors for the first integration are applied (and then repeated for subsequent integrations).
I’m looking through the source code to find out how to get the time-dependence in but it looks from the node structure that this is currently only done using functions (the sine and poly ones) which don’t explicitly need to pass a whole list, just a function – which I guess is applied to timestamps elsewhere. Is there an easy way to change this? Thanks