// $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
// 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;
+ }
+
+
}