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

  Double_t dx=0., dy=0., dz=0., dpsi=0., dtheta=0., dphi=0.;

  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";
    }
    new(alobj[imod]) AliAlignObjParams(symName.Data(), volid, dx, dy, dz, dpsi, dtheta, dphi, kTRUE);
  }

  const char* macroname = "MakeT0ZeroMisAlignment.C";
  if( TString(gSystem->Getenv("TOCDB")) != TString("kTRUE") ){
    // save on file
    const char* filename = "T0zeroMisalignment.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("Zero 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();

}

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