X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=MUON%2FMakeMUONResMisAlignment.C;h=cc088f8be8e0436cc09764ec34a0863e6cbb6205;hb=ec499c6d175049e280bd6e7841e90330ae7a94bc;hp=363f4e9649f0609cfeaee32fecddd8260e9383d9;hpb=226783d4555bf3c550005f250a04009d27493f4a;p=u%2Fmrichter%2FAliRoot.git diff --git a/MUON/MakeMUONResMisAlignment.C b/MUON/MakeMUONResMisAlignment.C index 363f4e9649f..cc088f8be8e 100644 --- a/MUON/MakeMUONResMisAlignment.C +++ b/MUON/MakeMUONResMisAlignment.C @@ -15,52 +15,97 @@ // $Id$ -// Macro for generating the residual misalignment data. -// The macro is triggered from AliRoot/macros/MakeAllDETsResMisAlignment.C -// -// Author: I. Hrivnacova, IPN Orsay +/// \ingroup macros +/// \file MakeMUONResMisAlignment.C +/// \brief Macro for generating the residual misalignment data. +/// +/// The macro is triggered from AliRoot/macros/MakeAllDETsResMisAlignment.C +/// +/// \author: I. Hrivnacova, IPN Orsay + +#if !defined(__CINT__) || defined(__MAKECINT__) + +#include "AliMUONGeometryTransformer.h" +#include "AliMUONGeometryMisAligner.h" + +#include "AliGeomManager.h" +#include "AliCDBManager.h" +#include "AliCDBStorage.h" +#include "AliCDBEntry.h" +#include "AliCDBId.h" + +#include +#include +#include +#include +#include +#include + +#endif void MakeMUONResMisAlignment() { - // Check first if geometry is loaded, - // if not loaded try to load it from galice.root file - if ( ! gGeoManager && ! TGeoManager::Import("geometry.root") ) { - cerr << "Loading geometry failed." << endl; - return; - } + const char* macroname = "MakeMUONResMisAlignment.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(true); - transformer.ReadGeometryData("volpath.dat", gGeoManager); + AliMUONGeometryTransformer transformer; + transformer.LoadGeometryData(); AliMUONGeometryMisAligner misAligner(0.0, 0.004, 0.0, 0.003, 0.0, 0.0023); AliMUONGeometryTransformer* newTransform = misAligner.MisAlign(&transformer, true); - TClonesArray* array = newTransform->GetMisAlignmentData(); + const TClonesArray* array = newTransform->GetMisAlignmentData(); - if( TString(gSystem->Getenv("TOCDB")) != TString("kTRUE") ) { - cout << "Generating residual misalignment data in a file" << endl; - - // Create a File to store the alignment data - TFile f("MUONresidualMisalignment.root","RECREATE"); - if(!f) {cerr<<"cannot open file for output\n";} - + // 100 mum residual resolution for chamber misalignments? + misAligner.SetAlignmentResolution(array,-1,0.01,0.01); + + if ( TString(gSystem->Getenv("TOCDB")) != TString("kTRUE") ) { + // Save in file + const char* filename = "MUONresidualMisalignment.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.WriteObject(array,"MUONAlignObjs","kSingleKey"); f.Close(); - } - else { - cout << "Generating residual misalignment data in CDB" << endl; - // save in CDB storage - const char* Storage = gSystem->Getenv("STORAGE"); - AliCDBManager* cdbManager = AliCDBManager::Instance(); - AliCDBStorage* storage = cdbManager->GetStorage(Storage); + } else { + // Save in CDB storage AliCDBMetaData* cdbData = new AliCDBMetaData(); cdbData->SetResponsible("Dimuon Offline project"); cdbData->SetComment("MUON alignment objects with residual misalignment"); cdbData->SetAliRootVersion(gSystem->Getenv("ARVERSION")); - AliCDBId id("MUON/Align/Data", 0, 9999999); - storage->Put(array, id, cdbData); + AliCDBId id("MUON/Align/Data", 0, AliCDBRunRange::Infinity()); + storage->Put(const_cast(array), id, cdbData); } delete newTransform; -} + }