// storage `local://cdb' which is a directory in the current
// directory.
//
-#include "AliLog.h" // ALILOG_H
+#include "AliFMDDebug.h" // ALIFMDDEBUG_H ALILOG_H
#include "AliFMDAlignFaker.h" // ALIFMDALIGNFAKER_H
#include <AliCDBManager.h> // ALICDBMANAGER_H
#include <AliCDBStorage.h> // ALICDBSTORAGE_H
#include <AliCDBEntry.h> // ALICDBMANAGER_H
// #include <AliAlignObj.h>
-#include <AliAlignObjAngles.h>
+#include <AliAlignObjParams.h>
// #include <Riostream.h>
-// #include <TSystem.h>
+#include <TSystem.h>
// #include <TMath.h>
#include <TRandom.h>
#include <TClonesArray.h>
#include <TGeoNode.h>
// #include <TGeoVolume.h>
#include <TROOT.h>
+#include <TClass.h>
//====================================================================
ClassImp(AliFMDAlignFaker)
fHalfRotMin(0,0,0),
fHalfRotMax(0,0,0),
fRunMin(0),
- fRunMax(9999999),
+ fRunMax(AliCDBRunRange::Infinity()),
fArray(0),
fComment("")
{
#define IS_NODE_SENSOR(name) \
(name[0] == 'F' && name[2] == 'S' && name[3] == 'E')
+//__________________________________________________________________
+Bool_t
+AliFMDAlignFaker::GetGeometry(Bool_t toCdb, const TString& storage)
+{
+ if (!toCdb) {
+ //load geom from default CDB storage
+ AliGeomManager::LoadGeometry();
+ return kTRUE;
+ }
+ if(!storage.BeginsWith("local://") &&
+ !storage.BeginsWith("alien://")) {
+ AliErrorClass(Form("STORAGE=\"%s\" invalid. Exiting\n", storage.Data()));
+ return kFALSE;
+ }
+
+ AliCDBManager* cdb = AliCDBManager::Instance();
+ AliCDBStorage* store = cdb->GetStorage(storage.Data());
+ if(!store){
+ AliErrorClass(Form("Unable to open storage %s\n", storage.Data()));
+ return kFALSE;
+ }
+
+ AliCDBPath path("GRP","Geometry","Data");
+ AliCDBEntry* entry = store->Get(path.GetPath(),cdb->GetRun());
+ if(!entry) {
+ AliErrorClass("Could not get the specified CDB entry!");
+ return kFALSE;
+ }
+
+
+ entry->SetOwner(0);
+ TGeoManager* geom = static_cast<TGeoManager*>(entry->GetObject());
+ AliGeomManager::SetGeometry(geom);
+ return kTRUE;
+}
+
//__________________________________________________________________
void
AliFMDAlignFaker::Exec(Option_t*)
return;
}
// Make container of transforms
- if (!fArray) fArray = new TClonesArray("AliAlignObjAngles");
+ if (!fArray) fArray = new TClonesArray("AliAlignObjParams");
fArray->Clear();
// Make an iterator
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",
+ Char_t ring = name[1];
+ Int_t lvl = next.GetLevel();
+ TGeoNode* parent = next.GetNode(lvl-1);
+ Int_t copy = parent->GetNumber();
+ alignName = Form("FMD/FMD%c_%c/FMD%c_%02d",
currentDet, currentHalf, ring, copy);
}
if (alignName.IsNull()) continue;
alignName.Data(), path.Data()));
alignName = path;
}
- AliDebug(1, Form("Making alignment for %s -> %s (%d)",
+ 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);
// rotX Rotation about X-axis
// rotY Rotation about Y-axis
// rotZ Rotation about Z-axis
- AliDebug(3, Form("Make alignment for %s (volume %d): (%f,%f,%f) (%f,%f,%f)",
+ AliFMDDebug(3, ("Make alignment for %s (volume %d): (%f,%f,%f) (%f,%f,%f)",
path.Data(), id, transX, transY, transZ, rotX, rotY, rotZ));
Int_t nAlign = fArray->GetEntries();
id = 0;
- AliAlignObjAngles* obj =
- new ((*fArray)[nAlign]) AliAlignObjAngles(path.Data(),
+ AliAlignObjParams* obj =
+ new ((*fArray)[nAlign]) AliAlignObjParams(path.Data(),
id,0,0,0,0,0,0,kTRUE);
if (!obj) {
AliError(Form("Failed to create alignment object for %s", path.Data()));
AliFMDAlignFaker::MakeAlignHalf(const TString& path, Int_t id)
{
// Make alignment of a half ring/cone
- AliDebug(15, Form("Make alignment for half-ring/cone %s", path.Data()));
+ AliFMDDebug(15, ("Make alignment for half-ring/cone %s", path.Data()));
Double_t transX = gRandom->Uniform(fHalfTransMin.X(), fHalfTransMax.X());
Double_t transY = gRandom->Uniform(fHalfTransMin.Y(), fHalfTransMax.Y());
Double_t transZ = gRandom->Uniform(fHalfTransMin.Z(), fHalfTransMax.Z());
AliFMDAlignFaker::MakeAlignSensor(const TString& path, Int_t id)
{
// Make alignment of a sensor
- AliDebug(15, Form("Make alignment for sensor %s", path.Data()));
+ AliFMDDebug(15, ("Make alignment for sensor %s", path.Data()));
Double_t transX = gRandom->Uniform(fSensorTransMin.X(), fSensorTransMax.X());
Double_t transY = gRandom->Uniform(fSensorTransMin.Y(), fSensorTransMax.Y());
Double_t transZ = gRandom->Uniform(fSensorTransMin.Z(), fSensorTransMax.Z());
return;
}
file->cd();
- fArray->Write("FMDAlignment");
+ fArray->Write("FMDAlignment",TObject::kSingleKey);
file->Write();
file->Close();
}