ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

// $Id$

/// \ingroup macros
/// \file MakeMUONZeroMisAlignment.C
/// \brief Macro for generating the zero misalignment data.
///
/// \author: I. Hrivnacova, IPN Orsay

#if !defined(__CINT__) || defined(__MAKECINT__)

#include "AliMUONGeometryTransformer.h"

#include "AliGeomManager.h"
#include "AliCDBManager.h"
#include "AliCDBStorage.h"
#include "AliCDBEntry.h"
#include "AliCDBId.h"

#include <TSystem.h>
#include <TError.h>
#include <TClonesArray.h>
#include <TString.h>
#include <TFile.h>
#include <Riostream.h>

#endif

void MakeMUONZeroMisAlignment()
{
  const char* macroname = "MakeMUONZeroMisAlignment.C";
  // Activate CDB storage and load geometry from CDB
  AliCDBManager* cdb = AliCDBManager::Instance();
  if(!cdb->IsDefaultStorageSet()) cdb->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
  cdb->SetRun(0);
  
  AliCDBStorage* storage = 0;
  
  if( TString(gSystem->Getenv("TOCDB")) == TString("kTRUE") ){
    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;
    }
    storage = cdb->GetStorage(Storage.Data());
    if(!storage){
      Error(macroname,"Unable to open storage %s\n",Storage.Data());
      return;
    }
    AliCDBPath path("GRP","Geometry","Data");
    AliCDBEntry *entry = storage->Get(path.GetPath(),cdb->GetRun());
    if(!entry) Fatal(macroname,"Could not get the specified CDB entry!");
    entry->SetOwner(0);
    TGeoManager* geom = (TGeoManager*) entry->GetObject();
    AliGeomManager::SetGeometry(geom);
  }else{
    AliGeomManager::LoadGeometry(); //load geom from default CDB storage
  }    

  AliMUONGeometryTransformer transformer;
  transformer.LoadGeometryData();
  TClonesArray* array = transformer.CreateZeroAlignmentData();;

  if ( TString(gSystem->Getenv("TOCDB")) != TString("kTRUE") ) {
    // Create a file to store the alignment data
    const char* filename = "MUONZeroMisalignment.root";
    TFile f(filename,"RECREATE");
    if(!f.IsOpen()){
      Error(macroname,"cannot open file for output\n");
      return;
    }
    Info(macroname,"Saving alignment objects to the file %s", filename);
    f.cd();
    f.WriteObject(array,"MUONAlignObjs","kSingleKey");
    f.Close();
  } else {
    // save in CDB storage
    AliCDBMetaData* cdbData = new AliCDBMetaData();
    cdbData->SetResponsible("Dimuon Offline project");
    cdbData->SetComment("MUON alignment objects with zero misalignment");
    cdbData->SetAliRootVersion(gSystem->Getenv("ARVERSION"));
    AliCDBId id("MUON/Align/Data", 0, AliCDBRunRange::Infinity()); 
    storage->Put(array, id, cdbData);
  }
}   

 MakeMUONZeroMisAlignment.C:1
 MakeMUONZeroMisAlignment.C:2
 MakeMUONZeroMisAlignment.C:3
 MakeMUONZeroMisAlignment.C:4
 MakeMUONZeroMisAlignment.C:5
 MakeMUONZeroMisAlignment.C:6
 MakeMUONZeroMisAlignment.C:7
 MakeMUONZeroMisAlignment.C:8
 MakeMUONZeroMisAlignment.C:9
 MakeMUONZeroMisAlignment.C:10
 MakeMUONZeroMisAlignment.C:11
 MakeMUONZeroMisAlignment.C:12
 MakeMUONZeroMisAlignment.C:13
 MakeMUONZeroMisAlignment.C:14
 MakeMUONZeroMisAlignment.C:15
 MakeMUONZeroMisAlignment.C:16
 MakeMUONZeroMisAlignment.C:17
 MakeMUONZeroMisAlignment.C:18
 MakeMUONZeroMisAlignment.C:19
 MakeMUONZeroMisAlignment.C:20
 MakeMUONZeroMisAlignment.C:21
 MakeMUONZeroMisAlignment.C:22
 MakeMUONZeroMisAlignment.C:23
 MakeMUONZeroMisAlignment.C:24
 MakeMUONZeroMisAlignment.C:25
 MakeMUONZeroMisAlignment.C:26
 MakeMUONZeroMisAlignment.C:27
 MakeMUONZeroMisAlignment.C:28
 MakeMUONZeroMisAlignment.C:29
 MakeMUONZeroMisAlignment.C:30
 MakeMUONZeroMisAlignment.C:31
 MakeMUONZeroMisAlignment.C:32
 MakeMUONZeroMisAlignment.C:33
 MakeMUONZeroMisAlignment.C:34
 MakeMUONZeroMisAlignment.C:35
 MakeMUONZeroMisAlignment.C:36
 MakeMUONZeroMisAlignment.C:37
 MakeMUONZeroMisAlignment.C:38
 MakeMUONZeroMisAlignment.C:39
 MakeMUONZeroMisAlignment.C:40
 MakeMUONZeroMisAlignment.C:41
 MakeMUONZeroMisAlignment.C:42
 MakeMUONZeroMisAlignment.C:43
 MakeMUONZeroMisAlignment.C:44
 MakeMUONZeroMisAlignment.C:45
 MakeMUONZeroMisAlignment.C:46
 MakeMUONZeroMisAlignment.C:47
 MakeMUONZeroMisAlignment.C:48
 MakeMUONZeroMisAlignment.C:49
 MakeMUONZeroMisAlignment.C:50
 MakeMUONZeroMisAlignment.C:51
 MakeMUONZeroMisAlignment.C:52
 MakeMUONZeroMisAlignment.C:53
 MakeMUONZeroMisAlignment.C:54
 MakeMUONZeroMisAlignment.C:55
 MakeMUONZeroMisAlignment.C:56
 MakeMUONZeroMisAlignment.C:57
 MakeMUONZeroMisAlignment.C:58
 MakeMUONZeroMisAlignment.C:59
 MakeMUONZeroMisAlignment.C:60
 MakeMUONZeroMisAlignment.C:61
 MakeMUONZeroMisAlignment.C:62
 MakeMUONZeroMisAlignment.C:63
 MakeMUONZeroMisAlignment.C:64
 MakeMUONZeroMisAlignment.C:65
 MakeMUONZeroMisAlignment.C:66
 MakeMUONZeroMisAlignment.C:67
 MakeMUONZeroMisAlignment.C:68
 MakeMUONZeroMisAlignment.C:69
 MakeMUONZeroMisAlignment.C:70
 MakeMUONZeroMisAlignment.C:71
 MakeMUONZeroMisAlignment.C:72
 MakeMUONZeroMisAlignment.C:73
 MakeMUONZeroMisAlignment.C:74
 MakeMUONZeroMisAlignment.C:75
 MakeMUONZeroMisAlignment.C:76
 MakeMUONZeroMisAlignment.C:77
 MakeMUONZeroMisAlignment.C:78
 MakeMUONZeroMisAlignment.C:79
 MakeMUONZeroMisAlignment.C:80
 MakeMUONZeroMisAlignment.C:81
 MakeMUONZeroMisAlignment.C:82
 MakeMUONZeroMisAlignment.C:83
 MakeMUONZeroMisAlignment.C:84
 MakeMUONZeroMisAlignment.C:85
 MakeMUONZeroMisAlignment.C:86
 MakeMUONZeroMisAlignment.C:87
 MakeMUONZeroMisAlignment.C:88
 MakeMUONZeroMisAlignment.C:89
 MakeMUONZeroMisAlignment.C:90
 MakeMUONZeroMisAlignment.C:91
 MakeMUONZeroMisAlignment.C:92
 MakeMUONZeroMisAlignment.C:93
 MakeMUONZeroMisAlignment.C:94
 MakeMUONZeroMisAlignment.C:95
 MakeMUONZeroMisAlignment.C:96
 MakeMUONZeroMisAlignment.C:97
 MakeMUONZeroMisAlignment.C:98
 MakeMUONZeroMisAlignment.C:99
 MakeMUONZeroMisAlignment.C:100
 MakeMUONZeroMisAlignment.C:101