X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=MUON%2FMakeMUONFullMisAlignment.C;h=023b505d7181109793d8bfbd213f986775d5d8aa;hb=6350d0c03d9aed9b63ea3a0ef57f3aa3252efced;hp=39c1bc192324ed5f49361cf0cca1847b031ca513;hpb=1895a097f0a10aa676c803ff663b1c31836edddf;p=u%2Fmrichter%2FAliRoot.git diff --git a/MUON/MakeMUONFullMisAlignment.C b/MUON/MakeMUONFullMisAlignment.C index 39c1bc19232..023b505d718 100644 --- a/MUON/MakeMUONFullMisAlignment.C +++ b/MUON/MakeMUONFullMisAlignment.C @@ -1,76 +1,113 @@ -void MakeMUONFullMisAlignment(Bool_t volpaths = true, - Bool_t transforms = true, - Bool_t svmaps = true) -// Macro for generating the geometry data files: -// (volpath.dat, transform.dat, svmap.dat) -// and local CDB storage with full misalignment -// -// The generated files do not replace the existing ones -// but have different names (with extension ".out"). -// -// Author: I. Hrivnacova, IPN Orsay -// -{ - // Initialize - gAlice->Init("$ALICE_ROOT/MUON/Config.C"); - cout << "Init done " << endl; +/************************************************************************** + * 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. * + **************************************************************************/ - // Get MUON detector - AliMUON* muon = (AliMUON*)gAlice->GetModule("MUON"); - if (!muon) { - AliFatal("MUON detector not defined."); - return 0; - } +// $Id$ + +/// \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 - // Get geometry builder - AliMUONGeometryBuilder* builder = muon ->GetGeometryBuilder(); - - if (volpaths) { - cout << "Generating volpath file ..." << endl; - builder->GetTransformer()->WriteVolumePaths("volpath.dat.out"); - } - if (transforms) { - cout << "Generating transformation file ..." << endl; - builder->GetTransformer()->WriteTransformations("transform.dat.out"); - } +void MakeMUONFullMisAlignment() +{ + 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); - if (svmaps) { - cout << "Generating svmaps file ..." << endl; - builder->WriteSVMaps(); - } + AliCDBStorage* storage = 0; - cout << "Generating full misalignment data in MUON/FullMisAlignCDB/Data..." << endl; + 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(); AliMUONGeometryMisAligner misAligner(0.0, 0.03, 0.0, 0.03, 0.0, 0.03); AliMUONGeometryTransformer* newTransform - = misAligner.MisAlign(builder->GetTransformer(), true); - TClonesArray* array = newTransform->GetMisAlignmentData(); + = misAligner.MisAlign(&transformer, true); + const TClonesArray* array = newTransform->GetMisAlignmentData(); - if(!gSystem->Getenv("$TOCDB")){ - // Create a File to store the alignment data - TFile f("MUONfullMisalignment.root","RECREATE"); - if(!f) {cerr<<"cannot open file for output\n";} - + // 1 mm resolution for chamber full misalignments? + misAligner.SetAlignmentResolution(array,-1,0.1,0.1); + + + 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{ - // 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 full misalignment"); - cdbData->SetAliRootVersion(gSystem->Getenv("$ARVERSION")); - AliCDBId id("MUON/Align/Data", 0, 9999999); - storage->Put(array, id, cdbData); - - delete newTransform; + cdbData->SetAliRootVersion(gSystem->Getenv("ARVERSION")); + AliCDBId id("MUON/Align/Data", 0, AliCDBRunRange::Infinity()); + storage->Put(const_cast(array), id, cdbData); } - - + delete newTransform; }