diff --git a/_images/experimental-geometry.png b/_images/experimental-geometry.png
index 91364b1..541e037 100644
Binary files a/_images/experimental-geometry.png and b/_images/experimental-geometry.png differ
diff --git a/_sources/installation.rst.txt b/_sources/installation.rst.txt
index 80a8051..0258f9d 100644
--- a/_sources/installation.rst.txt
+++ b/_sources/installation.rst.txt
@@ -40,5 +40,5 @@ User Support
------------
If you are interested in using this package, please contact Ray Osborn
(ROsborn@anl.gov). Please report any bugs as a
-`Github issue `_, with relevant
-tracebacks.
+`Github issue `_, with
+relevant tracebacks.
diff --git a/_sources/introduction.rst.txt b/_sources/introduction.rst.txt
index fe42aed..eaa9d33 100644
--- a/_sources/introduction.rst.txt
+++ b/_sources/introduction.rst.txt
@@ -26,8 +26,33 @@ has been determined.
Experimental Geometry
---------------------
+NXRefine is designed for experiments, in which the sample is placed in a
+monochromatic x-ray beam and rotated continuously about a Φ-axis that is
+approximately perpendicular to the beam. Images are collected on an area
+detector placed in transmission geometry behind the sample. Detectors
+such as the Dectris Pilatus series consist of a set of chips with small
+gaps between them, so sample rotation scans are often repeated three
+times with small detector translations between each one. However, it is
+also possible to fill in the gaps just by adjusting the orientation of
+the Φ-axis itself. NXRefine reduces the data independently for each
+rotation scan before merging them to create a single 3D data volume.
-.. image:: /images/experimental-geometry.png
+.. figure:: /images/experimental-geometry.png
:align: center
:width: 90%
+ Experimental geometry used in NXRefine.
+
+The Φ-axis is approximately perpendicular to the beam. The Φ-axis motor
+is on a χ-circle (not shown), with χ = 0° corresponding to a vertical
+axis of rotation. The figure shows a configuration, in which χ = -90°.
+The orientation of the Φ-axis can also be adjusted in the horizontal
+plane by ω and in the vertical plane by θ.
+
+.. note:: This geometry is equivalent to the four-circle geometry
+ defined by H. You [see Fig. 1 in J. Appl. Cryst. **32**, 614
+ (1999)], with θ coreesponding to η and ω corresponding to μ.
+ At present, NXRefine assumes that the two angles coupled to
+ the detector, δ and ν, are fixed to 0°, with detector
+ misalignments handled by the yaw and pitch angles refined in
+ powder calibrations.
diff --git a/installation.html b/installation.html
index 2beebd3..b198005 100644
--- a/installation.html
+++ b/installation.html
@@ -95,8 +95,8 @@ CCTWGithub issue, with
+relevant tracebacks.
diff --git a/introduction.html b/introduction.html
index 18fb8b1..bd6bcf2 100644
--- a/introduction.html
+++ b/introduction.html
@@ -66,7 +66,35 @@ Introduction
+
NXRefine is designed for experiments, in which the sample is placed in a
+monochromatic x-ray beam and rotated continuously about a Φ-axis that is
+approximately perpendicular to the beam. Images are collected on an area
+detector placed in transmission geometry behind the sample. Detectors
+such as the Dectris Pilatus series consist of a set of chips with small
+gaps between them, so sample rotation scans are often repeated three
+times with small detector translations between each one. However, it is
+also possible to fill in the gaps just by adjusting the orientation of
+the Φ-axis itself. NXRefine reduces the data independently for each
+rotation scan before merging them to create a single 3D data volume.
+
+The Φ-axis is approximately perpendicular to the beam. The Φ-axis motor
+is on a χ-circle (not shown), with χ = 0° corresponding to a vertical
+axis of rotation. The figure shows a configuration, in which χ = -90°.
+The orientation of the Φ-axis can also be adjusted in the horizontal
+plane by ω and in the vertical plane by θ.
+
+
Note
+
This geometry is equivalent to the four-circle geometry
+defined by H. You [see Fig. 1 in J. Appl. Cryst. 32, 614
+(1999)], with θ coreesponding to η and ω corresponding to μ.
+At present, NXRefine assumes that the two angles coupled to
+the detector, δ and ν, are fixed to 0°, with detector
+misalignments handled by the yaw and pitch angles refined in
+powder calibrations.
+
diff --git a/searchindex.js b/searchindex.js
index 5c6942f..1bf94cf 100644
--- a/searchindex.js
+++ b/searchindex.js
@@ -1 +1 @@
-Search.setIndex({docnames:["index","installation","introduction","nxrefine"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":5,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,sphinx:56},filenames:["index.rst","installation.rst","introduction.rst","nxrefine.rst"],objects:{},objnames:{},objtypes:{},terms:{"30":2,"3d":2,"\u03b4pdf":2,"final":2,"function":[0,2],"while":0,For:2,If:[1,2],In:[1,2],It:1,The:[0,1,2],Then:1,These:0,acquisit:[0,2],advanc:0,after:0,all:2,allow:[0,2],an:[0,2],ani:1,anl:1,ar:[0,1,2],area:0,aris:0,arrai:0,autom:0,automat:2,avail:0,averag:[0,2],base:1,batch:0,beam:0,been:2,befor:[0,2],being:0,both:[0,2],bragg:[0,2],bug:1,build:1,c:1,can:[0,1,2],cci:1,cctbx:1,cctbx_doc:1,cctw:0,clone:1,code:1,collect:[0,2],com:1,command:0,complet:[0,2],compris:2,contact:1,contigu:0,continu:0,coordin:[0,1],crystal:[0,1,2],crystallin:[0,2],crystallograph:0,crystallographi:2,current:1,data:[0,2],defin:1,depend:1,deriv:0,detector:0,determin:2,deviat:[0,2],differ:2,diffract:0,diffus:[0,2],dimension:[0,2],directori:1,distribut:[1,2],doc:1,download:1,e:[0,2],either:[0,2],elimin:2,enabl:[0,2],entir:0,exist:0,experiment:[0,1],fashion:0,fast:0,file:1,fill:2,follow:1,from:[0,1,2],futur:1,g:0,gener:[0,2],geometri:0,gigabyt:2,git:1,github:1,goal:0,gov:1,grid:1,gui:[0,1],ha:[1,2],have:0,howev:0,http:1,hundr:2,i:2,ideal:2,imag:0,implement:[0,2],includ:0,index:0,initi:[0,2],input:1,inspect:[0,2],instal:0,instrument:0,intens:[0,2],interatom:2,interest:1,introduct:0,io:1,issu:1,jen:1,job:0,known:2,larg:0,launch:[0,1],lbl:1,librari:0,line:0,list:1,m:1,map:2,matrix:0,matter:0,measur:[0,2],mesh:[0,2],metadata:1,method:2,minut:[0,2],model:2,modul:0,monochromat:0,multipl:2,must:1,nexpi:[0,1],nxrefin:[1,2],often:2,onc:2,onli:2,org:1,orient:[0,2],osborn:1,output:1,packag:1,page:0,pair:2,parametr:2,patterson:2,pdf:2,peak:[0,2],pip:1,pleas:1,plugin:0,possibl:2,probabl:2,process:[1,2],produc:2,psutil:1,punch:2,pyfai:1,pypi:1,python:[0,1],q:2,queue:0,quickli:2,rai:[0,1,2],rapid:0,raw:2,readthedoc:1,reason:2,recent:0,reciproc:[0,2],reduc:0,reduct:[0,2],refin:[0,2],relev:1,repeat:2,report:1,repositori:1,repres:2,requir:0,result:2,retain:2,rosborn:1,rotat:[0,2],run:[0,2],s:2,sampl:[0,2],scan:2,scatter:[0,2],scientist:2,search:0,separ:1,server:1,set:[0,1,2],should:2,singl:[0,2],so:[0,1,2],solv:0,sometim:2,sourc:1,space:[0,2],sqlalchemi:1,stack:0,stage:2,standard:1,structur:[0,2],submit:0,sum:2,support:0,synchrotron:0,temperatur:[0,2],ten:2,thi:[1,2],those:2,three:[0,2],time:2,tool:1,traceback:1,transform:[0,1,2],typic:0,uncompress:2,under:2,upload:1,url:1,us:[0,1,2],user:0,variabl:2,vector:2,volum:0,which:[1,2],within:1,without:1,workflow:[0,1,2],written:[0,1],x:[0,2],you:1},titles:["NXRefine","Installation","Introduction","nxrefine package"],titleterms:{cctw:1,content:3,experiment:2,geometri:2,indic:0,instal:1,introduct:2,librari:1,modul:3,nxrefin:[0,3],packag:3,requir:1,submodul:3,support:1,tabl:0,user:1}})
\ No newline at end of file
+Search.setIndex({docnames:["index","installation","introduction","nxrefine"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":5,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,sphinx:56},filenames:["index.rst","installation.rst","introduction.rst","nxrefine.rst"],objects:{},objnames:{},objtypes:{},terms:{"0":2,"1":2,"1999":2,"30":2,"32":2,"3d":2,"614":2,"90":2,"\u03b4":2,"\u03b4pdf":2,"\u03b7":2,"\u03b8":2,"\u03bc":2,"\u03bd":2,"\u03c6":2,"\u03c7":2,"\u03c9":2,"final":2,"function":[0,2],"while":0,At:2,For:2,If:[1,2],In:[1,2],It:1,The:[0,1,2],Then:1,These:0,about:2,acquisit:[0,2],adjust:2,advanc:0,after:0,all:2,allow:[0,2],also:2,an:[0,2],angl:2,ani:1,anl:1,appl:2,approxim:2,ar:[0,1,2],area:[0,2],aris:0,arrai:0,assum:2,autom:0,automat:2,avail:0,averag:[0,2],axi:2,base:1,batch:0,beam:[0,2],been:2,befor:[0,2],behind:2,being:0,between:2,both:[0,2],bragg:[0,2],bug:1,build:1,c:1,calibr:2,can:[0,1,2],cci:1,cctbx:1,cctbx_doc:1,cctw:0,chip:2,circl:2,clone:1,code:1,collect:[0,2],com:1,command:0,complet:[0,2],compris:2,configur:2,consist:2,contact:1,contigu:0,continu:[0,2],coordin:[0,1],coreespond:2,correspond:2,coupl:2,creat:2,cryst:2,crystal:[0,1,2],crystallin:[0,2],crystallograph:0,crystallographi:2,current:1,data:[0,2],dectri:2,defin:[1,2],depend:1,deriv:0,design:2,detector:[0,2],determin:2,deviat:[0,2],differ:2,diffract:0,diffus:[0,2],dimension:[0,2],directori:1,distribut:[1,2],doc:1,download:1,e:[0,2],each:2,either:[0,2],elimin:2,enabl:[0,2],entir:0,equival:2,exist:0,experi:2,experiment:[0,1],fashion:0,fast:0,fig:2,figur:2,file:1,fill:2,fix:2,follow:1,four:2,from:[0,1,2],futur:1,g:0,gap:2,gener:[0,2],geometri:0,gigabyt:2,git:1,github:1,goal:0,gov:1,grid:1,gui:[0,1],h:2,ha:[1,2],handl:2,have:0,horizont:2,howev:[0,2],http:1,hundr:2,i:2,ideal:2,imag:[0,2],implement:[0,2],includ:0,independ:2,index:0,initi:[0,2],input:1,inspect:[0,2],instal:0,instrument:0,intens:[0,2],interatom:2,interest:1,introduct:0,io:1,issu:1,itself:2,j:2,jen:1,job:0,just:2,known:2,larg:0,launch:[0,1],lbl:1,librari:0,line:0,list:1,m:1,map:2,matrix:0,matter:0,measur:[0,2],merg:2,mesh:[0,2],metadata:1,method:2,minut:[0,2],misalign:2,model:2,modul:0,monochromat:[0,2],motor:2,multipl:2,must:1,nexpi:[0,1],nxrefin:[1,2],often:2,onc:2,one:2,onli:2,org:1,orient:[0,2],osborn:1,output:1,packag:1,page:0,pair:2,parametr:2,patterson:2,pdf:2,peak:[0,2],perpendicular:2,pilatu:2,pip:1,pitch:2,place:2,plane:2,pleas:1,plugin:0,possibl:2,powder:2,present:2,probabl:2,process:[1,2],produc:2,psutil:1,punch:2,pyfai:1,pypi:1,python:[0,1],q:2,queue:0,quickli:2,rai:[0,1,2],rapid:0,raw:2,readthedoc:1,reason:2,recent:0,reciproc:[0,2],reduc:[0,2],reduct:[0,2],refin:[0,2],relev:1,repeat:2,report:1,repositori:1,repres:2,requir:0,result:2,retain:2,rosborn:1,rotat:[0,2],run:[0,2],s:2,sampl:[0,2],scan:2,scatter:[0,2],scientist:2,search:0,see:2,separ:1,seri:2,server:1,set:[0,1,2],should:2,show:2,shown:2,singl:[0,2],small:2,so:[0,1,2],solv:0,sometim:2,sourc:1,space:[0,2],sqlalchemi:1,stack:0,stage:2,standard:1,structur:[0,2],submit:0,sum:2,support:0,synchrotron:0,temperatur:[0,2],ten:2,them:2,thi:[1,2],those:2,three:[0,2],time:2,tool:1,traceback:1,transform:[0,1,2],translat:2,transmiss:2,two:2,typic:0,uncompress:2,under:2,upload:1,url:1,us:[0,1,2],user:0,variabl:2,vector:2,vertic:2,volum:[0,2],which:[1,2],within:1,without:1,workflow:[0,1,2],written:[0,1],x:[0,2],yaw:2,you:[1,2]},titles:["NXRefine","Installation","Introduction","nxrefine package"],titleterms:{cctw:1,content:3,experiment:2,geometri:2,indic:0,instal:1,introduct:2,librari:1,modul:3,nxrefin:[0,3],packag:3,requir:1,submodul:3,support:1,tabl:0,user:1}})
\ No newline at end of file