slaclab / psgeom

code for representing the geometry of scattering experiments
Other
2 stars 3 forks source link

Fix generic header #19

Closed chuckie82 closed 7 years ago

chuckie82 commented 7 years ago

This change seems to work for the rayonix

tjlane commented 7 years ago

@chuckie82 thanks for the header update -- the one issue I have is the change in camera.py which makes it less generic. I don't think we want to do that.

chuckie82 commented 7 years ago

Here's an overview of all the geometry types: Looks like Rayonix and andor3d have similar MTRX formats. @msdubrovin: Are there any other keywords beside MTRX that aren't arbitrary?

Rayonix:

HDR PARENT IND OBJECT IND X0[um] Y0[um] Z0[um] ROT-Z ROT-Y ROT-X TILT-Z TILT-Y TILT-X

RAYONIX:V1 0 MTRX:1920:1920:89:89 0 0 0 0 0 0 0 0.0 0.0 0.0 IP:V1 0 RAYONIX:V1 0 0 0 10000 0 0 0 0.0 0.0 0.0

andor3d:

HDR PARENT IND OBJECT IND X0[um] Y0[um] Z0[um] ROT-Z ROT-Y ROT-X TILT-Z TILT-Y TILT-X

ANDORDET:V1 0 MTRX:512:512:54:54 0 5400 0 0 90 0 0 0.0 0.0 0.0 ANDORDET:V1 0 MTRX:512:512:54:54 1 -33000 0 0 90 0 0 0.0 0.0 0.0 IP:V1 0 ANDORDET:V1 0 0 27600 0 -90 0 0 0.0 0.0 0.0

pnCCD:

400:HDR PARENT IND OBJECT IND X0[um] Y0[um] Z0[um] ROT-Z ROT-Y ROT-X TILT-Z TILT-Y TILT-X

SEG2Q:V1 0 PNCCD:V1 0 -38362 -162 0 0.0 0.0 0.0 0.00000 0.00000 0.00000 SEG2Q:V1 0 PNCCD:V1 1 38362 38263 0 180.0 0.0 0.0 0.00000 0.00000 0.00000 SEG2Q:V1 1 PNCCD:V1 0 -38362 -9062 0 0.0 0.0 0.0 0.00000 0.00000 0.00000 SEG2Q:V1 1 PNCCD:V1 1 38362 29263 0 180.0 0.0 0.0 0.00000 0.00000 0.00000 DETPNCCD:V1 0 SEG2Q:V1 0 -1 -45800 0 0.0 0.0 0.0 0.00000 0.00000 0.00000 DETPNCCD:V1 0 SEG2Q:V1 1 -1 34500 0 180.0 0.0 0.0 0.00000 0.00000 0.00000 IP:V1 0 DETPNCCD:V1 0 2000 400 100000 -180.0 0.0 180.0 0.00000 0.00000 0.00000

epix100:

HDR PARENT IND OBJECT IND X0[um] Y0[um] Z0[um] ROT-Z ROT-Y ROT-X TILT-Z TILT-Y TILT-X

IP 0 EPIX100:V1 0 0 0 1000 0 0 0 0.00000 0.00000 0.00000

cspad2x2:

HDR PARENT IND OBJECT IND X0[um] Y0[um] Z0[um] ROT-Z ROT-Y ROT-X TILT-Z TILT-Y TILT-X

CSPAD2X2:V1 0 SENS2X1:V1 0 21841 10506 26 180 0 0 0.04523 -0.02753 0.04097 CSPAD2X2:V1 0 SENS2X1:V1 1 21847 33925 20 180 0 0 0.20189 0.00000 -0.09014 IP 0 CSPAD2X2:V1 0 0 0 1000000 0 0 0 0.00000 0.00000 0.00000

cspad:

HDR PARENT IND OBJECT IND X0[um] Y0[um] Z0[um] ROT-Z ROT-Y ROT-X TILT-Z TILT-Y TILT-X

CSPAD:V2 0 SENS2X1:V1 0 51844 112721 33 90 0 0 -0.13815 0.12869 -0.03026 CSPAD:V2 0 SENS2X1:V1 1 74646 112631 16 90 0 0 -0.30197 -0.05752 -0.06974 CSPAD:V2 0 SENS2X1:V1 2 16721 124583 -5 0 0 0 -0.02828 0.06446 -0.00548 CSPAD:V2 0 SENS2X1:V1 3 16688 101586 -14 0 0 0 -0.22561 0.05394 0.05757 CSPAD:V2 0 SENS2X1:V1 4 28418 159585 -35 270 0 0 -0.18027 0.03288 0.03816 CSPAD:V2 0 SENS2X1:V1 5 5622 159579 -24 270 0 0 -0.17893 -0.12600 0.02237 CSPAD:V2 0 SENS2X1:V1 6 63511 168753 2 0 0 0 -0.31636 0.05656 -0.08219 CSPAD:V2 0 SENS2X1:V1 7 63500 145880 29 0 0 0 -0.14206 0.01447 0.00822 CSPAD:V2 0 SENS2X1:V1 8 107655 129380 30 0 0 0 -0.14799 -0.06314 -0.09870 CSPAD:V2 0 SENS2X1:V1 9 107629 106755 15 0 0 0 0.04537 -0.01052 0.01096 CSPAD:V2 0 SENS2X1:V1 10 119274 164477 29 270 0 0 -0.21051 -0.06577 -0.03421 CSPAD:V2 0 SENS2X1:V1 11 96595 164526 8 270 0 0 -0.22103 -0.04384 0.02105 CSPAD:V2 0 SENS2X1:V1 12 154603 153350 -12 180 0 0 -0.12563 0.05657 -0.03563 CSPAD:V2 0 SENS2X1:V1 13 154657 175762 -18 180 0 0 -0.23025 0.02368 -0.05482 CSPAD:V2 0 SENS2X1:V1 14 163608 118037 29 270 0 0 0.12305 0.02466 0.02632 CSPAD:V2 0 SENS2X1:V1 15 140767 118028 10 270 0 0 -0.10524 0.06299 -0.03420 CSPAD:V2 0 SENS2X1:V1 16 123927 73757 -73 270 0 0 0.18228 0.02465 -0.04343 CSPAD:V2 0 SENS2X1:V1 17 101343 73681 -77 270 0 0 0.13745 0.03561 -0.11311 CSPAD:V2 0 SENS2X1:V1 18 159263 62263 14 180 0 0 0.06447 -0.00526 0.00274 CSPAD:V2 0 SENS2X1:V1 19 159270 84841 12 180 0 0 0.00789 0.08550 -0.01371 CSPAD:V2 0 SENS2X1:V1 20 147947 27044 -80 90 0 0 0.26170 -0.10393 -0.03682 CSPAD:V2 0 SENS2X1:V1 21 170753 27081 -57 90 0 0 0.09670 0.07407 -0.05526 CSPAD:V2 0 SENS2X1:V1 22 112866 17836 33 180 0 0 0.17101 0.03420 0.03015 CSPAD:V2 0 SENS2X1:V1 23 112786 40718 23 180 0 0 0.06643 0.04341 0.06296 CSPAD:V2 0 SENS2X1:V1 24 68506 57198 39 180 0 0 0.35386 0.00789 0.12881 CSPAD:V2 0 SENS2X1:V1 25 68339 79768 12 180 0 0 0.41233 -0.00921 -0.01368 CSPAD:V2 0 SENS2X1:V1 26 56954 21982 -1 90 0 0 0.18024 -0.02465 -0.01184 CSPAD:V2 0 SENS2X1:V1 27 79744 21974 109 90 0 0 -0.00197 -0.23009 0.08815 CSPAD:V2 0 SENS2X1:V1 28 21800 33409 3 0 0 0 0.24275 -0.05131 -0.01919 CSPAD:V2 0 SENS2X1:V1 29 21768 10476 -3 0 0 0 0.06642 0.08287 -0.02466 CSPAD:V2 0 SENS2X1:V1 30 12690 68430 -61 90 0 0 0.16578 -0.03284 -0.03684 CSPAD:V2 0 SENS2X1:V1 31 35376 68517 0 90 0 0 0.08748 0.05208 0.01579 IP 0 CSPAD:V2 0 0 0 1000000 0 0 0 0.00000 0.00000 0.00000

tjlane commented 7 years ago

@msdubrovin thanks a lot for the description. good to know we can re-use the MTRX element! Very helpful.

@chuckie82 here is what I propose. See if you agree.

  1. The "element name" should be provided by the sensor object, in this case sensor.RayonixMtrx https://github.com/slaclab/psgeom/blob/master/psgeom/sensors.py#L267 it can have a default, and maybe an option to be overridden
  2. Then we do not need to even pass it at line 354 in camera.py, the sensor element will simply know it's name
  3. We should see if we can use @msdubrovin 's advice to generalize the RayonixMtrx object to a Mtrx object that can be used for e.g. PNCCD/andor

Let me know if that works.