]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/MUONGenerateGeometryData.C
revision of AliDCSValue: Removed wrapper classes, reduced storage size per value...
[u/mrichter/AliRoot.git] / MUON / MUONGenerateGeometryData.C
index 960bdff8ca05e62221ad4168d9f734b3f1c67ea3..9eaf0ac5cc0a61f44211ecc253a9c946ab05975b 100644 (file)
 // $Id$
 //
 // Macro for generating the geometry data files:
-// (transform_*.dat, svmap_*.dat).
+// (volpath.dat, transform.dat, svmap.dat)
+// and local CDB storage with zero, residual and full misalignment
 // To be run from aliroot:
 // .x MUONGenerateGeometryData.C
 //
 // The generated files do not replace the existing ones
 // but have different names (with extension ".out").
-// To compare/replace the existing files with generated ones
-// run the scripts in MUON/data: 
-//   compare_data [transform] [svmaps]
-//   reset_data [transform] [svmaps]
 //
 //  Author: I. Hrivnacova, IPN Orsay
 
-void MUONGenerateGeometryData(Bool_t transforms = true, Bool_t svmaps = true)
+void MUONGenerateGeometryData(Bool_t volpaths = true,
+                              Bool_t transforms = true, 
+                              Bool_t svmaps = true,
+                             Bool_t zeroAlign = true,
+                             Bool_t resMisAlign = true,
+                             Bool_t fullMisAlign = true)
 {
   // Initialize
-  gAlice->Init("./Config.C");
+  gAlice->Init("$ALICE_ROOT/MUON/Config.C");
   cout << "Init done " << endl;
 
   // Get MUON detector
@@ -44,14 +46,81 @@ void MUONGenerateGeometryData(Bool_t transforms = true, Bool_t svmaps = true)
 
   // 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 files ..." << endl;
-    builder->WriteTransformations();
+    cout << "Generating transformation file ..." << endl;
+    builder->GetTransformer()->WriteTransformations("transform.dat.out");
   }  
 
   if (svmaps) {
-    cout << "Generating svmaps files ..." << endl;
+    cout << "Generating svmaps file ..." << endl;
     builder->WriteSVMaps();
   }  
+
+  if (zeroAlign) {
+    cout << "Generating zero misalignment data in  MUON/Align/Data..." << endl;
+   
+    // Create zero alignment data
+    TClonesArray* array 
+      = builder->GetTransformer()->CreateZeroAlignmentData();
+   
+    // CDB manager
+    AliCDBManager* cdbManager = AliCDBManager::Instance();
+    cdbManager->SetDefaultStorage("local://$ALICE_ROOT");
+  
+    AliCDBMetaData* cdbData = new AliCDBMetaData();
+    cdbData->SetResponsible("Dimuon Offline project");
+    cdbData->SetComment("MUON alignment objects for ideal geometry");
+    AliCDBId id("MUON/Align/Data", 0, 0); 
+    cdbManager->Put(array, id, cdbData);
+    
+    delete array;
+  } 
+  
+  if (resMisAlign) {
+    cout << "Generating residual misalignment data in  MUON/ResMisAlignCDB/Data..." << endl;
+   
+    AliMUONGeometryMisAligner misAligner(0.0, 0.004, 0.0, 0.003, 0.0, 0.0023);
+    AliMUONGeometryTransformer* newTransform 
+      = misAligner.MisAlign(builder->GetTransformer(), true);
+    TClonesArray* array = newTransform->GetMisAlignmentData();
+
+    AliCDBManager* cdbManager = AliCDBManager::Instance();
+    cdbManager->SetDefaultStorage("local://ResMisAlignCDB");
+  
+    AliCDBMetaData* cdbData = new AliCDBMetaData();
+    cdbData->SetResponsible("Dimuon Offline project");
+    cdbData->SetComment("MUON alignment objects with residual misalignment");
+    AliCDBId id("MUON/Align/Data", 0, 0); 
+    cdbManager->Put(array, id, cdbData);
+    
+    delete newTransform;
+  }   
+           
+  if (fullMisAlign) {
+    cout << "Generating residual misalignment data in  MUON/FullMisAlignCDB/Data..." << endl;
+   
+    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();
+
+    AliCDBManager* cdbManager = AliCDBManager::Instance();
+    cdbManager->SetDefaultStorage("local://FullMisAlignCDB");
+  
+    AliCDBMetaData* cdbData = new AliCDBMetaData();
+    cdbData->SetResponsible("Dimuon Offline project");
+    cdbData->SetComment("MUON alignment objects with full misalignment");
+    AliCDBId id("MUON/Align/Data", 0, 0); 
+    cdbManager->Put(array, id, cdbData);
+    
+    delete newTransform;
+  }   
+           
+
 }