ROOT logo
#include "ARVersion.h"

void MakeAllDETsFullMisAlignment(Char_t* CDBstorage = "local://$HOME/FullMisAlignment", Bool_t partialGeom=kFALSE){
   // Make full 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 
  // This macro defines the default name and place for the detector-macros
  // in charge of producing the full misalignment objects as 
  // $ALICE_ROOT/DET/MakeDETFullMisAlignment.C
  //
  const char* macroname="MakeAllDETsFullMisAlignment.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/MakeSTRUCTFullMisAlignment.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+="FullMisAlignment.C";
    
    gSystem->Exec(exec_det_macro.Data());
  }

  return;
}

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