void MakeTPCFullMisAlignment(){
// Create TClonesArray of full misalignment objects for TPC
//
const char* macroname = "MakeTPCFullMisAlignment.C";
// Activate CDB storage and load geometry from CDB
AliCDBManager* cdb = AliCDBManager::Instance();
if(!cdb->IsDefaultStorageSet()) cdb->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
cdb->SetRun(0);
AliCDBStorage* storage;
if( TString(gSystem->Getenv("TOCDB")) == TString("kTRUE") ){
TString Storage = gSystem->Getenv("STORAGE");
if(!Storage.BeginsWith("local://") && !Storage.BeginsWith("alien://")) {
Error(macroname,"STORAGE variable set to %s is not valid. Exiting\n",Storage.Data());
return;
}
storage = cdb->GetStorage(Storage.Data());
if(!storage){
Error(macroname,"Unable to open storage %s\n",Storage.Data());
return;
}
AliCDBPath path("GRP","Geometry","Data");
AliCDBEntry *entry = storage->Get(path.GetPath(),cdb->GetRun());
if(!entry) Fatal(macroname,"Could not get the specified CDB entry!");
entry->SetOwner(0);
TGeoManager* geom = (TGeoManager*) entry->GetObject();
AliGeomManager::SetGeometry(geom);
}else{
AliGeomManager::LoadGeometry(); //load geom from default CDB storage
}
TClonesArray *array = new TClonesArray("AliAlignObjParams",100);
TClonesArray &alobj = *array;
TRandom *rnd = new TRandom(4357);
Int_t j = 0;
Double_t dx, dy, dz, dpsi, dtheta, dphi;
// RS = local
// sigma translation = 0.1 mm
// sigma rotation = 0.1 mrad
Float_t sigmatr=0.01;
Float_t sigmarot = 0.006;
for (Int_t iLayer = AliGeomManager::kTPC1; iLayer <= AliGeomManager::kTPC2; iLayer++) {
for (Int_t iModule = 0; iModule < AliGeomManager::LayerSize(iLayer); iModule++) {
dx = rnd->Gaus(0,sigmatr);
dy = rnd->Gaus(0,sigmatr);
dz = rnd->Gaus(0,sigmatr);
dpsi = rnd->Gaus(0,sigmarot);
dtheta = rnd->Gaus(0,sigmarot);
dphi = rnd->Gaus(0,sigmarot);
UShort_t volid = AliGeomManager::LayerToVolUID(iLayer,iModule);
const char *symname = AliGeomManager::SymName(volid);
new(alobj[j++]) AliAlignObjParams(symname, volid, dx, dy, dz, dpsi, dtheta, dphi, kFALSE);
}
}
if( TString(gSystem->Getenv("TOCDB")) != TString("kTRUE") ){
// save on file
const char* filename = "TPCfullMisalignment.root";
TFile f(filename,"RECREATE");
if(!f){
Error(macroname,"cannot open file for output\n");
return;
}
Info(macroname,"Saving alignment objects to the file %s", filename);
f.cd();
f.WriteObject(array,"TPCAlignObjs","kSingleKey");
f.Close();
}else{
// save in CDB storage
AliCDBMetaData* md = new AliCDBMetaData();
md->SetResponsible("Marian Ivanov");
md->SetComment("Full misalignment for TPC, sigmatr=0.01 and sigmarot=0.6 in the local RS");
md->SetAliRootVersion(gSystem->Getenv("ARVERSION"));
AliCDBId id("TPC/Align/Data",0,AliCDBRunRange::Infinity());
storage->Put(array,id,md);
}
array->Delete();
}
MakeTPCFullMisAlignment.C:1 MakeTPCFullMisAlignment.C:2 MakeTPCFullMisAlignment.C:3 MakeTPCFullMisAlignment.C:4 MakeTPCFullMisAlignment.C:5 MakeTPCFullMisAlignment.C:6 MakeTPCFullMisAlignment.C:7 MakeTPCFullMisAlignment.C:8 MakeTPCFullMisAlignment.C:9 MakeTPCFullMisAlignment.C:10 MakeTPCFullMisAlignment.C:11 MakeTPCFullMisAlignment.C:12 MakeTPCFullMisAlignment.C:13 MakeTPCFullMisAlignment.C:14 MakeTPCFullMisAlignment.C:15 MakeTPCFullMisAlignment.C:16 MakeTPCFullMisAlignment.C:17 MakeTPCFullMisAlignment.C:18 MakeTPCFullMisAlignment.C:19 MakeTPCFullMisAlignment.C:20 MakeTPCFullMisAlignment.C:21 MakeTPCFullMisAlignment.C:22 MakeTPCFullMisAlignment.C:23 MakeTPCFullMisAlignment.C:24 MakeTPCFullMisAlignment.C:25 MakeTPCFullMisAlignment.C:26 MakeTPCFullMisAlignment.C:27 MakeTPCFullMisAlignment.C:28 MakeTPCFullMisAlignment.C:29 MakeTPCFullMisAlignment.C:30 MakeTPCFullMisAlignment.C:31 MakeTPCFullMisAlignment.C:32 MakeTPCFullMisAlignment.C:33 MakeTPCFullMisAlignment.C:34 MakeTPCFullMisAlignment.C:35 MakeTPCFullMisAlignment.C:36 MakeTPCFullMisAlignment.C:37 MakeTPCFullMisAlignment.C:38 MakeTPCFullMisAlignment.C:39 MakeTPCFullMisAlignment.C:40 MakeTPCFullMisAlignment.C:41 MakeTPCFullMisAlignment.C:42 MakeTPCFullMisAlignment.C:43 MakeTPCFullMisAlignment.C:44 MakeTPCFullMisAlignment.C:45 MakeTPCFullMisAlignment.C:46 MakeTPCFullMisAlignment.C:47 MakeTPCFullMisAlignment.C:48 MakeTPCFullMisAlignment.C:49 MakeTPCFullMisAlignment.C:50 MakeTPCFullMisAlignment.C:51 MakeTPCFullMisAlignment.C:52 MakeTPCFullMisAlignment.C:53 MakeTPCFullMisAlignment.C:54 MakeTPCFullMisAlignment.C:55 MakeTPCFullMisAlignment.C:56 MakeTPCFullMisAlignment.C:57 MakeTPCFullMisAlignment.C:58 MakeTPCFullMisAlignment.C:59 MakeTPCFullMisAlignment.C:60 MakeTPCFullMisAlignment.C:61 MakeTPCFullMisAlignment.C:62 MakeTPCFullMisAlignment.C:63 MakeTPCFullMisAlignment.C:64 MakeTPCFullMisAlignment.C:65 MakeTPCFullMisAlignment.C:66 MakeTPCFullMisAlignment.C:67 MakeTPCFullMisAlignment.C:68 MakeTPCFullMisAlignment.C:69 MakeTPCFullMisAlignment.C:70 MakeTPCFullMisAlignment.C:71 MakeTPCFullMisAlignment.C:72 MakeTPCFullMisAlignment.C:73 MakeTPCFullMisAlignment.C:74 MakeTPCFullMisAlignment.C:75 MakeTPCFullMisAlignment.C:76 MakeTPCFullMisAlignment.C:77 MakeTPCFullMisAlignment.C:78 MakeTPCFullMisAlignment.C:79 MakeTPCFullMisAlignment.C:80 MakeTPCFullMisAlignment.C:81 MakeTPCFullMisAlignment.C:82 MakeTPCFullMisAlignment.C:83 MakeTPCFullMisAlignment.C:84 MakeTPCFullMisAlignment.C:85 MakeTPCFullMisAlignment.C:86 MakeTPCFullMisAlignment.C:87 MakeTPCFullMisAlignment.C:88