ROOT logo
#if !defined(__CINT__) || defined(__MAKECINT__)
#include "TSystem.h"
#include "TROOT.h"
#include "TGeoManager.h"
#include "TObjString.h"
#include "TClonesArray.h"
#include "TError.h"
#include "AliGeomManager.h"
#include "AliCDBManager.h"
#include "AliCDBStorage.h"
#include "AliCDBPath.h"
#include "AliCDBEntry.h"
#include "AliCDBId.h"
#include "AliCDBMetaData.h"
#include "AliMisAligner.h"
#include "AliHMPIDMisAligner.h"
#include <TString.h>
#endif

void MakeHMPIDAlignmentObjs(Bool_t toOCDB = kFALSE, const char* misalType="residual")
{
  // Make alignment objects for HMPID detector
  // for the misalignment scenario passed as argument "misalType".
  //Input Args:  toOCDB = kFALSE -> the results are written in a local file called HMPIDMisalignObject.root
  //                      kTRUE  -> the results are written in local://$ALICE_ROOT/OCD 
  //             misalType = ideal, residual, full (see class AliHMPIDMisAligner)
  
  const char* macroname = "MakeHMPIDAlignmentObjs.C";
  
  // Load geometry from OCDB; update geometry before loading it if we are going to load
  // the alignment objects to the OCDB
  AliCDBManager* cdb = AliCDBManager::Instance();
  if(!cdb->IsDefaultStorageSet()) cdb->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
  cdb->SetRun(0);
 // AliCDBStorage* storage = 0;
      
  AliGeomManager::LoadGeometry(); //load geom from default OCDB storage

  TClonesArray* objsArray = 0;

  AliHMPIDMisAligner* misAlignerHMPID = new AliHMPIDMisAligner();
  misAlignerHMPID->SetMisalType(misalType);
  objsArray = misAlignerHMPID->MakeAlObjsArray();

    if(toOCDB)
    {
      AliCDBId id("HMPID/Align/Data",0,AliCDBRunRange::Infinity());
      AliCDBMetaData *md = misAlignerHMPID->GetCDBMetaData();
      md->SetResponsible("Domenico Di Bari");
      md->SetAliRootVersion(gSystem->Getenv("ARVERSION"));
      cdb->Put(objsArray,id,md);
    } else {
      // save on file
      TFile file("HMPIDMisalignObject.root","RECREATE");
      if(!file) {
	Error(macroName,"cannot open file for output\n");
	return;
      }
      file.cd();
      file.WriteObject(objsArray,"HMPIDAlignObjs","kSingleKey");
      file.Close();
    }
    
  return;
}
 MakeHMPIDAlignmentObjs.C:1
 MakeHMPIDAlignmentObjs.C:2
 MakeHMPIDAlignmentObjs.C:3
 MakeHMPIDAlignmentObjs.C:4
 MakeHMPIDAlignmentObjs.C:5
 MakeHMPIDAlignmentObjs.C:6
 MakeHMPIDAlignmentObjs.C:7
 MakeHMPIDAlignmentObjs.C:8
 MakeHMPIDAlignmentObjs.C:9
 MakeHMPIDAlignmentObjs.C:10
 MakeHMPIDAlignmentObjs.C:11
 MakeHMPIDAlignmentObjs.C:12
 MakeHMPIDAlignmentObjs.C:13
 MakeHMPIDAlignmentObjs.C:14
 MakeHMPIDAlignmentObjs.C:15
 MakeHMPIDAlignmentObjs.C:16
 MakeHMPIDAlignmentObjs.C:17
 MakeHMPIDAlignmentObjs.C:18
 MakeHMPIDAlignmentObjs.C:19
 MakeHMPIDAlignmentObjs.C:20
 MakeHMPIDAlignmentObjs.C:21
 MakeHMPIDAlignmentObjs.C:22
 MakeHMPIDAlignmentObjs.C:23
 MakeHMPIDAlignmentObjs.C:24
 MakeHMPIDAlignmentObjs.C:25
 MakeHMPIDAlignmentObjs.C:26
 MakeHMPIDAlignmentObjs.C:27
 MakeHMPIDAlignmentObjs.C:28
 MakeHMPIDAlignmentObjs.C:29
 MakeHMPIDAlignmentObjs.C:30
 MakeHMPIDAlignmentObjs.C:31
 MakeHMPIDAlignmentObjs.C:32
 MakeHMPIDAlignmentObjs.C:33
 MakeHMPIDAlignmentObjs.C:34
 MakeHMPIDAlignmentObjs.C:35
 MakeHMPIDAlignmentObjs.C:36
 MakeHMPIDAlignmentObjs.C:37
 MakeHMPIDAlignmentObjs.C:38
 MakeHMPIDAlignmentObjs.C:39
 MakeHMPIDAlignmentObjs.C:40
 MakeHMPIDAlignmentObjs.C:41
 MakeHMPIDAlignmentObjs.C:42
 MakeHMPIDAlignmentObjs.C:43
 MakeHMPIDAlignmentObjs.C:44
 MakeHMPIDAlignmentObjs.C:45
 MakeHMPIDAlignmentObjs.C:46
 MakeHMPIDAlignmentObjs.C:47
 MakeHMPIDAlignmentObjs.C:48
 MakeHMPIDAlignmentObjs.C:49
 MakeHMPIDAlignmentObjs.C:50
 MakeHMPIDAlignmentObjs.C:51
 MakeHMPIDAlignmentObjs.C:52
 MakeHMPIDAlignmentObjs.C:53
 MakeHMPIDAlignmentObjs.C:54
 MakeHMPIDAlignmentObjs.C:55
 MakeHMPIDAlignmentObjs.C:56
 MakeHMPIDAlignmentObjs.C:57
 MakeHMPIDAlignmentObjs.C:58
 MakeHMPIDAlignmentObjs.C:59
 MakeHMPIDAlignmentObjs.C:60
 MakeHMPIDAlignmentObjs.C:61
 MakeHMPIDAlignmentObjs.C:62
 MakeHMPIDAlignmentObjs.C:63
 MakeHMPIDAlignmentObjs.C:64
 MakeHMPIDAlignmentObjs.C:65
 MakeHMPIDAlignmentObjs.C:66