]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ITS/MakeITSFullMisAlignment.C
- AliITSInitGeometry.cxx (updated): fgkOldSSDcone changed from kTRUE to
[u/mrichter/AliRoot.git] / ITS / MakeITSFullMisAlignment.C
CommitLineData
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
15void 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}