]>
Commit | Line | Data |
---|---|---|
518eb852 | 1 | // $Id$ |
b453c965 | 2 | |
518eb852 | 3 | /*! |
b453c965 | 4 | |
91509ec6 | 5 | \page README_geometry Geometry |
518eb852 | 6 | |
7 | ||
8 | \section geometry_s1 General Information about MUON Geometry | |
1ecf5e57 | 9 | |
10 | Our geometry is described in the geometry builder classes. | |
91509ec6 | 11 | The main geometrical constants are set in the class AliMUONConstants. |
12 | The geometry is built from the code during running simulation | |
13 | and it is automatically exported in a geometry.root file | |
14 | via the framework. Then aliroot takes this geometry.root file as | |
15 | a unique geometrical info of our apparatus during the generation | |
16 | and the reconstruction and analysis (if needed) | |
17 | ||
9f9989b1 | 18 | The macros MakeMUONZeroMisAlignment.C, MakeMUONResMisAlignment.C |
19 | and MakeMUONFullMisAlignment.C generate the mis-alignment | |
20 | data (see more in the chapter \ref geometry_s4 below). | |
21 | ||
91509ec6 | 22 | The code can also generate the special geometry |
23 | data files, transform.dat and svmap.dat, via the macro | |
9f9989b1 | 24 | MUONGenerateGeometryData.C (see more in the chapter \ref geometry_s5 below). |
91509ec6 | 25 | The svmap.dat data file have to be recreated each time the code |
26 | of the geometry is modified. The info (well updated) in this file | |
27 | is needed during the simulation. | |
1ecf5e57 | 28 | We can also decide to use the transform.dat file as input of our |
29 | geometry. This allows for changing the position of our detection elements | |
30 | and/or half-planes (half-chambers in code jargon) without modifying | |
31 | and recompiling the code. | |
32 | ||
1ecf5e57 | 33 | Misalignments are in the official AliRoot code applied to the geometry.root |
34 | file. | |
35 | ||
b453c965 | 36 | |
91509ec6 | 37 | \section geometry_s2 How to check the geometry with the Root geometrical modeler |
1ecf5e57 | 38 | |
518eb852 | 39 | \see ftp://root.cern.ch/root/doc/chapter16.pdf |
40 | \see http://agenda.cern.ch/fullAgenda.php?ida=a05212 | |
1ecf5e57 | 41 | |
518eb852 | 42 | <pre> |
9f9989b1 | 43 | AliMpCDB::LoadMpSegmentation2(); |
1ecf5e57 | 44 | gAlice->Init("$ALICE_ROOT/MUON/Config.C"); |
45 | gGeoManager->GetMasterVolume()->Draw(); | |
518eb852 | 46 | </pre> |
47 | ||
fce55b81 | 48 | A helper macro for adding and removing volumes in the |
49 | scene, MUONGeometryViewingHelper.C is also available. | |
50 | ||
51 | ||
91509ec6 | 52 | \section geometry_s3 How to check the overlaps with the Root geometrical modeler |
1ecf5e57 | 53 | |
518eb852 | 54 | \see ftp://root.cern.ch/root/doc/chapter16.pdf |
55 | \see http://agenda.cern.ch/fullAgenda.php?ida=a05212 | |
1ecf5e57 | 56 | |
518eb852 | 57 | <pre> |
9f9989b1 | 58 | AliMpCDB::LoadMpSegmentation2(); |
1ecf5e57 | 59 | gAlice->Init("$ALICE_ROOT/MUON/Config.C"); |
d10c5d17 | 60 | gGeoManager->CheckOverlaps(0.001); |
1ecf5e57 | 61 | gGeoManager->PrintOverlaps(); |
518eb852 | 62 | </pre> |
1ecf5e57 | 63 | |
9f9989b1 | 64 | More extensive, but also more time consuming checking, |
65 | can be performed in this way: | |
66 | <pre> | |
fce55b81 | 67 | gGeoManager->CheckGeometryFull(1000000,0,0,0,"o"); >& check_full.out |
9f9989b1 | 68 | </pre> |
fce55b81 | 69 | Then, you will find in the output file \em check_full.out the list of |
70 | volumes where any overlaps have been detected. As TGeoManager | |
71 | does not remember all overlaps found during checking, | |
72 | in order to investigate them, one has to re-run the checking for | |
73 | each listed volume: | |
74 | <pre> | |
d10c5d17 | 75 | gGeoManager->FindVolumeFast("MyVolume")->CheckOverlaps(0.001, "s"); |
fce55b81 | 76 | gGeoManager->PrintOverlaps(); >& overlaps_MyVolume.txt |
77 | </pre> | |
78 | At this stage the overlaps found for the selected volume can be also browsed | |
79 | with TBrowser. Sometimes it happens that the reported overlapping | |
80 | volumes are assemblies and nothing is visualized on the scene | |
81 | when clicking on the overlap icon in the browser. | |
82 | In this case you can use the function setDaughtersVisibility() | |
83 | from the MUONGeometryViewingHelper.C macro, which propagates the | |
84 | visibility setting through all assembly levels up to the real | |
85 | volumes. | |
1ecf5e57 | 86 | |
518eb852 | 87 | \section geometry_s4 Macro MUONGenerateGeometryData.C |
1ecf5e57 | 88 | |
91509ec6 | 89 | Macro for generating the geometry data files: |
1ecf5e57 | 90 | - MUON/data/svmap.dat file contains all the information to link |
91 | each geant volume (it can be extended to other virtual MC) with | |
92 | a detection element. The point here is that a given detection | |
93 | element, i.e. a slat chamber can consist of more geant volumes. | |
94 | the correspondence is then defined in an input file. | |
95 | Each time there is a change in the definition of MC geometry, these | |
96 | input files must be re-generated via the macro | |
97 | MUONGenerateGeometryData.C | |
91509ec6 | 98 | - MUON/data/transform.dat file contains the transformations |
99 | data (translation and rotation) for all alignable objects | |
100 | (modules & detection elements) | |
1ecf5e57 | 101 | |
102 | To be run from aliroot: | |
518eb852 | 103 | <pre> |
1ecf5e57 | 104 | .x MUONGenerateGeometryData.C |
518eb852 | 105 | </pre> |
1ecf5e57 | 106 | |
107 | The generated files do not replace the existing ones | |
108 | but have different names (with extension ".out"). | |
109 | Replacement with new files has to be done manually. | |
110 | ||
111 | ||
518eb852 | 112 | \section geometry_s5 Macros to generate Mis-alignment data |
1ecf5e57 | 113 | |
518eb852 | 114 | Macros for generating the geometry mis-alignment data: |
115 | - MakeMUONFullMisAlignment.C | |
116 | - MakeMUONResMisAlignment.C | |
117 | - MakeMUONZeroMisAlignment.C | |
1ecf5e57 | 118 | |
119 | To be run from aliroot: | |
518eb852 | 120 | <pre> |
91509ec6 | 121 | .x MakeMUONFullMisAlignment.C |
518eb852 | 122 | </pre> |
1ecf5e57 | 123 | |
91509ec6 | 124 | etc. |
125 | ||
1ecf5e57 | 126 | If the environment variable TOCDB is not set to "kTRUE", |
127 | the misalignment data are generated in a local file: | |
9f9989b1 | 128 | MUONfullMisalignment.root, etc. |
1ecf5e57 | 129 | |
130 | If the data are stored in CDB, the storage can be specified in | |
131 | the environment variable STORAGE. The misalignment data are then | |
132 | generated in the CDB folder (defaults are ResMisAlignCDB and FullMisAlignCDB | |
133 | in the working directory). Inside the local CDB the path for the | |
134 | alignment data is (and must be) "MUON/Align/Data/". | |
135 | Residual misalignment: Default is our current estimate of | |
136 | misalignment after all our alignment procedure has been applied. | |
137 | Full misalignment: Default is our current estimate of initial | |
138 | misalignment. | |
139 | ||
9f9989b1 | 140 | The mis-alignment data can be then retrieved from a file |
141 | and applied to ideal geometry in this way. | |
142 | ||
143 | <pre> | |
144 | TGeoManager::Import("geometry.root"); | |
145 | TFile f("MUONfullMisalignment.root"); | |
146 | TClonesArray* misAlignObjsArray = (TClonesArray*)f.Get("MUONAlignObjs"); | |
147 | AliGeomManager::ApplyAlignObjsToGeom(*misAlignObjsArray); | |
148 | </pre> | |
149 | ||
150 | Mis-aligned geometry can be then inspected in the same | |
151 | way as described in the chapters \ref geometry_s2 and \ref geometry_s3. | |
518eb852 | 152 | |
153 | \section geometry_s6 How to check the alignment software | |
1ecf5e57 | 154 | |
155 | The script AlirootRun_MUONtestAlign.sh allows you to check the software for | |
156 | the alignment with physics tracks. The script will: | |
157 | - Generate a misaligned geometry in a local CDB (default FullMisAlignCDB) | |
158 | - Simulate 1000 events using previously misaligned geometry | |
159 | - Reconstruct the events using perfect geometry | |
160 | - Run the alignment code over the above events using MUONAlignment.C | |
161 | ||
162 | To run you need to type: | |
518eb852 | 163 | <pre> |
1ecf5e57 | 164 | $ALICE_ROOT/MUON/AlirootRun_MUONtestAlign.sh |
518eb852 | 165 | </pre> |
1ecf5e57 | 166 | |
167 | The results of the test are saved in test_align/ directory. The file measShifts.root | |
168 | contains useful graphs for studying the alignment performances. A local CDB | |
169 | containing the realigned geometry is also created (default is ReAlignCDB). The | |
170 | file $ALICE_ROOT/MUON/data/transform2ReAlign.dat contains the | |
171 | transformations describing the realigned geometry to be compared with the | |
172 | used misaligned geometry $ALICE_ROOT/MUON/data/transform2.dat. | |
173 | ||
174 | IMPORTANT NOTE: For a useful test of the alignment performances, the | |
175 | order of 100 000 tracks is needed, it is then advisable to generate and | |
176 | reconstruct enough events separately and run MUONAlignment.C providing a file list | |
177 | afterwards. | |
518eb852 | 178 | |
701d0777 | 179 | \section geometry_s7 Macro MUONCheckMisAligner.C |
180 | ||
181 | The macro MUONCheckMisAligner.C performs the misalignment on an existing muon | |
182 | arm geometry based on the standard definition of the detector elements. | |
183 | ||
1ba08db3 | 184 | To be run from aliroot: |
185 | <pre> | |
186 | AliMpCDB::LoadMpSegmentation2(); | |
187 | .x MUONCheckMisAligner.C | |
188 | </pre> | |
189 | ||
701d0777 | 190 | It uses AliMUONGeometryAligner : |
91509ec6 | 191 | - Creates a new AliMUONGeometryTransformer and AliMUONGeometryAligner |
1ba08db3 | 192 | - Loads the geometry from the specified geometry file (default is geometry.root) |
91509ec6 | 193 | - Creates a second AliMUONGeometryTransformer by misaligning the existing |
701d0777 | 194 | one using AliMUONAligner::MisAlign |
195 | ||
196 | User has to specify the magnitude of the alignments, in the Cartesian | |
197 | co-ordiantes (which are used to apply translation misalignments) and in the | |
198 | spherical co-ordinates (which are used to apply angular displacements) | |
199 | ||
200 | User can also set misalignment ranges by hand using the methods : | |
201 | SetMaxCartMisAlig, SetMaxAngMisAlig, SetXYAngMisAligFactor | |
202 | (last method takes account of the fact that the misalingment is greatest in | |
203 | the XY plane, since the detection elements are fixed to a support structure | |
204 | in this plane. Misalignments in the XZ and YZ plane will be very small | |
205 | compared to those in the XY plane, which are small already - of the order | |
206 | of microns) | |
207 | ||
208 | Default behavior generates a "residual" misalignment using gaussian | |
209 | distributions. Uniform distributions can still be used, see | |
210 | AliMUONGeometryAligner. | |
211 | ||
212 | User can also generate module misalignments using SetModuleCartMisAlig | |
213 | and SetModuleAngMisAlig | |
214 | Note : If the detection elements are allowed to be misaligned in all | |
215 | directions, this has consequences for the alignment algorithm, which | |
216 | needs to know the number of free parameters. Eric only allowed 3 : | |
217 | x,y,theta_xy, but in principle z and the other two angles are alignable | |
218 | as well. | |
219 | ||
220 | ||
91509ec6 | 221 | \section geometry_s8 Geometry data files format |
518eb852 | 222 | |
701d0777 | 223 | \subsection geometry_s8_sub1 transform.dat |
518eb852 | 224 | |
225 | List of transformations for chambers geometry modules and detection | |
226 | elements; in format: | |
227 | <pre> | |
228 | KEY ID [nofDE] pos: posX posY posZ rot: theX phiX theY phiY theZ phiZ | |
229 | ||
230 | where KEY = CH or DE | |
231 | ID = chamberId or detElemId | |
232 | pos: posX posY posZ = position in cm | |
233 | rot: theX phiX theY phiY theZ phiZ = rotation angles as in Geant3 in deg | |
234 | </pre> | |
235 | ||
701d0777 | 236 | \subsection geometry_s8_sub2 svmap.dat |
518eb852 | 237 | |
238 | Map of sensitive volumes to detction element Ids; | |
239 | in format: | |
240 | ||
241 | <pre> | |
242 | KEY volpath detElemId | |
243 | ||
244 | where KEY = SV | |
245 | volpath = volume path in format /volname1_copyNo1/volname2_copyNo2/... | |
246 | detElemId = detection element Id | |
247 | </pre> | |
248 | ||
249 | ||
91509ec6 | 250 | This chapter is defined in the READMEgeometry.txt file. |
251 | ||
518eb852 | 252 | */ |