Using symbolic names instead of volume paths (Raffaele)
[u/mrichter/AliRoot.git] / TPC / MakeTPCResMisAlignment.C
CommitLineData
1895a097 1void MakeTPCResMisAlignment(){
2 // Create TClonesArray of residual misalignment objects for TPC
3 //
4 if(!gGeoManager) TGeoManager::Import("geometry.root");
5 // needed for the constructors with local coordinates not to fail
6
7 TClonesArray *array = new TClonesArray("AliAlignObjAngles",100);
8 TClonesArray &alobj = *array;
9
10 TRandom *rnd = new TRandom(4357);
11 AliAlignObjAngles o;
12 Double_t dx, dy, dz, dpsi, dtheta, dphi;
13 Int_t j = 0;
14
15 // RS = local
16 // sigma translation = 0.1mm
17 // sigma rotation = 1mrad
18 Float_t sigmatr=0.01;
19 Float_t sigmarot = 0.06;
20 for (Int_t iLayer = AliAlignObj::kTPC1; iLayer <= AliAlignObj::kTPC2; iLayer++) {
21 for (Int_t iModule = 0; iModule < AliAlignObj::LayerSize(iLayer); iModule++) {
22
23 dx = (rnd->Uniform()-0.5)*sigmatr;
24 dy = (rnd->Uniform()-0.5)*sigmatr;
25 dz = (rnd->Uniform()-0.5)*sigmatr;
26 dpsi = (rnd->Uniform()-0.5)*sigmarot;
27 dtheta = (rnd->Uniform()-0.5)*sigmarot;
28 dphi = (rnd->Uniform()-0.5)*sigmarot;
29
30 UShort_t volid = AliAlignObj::LayerToVolUID(iLayer,iModule);
7e154d52 31 const char *symname = AliAlignObj::SymName(volid);
32 new(alobj[j]) AliAlignObjAngles(symname, volid, dx, dy, dz, dpsi, dtheta, dphi, kFALSE);
1895a097 33 j++;
34 }
35 }
36
37
38 if(!gSystem->Getenv("$TOCDB")){
39 // save on file
40 TFile f("TPCresidualMisalignment.root","RECREATE");
41 if(!f) cerr<<"cannot open file for output\n";
42 f.cd();
43 f.WriteObject(array,"TPCAlignObjs","kSingleKey");
44 f.Close();
45 }else{
46 // save in CDB storage
47 const char* Storage = gSystem->Getenv("$STORAGE");
48 AliCDBManager* cdb = AliCDBManager::Instance();
49 AliCDBStorage* storage = cdb->GetStorage(Storage);
50 AliCDBMetaData* md = new AliCDBMetaData();
51 md->SetResponsible("Marian Ivanov");
52 md->SetComment("Residual misalignment for TPC, sigmatr=0.01 and sigmarot=0.6 in the local RS");
53 md->SetAliRootVersion(gSystem->Getenv("$ARVERSION"));
54 AliCDBId id("TPC/Align/Data",0,9999999);
55 storage->Put(array,id,md);
56 }
57
58 array->Delete();
59
60}
61