From cd8521dd99f5d980b2e380dbe1ca04b518c78834 Mon Sep 17 00:00:00 2001 From: ivana Date: Wed, 7 Oct 2009 08:19:50 +0000 Subject: [PATCH] Replacements of "new AliMagF(..." with accessing field via AliGRPManager - Savannah bugs 56407 and 56455 (Javier) --- MUON/AliMUONAlignmentTask.cxx | 72 ++++++++++++++++++++++---------- MUON/AliMUONAlignmentTask.h | 14 ++++++- MUON/AliMUONReAlignTask.cxx | 20 +++++---- MUON/AliMUONReAlignTask.h | 2 +- MUON/AlirootRun_MUONtestAlign.sh | 2 - MUON/MUONAlignment.C | 20 +++++---- 6 files changed, 88 insertions(+), 42 deletions(-) diff --git a/MUON/AliMUONAlignmentTask.cxx b/MUON/AliMUONAlignmentTask.cxx index 661fd000c99..a32e639fac4 100644 --- a/MUON/AliMUONAlignmentTask.cxx +++ b/MUON/AliMUONAlignmentTask.cxx @@ -29,12 +29,12 @@ #include #include -#include #include #include #include #include #include +#include #include #include "AliAnalysisTask.h" @@ -44,9 +44,11 @@ #include "AliESDMuonTrack.h" #include "AliMagF.h" #include "AliCDBManager.h" +#include "AliGRPManager.h" #include "AliCDBMetaData.h" #include "AliCDBId.h" #include "AliGeomManager.h" +#include "AliLog.h" #include "AliMpCDB.h" #include "AliMUONAlignment.h" @@ -96,11 +98,13 @@ ClassImp(AliMUONAlignmentTask) // } //________________________________________________________________________ -AliMUONAlignmentTask::AliMUONAlignmentTask(const char *name, const char *geofilename) +AliMUONAlignmentTask::AliMUONAlignmentTask(const char *name, const char *geofilename, const char *defaultocdb, const char *misalignocdb) : AliAnalysisTask(name, ""), fESD(0x0), fAlign(0x0), fGeoFilename(geofilename), + fMisAlignOCDB(misalignocdb), + fDefaultOCDB(defaultocdb), fTransform(0x0), fTrackTot(0), fTrackOk(0), @@ -135,6 +139,8 @@ AliMUONAlignmentTask::AliMUONAlignmentTask(const AliMUONAlignmentTask& obj) fESD(0x0), fAlign(0x0), fGeoFilename(""), + fMisAlignOCDB(""), + fDefaultOCDB(""), fTransform(0x0), fTrackTot(0), fTrackOk(0), @@ -166,6 +172,8 @@ AliMUONAlignmentTask& AliMUONAlignmentTask::operator=(const AliMUONAlignmentTask fESD = other.fESD; fAlign = other.fAlign; fGeoFilename = other.fGeoFilename; + fMisAlignOCDB = other.fMisAlignOCDB; + fDefaultOCDB = other.fDefaultOCDB; fTransform = other.fTransform; fTrackTot = other.fTrackTot; fTrackOk = other.fTrackOk; @@ -191,26 +199,8 @@ void AliMUONAlignmentTask::LocalInit() { /// Local initialization, called once per task on the client machine /// where the analysis train is assembled - AliMpCDB::LoadMpSegmentation(); - // Import TGeo geometry (needed by AliMUONTrackExtrap::ExtrapToVertex) - if ( ! AliGeomManager::GetGeometry() ) { - AliGeomManager::LoadGeometry(fGeoFilename.Data()); - if (! AliGeomManager::GetGeometry() ) { - Error("MUONAlignment", "getting geometry from file %s failed", fGeoFilename.Data()); - return; - } - } - - // set mag field - // waiting for mag field in CDB - if (!TGeoGlobalMagField::Instance()->GetField()) { - printf("Loading field map...\n"); - AliMagF* field = new AliMagF("Maps","Maps",2,0.,0., 10.,AliMagF::k5kG); - TGeoGlobalMagField::Instance()->SetField(field); - } - // set the magnetic field for track extrapolations - AliMUONTrackExtrap::SetField(); + Prepare(fGeoFilename.Data(),fDefaultOCDB.Data(),fMisAlignOCDB.Data()); // Set initial values here, good guess may help convergence // St 1 @@ -419,7 +409,8 @@ void AliMUONAlignmentTask::Terminate(const Option_t*) // CDB manager AliCDBManager* cdbManager = AliCDBManager::Instance(); - cdbManager->SetDefaultStorage("local://ReAlignCDB"); + cdbManager->SetDefaultStorage(fDefaultOCDB.Data()); + cdbManager->SetSpecificStorage("MUON/Align/Data",fMisAlignOCDB.Data()); AliCDBMetaData* cdbData = new AliCDBMetaData(); cdbData->SetResponsible("Dimuon Offline project"); @@ -429,3 +420,40 @@ void AliMUONAlignmentTask::Terminate(const Option_t*) } +//----------------------------------------------------------------------- +void AliMUONAlignmentTask::Prepare(const char* geoFilename, const char* defaultOCDB, const char* misAlignOCDB) +{ + /// Set the geometry, the magnetic field, the mapping and the reconstruction parameters + + // Import TGeo geometry (needed by AliMUONTrackExtrap::ExtrapToVertex) + if (!gGeoManager) { + AliGeomManager::LoadGeometry(geoFilename); + if (!gGeoManager) { + AliError(Form("Getting geometry from file %s failed", "generated/galice.root")); + return; + } + } + + // Load mapping + AliCDBManager* man = AliCDBManager::Instance(); + man->SetDefaultStorage(defaultOCDB); + man->SetSpecificStorage("MUON/Align/Data",misAlignOCDB); + man->Print(); + man->SetRun(0); + if ( ! AliMpCDB::LoadDDLStore() ) { + AliError("Could not access mapping from OCDB !"); + exit(-1); + } + + // set mag field + if (!TGeoGlobalMagField::Instance()->GetField()) { + printf("Loading field map...\n"); + AliGRPManager *grpMan = new AliGRPManager(); + grpMan->ReadGRPEntry(); + grpMan->SetMagField(); + delete grpMan; + } + // set the magnetic field for track extrapolations + AliMUONTrackExtrap::SetField(); + +} diff --git a/MUON/AliMUONAlignmentTask.h b/MUON/AliMUONAlignmentTask.h index 6b5a769fa6b..4db605eaa2c 100644 --- a/MUON/AliMUONAlignmentTask.h +++ b/MUON/AliMUONAlignmentTask.h @@ -22,7 +22,7 @@ class AliMUONGeometryTransformer; class AliMUONAlignmentTask : public AliAnalysisTask { public: // AliMUONAlignmentTask(const char *name = "AliMUONAlignmentTask"); - AliMUONAlignmentTask(const char *name = "AliMUONAlignmentTask", const char *geofilename = "geometry.root"); + AliMUONAlignmentTask(const char *name = "AliMUONAlignmentTask", const char *geofilename = "geometry.root", const char *defaultocdb = "local://$ALICE_ROOT/OCDB", const char *misalignocdb = "local://ReAlignOCDB"); AliMUONAlignmentTask(const AliMUONAlignmentTask& obj); AliMUONAlignmentTask& operator=(const AliMUONAlignmentTask& other); virtual ~AliMUONAlignmentTask(); @@ -32,12 +32,22 @@ class AliMUONAlignmentTask : public AliAnalysisTask { virtual void CreateOutputObjects(); virtual void Exec(Option_t *option); virtual void Terminate(const Option_t*); + + /// Set geoemetry file name + void SetGeoFilename(const char* geoFilename) {fGeoFilename = geoFilename;} + /// Set mis align ocdb + void SetMisAlignOCDB(const char* misalignOCDB) {fMisAlignOCDB = misalignOCDB;} + /// Set default ocdb + void SetDefaultOCDB(const char* defaultOCDB) {fDefaultOCDB = defaultOCDB;} + void Prepare(const char* geoFilename, const char* defaultOCDB, const char* misalignOCDB); private: AliESDEvent *fESD; //!< ESD object AliMUONAlignment *fAlign; ///< The MUON alignment object TString fGeoFilename; ///< Geometry file name + TString fMisAlignOCDB; ///< OCDB with misalignment file + TString fDefaultOCDB; ///< Default OCDB AliMUONGeometryTransformer *fTransform; ///< MUON geometry transformer Int_t fTrackTot; ///< Number of track read @@ -54,7 +64,7 @@ class AliMUONAlignmentTask : public AliAnalysisTask { TList *fList; ///< list of graphs - ClassDef(AliMUONAlignmentTask, 1) // example of analysis + ClassDef(AliMUONAlignmentTask, 2) // example of analysis }; #endif diff --git a/MUON/AliMUONReAlignTask.cxx b/MUON/AliMUONReAlignTask.cxx index 34e03abf435..78c90b2173c 100644 --- a/MUON/AliMUONReAlignTask.cxx +++ b/MUON/AliMUONReAlignTask.cxx @@ -45,6 +45,7 @@ #include "AliESDMuonTrack.h" #include "AliMagF.h" #include "AliCDBManager.h" +#include "AliGRPManager.h" #include "AliGeomManager.h" #include "AliMpConstants.h" @@ -430,13 +431,7 @@ void AliMUONReAlignTask::Prepare(const char* geoFilename, const char* defaultOCD return; } } - - // set mag field - printf("Loading field map...\n"); - AliMagF* field = new AliMagF("Maps","Maps",2,0.,0., 10.,AliMagF::k5kG); - TGeoGlobalMagField::Instance()->SetField(field); - TGeoGlobalMagField::Instance()->Lock(); - + // Load mapping AliCDBManager* man = AliCDBManager::Instance(); man->SetDefaultStorage(defaultOCDB); @@ -447,6 +442,17 @@ void AliMUONReAlignTask::Prepare(const char* geoFilename, const char* defaultOCD Error("MUONRefit","Could not access mapping from OCDB !"); exit(-1); } + + // set mag field + if (!TGeoGlobalMagField::Instance()->GetField()) { + printf("Loading field map...\n"); + AliGRPManager *grpMan = new AliGRPManager(); + grpMan->ReadGRPEntry(); + grpMan->SetMagField(); + delete grpMan; + } + // set the magnetic field for track extrapolations + AliMUONTrackExtrap::SetField(); // Load initial reconstruction parameters from OCDB // reconstruction parameters diff --git a/MUON/AliMUONReAlignTask.h b/MUON/AliMUONReAlignTask.h index f120a073e7f..4436d2493fb 100644 --- a/MUON/AliMUONReAlignTask.h +++ b/MUON/AliMUONReAlignTask.h @@ -55,7 +55,7 @@ class AliMUONReAlignTask : public AliAnalysisTask { AliMUONRefitter *fRefitter; //!< The refitter class AliMUONRecoParam *fRecoParam; //!< Parameters for reconstruction TString fGeoFilename; ///< Geometry file name - TString fMisAlignOCDB; ///< OCDB with misalignment file + TString fMisAlignOCDB; ///< OCDB with misalignment file TString fDefaultOCDB; ///< Default OCDB AliMUONGeometryTransformer *fGeoTransformer; //!< Original geometry AliMUONGeometryTransformer *fNewGeoTransformer; //!< Aligned geometry diff --git a/MUON/AlirootRun_MUONtestAlign.sh b/MUON/AlirootRun_MUONtestAlign.sh index 430f8f0a52b..7d3dbdef6fe 100755 --- a/MUON/AlirootRun_MUONtestAlign.sh +++ b/MUON/AlirootRun_MUONtestAlign.sh @@ -63,8 +63,6 @@ aliroot -b >& testReco.out << EOF //man->SetDefaultStorage("local://$ALICE_ROOT/OCDB"); //man->SetSpecificStorage("MUON/Align/Data","local://$ALICE_ROOT/OCDB/MUON/FullMisAlignCDB"); gRandom->SetSeed($SEED); -AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 1, 1., 10., AliMagFMaps::k5kG); -AliTracker::SetFieldMap(field, kFALSE); AliReconstruction MuonRec("galice.root"); MuonRec.SetInput("$FULLPATH/raw.root"); MuonRec.SetRunVertexFinder(kFALSE); diff --git a/MUON/MUONAlignment.C b/MUON/MUONAlignment.C index eb325465e27..242af5eafcc 100644 --- a/MUON/MUONAlignment.C +++ b/MUON/MUONAlignment.C @@ -49,6 +49,7 @@ #include "AliESDMuonTrack.h" #include "AliMagF.h" #include "AliTracker.h" +#include "AliGRPManager.h" #include "AliCDBManager.h" #include "AliCDBMetaData.h" #include "AliCDBId.h" @@ -79,13 +80,18 @@ void MUONAlignment(Int_t nEvents = 100000, char* geoFilename = "geometry.root", } } + // CDB manager + AliCDBManager* cdbManager = AliCDBManager::Instance(); + cdbManager->SetDefaultStorage("local://$ALICE_ROOT/OCDB"); + cdbManager->SetRun(0); + // set mag field - // waiting for mag field in CDB if (!TGeoGlobalMagField::Instance()->GetField()) { printf("Loading field map...\n"); - // AliMagF* field = new AliMagF("Maps","Maps",2,1.,1., 10.,AliMagF::k5kG); - AliMagF* field = new AliMagF("Maps","Maps",2,0.,0., 10.,AliMagF::k5kG); - TGeoGlobalMagField::Instance()->SetField(field); + AliGRPManager *grpMan = new AliGRPManager(); + grpMan->ReadGRPEntry(); + grpMan->SetMagField(); + delete grpMan; } // set the magnetic field for track extrapolations AliMUONTrackExtrap::SetField(); @@ -307,10 +313,8 @@ void MUONAlignment(Int_t nEvents = 100000, char* geoFilename = "geometry.root", // 100 mum residual resolution for chamber misalignments? alig->SetAlignmentResolution(array,-1,0.01,0.01,0.004,0.003); - - // CDB manager - AliCDBManager* cdbManager = AliCDBManager::Instance(); - cdbManager->SetDefaultStorage("local://ReAlignCDB"); + + cdbManager->SetSpecificStorage("MUON/Align/Data","local://ReAlignCDB"); AliCDBMetaData* cdbData = new AliCDBMetaData(); cdbData->SetResponsible("Dimuon Offline project"); -- 2.43.0