1 void MakeTPCFullMisAlignment(){
2 // Create TClonesArray of full misalignment objects for TPC
4 if(!gGeoManager) TGeoManager::Import("geometry.root");
5 // needed for the constructors with local coordinates not to fail
7 TClonesArray *array = new TClonesArray("AliAlignObjAngles",100);
8 TClonesArray &alobj = *array;
10 TRandom *rnd = new TRandom(4357);
13 Double_t dx, dy, dz, dpsi, dtheta, dphi;
16 // sigma translation = 0.1 mm
17 // sigma rotation = 0.1 mrad
19 Float_t sigmarot = 0.006;
21 for (Int_t iLayer = AliAlignObj::kTPC1; iLayer <= AliAlignObj::kTPC2; iLayer++) {
22 for (Int_t iModule = 0; iModule < AliAlignObj::LayerSize(iLayer); iModule++) {
24 dx = (rnd->Uniform()-0.5)*sigmatr;
25 dy = (rnd->Uniform()-0.5)*sigmatr;
26 dz = (rnd->Uniform()-0.5)*sigmatr;
27 dpsi = (rnd->Uniform()-0.5)*sigmarot;
28 dtheta = (rnd->Uniform()-0.5)*sigmarot;
29 dphi = (rnd->Uniform()-0.5)*sigmarot;
31 UShort_t volid = AliAlignObj::LayerToVolUID(iLayer,iModule);
32 const char *symname = AliAlignObj::SymName(volid);
33 new(alobj[j++]) AliAlignObjAngles(symname, volid, dx, dy, dz, dpsi, dtheta, dphi, kFALSE);
38 if(!gSystem->Getenv("$TOCDB")){
40 TFile f("TPCfullMisalignment.root","RECREATE");
41 if(!f) cerr<<"cannot open file for output\n";
43 f.WriteObject(array,"TPCAlignObjs","kSingleKey");
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("Full 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);