]>
Commit | Line | Data |
---|---|---|
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 | ||
24 | void 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 | //------------------------------------------------------------------------ | |
41 | void Help() | |
42 | { | |
43 | char *string = | |
306d6073 | 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"; | |
49c37ad8 | 48 | printf(string); |
49 | } | |
50 | ||
51 | //------------------------------------------------------------------------ | |
306d6073 | 52 | void 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 | //------------------------------------------------------------------------ |
96 | void 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 | 158 | void 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 | } |