Alignment procedure for run 9 ff reproduction.
Using a request of ~4mil events(1.5M vpdb) and macros provided by Xin Dong+Patrick Huck, I produced ntuples using a doMuDstEvents.C (attached) and StRoot/StTofPoll/StBTofNtupleMaker under SL12a. Edited analysis.cxx for the number of ntuples to process(line: int nruns=# of ntuples) and compiled the program analysis(the files+makefile attached) to create the root file to be used for finding the alignment parameters. The command is ./analysis directory_containing_the_ntuples
This created a root file that should be renammed to align.root. align.root is run over with getX0.C(responsible for the z and x offsets) and getY0.C(responsible for the y offsets) macros inside of ROOT . These macros produce the postscripts xLocalFit.ps and yLocalFit.ps under fig/ (need to create the directory first), xFitPar.root, xOffset.dat, yFitPar.root, and yOffset.dat
The postscripts are attaced below to show the fits to determine the offsets.
xLocalFit.ps ' first set of plots(Tray_#_A_X) show the zlocal value at that module angle (X) for that tray #--there are 7 different module angles and the 7th different angle contains multiple modules. Here is an example for Tray 40 and the 1st module group:
The next set of plots(Tray_#) shows the angles for the modules of each tray on the horizontal axis and their respective z offset on the vertical axis. It is fit with [0]*sin(x*pi/180)+[1] where [0] will be our x offset after the fit and [1] will be the z offset after the fit. Example of Tray 40:
Then there is the zlocal offset for each tray plot which contains z offsets before-black and after-clear the angle fit. As seen here:
The last plot is x local offset for each tray and here it is:
yLocalFit.ps' first set of plots (Tray_#) show the ylocal values for each tray and the last plot is the y local offset for each tray.
To generate the proper alignment file for database, I used genOffset.C. Paths to .dat offsets created from getX0 and getY0 are inside the macro.
To check the offsets and correct the alignment a bit more. I went through a couple more iterations.
To do this, one can use the same doMuDstEvents.C file with a couple changes. Set match maker's setidealGeometry to kFALSE(if kTRUE, the match maker will ignore the alignment file and use the ideal geometry) and use setAlignFileName("...geomAlign.txt"). geomAlign.txt is generated by genOffset.C. Then with these new ntuples, you can repeat the procedure for finding the offset to the new alignment. In the end, there were four iterations completed. In order to incorporate multiple iterations, one can just add the corrections on top of each other in genOffset.C to create a new geomAlign.txt.
the database timestamp for this new alignment is set to "2009-02-01 00:00:01"
Requested run numbers:
10167059
10169021
10173013
10174027
10177057
10179040
- sbutter's blog
- Login or register to post comments