Replacements of "new AliMagF(..." with accessing field
authorivana <ivana@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 7 Oct 2009 08:19:50 +0000 (08:19 +0000)
committerivana <ivana@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 7 Oct 2009 08:19:50 +0000 (08:19 +0000)
via AliGRPManager - Savannah bugs 56407 and 56455
(Javier)

MUON/AliMUONAlignmentTask.cxx
MUON/AliMUONAlignmentTask.h
MUON/AliMUONReAlignTask.cxx
MUON/AliMUONReAlignTask.h
MUON/AlirootRun_MUONtestAlign.sh
MUON/MUONAlignment.C

index 661fd00..a32e639 100644 (file)
 #include <fstream>
 
 #include <TString.h>
-#include <TError.h>
 #include <TGraphErrors.h>
 #include <TTree.h>
 #include <TChain.h>
 #include <TClonesArray.h>
 #include <TGeoGlobalMagField.h>
+#include <TGeoManager.h>
 #include <Riostream.h>
 
 #include "AliAnalysisTask.h"
 #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();
+  
+}
index 6b5a769..4db605e 100644 (file)
@@ -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
index 34e03ab..78c90b2 100644 (file)
@@ -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
index f120a07..4436d24 100644 (file)
@@ -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
index 430f8f0..7d3dbde 100755 (executable)
@@ -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);
index eb32546..242af5e 100644 (file)
@@ -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");