-
Notifications
You must be signed in to change notification settings - Fork 2
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
Conversation
for more information, see https://pre-commit.ci
for more information, see https://pre-commit.ci
for more information, see https://pre-commit.ci
for more information, see https://pre-commit.ci
for more information, see https://pre-commit.ci
for more information, see https://pre-commit.ci
for more information, see https://pre-commit.ci
5cabac0
to
6c11abb
Compare
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. |
The reason could also be that R1 and R3 have an error of 0.005mm respectively which is more logical. |
for more information, see https://pre-commit.ci
for more information, see https://pre-commit.ci
src/TRestAxionTrueWolterOptics.cxx
Outdated
fSecondInteractionPosition = REST_Physics::GetHyperbolicVectorIntersection( | ||
pos, dir, fAlpha[mirror], fR3[mirror], focal); // should add this: TVector3(0, 0, -1), vertex, |
There was a problem hiding this comment.
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]); |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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"?
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The virtual point is indicated in this schematic I made for my thesis.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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!
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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^^
There was a problem hiding this comment.
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
?
There was a problem hiding this comment.
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
inc/TRestAxionWolterOptics.h
Outdated
/// Distance between mirror stacks in mm. See schematic figure. | ||
std::vector<Double_t> fXSep; //! |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
for more information, see https://pre-commit.ci
for more information, see https://pre-commit.ci
for more information, see https://pre-commit.ci
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.