3 // Script to create alignment parameters and store them into CDB
4 // Three sets of alignment parameters can be created:
6 // 2) Geometry with disalignments and disorientations
7 // 3) Geometry small disalignments and disorientations
10 #include "TControlBar.h"
13 #include "TClonesArray.h"
15 #include "AliAlignObjParams.h"
16 #include "AliCDBMetaData.h"
18 #include "AliCDBEntry.h"
19 #include "AliCDBManager.h"
20 #include "AliCDBStorage.h"
24 void AliPHOSSetAlignment()
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");
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");
40 //------------------------------------------------------------------------
44 "\n\n\nSet PHOS alignment parameters and write them into ALICE CDB.
45 Press button \"Ideal geometry\" to create PHOS geometry with ideal geometry.
46 Press button \"Misaligned geometry\" to create PHOS geometry with fully displaced and disorientated geometry.
47 Press button \"Residual misaligned geometry\" to create PHOS geometry with infinitesimal displacement and disorientation\n\n\n";
51 //------------------------------------------------------------------------
54 // Create alignment objects for PHOS with ideally aligned geometry,
55 // i.e. with zero displacements and zero disorientations
57 // ************************* 1st step ***************
58 // Create TClonesArray of alignment objects for PHOS
60 TClonesArray *array = new TClonesArray("AliAlignObjParams",11);
61 TClonesArray &alobj = *array;
65 Double_t dx=0., dy=0., dz=0., dpsi=0., dtheta=0., dphi=0.;
66 // null shifts and rotations
69 AliGeomManager::ELayerID iLayer = AliGeomManager::kInvalidLayer;
70 UShort_t dvoluid = AliGeomManager::LayerToVolUID(iLayer,iIndex); //dummy volume identity
72 TString basePath = "PHOS/Module";
73 const Int_t nModules=5;
75 for (Int_t iModule = 1; iModule<=nModules; iModule++) {
76 TString newPath = basePath;
78 new(alobj[iModule-1]) AliAlignObjParams(newPath.Data(),
79 dvoluid, dx, dy, dz, dpsi, dtheta, dphi, kTRUE);
82 // ************************* 2nd step ***************
83 // Make CDB storage and put TClonesArray in
85 AliCDBManager *CDB = AliCDBManager::Instance();
86 CDB->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
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");
91 AliCDBId id("PHOS/Align/Data",0,999999);
92 CDB->Put(array,id, md);
95 //------------------------------------------------------------------------
96 void ResidualAlignment()
98 // Create alignment objects for PHOS with residual alignment,
99 // i.e. with infinitesimal displacement and disorientation
101 // ************************* 1st step ***************
102 // Create TClonesArray of alignment objects for PHOS
104 TClonesArray *array = new TClonesArray("AliAlignObjParams",11);
105 TClonesArray &alobj = *array;
109 Double_t dpsi=0., dtheta=0., dphi=0.;
110 Double_t displacement = 0.2;
113 AliGeomManager::ELayerID iLayer = AliGeomManager::kInvalidLayer;
114 UShort_t dvoluid = AliGeomManager::LayerToVolUID(iLayer,iIndex); //dummy volume identity
116 // Alignment for 5 PHOS modules
117 new(alobj[0]) AliAlignObjParams("PHOS/Module1",
118 dvoluid, -0.20, -0.1, +0.0, dpsi, dtheta, 0.2, kTRUE);
119 new(alobj[1]) AliAlignObjParams("PHOS/Module2",
120 dvoluid, -0.10, +0.0, -0.2, dpsi, dtheta, 0.2, kTRUE);
121 new(alobj[2]) AliAlignObjParams("PHOS/Module3",
122 dvoluid, 0.05, -0.1, 0.2, dpsi, dtheta, 0.0, kTRUE);
123 new(alobj[3]) AliAlignObjParams("PHOS/Module4",
124 dvoluid, +0.10, -0.0, -0.1, dpsi, dtheta, 0.1, kTRUE);
125 new(alobj[4]) AliAlignObjParams("PHOS/Module5",
126 dvoluid, +0.20, -0.1, 0.1, dpsi, dtheta, 0.2, kTRUE);
128 // Alignment for PHOS cradle
129 new(alobj[5]) AliAlignObjParams("PHOS/Cradle0",
130 dvoluid, 0., 0., -displacement, dpsi, dtheta, dphi, kTRUE);
131 new(alobj[6]) AliAlignObjParams("PHOS/Cradle1",
132 dvoluid, 0., 0., +displacement, dpsi, dtheta, dphi, kTRUE);
134 // Alignment for cradle wheels
135 new(alobj[7]) AliAlignObjParams("PHOS/Wheel0",
136 dvoluid, 0., 0., -displacement, dpsi, dtheta, dphi, kTRUE);
137 new(alobj[8]) AliAlignObjParams("PHOS/Wheel1",
138 dvoluid, 0., 0., -displacement, dpsi, dtheta, dphi, kTRUE);
139 new(alobj[9]) AliAlignObjParams("PHOS/Wheel2",
140 dvoluid, 0., 0., +displacement, dpsi, dtheta, dphi, kTRUE);
141 new(alobj[10]) AliAlignObjParams("PHOS/Wheel3",
142 dvoluid, 0., 0., +displacement, dpsi, dtheta, dphi, kTRUE);
144 // ************************* 2nd step ***************
145 // Make CDB storage and put TClonesArray in
147 AliCDBManager *CDB = AliCDBManager::Instance();
148 CDB->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
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");
153 AliCDBId id("PHOS/Align/Data",1000000,1999999);
154 CDB->Put(array,id, md);
157 //------------------------------------------------------------------------
158 void FullMisalignment()
160 // Create alignment objects for PHOS with fully misaligned geometry
162 // ************************* 1st step ***************
163 // Create TClonesArray of alignment objects for PHOS
165 TClonesArray *array = new TClonesArray("AliAlignObjParams",11);
166 TClonesArray &alobj = *array;
170 Double_t dpsi=0., dtheta=0., dphi=0.;
171 Double_t displacement = 10;
174 AliGeomManager::ELayerID iLayer = AliGeomManager::kInvalidLayer;
175 UShort_t dvoluid = AliGeomManager::LayerToVolUID(iLayer,iIndex); //dummy volume identity
177 // Alignment for 5 PHOS modules
178 new(alobj[0]) AliAlignObjParams("PHOS/Module1",
179 dvoluid, -20., -10., 0., dpsi, dtheta, 5, kTRUE);
180 new(alobj[1]) AliAlignObjParams("PHOS/Module2",
181 dvoluid, -10., 0., -10., dpsi, dtheta, 2, kTRUE);
182 new(alobj[2]) AliAlignObjParams("PHOS/Module3",
183 dvoluid, 5., -10., 10., dpsi, dtheta, 0, kTRUE);
184 new(alobj[3]) AliAlignObjParams("PHOS/Module4",
185 dvoluid, +10., -0., -10., dpsi, dtheta, 2, kTRUE);
186 new(alobj[4]) AliAlignObjParams("PHOS/Module5",
187 dvoluid, +20., -10., 0., dpsi, dtheta, 5, kTRUE);
189 // Alignment for PHOS cradle
190 new(alobj[5]) AliAlignObjParams("PHOS/Cradle0",
191 dvoluid, 0., 0., -displacement, dpsi, dtheta, dphi, kTRUE);
192 new(alobj[6]) AliAlignObjParams("PHOS/Cradle1",
193 dvoluid, 0., 0., +displacement, dpsi, dtheta, dphi, kTRUE);
195 // Alignment for cradle wheels
196 new(alobj[7]) AliAlignObjParams("PHOS/Wheel0",
197 dvoluid, 0., 0., -displacement, dpsi, dtheta, dphi, kTRUE);
198 new(alobj[8]) AliAlignObjParams("PHOS/Wheel1",
199 dvoluid, 0., 0., -displacement, dpsi, dtheta, dphi, kTRUE);
200 new(alobj[9]) AliAlignObjParams("PHOS/Wheel2",
201 dvoluid, 0., 0., +displacement, dpsi, dtheta, dphi, kTRUE);
202 new(alobj[10]) AliAlignObjParams("PHOS/Wheel3",
203 dvoluid, 0., 0., +displacement, dpsi, dtheta, dphi, kTRUE);
205 // ************************* 2nd step ***************
206 // Make CDB storage and put TClonesArray in
208 AliCDBManager *CDB = AliCDBManager::Instance();
209 CDB->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
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");
214 AliCDBId id("PHOS/Align/Data",2000000,2999999);
215 CDB->Put(array,id, md);