ROOT logo
#include "ARVersion.h"

void MakeAllDETsZeroMisAlignment(Char_t* CDBstorage = "local://$HOME/ZeroMisAlignment", Bool_t partialGeom=kFALSE){
  // Make zero misalignment objects for all detectors
  // Pass different "CDBstorage" argument if needed (e.g. to fill
  // conditions' data base on alien) or set it to null string to have
  // the objects saved locally on file 
  //
  const char* macroname="MakeAllDETsZeroMisAlignment.C";

  TString strStorage(CDBstorage);
  if(strStorage.IsNull()){
    gSystem->Setenv("TOCDB","kFALSE");
  }else{  
    gSystem->Setenv("TOCDB","kTRUE");
    gSystem->Setenv("STORAGE",strStorage.Data());
    gSystem->Setenv("ARVERSION",ALIROOT_BRANCH);
  }
  if(partialGeom){
    gSystem->Setenv("REALSETUP","kTRUE");
  }else{
    gSystem->Setenv("REALSETUP","kFALSE");
  }

  // Load geometry from CDB updating it if we are producing the
  // alignment objects for the CDB
  AliCDBManager* cdb = AliCDBManager::Instance();
  if(!cdb->IsDefaultStorageSet()) cdb->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
  cdb->SetRun(0);
  
  if(strStorage.IsNull()){ //if we produce the objects into a file
    AliGeomManager::LoadGeometry(); //load geom from default CDB storage
  }else{ // if we produce the objects in a CDB storage
    // update geometry in it
    Info(macroname,"Updating geometry in CDB storage %s",strStorage.Data());
    gROOT->ProcessLine(".L $ALICE_ROOT/GRP/UpdateCDBIdealGeom.C");
    if(partialGeom){
      UpdateCDBIdealGeom(strStorage.Data(),"$ALICE_ROOT/macros/Config_PDC06.C");
    }else{
    UpdateCDBIdealGeom(strStorage.Data(),"$ALICE_ROOT/macros/Config.C");    
    }
    // load the same geometry from given CDB storage
    AliCDBPath path("GRP","Geometry","Data");
    AliCDBStorage* storage = cdb->GetStorage(strStorage.Data());
    AliCDBEntry *entry = storage->Get(path.GetPath(),cdb->GetRun());
    if(!entry) Fatal(macroname,"Couldn't load geometry data from CDB!");
    entry->SetOwner(0);
    TGeoManager* geom = (TGeoManager*) entry->GetObject();
    if (!geom) Fatal(macroname,"Couldn't find TGeoManager in the specified CDB entry!");
    AliGeomManager::SetGeometry(geom);
  }
  
  // run macro for non-sensitive modules
  // (presently generates only FRAME alignment objects)
  gSystem->Exec("aliroot -b -q $ALICE_ROOT/GRP/MakeSTRUCTZeroMisAlignment.C");

  // run macros for sensitive modules
  TString sModules="ACORDE,EMCAL,FMD,HMPID,ITS,MUON,PMD,PHOS,T0,TRD,TPC,TOF,VZERO,ZDC";
  TObjArray *detArray = sModules.Tokenize(',');
  TIter iter(detArray);
  TObjString *ostr;
  TString exec_det_macro;

  while((ostr = (TObjString*) iter.Next())){
    TString str(ostr->String());
    exec_det_macro="aliroot -b -q $ALICE_ROOT/";
    exec_det_macro+=str;
    exec_det_macro+="/Make";
    exec_det_macro+=str;
    exec_det_macro+="ZeroMisAlignment.C";
    
    gSystem->Exec(exec_det_macro.Data());
  }

  return;
}

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