#include "AliMUONGeometryTransformer.h"
#include "AliMUONGeometryModuleTransformer.h"
#include "AliMUONGeometryDetElement.h"
-#include "AliMUONGeometryStore.h"
#include "AliMUONGeometryBuilder.h"
+#include "AliMpDEManager.h"
+#include "AliMpExMap.h"
+
#include "AliLog.h"
#include "AliAlignObjMatrix.h"
#include "AliAlignObj.h"
/// Standard constructor
// Create array for geometry modules
- fModuleTransformers = new TObjArray();
+ fModuleTransformers = new TObjArray(100);
fModuleTransformers->SetOwner(isOwner);
}
/// Create detection element with the given detElemId and volPath
// Module Id
- Int_t moduleId = AliMUONGeometryStore::GetModuleId(detElemId);
+ Int_t moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
// Get detection element store
- AliMUONGeometryStore* detElements =
+ AliMpExMap* detElements =
GetModuleTransformer(moduleId)->GetDetElementStore();
// Add detection element
{
/// Fill the transformation of the module.
- // Get/Create geometry module transformer
- moduleId--;
- // Modules numbers in the file are starting from 1
-
AliMUONGeometryModuleTransformer* moduleTransformer
= GetModuleTransformerNonConst(moduleId, false);
/// Fill the transformation of the detection element.
// Module Id
- Int_t moduleId = AliMUONGeometryStore::GetModuleId(detElemId);
+ Int_t moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
// Get module transformer
const AliMUONGeometryModuleTransformer* kModuleTransformer
// << "volPath= " << volumePath
// << endl;
- if ( key == TString("CH") )
+ if ( key == AliMUONGeometryModuleTransformer::GetModuleNamePrefix() )
FillModuleVolPath(id, volumePath);
- else if ( key == TString("DE") )
+ else if ( key == AliMUONGeometryDetElement::GetDENamePrefix() )
FillDetElemVolPath(id, volumePath);
else {
/// Read and fill modules transformations from the stream.
/// Return true, if reading finished correctly.
- TString key("CH");
- while ( key == TString("CH") ) {
+ TString key(AliMUONGeometryModuleTransformer::GetModuleNamePrefix());
+ while ( key == AliMUONGeometryModuleTransformer::GetModuleNamePrefix() ) {
Int_t id;
Double_t x, y, z;
Double_t a1, a2, a3, a4, a5, a6;
/// Read detection elements transformations from the stream.
/// Return true, if reading finished correctly.
- TString key("DE");
- while ( key == TString("DE") ) {
+ TString key(AliMUONGeometryDetElement::GetDENamePrefix());
+ while ( key == AliMUONGeometryDetElement::GetDENamePrefix() ) {
// Input data
Int_t detElemId;
moduleTransformer->SetTransformation(matrix);
// Loop over detection elements
- AliMUONGeometryStore* detElements
- = moduleTransformer->GetDetElementStore();
+ AliMpExMap* detElements = moduleTransformer->GetDetElementStore();
- for (Int_t j=0; j<detElements->GetNofEntries(); j++) {
+ for (Int_t j=0; j<detElements->GetSize(); j++) {
AliMUONGeometryDetElement* detElement
- = (AliMUONGeometryDetElement*)detElements->GetEntry(j);
+ = (AliMUONGeometryDetElement*)detElements->GetObject(j);
// Det element path
TString dePath = detElement->GetVolumePath();
TString key;
in >> key;
while ( !in.eof() ) {
- if (key == TString("CH"))
+ if ( key == AliMUONGeometryModuleTransformer::GetModuleNamePrefix() )
key = ReadModuleTransforms(in);
- else if (key == TString("DE"))
+ else if ( key == AliMUONGeometryDetElement::GetDENamePrefix() )
key = ReadDetElemTransforms(in);
else {
AliFatal(Form("%s key not recognized", key.Data()));
filePath += fileName;
// Load root geometry
- TGeoManager* tgeoManager = TGeoManager::Import(fileName);
+ TGeoManager* tgeoManager = gGeoManager;
+ if (!tgeoManager)
+ tgeoManager = TGeoManager::Import(fileName);
// Retrieve matrices
LoadTransforms(tgeoManager);
-
+
return true;
}
= (AliMUONGeometryModuleTransformer*)fModuleTransformers->At(i);
// Write data on out
- out << "CH "
+ out << AliMUONGeometryModuleTransformer::GetModuleNamePrefix() << " "
<< setw(4) << moduleTransformer->GetModuleId() << " "
<< moduleTransformer->GetVolumePath() << endl;
}
for (Int_t i=0; i<fModuleTransformers->GetEntriesFast(); i++) {
AliMUONGeometryModuleTransformer* moduleTransformer
= (AliMUONGeometryModuleTransformer*)fModuleTransformers->At(i);
- AliMUONGeometryStore* detElements
- = moduleTransformer->GetDetElementStore();
+ AliMpExMap* detElements = moduleTransformer->GetDetElementStore();
- for (Int_t j=0; j<detElements->GetNofEntries(); j++) {
+ for (Int_t j=0; j<detElements->GetSize(); j++) {
AliMUONGeometryDetElement* detElement
- = (AliMUONGeometryDetElement*)detElements->GetEntry(j);
+ = (AliMUONGeometryDetElement*)detElements->GetObject(j);
// Write data on out
- out << "DE "
+ out << AliMUONGeometryDetElement::GetDENamePrefix() << " "
<< setw(4) << detElement->GetId() << " "
<< detElement->GetVolumePath() << endl;
}
= moduleTransformer->GetTransformation();
// Write data on out
- out << "CH "
- << setw(4) << moduleTransformer->GetModuleId() + 1;
+ out << AliMUONGeometryModuleTransformer::GetModuleNamePrefix() << " "
+ << setw(4) << moduleTransformer->GetModuleId();
WriteTransform(out, transform);
}
for (Int_t i=0; i<fModuleTransformers->GetEntriesFast(); i++) {
AliMUONGeometryModuleTransformer* moduleTransformer
= (AliMUONGeometryModuleTransformer*)fModuleTransformers->At(i);
- AliMUONGeometryStore* detElements
- = moduleTransformer->GetDetElementStore();
+ AliMpExMap* detElements = moduleTransformer->GetDetElementStore();
- for (Int_t j=0; j<detElements->GetNofEntries(); j++) {
+ for (Int_t j=0; j<detElements->GetSize(); j++) {
AliMUONGeometryDetElement* detElement
- = (AliMUONGeometryDetElement*)detElements->GetEntry(j);
+ = (AliMUONGeometryDetElement*)detElements->GetObject(j);
const TGeoMatrix* transform
= detElement->GetLocalTransformation();
// Write data on out
- out << "DE " << setw(4) << detElement->GetId();
+ out << AliMUONGeometryDetElement::GetDENamePrefix() << " "
+ << setw(4) << detElement->GetId();
WriteTransform(out, transform);
}
//______________________________________________________________________________
TString AliMUONGeometryTransformer::GetDESymName(Int_t detElemId) const
{
+/// Return the detection element symbolic name (used for alignment)
const AliMUONGeometryDetElement* kDetElement
= GetDetElement(detElemId);
}
// Module Id
- Int_t moduleId = AliMUONGeometryStore::GetModuleId(detElemId);
+ Int_t moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
return GetModuleSymName(moduleId) + "/" + kDetElement->GetDEName();
}
{
/// Add the module transformer to the array
- fModuleTransformers->AddAt(moduleTransformer,
- moduleTransformer->GetModuleId());
+ // Expand the size if not sufficient
+ Int_t moduleId = moduleTransformer->GetModuleId();
+ if ( moduleId >= fModuleTransformers->GetSize() )
+ fModuleTransformers->Expand(moduleId+1);
+
+ fModuleTransformers->AddAt(moduleTransformer, moduleId);
}
//_____________________________________________________________________________
// << " volPath: " << module->GetVolumePath() << endl;
// Detection elements
- AliMUONGeometryStore* detElements
- = module->GetDetElementStore();
+ AliMpExMap* detElements = module->GetDetElementStore();
- for (Int_t j=0; j<detElements->GetNofEntries(); j++) {
+ for (Int_t j=0; j<detElements->GetSize(); j++) {
AliMUONGeometryDetElement* detElement
- = (AliMUONGeometryDetElement*)detElements->GetEntry(j);
+ = (AliMUONGeometryDetElement*)detElements->GetObject(j);
// Set detection element symbolic name
gGeoManager->SetAlignableEntry(GetDESymName(detElement->GetId()),
for (Int_t i=0; i<fModuleTransformers->GetEntriesFast(); i++) {
AliMUONGeometryModuleTransformer* moduleTransformer
= (AliMUONGeometryModuleTransformer*)fModuleTransformers->At(i);
- AliMUONGeometryStore* detElements
- = moduleTransformer->GetDetElementStore();
+ AliMpExMap* detElements = moduleTransformer->GetDetElementStore();
- for (Int_t j=0; j<detElements->GetNofEntries(); j++) {
+ for (Int_t j=0; j<detElements->GetSize(); j++) {
AliMUONGeometryDetElement* detElement
- = (AliMUONGeometryDetElement*)detElements->GetEntry(j);
+ = (AliMUONGeometryDetElement*)detElements->GetObject(j);
Int_t detElemId = detElement->GetId();
/// Return the geometry module transformer specified by detection element ID
// Get module index
- Int_t index = AliMUONGeometryStore::GetModuleId(detElemId);
+ Int_t index = AliMpDEManager::GetGeomModuleId(detElemId);
return GetModuleTransformer(index, warn);
}