ROOT logo
void MakeVZEROResMisAlignment(){
  // Create TClonesArray of residual misalignment objects for VZERO
  //
  const char* macroname = "MakeVZEROResMisAlignment.C";

  TClonesArray *array = new TClonesArray("AliAlignObjParams",10);
  TClonesArray &alobj = *array;

  // 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
  }    

  Double_t dx, dy, dz, dpsi, dtheta, dphi;
  TRandom *rnd   = new TRandom(4321);
  Double_t sigmatr = 0.1; // max shift in cm
  Double_t sigmarot = 0.5; // max rot in degrees

  const char *V0right="VZERO/V0C";
  const char *V0left="VZERO/V0A";

  Int_t iIndex=0;
  AliGeomManager::ELayerID iLayer = AliGeomManager::kInvalidLayer;
  UShort_t volid = AliGeomManager::LayerToVolUID(iLayer,iIndex);

  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);
  new(alobj[0]) AliAlignObjParams(V0right, volid, dx, dy, dz, dpsi, dtheta, dphi, kFALSE);
  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);
  new(alobj[1]) AliAlignObjParams(V0left, volid, dx, dy, dz, dpsi, dtheta, dphi,kFALSE);

  if( TString(gSystem->Getenv("TOCDB")) != TString("kTRUE") ){
    // save on file
    const char* filename = "VZEROresidualMisalignment.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,"VZEROAlignObjs","kSingleKey");
    f.Close();
  }else{
    // save in CDB storage
    AliCDBMetaData* md = new AliCDBMetaData();
    md->SetResponsible("Brigitte Cheynis");
    md->SetComment("Alignment objects for V0 residual misalignment");
    md->SetAliRootVersion(gSystem->Getenv("ARVERSION"));
    AliCDBId id("VZERO/Align/Data",0,AliCDBRunRange::Infinity());
    storage->Put(array,id,md);
  }

  array->Delete();

}

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