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

Remove Parabolic and Hyperbolic mirror restrictions and add x_sep #81

Merged
merged 41 commits into from
Feb 23, 2024

Conversation

jovoy
Copy link
Contributor

@jovoy jovoy commented Dec 15, 2023

jovoy Ok: 88 Powered by Pull Request Badge

This PR implements the changes set by:

rest-for-physics/framework#469

Therefore it removes the length of the mirrors from the parabolic and hyperbolic intersection calculations.
It also introduces a distance between the two mirror stacks called x_sep that is important for optics different from the XMM optics (like NuSTAR like optics). For optics like the XMM optics where x_sep is zero it sets x_sep to 0.

jovoy and others added 25 commits August 22, 2023 15:19
@jovoy
Copy link
Contributor Author

jovoy commented Feb 21, 2024

So there is a problem with the x_sep being a few negative mm for the XMM, probably because the length of 300mm of the mirror are not precise and it’s more like 300mm +- 3mm. Therefore I will set x_sep for optics that have R2=R3 equal to 0, which it is supposed to be. Interesting though to note that the values that we got for the optics are not very precise.

@jovoy
Copy link
Contributor Author

jovoy commented Feb 21, 2024

The reason could also be that R1 and R3 have an error of 0.005mm respectively which is more logical.

Comment on lines 337 to 338
fSecondInteractionPosition = REST_Physics::GetHyperbolicVectorIntersection(
pos, dir, fAlpha[mirror], fR3[mirror], focal); // should add this: TVector3(0, 0, -1), vertex,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Imo it's confusing that this function receives α and you compute 3α in the body of the function. Ideally, have a separate angle that simply describes the correct angle for the second set of mirrors, or compute it in place to clarify? It makes GetHyperbolicVectorIntersection much more specific than the name would imply, i.e. it forces it to be explicitly for a second set of mirrors in a Wolter optic.

@@ -321,12 +333,12 @@ Int_t TRestAxionTrueWolterOptics::SecondMirrorReflection(const TVector3& pos, co
TVector3 vertex(0, 0, fBackVertex[mirror]);
Double_t focal = fR3[mirror] / TMath::Tan(4 * fAlpha[mirror]);
Copy link
Member

@Vindaar Vindaar Feb 22, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is fR3 the middle point along the extensions of mirrors 1 and 2 /or/ the virtual reflection point? If it is the former it's not the right equation, if focal is supposed to be the focal length of the telescope.

(this is how you end up with a "1500mm" LLNL telescope, which actually has a 1530mm focal length)

Or is this equation for some reason correct as is for a true Wolter optic?

edit:
Given that the docstrings for fR3 reference a schematic, which I assume is this one from here:

https://rest-for-physics.github.io/framework/classTRestAxionTrueWolterOptics.html

it seems to be the former still.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So in the document for the true Wolter optics they call this the z-Koordinate of the detector/ focal point. I thought this would be roughly the same for each layer. What do you mean by "virtual reflection point"?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So for these true Wolter functions it is not the focal length of the whole optics but of the the single hyperbolic mirror as far as I understand.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

llnl_layers_explanation.pdf

The virtual point is indicated in this schematic I made for my thesis.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

llnl_layers_explanation

here as an SVG so that it's visible embedded.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

spiegel_parameter.pdf

Here is the true Wolter calculation I got from Vadim's colleague and it does state that what I call "focal" is calculated with R3. Interesting point though to note about the virtual reflection point!

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok, good to know. Then I suppose this is indeed correct for a true Wolter optic.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But it's not the whole optics focal spot, that is true and confusing^^

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But the PDF you sent explicitly says 'Fokallänge' for x_0 - x_f?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, but the calculation is right there and they clearly mean R3 with r0

Comment on lines 56 to 57
/// Distance between mirror stacks in mm. See schematic figure.
std::vector<Double_t> fXSep; //!
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would probably specify more explicitly that in this approach you compute xSep based on R1, R3, α and lMirror. Alternatively, you could have xSep entirely fixed for a telescope and then R4 and and 3α (or whatever the second set of mirrors have) to place the mirrors.

When fixing xSep you can still get a different effective distance between first and second set of mirrors. But at that point it is 'deterministic' and depending on whether you want to align each sets of mirrors at their front / center / end.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remind me: For the LLNL optics, was it the same value for x_sep for every layer or a different one?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

According to my memory there was no information about a set x_sep for NuSTAR optics and they were just aligned in the front and the back which should be fine with this because it just assumes lMirror to always be the same and then the difference between one x_sep to the next should be about 0.03mm which would be what you loose by tilting the mirror further (don't know if that makes sense). But I do think we should align the mirrors in the middle with this calculation.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remind me: For the LLNL optics, was it the same value for x_sep for every layer or a different one?

What Jaime and me agreed on is that probably the right thing to do for LLNL is to say x_sep = 4 mm along the optical axis. From there you place the cones, which due to their l = 225 mm then means the physical x_sep for each layer is slightly different and larger. If one were to align the mirrors along the rear (1st set of mirrors) and front (2nd set of mirrors) one would recover x_sep = 4 mm exactly, at the expense of having ragged mirrors (like a staircase) at the entrance and exit of the optic.

What one does in the end is not going to matter /too much/ (you see the difference though if you look at the illumination of each shell in my experience). But I would document the choice you make explicitly. That's my only point.

@jovoy jovoy merged commit 068fb45 into master Feb 23, 2024
63 checks passed
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.

3 participants