// $Id$
//
-// Macro for generating the geometry data files:
-// (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").
-//
-// Author: I. Hrivnacova, IPN Orsay
+/// \ingroup macros
+/// \file MUONGenerateGeometryData.C
+/// \brief Macro for generating the geometry data files:
+/// transform.dat, svmap.dat.
+///
+/// To be run from aliroot:
+///
+/// .x MUONGenerateGeometryData.C
+///
+/// The generated files do not replace the existing ones
+/// but have different names (with extension ".out").
+///
+/// \author: I. Hrivnacova, IPN Orsay
+
+#if !defined(__CINT__) || defined(__MAKECINT__)
+
+#include "AliMUON.h"
+#include "AliMUONGeometryBuilder.h"
+#include "AliMUONGeometryTransformer.h"
+
+#include "AliRun.h"
+#include "AliCDBManager.h"
+#include "AliMC.h"
+
+#include <Riostream.h>
+#include <TROOT.h>
+#include <TInterpreter.h>
+
+#endif
-void MUONGenerateGeometryData(Bool_t volpaths = true,
- Bool_t transforms = true,
+void MUONGenerateGeometryData(Bool_t transforms = true,
Bool_t svmaps = true,
- Bool_t zeroAlign = true,
- Bool_t resMisAlign = true,
- Bool_t fullMisAlign = true)
+ Bool_t writeEnvelopes = true)
{
+/// \param transforms option to generete transform.dat
+/// \param svmaps option to generete svmap.dat
+/// \param writeEnvelope option to include virtual envelopes
+/// in the volume paths
+
+ // Default CDB and run number
+ AliCDBManager* man = AliCDBManager::Instance();
+ man->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
+ man->SetRun(0);
+
// Initialize
- gAlice->Init("$ALICE_ROOT/MUON/Config.C");
+ TString configFileName = "$ALICE_ROOT/MUON/Config.C";
+ gROOT->LoadMacro(configFileName.Data());
+ gInterpreter->ProcessLine(gAlice->GetConfigFunction());
+ gAlice->GetMCApp()->Init();
cout << "Init done " << endl;
// Get MUON detector
AliMUON* muon = (AliMUON*)gAlice->GetModule("MUON");
if (!muon) {
- AliFatal("MUON detector not defined.");
- return 0;
+ cerr << "MUON detector not defined." << endl;
+ return;
}
// 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;
if (svmaps) {
cout << "Generating svmaps file ..." << endl;
- builder->WriteSVMaps();
+ builder->WriteSVMaps("svmap.dat.out", true, writeEnvelopes);
}
-
- 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;
- }
-
-
}