Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Stokes response #193

Open
wants to merge 5 commits into
base: master
Choose a base branch
from
Open

Stokes response #193

wants to merge 5 commits into from

Conversation

amaurea
Copy link
Contributor

@amaurea amaurea commented Dec 1, 2024

The pointing matrix in so3g has had a hardcoded polarization efficiency of 100%. This pull request updates it to support arbitrary T and P responses per detector. This was needed to be able to represent demodulated timestreams as virtual detectors, which will be a separate pull request for sotodlib later. The virtual detector approach to demodulation mapmaking has the advantage that none of the rest of the code needs to know about the demodulation, only the demodulation function itself.

This breaks backwards compatibility in the interface of the FocalPlane object. It used to be an OrderedDict of [name, q] where q is an entry in a G3VectorQuat, but it is now a class with the members .quats, which is an [ndet,4] array of quaternion coefficients, and .resps, which is an [ndet,2] array of T and P responses. This means that FocalPlane no longer supports named detectors. This simplifies Assembly, which now just contains a FocalPlane instance.

This incompatibility will require corresponding changes in sotodlib. Do we have to go through a slow dance of add compatibility layer in sotodlib, wait for a few weeks, update so3g, then remove compatibility layer in sotodlib, again? I hope not. What do you think?

@amaurea
Copy link
Contributor Author

amaurea commented Dec 1, 2024

Looks like some other code needs to be updated to support the new FocalPlane class that replaced the old OrderedDict. Some places expect to be able to iterate over .items() and get names and G3VectorQuats out. How could this best be handled? The most quick-and-dirty solution would be to implement .items() and out it spit out things like that. However, this interface can't capture the new response stuff, so I fear that this would hide code that actually should fail because it needs to be updated to take the responses into account.

@amaurea amaurea requested a review from mhasself December 1, 2024 19:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant