]>
Commit | Line | Data |
---|---|---|
259b0bd4 | 1 | #if !defined(__CINT__) || defined(__MAKECINT__) |
2 | #include <TError.h> | |
3 | #include <TFile.h> | |
4 | #include <TGeoManager.h> | |
5 | #include <TMath.h> | |
6 | #include <TString.h> | |
7 | #include <TSystem.h> | |
8 | #include "AliCDBPath.h" | |
9 | #include "AliCDBEntry.h" | |
10 | #include "AliCDBManager.h" | |
11 | #include "AliCDBStorage.h" | |
12 | #include "AliGeomManager.h" | |
13 | #include "AliITSMisalignMaker.h" | |
14 | #endif | |
15 | void MakeITSFullMisAlignment() { | |
16 | //======================================================================== | |
17 | // | |
18 | // Macro for ITS full (realistic) misalignment | |
19 | // | |
20 | // Main author: L. Gaudichet | |
21 | // Contact: andrea.dainese@lnl.infn.it | |
22 | // | |
23 | //======================================================================== | |
24 | ||
25 | ||
6fce62af | 26 | const char* macroname = "MakeITSFullMisAlignment.C"; |
259b0bd4 | 27 | |
6fce62af | 28 | // Activate CDB storage and load geometry from CDB |
29 | AliCDBManager* cdb = AliCDBManager::Instance(); | |
30 | if(!cdb->IsDefaultStorageSet()) cdb->SetDefaultStorage("local://$ALICE_ROOT"); | |
31 | cdb->SetRun(0); | |
32 | ||
259b0bd4 | 33 | AliCDBStorage* storage = NULL; |
34 | ||
35 | TString compare("kTRUE"); | |
36 | if(gSystem->Getenv("TOCDB") == compare.Data()){ | |
6fce62af | 37 | TString Storage = gSystem->Getenv("STORAGE"); |
38 | if(!Storage.BeginsWith("local://") && !Storage.BeginsWith("alien://")) { | |
39 | Error(macroname,"STORAGE variable set to %s is not valid. Exiting\n",Storage.Data()); | |
40 | return; | |
41 | } | |
42 | storage = cdb->GetStorage(Storage.Data()); | |
43 | if(!storage){ | |
44 | Error(macroname,"Unable to open storage %s\n",Storage.Data()); | |
45 | return; | |
46 | } | |
47 | AliCDBPath path("GRP","Geometry","Data"); | |
48 | AliCDBEntry *entry = storage->Get(path.GetPath(),cdb->GetRun()); | |
49 | if(!entry) Fatal(macroname,"Could not get the specified CDB entry!"); | |
50 | entry->SetOwner(0); | |
51 | TGeoManager* geom = (TGeoManager*) entry->GetObject(); | |
52 | AliGeomManager::SetGeometry(geom); | |
53 | }else{ | |
259b0bd4 | 54 | AliGeomManager::LoadGeometry("geometry.root"); //load geom from default CDB storage |
6fce62af | 55 | } |
1895a097 | 56 | |
259b0bd4 | 57 | // SETTINGS: |
58 | // - tranformations are defined by the "maximum transformation" | |
59 | // dx,dy,dz,dpsi,dtheta,dphi: then we take a Gaussian with sigma=dx/3 | |
60 | // and we cut it at +- 3*sigma = dx | |
61 | // (the option "unif" allows to sample from a uniform distr.) | |
62 | // - units are cm and deg | |
63 | // - transformations are defined in the local frame of the volume | |
64 | // being misaligned | |
65 | // | |
66 | const Float_t kRadToDeg = 180./TMath::Pi(); | |
67 | ||
1895a097 | 68 | |
259b0bd4 | 69 | //=**************************************** |
70 | // overall ITS misalignment : source - | |
71 | //=**************************************** | |
72 | Float_t its_dx = 0.0000; // ? | |
73 | Float_t its_dy = 0.0000; // ? | |
74 | Float_t its_dz = 0.0000; // ? | |
75 | Float_t its_dpsi = 0.0000; // ? | |
76 | Float_t its_dtheta = 0.0000; // ? | |
77 | Float_t its_dphi = 0.0000; // ? | |
78 | ||
79 | //=**************************************** | |
80 | // misalignment at the level of SPD sectors : source - A.Pepato | |
81 | //=**************************************** | |
82 | Float_t spdsector_dx = 0.0050; // 50 micron (~tangetial, i.e. rphi) | |
83 | Float_t spdsector_dy = 0.0100; // 100 micron (~radial) | |
84 | Float_t spdsector_dz = 0.0100; // 100 micron | |
85 | Float_t spdsector_dpsi = 0.0100/30.*kRadToDeg;; // so as to have 100 micron difference at the two extremes | |
86 | Float_t spdsector_dtheta = 0.0100/30.*kRadToDeg;; // so as to have 100 micron difference at the two extremes | |
87 | Float_t spdsector_dphi = 0.0050/1.5*kRadToDeg;; // so as to have 50 micron difference at the two extremes | |
88 | Bool_t unifspdsector=kTRUE; | |
89 | ||
90 | //=**************************************** | |
91 | // misalignment at the level of SPD half-barrels : source - A.Pepato | |
92 | //=**************************************** | |
93 | Float_t spdhalfbarrel_dx = 0.0200; // 200 micron | |
94 | Float_t spdhalfbarrel_dy = 0.0200; // 200 micron | |
95 | Float_t spdhalfbarrel_dz = 0.0200; // 200 micron | |
96 | Float_t spdhalfbarrel_dpsi = 0.0100/30.*kRadToDeg; // so as to have 100 micron difference at the two extremes | |
97 | Float_t spdhalfbarrel_dtheta = 0.0100/30.*kRadToDeg; // so as to have 100 micron difference at the two extremes | |
98 | Float_t spdhalfbarrel_dphi = 0.0100/7.*kRadToDeg; // so as to have 100 micron difference at the two extremes | |
99 | ||
100 | //=**************************************** | |
101 | // misalignment at the level of SPD barrel : source - A.Pepato | |
102 | //=**************************************** | |
02a75e66 | 103 | Float_t spdbarrel_dx = 0.1000; // 1 mm (very pessimistic) |
104 | Float_t spdbarrel_dy = 0.1000; // 1 mm (very pessimistic) | |
105 | Float_t spdbarrel_dz = 0.1000; // 1 mm (very pessimistic) | |
106 | Float_t spdbarrel_dpsi = 0.0500/30.*kRadToDeg; // so as to have 500 micron difference at the two extremes | |
107 | Float_t spdbarrel_dtheta = 0.0500/30.*kRadToDeg; // so as to have 500 micron difference at the two extremes | |
108 | Float_t spdbarrel_dphi = 0.0500/7.*kRadToDeg; // so as to have 500 micron difference at the two extremes | |
259b0bd4 | 109 | |
110 | ||
111 | //=**************************************** | |
02a75e66 | 112 | // misalignment at the level of SDD and SSD layers: source - B.Giraudo |
259b0bd4 | 113 | //=**************************************** |
02a75e66 | 114 | Float_t sddlayer_dx = 0.0010; // 10 micron |
115 | Float_t sddlayer_dy = 0.0010; // 10 micron | |
116 | Float_t sddlayer_dz = 0.0010; // 10 micron | |
117 | Float_t sddlayer_dpsi = 0.0010/52.*kRadToDeg; // so as to have 10 micron difference at the two extremes | |
118 | Float_t sddlayer_dtheta = 0.0010/52.*kRadToDeg; // so as to have 10 micron difference at the two extremes | |
119 | Float_t sddlayer_dphi = 0.0010/20.*kRadToDeg; // so as to have 10 micron difference at the two extremes | |
120 | ||
121 | Float_t ssdlayer_dx = 0.0010; // 10 micron | |
122 | Float_t ssdlayer_dy = 0.0010; // 10 micron | |
123 | Float_t ssdlayer_dz = 0.0010; // 10 micron | |
124 | Float_t ssdlayer_dpsi = 0.0010/90.*kRadToDeg; // so as to have 10 micron difference at the two extremes | |
125 | Float_t ssdlayer_dtheta = 0.0010/90.*kRadToDeg; // so as to have 10 micron difference at the two extremes | |
126 | Float_t ssdlayer_dphi = 0.0010/40.*kRadToDeg; // so as to have 10 micron difference at the two extremes | |
127 | ||
128 | Float_t sddbarrel_dx = 0.0020; // 20 micron | |
129 | Float_t sddbarrel_dy = 0.0020; // 20 micron | |
130 | Float_t sddbarrel_dz = 0.0020; // 20 micron | |
131 | Float_t sddbarrel_dpsi = 0.0020/52.*kRadToDeg; // so as to have 20 micron difference at the two extremes | |
132 | Float_t sddbarrel_dtheta = 0.0020/52.*kRadToDeg; // so as to have 20 micron difference at the two extremes | |
133 | Float_t sddbarrel_dphi = 0.0020/20.*kRadToDeg; // so as to have 20 micron difference at the two extremes | |
134 | ||
135 | Float_t ssdbarrel_dx = 0.0020; // 20 micron | |
136 | Float_t ssdbarrel_dy = 0.0020; // 20 micron | |
137 | Float_t ssdbarrel_dz = 0.0020; // 20 micron | |
138 | Float_t ssdbarrel_dpsi = 0.0020/90.*kRadToDeg; // so as to have 20 micron difference at the two extremes | |
139 | Float_t ssdbarrel_dtheta = 0.0020/90.*kRadToDeg; // so as to have 20 micron difference at the two extremes | |
140 | Float_t ssdbarrel_dphi = 0.0020/40.*kRadToDeg; // so as to have 20 micron difference at the two extremes | |
259b0bd4 | 141 | |
142 | //=**************************************** | |
143 | // misalignment at the level of half-staves (SPD) : source - S.Moretto | |
144 | // ladders (SDD,SSD) : source - | |
145 | //=**************************************** | |
3b96c7be | 146 | Float_t spdhalfstave_dx = 0.0100; // 100 micron // normal to plane |
147 | Float_t spdhalfstave_dy = 0.0020; // 20 micron | |
259b0bd4 | 148 | Float_t spdhalfstave_dz = 0.0020; // 20 micron |
3b96c7be | 149 | Float_t spdhalfstave_dpsi = 0.0020/7.*kRadToDeg; // so as to have 20 micron difference at the two extremes |
150 | Float_t spdhalfstave_dtheta = 0.0050/7.*kRadToDeg; // so as to have 50 micron difference at the two extremes | |
259b0bd4 | 151 | Float_t spdhalfstave_dphi = 0.0050/0.7*kRadToDeg; // so as to have 50 micron difference at the two extremes |
152 | Bool_t unifspdhalfstave=kTRUE; | |
153 | ||
154 | Float_t sddladder_dx = 0.0005; // 5 micron | |
155 | Float_t sddladder_dy = 0.0005; // 5 micron | |
156 | Float_t sddladder_dz = 0.0005; // 5 micron | |
157 | Float_t sddladder_dpsi = 0.00; // ? | |
158 | Float_t sddladder_dtheta = 0.00; // ? | |
159 | Float_t sddladder_dphi = 0.00; // ? | |
160 | ||
161 | Float_t ssdladder_dx = 0.0005; // 5 micron | |
162 | Float_t ssdladder_dy = 0.0005; // 5 micron | |
163 | Float_t ssdladder_dz = 0.0005; // 5 micron | |
164 | Float_t ssdladder_dpsi = 0.00; // ? | |
165 | Float_t ssdladder_dtheta = 0.00; // ? | |
166 | Float_t ssdladder_dphi = 0.00; // ? | |
167 | ||
168 | ||
169 | //=**************************************** | |
170 | // misalignment at the level of ladders (SPD) : source - R.Santoro | |
171 | // modules (SDD) : source - L.Gaudichet | |
172 | // modules (SSD) : source - | |
173 | //=**************************************** | |
174 | Float_t spdladder_dx = 0.0010; // 10 micron | |
02a75e66 | 175 | Float_t spdladder_dy = 0.0030; // 50 micron |
259b0bd4 | 176 | Float_t spdladder_dz = 0.0010; // 10 micron |
177 | Float_t spdladder_dpsi = 0.0001*kRadToDeg; // 0.1 mrad | |
178 | Float_t spdladder_dtheta = 0.0001*kRadToDeg; // 0.1 mrad | |
179 | Float_t spdladder_dphi = 0.0001*kRadToDeg; // 0.1 mrad | |
180 | ||
181 | Float_t sddmodule_dx = 0.0045; // 45 micron | |
182 | Float_t sddmodule_dy = 0.0045; // 45 micron | |
183 | Float_t sddmodule_dz = 0.0105; // 105 micron | |
184 | Float_t sddmodule_dpsi = 0.00; // ? | |
185 | Float_t sddmodule_dtheta = 0.00; // ? | |
186 | Float_t sddmodule_dphi = 0.00; // ? | |
187 | ||
188 | Float_t ssdmodule_dx = 0.0050; // 50 micron | |
189 | Float_t ssdmodule_dy = 0.0050; // 50 micron | |
190 | Float_t ssdmodule_dz = 0.0050; // 50 micron | |
191 | Float_t ssdmodule_dpsi = 0.00; // ? | |
192 | Float_t ssdmodule_dtheta = 0.00; // ? | |
193 | Float_t ssdmodule_dphi = 0.00; // ? | |
194 | // | |
195 | // END SETTINGS | |
196 | ||
197 | ||
198 | AliITSMisalignMaker alignMaker; | |
199 | ||
200 | //=**************************************** | |
201 | // overall ITS misalignment : | |
202 | //=**************************************** | |
203 | ||
204 | alignMaker.AddAlignObj("ITS",its_dx,its_dy,its_dz,its_dpsi,its_dtheta,its_dphi,kFALSE); | |
1895a097 | 205 | |
259b0bd4 | 206 | |
207 | //=**************************************** | |
208 | // misalignment at the level of SPD barrel, half-barrels, and at the level | |
209 | // of SPD sectors | |
210 | //=**************************************** | |
211 | ||
212 | Double_t vx,vy,vz,vpsi,vtheta,vphi; | |
213 | Double_t vxbarrel,vybarrel,vzbarrel,vpsibarrel,vthetabarrel,vphibarrel; | |
214 | ||
215 | // barrel | |
02a75e66 | 216 | vxbarrel = alignMaker.GaussCut(0,spdbarrel_dx/3,spdbarrel_dx); |
217 | vybarrel = alignMaker.GaussCut(0,spdbarrel_dy/3,spdbarrel_dy); | |
218 | vzbarrel = alignMaker.GaussCut(0,spdbarrel_dz/3,spdbarrel_dz); | |
219 | vpsibarrel = alignMaker.GaussCut(0,spdbarrel_dpsi/3,spdbarrel_dpsi); | |
220 | vthetabarrel = alignMaker.GaussCut(0,spdbarrel_dtheta/3,spdbarrel_dtheta); | |
221 | vphibarrel = alignMaker.GaussCut(0,spdbarrel_dphi/3,spdbarrel_dphi); | |
259b0bd4 | 222 | |
223 | // top half-barrel | |
02a75e66 | 224 | vx = alignMaker.GaussCut(0,spdhalfbarrel_dx/3,spdhalfbarrel_dx); |
225 | vy = alignMaker.GaussCut(0,spdhalfbarrel_dy/3,spdhalfbarrel_dy); | |
226 | vz = alignMaker.GaussCut(0,spdhalfbarrel_dz/3,spdhalfbarrel_dz); | |
227 | vpsi = alignMaker.GaussCut(0,spdhalfbarrel_dpsi/3,spdhalfbarrel_dpsi); | |
228 | vtheta = alignMaker.GaussCut(0,spdhalfbarrel_dtheta/3,spdhalfbarrel_dtheta); | |
229 | vphi = alignMaker.GaussCut(0,spdhalfbarrel_dphi/3,spdhalfbarrel_dphi); | |
259b0bd4 | 230 | |
231 | vx += vxbarrel; | |
232 | vy += vybarrel; | |
233 | vz += vzbarrel; | |
234 | vpsi += vpsibarrel; | |
235 | vtheta += vthetabarrel; | |
236 | vphi += vphibarrel; | |
237 | ||
02a75e66 | 238 | alignMaker.AddSectorAlignObj(1,5,spdsector_dx,spdsector_dy,spdsector_dz, |
259b0bd4 | 239 | spdsector_dpsi,spdsector_dtheta,spdsector_dphi, |
240 | vx,vy,vz,vpsi,vtheta,vphi,unifspdsector); | |
241 | ||
242 | // bottom half-barrel | |
02a75e66 | 243 | vx = alignMaker.GaussCut(0,spdhalfbarrel_dx/3,spdhalfbarrel_dx); |
244 | vy = alignMaker.GaussCut(0,spdhalfbarrel_dy/3,spdhalfbarrel_dy); | |
245 | vz = alignMaker.GaussCut(0,spdhalfbarrel_dz/3,spdhalfbarrel_dz); | |
246 | vpsi = alignMaker.GaussCut(0,spdhalfbarrel_dpsi/3,spdhalfbarrel_dpsi); | |
247 | vtheta = alignMaker.GaussCut(0,spdhalfbarrel_dtheta/3,spdhalfbarrel_dtheta); | |
248 | vphi = alignMaker.GaussCut(0,spdhalfbarrel_dphi/3,spdhalfbarrel_dphi); | |
259b0bd4 | 249 | |
250 | vx += vxbarrel; | |
251 | vy += vybarrel; | |
252 | vz += vzbarrel; | |
253 | vpsi += vpsibarrel; | |
254 | vtheta += vthetabarrel; | |
255 | vphi += vphibarrel; | |
256 | ||
02a75e66 | 257 | alignMaker.AddSectorAlignObj(6,10,spdsector_dx,spdsector_dy,spdsector_dz, |
259b0bd4 | 258 | spdsector_dpsi,spdsector_dtheta,spdsector_dphi, |
259 | vx,vy,vz,vpsi,vtheta,vphi,unifspdsector); | |
260 | ||
261 | ||
02a75e66 | 262 | |
259b0bd4 | 263 | //=**************************************** |
02a75e66 | 264 | // misalignment at the level of half-staves (SPD)/ladders&layers (SDD,SSD) : |
259b0bd4 | 265 | //=**************************************** |
259b0bd4 | 266 | |
02a75e66 | 267 | // SPD |
268 | alignMaker.AddAlignObj(0,-1,spdhalfstave_dx,spdhalfstave_dy,spdhalfstave_dz,spdhalfstave_dpsi,spdhalfstave_dtheta,spdhalfstave_dphi,0,0,0,0,0,0,unifspdhalfstave); // all SPD1 half-staves | |
269 | alignMaker.AddAlignObj(1,-1,spdhalfstave_dx,spdhalfstave_dy,spdhalfstave_dz,spdhalfstave_dpsi,spdhalfstave_dtheta,spdhalfstave_dphi,0,0,0,0,0,0,unifspdhalfstave); // all SPD2 half-staves | |
259b0bd4 | 270 | |
02a75e66 | 271 | // SDD |
272 | // barrel | |
273 | vxbarrel = alignMaker.GetUnif(-sddbarrel_dx,sddbarrel_dx); | |
274 | vybarrel = alignMaker.GetUnif(-sddbarrel_dy,sddbarrel_dy); | |
275 | vzbarrel = alignMaker.GetUnif(-sddbarrel_dz,sddbarrel_dz); | |
276 | vpsibarrel = alignMaker.GetUnif(-sddbarrel_dpsi,sddbarrel_dpsi); | |
277 | vthetabarrel = alignMaker.GetUnif(-sddbarrel_dtheta,sddbarrel_dtheta); | |
278 | vphibarrel = alignMaker.GetUnif(-sddbarrel_dphi,sddbarrel_dphi); | |
279 | ||
280 | // layer SDD1 | |
281 | vx = alignMaker.GetUnif(-sddlayer_dx,sddlayer_dx); | |
282 | vy = alignMaker.GetUnif(-sddlayer_dy,sddlayer_dy); | |
283 | vz = alignMaker.GetUnif(-sddlayer_dz,sddlayer_dz); | |
284 | vpsi = alignMaker.GetUnif(-sddlayer_dpsi,sddlayer_dpsi); | |
285 | vtheta = alignMaker.GetUnif(-sddlayer_dtheta,sddlayer_dtheta); | |
286 | vphi = alignMaker.GetUnif(-sddlayer_dphi,sddlayer_dphi); | |
259b0bd4 | 287 | |
02a75e66 | 288 | vx += vxbarrel; |
289 | vy += vybarrel; | |
290 | vz += vzbarrel; | |
291 | vpsi += vpsibarrel; | |
292 | vtheta += vthetabarrel; | |
293 | vphi += vphibarrel; | |
294 | ||
295 | alignMaker.AddAlignObj(2,-1,sddladder_dx,sddladder_dy,sddladder_dz,sddladder_dpsi,sddladder_dtheta,sddladder_dphi,vx,vy,vz,vpsi,vtheta,vphi,kFALSE); // all SDD1 ladders | |
296 | ||
297 | // layer SDD2 | |
298 | vx = alignMaker.GetUnif(-sddlayer_dx,sddlayer_dx); | |
299 | vy = alignMaker.GetUnif(-sddlayer_dy,sddlayer_dy); | |
300 | vz = alignMaker.GetUnif(-sddlayer_dz,sddlayer_dz); | |
301 | vpsi = alignMaker.GetUnif(-sddlayer_dpsi,sddlayer_dpsi); | |
302 | vtheta = alignMaker.GetUnif(-sddlayer_dtheta,sddlayer_dtheta); | |
303 | vphi = alignMaker.GetUnif(-sddlayer_dphi,sddlayer_dphi); | |
304 | ||
305 | vx += vxbarrel; | |
306 | vy += vybarrel; | |
307 | vz += vzbarrel; | |
308 | vpsi += vpsibarrel; | |
309 | vtheta += vthetabarrel; | |
310 | vphi += vphibarrel; | |
311 | ||
312 | alignMaker.AddAlignObj(3,-1,sddladder_dx,sddladder_dy,sddladder_dz,sddladder_dpsi,sddladder_dtheta,sddladder_dphi,vx,vy,vz,vpsi,vtheta,vphi,kFALSE); // all SDD2 ladders | |
313 | ||
314 | // SSD | |
315 | // barrel | |
316 | vxbarrel = alignMaker.GetUnif(-ssdbarrel_dx,ssdbarrel_dx); | |
317 | vybarrel = alignMaker.GetUnif(-ssdbarrel_dy,ssdbarrel_dy); | |
318 | vzbarrel = alignMaker.GetUnif(-ssdbarrel_dz,ssdbarrel_dz); | |
319 | vpsibarrel = alignMaker.GetUnif(-ssdbarrel_dpsi,ssdbarrel_dpsi); | |
320 | vthetabarrel = alignMaker.GetUnif(-ssdbarrel_dtheta,ssdbarrel_dtheta); | |
321 | vphibarrel = alignMaker.GetUnif(-ssdbarrel_dphi,ssdbarrel_dphi); | |
322 | ||
323 | // layer SSD1 | |
324 | vx = alignMaker.GetUnif(-ssdlayer_dx,ssdlayer_dx); | |
325 | vy = alignMaker.GetUnif(-ssdlayer_dy,ssdlayer_dy); | |
326 | vz = alignMaker.GetUnif(-ssdlayer_dz,ssdlayer_dz); | |
327 | vpsi = alignMaker.GetUnif(-ssdlayer_dpsi,ssdlayer_dpsi); | |
328 | vtheta = alignMaker.GetUnif(-ssdlayer_dtheta,ssdlayer_dtheta); | |
329 | vphi = alignMaker.GetUnif(-ssdlayer_dphi,ssdlayer_dphi); | |
330 | ||
331 | vx += vxbarrel; | |
332 | vy += vybarrel; | |
333 | vz += vzbarrel; | |
334 | vpsi += vpsibarrel; | |
335 | vtheta += vthetabarrel; | |
336 | vphi += vphibarrel; | |
337 | ||
338 | alignMaker.AddAlignObj(4,-1,ssdladder_dx,ssdladder_dy,ssdladder_dz,ssdladder_dpsi,ssdladder_dtheta,ssdladder_dphi,vx,vy,vz,vpsi,vtheta,vphi,kFALSE); // all SSD1 ladders | |
259b0bd4 | 339 | |
02a75e66 | 340 | // layer SSD2 |
341 | vx = alignMaker.GetUnif(-ssdlayer_dx,ssdlayer_dx); | |
342 | vy = alignMaker.GetUnif(-ssdlayer_dy,ssdlayer_dy); | |
343 | vz = alignMaker.GetUnif(-ssdlayer_dz,ssdlayer_dz); | |
344 | vpsi = alignMaker.GetUnif(-ssdlayer_dpsi,ssdlayer_dpsi); | |
345 | vtheta = alignMaker.GetUnif(-ssdlayer_dtheta,ssdlayer_dtheta); | |
346 | vphi = alignMaker.GetUnif(-ssdlayer_dphi,ssdlayer_dphi); | |
259b0bd4 | 347 | |
02a75e66 | 348 | vx += vxbarrel; |
349 | vy += vybarrel; | |
350 | vz += vzbarrel; | |
351 | vpsi += vpsibarrel; | |
352 | vtheta += vthetabarrel; | |
353 | vphi += vphibarrel; | |
259b0bd4 | 354 | |
02a75e66 | 355 | alignMaker.AddAlignObj(5,-1,ssdladder_dx,ssdladder_dy,ssdladder_dz,ssdladder_dpsi,ssdladder_dtheta,ssdladder_dphi,vx,vy,vz,vpsi,vtheta,vphi,kFALSE); // all SSD2 ladders |
259b0bd4 | 356 | |
357 | //=**************************************** | |
02a75e66 | 358 | // misalignment at the level of ladders (SPD)/modules (SDD,SSD) : |
259b0bd4 | 359 | //=**************************************** |
360 | ||
02a75e66 | 361 | alignMaker.AddAlignObj(0,spdladder_dx,spdladder_dy,spdladder_dz,spdladder_dpsi,spdladder_dtheta,spdladder_dphi,kFALSE); // all SPD1 ladders |
362 | alignMaker.AddAlignObj(1,spdladder_dx,spdladder_dy,spdladder_dz,spdladder_dpsi,spdladder_dtheta,spdladder_dphi,kFALSE); // all SPD2 ladders | |
259b0bd4 | 363 | |
02a75e66 | 364 | alignMaker.AddAlignObj(2,sddmodule_dx,sddmodule_dy,sddmodule_dz,sddmodule_dpsi,sddmodule_dtheta,sddmodule_dphi,kFALSE); // all SDD1 modules |
365 | alignMaker.AddAlignObj(3,sddmodule_dx,sddmodule_dy,sddmodule_dz,sddmodule_dpsi,sddmodule_dtheta,sddmodule_dphi,kFALSE); // all SDD2 modules | |
259b0bd4 | 366 | |
02a75e66 | 367 | alignMaker.AddAlignObj(4,ssdmodule_dx,ssdmodule_dy,ssdmodule_dz,ssdmodule_dpsi,ssdmodule_dtheta,ssdmodule_dphi,kFALSE); // all SSD1 modules |
368 | alignMaker.AddAlignObj(5,ssdmodule_dx,ssdmodule_dy,ssdmodule_dz,ssdmodule_dpsi,ssdmodule_dtheta,ssdmodule_dphi,kFALSE); // all SSD2 modules | |
259b0bd4 | 369 | |
370 | ||
371 | ||
372 | if( gSystem->Getenv("TOCDB") != compare.Data() ){ | |
1895a097 | 373 | // save on file |
dfe9c69d | 374 | const char* filename = "ITSfullMisalignment.root"; |
375 | TFile f(filename,"RECREATE"); | |
259b0bd4 | 376 | if(!f.IsOpen()){ |
dfe9c69d | 377 | Error(macroname,"cannot open file for output\n"); |
378 | return; | |
379 | } | |
02a75e66 | 380 | Info(macroname,"Saving alignment objects to the file %s",filename); |
dfe9c69d | 381 | f.cd(); |
259b0bd4 | 382 | f.WriteObject(alignMaker.GetArray(),"ITSAlignObjs","kSingleKey"); |
1895a097 | 383 | f.Close(); |
384 | }else{ | |
385 | // save in CDB storage | |
1895a097 | 386 | AliCDBMetaData *md= new AliCDBMetaData(); |
259b0bd4 | 387 | md->SetResponsible("Andrea Dainese"); |
1895a097 | 388 | md->SetComment("Alignment objects with actual ITS misalignment"); |
5bd470e1 | 389 | md->SetAliRootVersion(gSystem->Getenv("ARVERSION")); |
dfe9c69d | 390 | AliCDBId id("ITS/Align/Data",0,AliCDBRunRange::Infinity()); |
259b0bd4 | 391 | storage->Put(alignMaker.GetArray(),id,md); |
1895a097 | 392 | } |
393 | ||
1895a097 | 394 | |
259b0bd4 | 395 | return; |
02a75e66 | 396 | } |