5 \page README_geometry Geometry
8 \section geometry_s1 General Information about MUON Geometry
10 Our geometry is described in the geometry builder classes.
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)
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).
22 The code can also generate the special geometry
23 data files, transform.dat and svmap.dat, via the macro
24 MUONGenerateGeometryData.C (see more in the chapter \ref geometry_s5 below).
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.
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.
33 Misalignments are in the official AliRoot code applied to the geometry.root
37 \section geometry_s2 How to check the geometry with the Root geometrical modeler
39 \see ftp://root.cern.ch/root/doc/chapter16.pdf
40 \see http://agenda.cern.ch/fullAgenda.php?ida=a05212
43 AliMpCDB::LoadMpSegmentation2();
44 gAlice->Init("$ALICE_ROOT/MUON/Config.C");
45 gGeoManager->GetMasterVolume()->Draw();
48 A helper macro for adding and removing volumes in the
49 scene, MUONGeometryViewingHelper.C is also available.
52 \section geometry_s3 How to check the overlaps with the Root geometrical modeler
54 \see ftp://root.cern.ch/root/doc/chapter16.pdf
55 \see http://agenda.cern.ch/fullAgenda.php?ida=a05212
58 AliMpCDB::LoadMpSegmentation2();
59 gAlice->Init("$ALICE_ROOT/MUON/Config.C");
60 gGeoManager->CheckOverlaps();
61 gGeoManager->PrintOverlaps();
64 More extensive, but also more time consuming checking,
65 can be performed in this way:
67 gGeoManager->CheckGeometryFull(1000000,0,0,0,"o"); >& check_full.out
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
75 gGeoManager->FindVolumeFast("MyVolume")->CheckOverlaps(0.01, "s");
76 gGeoManager->PrintOverlaps(); >& overlaps_MyVolume.txt
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
87 \section geometry_s4 Macro MUONGenerateGeometryData.C
89 Macro for generating the geometry data files:
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
98 - MUON/data/transform.dat file contains the transformations
99 data (translation and rotation) for all alignable objects
100 (modules & detection elements)
102 To be run from aliroot:
104 .x MUONGenerateGeometryData.C
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.
112 \section geometry_s5 Macros to generate Mis-alignment data
114 Macros for generating the geometry mis-alignment data:
115 - MakeMUONFullMisAlignment.C
116 - MakeMUONResMisAlignment.C
117 - MakeMUONZeroMisAlignment.C
119 To be run from aliroot:
121 .x MakeMUONFullMisAlignment.C
126 If the environment variable TOCDB is not set to "kTRUE",
127 the misalignment data are generated in a local file:
128 MUONfullMisalignment.root, etc.
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
140 The mis-alignment data can be then retrieved from a file
141 and applied to ideal geometry in this way.
144 TGeoManager::Import("geometry.root");
145 TFile f("MUONfullMisalignment.root");
146 TClonesArray* misAlignObjsArray = (TClonesArray*)f.Get("MUONAlignObjs");
147 AliGeomManager::ApplyAlignObjsToGeom(*misAlignObjsArray);
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.
153 \section geometry_s6 How to check the alignment software
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
162 To run you need to type:
164 $ALICE_ROOT/MUON/AlirootRun_MUONtestAlign.sh
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.
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
179 \section geometry_s7 Macro MUONCheckMisAligner.C
181 The macro MUONCheckMisAligner.C performs the misalignment on an existing muon
182 arm geometry based on the standard definition of the detector elements.
184 To be run from aliroot:
186 AliMpCDB::LoadMpSegmentation2();
187 .x MUONCheckMisAligner.C
190 It uses AliMUONGeometryAligner :
191 - Creates a new AliMUONGeometryTransformer and AliMUONGeometryAligner
192 - Loads the geometry from the specified geometry file (default is geometry.root)
193 - Creates a second AliMUONGeometryTransformer by misaligning the existing
194 one using AliMUONAligner::MisAlign
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)
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
208 Default behavior generates a "residual" misalignment using gaussian
209 distributions. Uniform distributions can still be used, see
210 AliMUONGeometryAligner.
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
221 \section geometry_s8 Geometry data files format
223 \subsection geometry_s8_sub1 transform.dat
225 List of transformations for chambers geometry modules and detection
228 KEY ID [nofDE] pos: posX posY posZ rot: theX phiX theY phiY theZ phiZ
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
236 \subsection geometry_s8_sub2 svmap.dat
238 Map of sensitive volumes to detction element Ids;
242 KEY volpath detElemId
245 volpath = volume path in format /volname1_copyNo1/volname2_copyNo2/...
246 detElemId = detection element Id
250 This chapter is defined in the READMEgeometry.txt file.