ROOT logo
void MakeACORDEResMisAlignment(){
  // Create TClonesArray of Residual misalignment objects for ACORDE
  //
  const char* macroname = "MakeACORDEResMisAlignment.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;
  
  //load geom from local file till ACORDE is not switched on by default in standard config-files
  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
    

  }
  //  AliGeomManager::LoadGeometry("geometry.root");  

  TClonesArray *array = new TClonesArray("AliAlignObjParams",64);
  TClonesArray &alobj = *array;
  
  TRandom *rnd = new TRandom(4321);
  Int_t j = 0;
  Double_t dx, dy, dz, dpsi, dtheta, dphi;

  // RS = local
  // sigma translation
  // sigma rotation 
  Double_t sigmatr = 2;  // max shift in cm
  Double_t sigmarot = 1;  // max rot in degrees
  
  TString symname;
  TString basename = "ACORDE/Array";
  Int_t iIndex=0;
  AliGeomManager::ELayerID iLayer = AliGeomManager::kInvalidLayer;
  UShort_t volid = AliGeomManager::LayerToVolUID(iLayer,iIndex);

  for (Int_t imod=0; imod<60; imod++){
    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);    
    symname = basename;
    symname += imod;    
    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 = "ACORDEResMisalignment.root";
    TFile f(filename,"RECREATE");
    if(!f){
      Error(macroname,"cannot open file for output\n");
      return;
    }
    Info(macroname,"Saving residual misalignment objects to the file %s", filename);
    f.cd();
    f.WriteObject(array,"ACORDEAlignObjs","kSingleKey");
    f.Close();
  }else{
    // save in CDB storage
    AliCDBMetaData* md = new AliCDBMetaData();
    md->SetResponsible("E. Cuautle & M. Rodriguez ");
    md->SetComment("Residual misalignment for ACORDE");
    md->SetAliRootVersion(gSystem->Getenv("$ARVERSION"));
    AliCDBId id("ACORDE/Align/Data",0,AliCDBRunRange::Infinity());
    storage->Put(array,id,md);
  }

  array->Delete();

}

 MakeACORDEResMisAlignment.C:1
 MakeACORDEResMisAlignment.C:2
 MakeACORDEResMisAlignment.C:3
 MakeACORDEResMisAlignment.C:4
 MakeACORDEResMisAlignment.C:5
 MakeACORDEResMisAlignment.C:6
 MakeACORDEResMisAlignment.C:7
 MakeACORDEResMisAlignment.C:8
 MakeACORDEResMisAlignment.C:9
 MakeACORDEResMisAlignment.C:10
 MakeACORDEResMisAlignment.C:11
 MakeACORDEResMisAlignment.C:12
 MakeACORDEResMisAlignment.C:13
 MakeACORDEResMisAlignment.C:14
 MakeACORDEResMisAlignment.C:15
 MakeACORDEResMisAlignment.C:16
 MakeACORDEResMisAlignment.C:17
 MakeACORDEResMisAlignment.C:18
 MakeACORDEResMisAlignment.C:19
 MakeACORDEResMisAlignment.C:20
 MakeACORDEResMisAlignment.C:21
 MakeACORDEResMisAlignment.C:22
 MakeACORDEResMisAlignment.C:23
 MakeACORDEResMisAlignment.C:24
 MakeACORDEResMisAlignment.C:25
 MakeACORDEResMisAlignment.C:26
 MakeACORDEResMisAlignment.C:27
 MakeACORDEResMisAlignment.C:28
 MakeACORDEResMisAlignment.C:29
 MakeACORDEResMisAlignment.C:30
 MakeACORDEResMisAlignment.C:31
 MakeACORDEResMisAlignment.C:32
 MakeACORDEResMisAlignment.C:33
 MakeACORDEResMisAlignment.C:34
 MakeACORDEResMisAlignment.C:35
 MakeACORDEResMisAlignment.C:36
 MakeACORDEResMisAlignment.C:37
 MakeACORDEResMisAlignment.C:38
 MakeACORDEResMisAlignment.C:39
 MakeACORDEResMisAlignment.C:40
 MakeACORDEResMisAlignment.C:41
 MakeACORDEResMisAlignment.C:42
 MakeACORDEResMisAlignment.C:43
 MakeACORDEResMisAlignment.C:44
 MakeACORDEResMisAlignment.C:45
 MakeACORDEResMisAlignment.C:46
 MakeACORDEResMisAlignment.C:47
 MakeACORDEResMisAlignment.C:48
 MakeACORDEResMisAlignment.C:49
 MakeACORDEResMisAlignment.C:50
 MakeACORDEResMisAlignment.C:51
 MakeACORDEResMisAlignment.C:52
 MakeACORDEResMisAlignment.C:53
 MakeACORDEResMisAlignment.C:54
 MakeACORDEResMisAlignment.C:55
 MakeACORDEResMisAlignment.C:56
 MakeACORDEResMisAlignment.C:57
 MakeACORDEResMisAlignment.C:58
 MakeACORDEResMisAlignment.C:59
 MakeACORDEResMisAlignment.C:60
 MakeACORDEResMisAlignment.C:61
 MakeACORDEResMisAlignment.C:62
 MakeACORDEResMisAlignment.C:63
 MakeACORDEResMisAlignment.C:64
 MakeACORDEResMisAlignment.C:65
 MakeACORDEResMisAlignment.C:66
 MakeACORDEResMisAlignment.C:67
 MakeACORDEResMisAlignment.C:68
 MakeACORDEResMisAlignment.C:69
 MakeACORDEResMisAlignment.C:70
 MakeACORDEResMisAlignment.C:71
 MakeACORDEResMisAlignment.C:72
 MakeACORDEResMisAlignment.C:73
 MakeACORDEResMisAlignment.C:74
 MakeACORDEResMisAlignment.C:75
 MakeACORDEResMisAlignment.C:76
 MakeACORDEResMisAlignment.C:77
 MakeACORDEResMisAlignment.C:78
 MakeACORDEResMisAlignment.C:79
 MakeACORDEResMisAlignment.C:80
 MakeACORDEResMisAlignment.C:81
 MakeACORDEResMisAlignment.C:82
 MakeACORDEResMisAlignment.C:83
 MakeACORDEResMisAlignment.C:84
 MakeACORDEResMisAlignment.C:85
 MakeACORDEResMisAlignment.C:86
 MakeACORDEResMisAlignment.C:87
 MakeACORDEResMisAlignment.C:88
 MakeACORDEResMisAlignment.C:89
 MakeACORDEResMisAlignment.C:90
 MakeACORDEResMisAlignment.C:91
 MakeACORDEResMisAlignment.C:92
 MakeACORDEResMisAlignment.C:93
 MakeACORDEResMisAlignment.C:94
 MakeACORDEResMisAlignment.C:95