X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=MUON%2FMakeMUONFullMisAlignment.C;h=023b505d7181109793d8bfbd213f986775d5d8aa;hb=cd63840339e49a43b81bd2346951390d34bc3f58;hp=dca2a9808b44de80a484b56c327d4bc9f30efd24;hpb=226783d4555bf3c550005f250a04009d27493f4a;p=u%2Fmrichter%2FAliRoot.git diff --git a/MUON/MakeMUONFullMisAlignment.C b/MUON/MakeMUONFullMisAlignment.C index dca2a9808b4..023b505d718 100644 --- a/MUON/MakeMUONFullMisAlignment.C +++ b/MUON/MakeMUONFullMisAlignment.C @@ -15,57 +15,99 @@ // $Id$ -// Macro for generating the full misalignment data. -// The macro is trigger from AliRoot/macros/MakeAllDETsFullMisAlignment.C -// -// Author: I. Hrivnacova, IPN Orsay +/// \ingroup macros +/// \file MakeMUONFullMisAlignment.C +/// \brief Macro for generating the full misalignment data. +/// +/// The macro is triggered from AliRoot/macros/MakeAllDETsFullMisAlignment.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 MakeMUONFullMisAlignment() { - // 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 = "MakeMUONFullMisAlignment.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.03, 0.0, 0.03, 0.0, 0.03); AliMUONGeometryTransformer* newTransform = misAligner.MisAlign(&transformer, true); - TClonesArray* array = newTransform->GetMisAlignmentData(); + const TClonesArray* array = newTransform->GetMisAlignmentData(); - if( TString(gSystem->Getenv("TOCDB")) != TString("kTRUE") ) { - cout << "Generating full misalignment data in a file" << endl; + // 1 mm resolution for chamber full misalignments? + misAligner.SetAlignmentResolution(array,-1,0.1,0.1); + - // Create a File to store the alignment data - TFile f("MUONfullMisalignment.root","RECREATE"); - if(!f) {cerr<<"cannot open file for output\n";} - + if ( TString(gSystem->Getenv("TOCDB")) != TString("kTRUE") ) { + // Save in file + const char* filename = "MUONfullMisalignment.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(); - array->Delete(); } else { - cout << "Generating full misalignment data in CDB" << endl; - - // save in CDB storage - const char* Storage = gSystem->Getenv("STORAGE"); - - AliCDBManager* cdbManager = AliCDBManager::Instance(); - AliCDBStorage* storage = cdbManager->GetStorage(Storage); + // Save in CDB storage AliCDBMetaData* cdbData = new AliCDBMetaData(); cdbData->SetResponsible("Dimuon Offline project"); cdbData->SetComment("MUON alignment objects with full misalignment"); cdbData->SetAliRootVersion(gSystem->Getenv("ARVERSION")); - AliCDBId id("MUON/Align/Data", 0, 9999999); - storage->Put(array, id, cdbData); - - delete newTransform; + AliCDBId id("MUON/Align/Data", 0, AliCDBRunRange::Infinity()); + storage->Put(const_cast(array), id, cdbData); } - - + delete newTransform; }