ROOT logo
void MakeT0ResMisAlignment(){
  // Create TClonesArray of residual misalignment objects for T0
  //
  TClonesArray *array = new TClonesArray("AliAlignObjParams",4);
  TClonesArray &alobj = *array;

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

  TString symName;

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

  for (Int_t imod=0; imod<2; imod++)
  {
    symName="/ALIC_1/0STR_1";
    if(imod==1) symName="/ALIC_1/0STL_1";
    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[imod]) AliAlignObjParams(symName.Data(), volid, dx, dy, dz, dpsi, dtheta, dphi, kTRUE);
  }
  
  const char* macroname = "MakeT0ResMisAlignment.C";
  if( TString(gSystem->Getenv("TOCDB")) != TString("kTRUE") ){
    // save on file
    const char* filename = "T0residualMisalignment.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,"T0AlignObjs","kSingleKey");
    f.Close();
  }else{
    // save in CDB storage
    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;
    }
    Info(macroname,"Saving alignment objects in CDB storage %s",
	 Storage.Data());
    AliCDBManager* cdb = AliCDBManager::Instance();
    AliCDBStorage* storage = cdb->GetStorage(Storage.Data());
    if(!storage){
      Error(macroname,"Unable to open storage %s\n",Storage.Data());
      return;
    }
    AliCDBMetaData* md = new AliCDBMetaData();
    md->SetResponsible("Tomasz Malkiewicz");
    md->SetComment("Residual misalignment for T0, produced with sigmatr=0.05 and sigmarot=0.3 in the local RS");
    md->SetAliRootVersion(gSystem->Getenv("$ARVERSION"));
    AliCDBId id("T0/Align/Data",0,AliCDBRunRange::Infinity());
    storage->Put(array,id,md);
  }

  array->Delete();

}

 MakeT0ResMisAlignment.C:1
 MakeT0ResMisAlignment.C:2
 MakeT0ResMisAlignment.C:3
 MakeT0ResMisAlignment.C:4
 MakeT0ResMisAlignment.C:5
 MakeT0ResMisAlignment.C:6
 MakeT0ResMisAlignment.C:7
 MakeT0ResMisAlignment.C:8
 MakeT0ResMisAlignment.C:9
 MakeT0ResMisAlignment.C:10
 MakeT0ResMisAlignment.C:11
 MakeT0ResMisAlignment.C:12
 MakeT0ResMisAlignment.C:13
 MakeT0ResMisAlignment.C:14
 MakeT0ResMisAlignment.C:15
 MakeT0ResMisAlignment.C:16
 MakeT0ResMisAlignment.C:17
 MakeT0ResMisAlignment.C:18
 MakeT0ResMisAlignment.C:19
 MakeT0ResMisAlignment.C:20
 MakeT0ResMisAlignment.C:21
 MakeT0ResMisAlignment.C:22
 MakeT0ResMisAlignment.C:23
 MakeT0ResMisAlignment.C:24
 MakeT0ResMisAlignment.C:25
 MakeT0ResMisAlignment.C:26
 MakeT0ResMisAlignment.C:27
 MakeT0ResMisAlignment.C:28
 MakeT0ResMisAlignment.C:29
 MakeT0ResMisAlignment.C:30
 MakeT0ResMisAlignment.C:31
 MakeT0ResMisAlignment.C:32
 MakeT0ResMisAlignment.C:33
 MakeT0ResMisAlignment.C:34
 MakeT0ResMisAlignment.C:35
 MakeT0ResMisAlignment.C:36
 MakeT0ResMisAlignment.C:37
 MakeT0ResMisAlignment.C:38
 MakeT0ResMisAlignment.C:39
 MakeT0ResMisAlignment.C:40
 MakeT0ResMisAlignment.C:41
 MakeT0ResMisAlignment.C:42
 MakeT0ResMisAlignment.C:43
 MakeT0ResMisAlignment.C:44
 MakeT0ResMisAlignment.C:45
 MakeT0ResMisAlignment.C:46
 MakeT0ResMisAlignment.C:47
 MakeT0ResMisAlignment.C:48
 MakeT0ResMisAlignment.C:49
 MakeT0ResMisAlignment.C:50
 MakeT0ResMisAlignment.C:51
 MakeT0ResMisAlignment.C:52
 MakeT0ResMisAlignment.C:53
 MakeT0ResMisAlignment.C:54
 MakeT0ResMisAlignment.C:55
 MakeT0ResMisAlignment.C:56
 MakeT0ResMisAlignment.C:57
 MakeT0ResMisAlignment.C:58
 MakeT0ResMisAlignment.C:59
 MakeT0ResMisAlignment.C:60
 MakeT0ResMisAlignment.C:61
 MakeT0ResMisAlignment.C:62
 MakeT0ResMisAlignment.C:63
 MakeT0ResMisAlignment.C:64
 MakeT0ResMisAlignment.C:65
 MakeT0ResMisAlignment.C:66
 MakeT0ResMisAlignment.C:67
 MakeT0ResMisAlignment.C:68
 MakeT0ResMisAlignment.C:69
 MakeT0ResMisAlignment.C:70
 MakeT0ResMisAlignment.C:71