]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PHOS/macros/AlignmentDB/AliPHOSSetAlignment.C
Alignment object with symbolic volume names are introduced
[u/mrichter/AliRoot.git] / PHOS / macros / AlignmentDB / AliPHOSSetAlignment.C
CommitLineData
49c37ad8 1/* $Id$*/
2
3// Script to create alignment parameters and store them into CDB
a3a8cfad 4// Three sets of alignment parameters can be created:
306d6073 5// 1) Ideal geometry
6// 2) Geometry with disalignments and disorientations
7// 3) Geometry small disalignments and disorientations
49c37ad8 8
9#if !defined(__CINT__)
10#include "TControlBar.h"
11#include "TString.h"
12#include "TRandom.h"
306d6073 13#include "TClonesArray.h"
49c37ad8 14
306d6073 15#include "AliAlignObjAngles.h"
49c37ad8 16#include "AliCDBMetaData.h"
17#include "AliCDBId.h"
18#include "AliCDBEntry.h"
19#include "AliCDBManager.h"
20#include "AliCDBStorage.h"
21#endif
22
23
24void AliPHOSSetAlignment()
25{
26 TControlBar *menu = new TControlBar("vertical","PHOS alignment control");
27 menu->AddButton("Help to run PHOS alignment control","Help()",
28 "Explains how to use PHOS alignment control menus");
a3a8cfad 29
306d6073 30 menu->AddButton("Ideal geometry","IdealAlignment()",
31 "Set ideal PHOS geometry with zero displacement");
32 menu->AddButton("Misaligned geometry","FullMisalignment()",
33 "Set PHOS geometry with large displacement");
34 menu->AddButton("Residual misaligned geometry","ResidualAlignment()",
35 "Set PHOS geometry with small residual displacement");
a3a8cfad 36
49c37ad8 37 menu->Show();
38}
39
40//------------------------------------------------------------------------
41void Help()
42{
43 char *string =
306d6073 44 "\n\n\nSet PHOS alignment parameters and write them into ALICE CDB.
45Press button \"Ideal geometry\" to create PHOS geometry with ideal geometry.
46Press button \"Misaligned geometry\" to create PHOS geometry with fully displaced and disorientated geometry.
47Press button \"Residual misaligned geometry\" to create PHOS geometry with infinitesimal displacement and disorientation\n\n\n";
49c37ad8 48 printf(string);
49}
50
51//------------------------------------------------------------------------
306d6073 52void IdealAlignment()
49c37ad8 53{
306d6073 54 // Create alignment objects for PHOS with ideally aligned geometry,
55 // i.e. with zero displacements and zero disorientations
56
57 // ************************* 1st step ***************
58 // Create TClonesArray of alignment objects for PHOS
59
60 TClonesArray *array = new TClonesArray("AliAlignObjAngles",11);
61 TClonesArray &alobj = *array;
62
63 AliAlignObjAngles a;
64
65 Double_t dx=0., dy=0., dz=0., dpsi=0., dtheta=0., dphi=0.;
66 // null shifts and rotations
67
68 UShort_t iIndex=0;
69 AliAlignObj::ELayerID iLayer = AliAlignObj::kInvalidLayer;
70 UShort_t dvoluid = AliAlignObj::LayerToVolUID(iLayer,iIndex); //dummy volume identity
71
2aebba19 72 TString basePath = "PHOS/Module";
306d6073 73 const Int_t nModules=5;
74
75 for (Int_t iModule = 1; iModule<=nModules; iModule++) {
76 TString newPath = basePath;
77 newPath += iModule;
78 new(alobj[iModule-1]) AliAlignObjAngles(newPath.Data(),
2aebba19 79 dvoluid, dx, dy, dz, dpsi, dtheta, dphi, kTRUE);
49c37ad8 80 }
49c37ad8 81
306d6073 82 // ************************* 2nd step ***************
83 // Make CDB storage and put TClonesArray in
84 //
85 AliCDBManager *CDB = AliCDBManager::Instance();
86 CDB->SetDefaultStorage("local://$ALICE_ROOT");
49c37ad8 87
306d6073 88 AliCDBMetaData *md= new AliCDBMetaData();
89 md->SetResponsible("Yuri Kharlov");
90 md->SetComment("Alignment objects for ideal geometry, i.e. applying them to TGeo has to leave geometry unchanged");
2aebba19 91 AliCDBId id("PHOS/Align/Data",0,999999);
306d6073 92 CDB->Put(array,id, md);
93}
49c37ad8 94
306d6073 95//------------------------------------------------------------------------
96void ResidualAlignment()
97{
98 // Create alignment objects for PHOS with residual alignment,
99 // i.e. with infinitesimal displacement and disorientation
100
101 // ************************* 1st step ***************
102 // Create TClonesArray of alignment objects for PHOS
103
104 TClonesArray *array = new TClonesArray("AliAlignObjAngles",11);
105 TClonesArray &alobj = *array;
106
107 AliAlignObjAngles a;
108
109 Double_t dpsi=0., dtheta=0., dphi=0.;
110 Double_t displacement = 0.2;
111
112 UShort_t iIndex=0;
113 AliAlignObj::ELayerID iLayer = AliAlignObj::kInvalidLayer;
114 UShort_t dvoluid = AliAlignObj::LayerToVolUID(iLayer,iIndex); //dummy volume identity
115
116 // Alignment for 5 PHOS modules
2aebba19 117 new(alobj[0]) AliAlignObjAngles("PHOS/Module1",
118 dvoluid, -0.20, -0.1, +0.0, dpsi, dtheta, 0.2, kTRUE);
119 new(alobj[1]) AliAlignObjAngles("PHOS/Module2",
120 dvoluid, -0.10, +0.0, -0.2, dpsi, dtheta, 0.2, kTRUE);
121 new(alobj[2]) AliAlignObjAngles("PHOS/Module3",
122 dvoluid, 0.05, -0.1, 0.2, dpsi, dtheta, 0.0, kTRUE);
123 new(alobj[3]) AliAlignObjAngles("PHOS/Module4",
124 dvoluid, +0.10, -0.0, -0.1, dpsi, dtheta, 0.1, kTRUE);
125 new(alobj[4]) AliAlignObjAngles("PHOS/Module5",
126 dvoluid, +0.20, -0.1, 0.1, dpsi, dtheta, 0.2, kTRUE);
306d6073 127
128 // Alignment for PHOS cradle
2aebba19 129 new(alobj[5]) AliAlignObjAngles("PHOS/Cradle0",
130 dvoluid, 0., 0., -displacement, dpsi, dtheta, dphi, kTRUE);
131 new(alobj[6]) AliAlignObjAngles("PHOS/Cradle1",
132 dvoluid, 0., 0., +displacement, dpsi, dtheta, dphi, kTRUE);
306d6073 133
134 // Alignment for cradle wheels
2aebba19 135 new(alobj[7]) AliAlignObjAngles("PHOS/Wheel0",
136 dvoluid, 0., 0., -displacement, dpsi, dtheta, dphi, kTRUE);
137 new(alobj[8]) AliAlignObjAngles("PHOS/Wheel1",
138 dvoluid, 0., 0., -displacement, dpsi, dtheta, dphi, kTRUE);
139 new(alobj[9]) AliAlignObjAngles("PHOS/Wheel2",
140 dvoluid, 0., 0., +displacement, dpsi, dtheta, dphi, kTRUE);
141 new(alobj[10]) AliAlignObjAngles("PHOS/Wheel3",
142 dvoluid, 0., 0., +displacement, dpsi, dtheta, dphi, kTRUE);
306d6073 143
144 // ************************* 2nd step ***************
145 // Make CDB storage and put TClonesArray in
146 //
147 AliCDBManager *CDB = AliCDBManager::Instance();
148 CDB->SetDefaultStorage("local://$ALICE_ROOT");
149
150 AliCDBMetaData *md= new AliCDBMetaData();
151 md->SetResponsible("Yuri Kharlov");
152 md->SetComment("Alignment objects for slightly misaligned geometry, i.e. applying them to TGeo has to distirbes geometry very little (resisual misalignment");
2aebba19 153 AliCDBId id("PHOS/Align/Data",1000000,1999999);
306d6073 154 CDB->Put(array,id, md);
49c37ad8 155}
156
157//------------------------------------------------------------------------
306d6073 158void FullMisalignment()
49c37ad8 159{
306d6073 160 // Create alignment objects for PHOS with fully misaligned geometry
161
162 // ************************* 1st step ***************
163 // Create TClonesArray of alignment objects for PHOS
164
165 TClonesArray *array = new TClonesArray("AliAlignObjAngles",11);
166 TClonesArray &alobj = *array;
167
168 AliAlignObjAngles a;
169
170 Double_t dpsi=0., dtheta=0., dphi=0.;
171 Double_t displacement = 10;
172
173 UShort_t iIndex=0;
174 AliAlignObj::ELayerID iLayer = AliAlignObj::kInvalidLayer;
175 UShort_t dvoluid = AliAlignObj::LayerToVolUID(iLayer,iIndex); //dummy volume identity
176
177 // Alignment for 5 PHOS modules
2aebba19 178 new(alobj[0]) AliAlignObjAngles("PHOS/Module1",
179 dvoluid, -20., -10., 0., dpsi, dtheta, 5, kTRUE);
180 new(alobj[1]) AliAlignObjAngles("PHOS/Module2",
181 dvoluid, -10., 0., -10., dpsi, dtheta, 2, kTRUE);
182 new(alobj[2]) AliAlignObjAngles("PHOS/Module3",
183 dvoluid, 5., -10., 10., dpsi, dtheta, 0, kTRUE);
184 new(alobj[3]) AliAlignObjAngles("PHOS/Module4",
185 dvoluid, +10., -0., -10., dpsi, dtheta, 2, kTRUE);
186 new(alobj[4]) AliAlignObjAngles("PHOS/Module5",
187 dvoluid, +20., -10., 0., dpsi, dtheta, 5, kTRUE);
306d6073 188
189 // Alignment for PHOS cradle
2aebba19 190 new(alobj[5]) AliAlignObjAngles("PHOS/Cradle0",
191 dvoluid, 0., 0., -displacement, dpsi, dtheta, dphi, kTRUE);
192 new(alobj[6]) AliAlignObjAngles("PHOS/Cradle1",
193 dvoluid, 0., 0., +displacement, dpsi, dtheta, dphi, kTRUE);
306d6073 194
195 // Alignment for cradle wheels
2aebba19 196 new(alobj[7]) AliAlignObjAngles("PHOS/Wheel0",
197 dvoluid, 0., 0., -displacement, dpsi, dtheta, dphi, kTRUE);
198 new(alobj[8]) AliAlignObjAngles("PHOS/Wheel1",
199 dvoluid, 0., 0., -displacement, dpsi, dtheta, dphi, kTRUE);
200 new(alobj[9]) AliAlignObjAngles("PHOS/Wheel2",
201 dvoluid, 0., 0., +displacement, dpsi, dtheta, dphi, kTRUE);
202 new(alobj[10]) AliAlignObjAngles("PHOS/Wheel3",
203 dvoluid, 0., 0., +displacement, dpsi, dtheta, dphi, kTRUE);
306d6073 204
205 // ************************* 2nd step ***************
206 // Make CDB storage and put TClonesArray in
207 //
208 AliCDBManager *CDB = AliCDBManager::Instance();
209 CDB->SetDefaultStorage("local://$ALICE_ROOT");
49c37ad8 210
306d6073 211 AliCDBMetaData *md= new AliCDBMetaData();
212 md->SetResponsible("Yuri Kharlov");
213 md->SetComment("Alignment objects for fully misaligned geometry, i.e. applying them to TGeo has to distirbes geometry very much");
2aebba19 214 AliCDBId id("PHOS/Align/Data",2000000,2999999);
306d6073 215 CDB->Put(array,id, md);
49c37ad8 216}