- if (IS_NODE_HALF(name) && TESTBIT(fMask, kHalves) ||
- IS_NODE_SENSOR(name) && TESTBIT(fMask, kSensors)) {
- // Get the path
- TString path(Form("/%s", gGeoManager->GetNode(0)->GetName()));
- Int_t nLevel = next.GetLevel();
- for (Int_t lvl = 0; lvl <= nLevel; lvl++) {
- TGeoNode* p = next.GetNode(lvl);
- if (!p && lvl != 0) {
- AliWarning(Form("No node at level %d in path %s", lvl, path.Data()));
- continue;
- }
- if (!path.IsNull()) path.Append("/");
- path.Append(p->GetName());
+ if (!(IS_NODE_HALF(name) && TESTBIT(fMask, kHalves)) &&
+ !(IS_NODE_SENSOR(name) && TESTBIT(fMask, kSensors)))
+ continue;
+
+ TString path, alignName;
+ next.GetPath(path);
+ Int_t id = node->GetVolume()->GetNumber();
+ if (IS_NODE_HALF(name)) {
+ currentDet = name[1];
+ currentHalf = name[3];
+ alignName = Form("FMD/FMD%c_%c", currentDet, currentHalf);
+ }
+ if (IS_NODE_SENSOR(name)) {
+ Char_t ring = name[1];
+ Int_t copy = node->GetNumber();
+ alignName = Form("FMD/FMD%c_%c/FMD%c_%02d",
+ currentDet, currentHalf, ring, copy);
+ }
+ if (alignName.IsNull()) continue;
+ if (!gGeoManager->GetAlignableEntry(alignName.Data())) {
+ AliWarning(Form("No alignable entry for %s, using path %s",
+ alignName.Data(), path.Data()));
+ alignName = path;
+ }
+ AliFMDDebug(1, ("Making alignment for %s -> %s (%d)",
+ alignName.Data(), path.Data(), id));
+ if (IS_NODE_HALF(name)) MakeAlignHalf(alignName, id);
+ if (IS_NODE_SENSOR(name)) MakeAlignSensor(alignName, id);
+#if 0
+ if (!(IS_NODE_HALF(name) && TESTBIT(fMask, kHalves)) &&
+ !(IS_NODE_SENSOR(name) && TESTBIT(fMask, kSensors)))
+ continue;
+
+ // Get the path
+ TString path(Form("/%s", gGeoManager->GetNode(0)->GetName()));
+ Int_t nLevel = next.GetLevel();
+ for (Int_t lvl = 0; lvl <= nLevel; lvl++) {
+ TGeoNode* p = next.GetNode(lvl);
+ if (!p) {
+ if (lvl != 0)
+ AliWarning(Form("No node at level %d in path %s",lvl,path.Data()));
+ continue;