+//_____________________________________________________________________________
+void AliMUONGeometryTransformer::AddAlignableVolumes() const
+{
+/// Set symbolic names to alignable objects to TGeo
+
+ if ( ! gGeoManager ) {
+ AliWarning("TGeoManager not defined.");
+ return;
+ }
+
+ // Modules
+ for (Int_t i=0; i<fModuleTransformers->GetEntriesFast(); i++) {
+ AliMUONGeometryModuleTransformer* module
+ = (AliMUONGeometryModuleTransformer*)fModuleTransformers->At(i);
+
+ // Set module symbolic name
+ gGeoManager->SetAlignableEntry(GetModuleSymName(module->GetModuleId()),
+ module->GetVolumePath());
+ //cout << "Module sym name: " << GetModuleSymName(module->GetModuleId())
+ // << " volPath: " << module->GetVolumePath() << endl;
+
+ // Detection elements
+ AliMpExMap* detElements = module->GetDetElementStore();
+
+ for (Int_t j=0; j<detElements->GetSize(); j++) {
+ AliMUONGeometryDetElement* detElement
+ = (AliMUONGeometryDetElement*)detElements->GetObject(j);
+
+ // Set detection element symbolic name
+ gGeoManager->SetAlignableEntry(GetDESymName(detElement->GetId()),
+ detElement->GetVolumePath());
+ //cout << "DE name: " << GetDESymName(detElement->GetId())
+ // << " volPath: " << detElement->GetVolumePath() << endl;
+ }
+ }
+}
+
+//_____________________________________________________________________________
+TClonesArray* AliMUONGeometryTransformer::CreateZeroAlignmentData() const
+{
+/// Create array with zero alignment data
+
+ // Create array for zero-alignment objects
+ TClonesArray* array = new TClonesArray("AliAlignObjMatrix", 200);
+ TClonesArray& refArray =*array;
+ array->SetOwner(true);
+
+ // Identity matrix
+ TGeoHMatrix matrix;
+
+ // Modules
+ for (Int_t i=0; i<fModuleTransformers->GetEntriesFast(); i++) {
+ AliMUONGeometryModuleTransformer* module
+ = (AliMUONGeometryModuleTransformer*)fModuleTransformers->At(i);
+
+ Int_t moduleId = module->GetModuleId();
+
+ // Align object ID
+ Int_t volId = AliAlignObj::LayerToVolUID(AliAlignObj::kMUON, moduleId);
+
+ // Create mis align matrix
+ Int_t pos = array->GetEntriesFast();
+ new (refArray[pos]) AliAlignObjMatrix(GetModuleSymName(moduleId), volId, matrix, kTRUE);
+ }
+
+ // Detection elements
+ for (Int_t i=0; i<fModuleTransformers->GetEntriesFast(); i++) {
+ AliMUONGeometryModuleTransformer* moduleTransformer
+ = (AliMUONGeometryModuleTransformer*)fModuleTransformers->At(i);
+ AliMpExMap* detElements = moduleTransformer->GetDetElementStore();
+
+ for (Int_t j=0; j<detElements->GetSize(); j++) {
+ AliMUONGeometryDetElement* detElement
+ = (AliMUONGeometryDetElement*)detElements->GetObject(j);
+
+ Int_t detElemId = detElement->GetId();
+
+ // Align object ID
+ Int_t volId = AliAlignObj::LayerToVolUID(AliAlignObj::kMUON, detElemId);
+
+ // Create mis align matrix
+ Int_t pos = array->GetEntriesFast();
+ new (refArray[pos]) AliAlignObjMatrix(GetDESymName(detElemId), volId, matrix, kTRUE);
+ }
+ }
+
+ return array;
+}
+