-void MakePHOSAlignmentModule2()\r
-{\r
- // Create misalignment object for PHOS module 2 \r
- // from the survey measurements on P2 in May 2008.\r
- // To store alignment in OCDB, define the evnironment variables:\r
- // TOCDB=kTRUE\r
- // STORAGE="local://$ALICE_ROOT/OCDB"\r
- // Author: Timur Pocheptsov, 19.06.2008\r
-\r
- const char * macroName = "MakePHOS2Alignment";\r
- \r
- const AliPHOSGeometry *phosGeom = AliPHOSGeometry::GetInstance("IHEP", "IHEP");\r
- if (!phosGeom) {\r
- Error(macroName, "Cannot obtain AliPHOSGeometry singleton.\n");\r
- return;\r
- }\r
-\r
- //Activate CDB storage and load geometry from CDB\r
- //I need valid gGeoManager to create local transformations.\r
- \r
- //[Part of code, taken from ITS version of MakexxxFullMisalignment\r
- AliCDBManager * cdb = AliCDBManager::Instance();\r
- if (!cdb->IsDefaultStorageSet())\r
- cdb->SetDefaultStorage("local://$ALICE_ROOT/OCDB");\r
- cdb->SetRun(0);\r
-\r
- if (TString(gSystem->Getenv("TOCDB")) == TString("kTRUE")) {\r
- const TString storageENV(gSystem->Getenv("STORAGE"));\r
- if (!storageENV.BeginsWith("local://") && !storageENV.BeginsWith("alien://")) {\r
- Error(macroName, "STORAGE variable set to %s is not valid.\n", storageENV.Data());\r
- return;\r
- }\r
- \r
- AliCDBStorage * storage = cdb->GetStorage(storageENV.Data());\r
- if (!storage) {\r
- Error(macroName, "Unable to open storage %s.\n", storageENV.Data());\r
- return;\r
- }\r
- \r
- AliCDBPath path("GRP","Geometry","Data");\r
- AliCDBEntry * entry = storage->Get(path.GetPath(), cdb->GetRun());\r
- if (!entry) {\r
- Error(macroName,"Could not get the specified CDB entry!");\r
- return; \r
- }\r
- \r
- entry->SetOwner(0);\r
- AliGeomManager::SetGeometry((TGeoManager*) entry->GetObject());\r
- }else{\r
- AliGeomManager::LoadGeometry("geometry.root"); //load geom from default CDB storage\r
- } \r
- //end of code taken from ITS version of MakexxxFullMisalignment]\r
-\r
- AliPHOSEMCAGeometry * emca = phosGeom->GetEMCAGeometry();\r
- TClonesArray alobj("AliAlignObjParams", 16);// + phosGeom->GetNModules() * emca->GetNStripX() * emca->GetNStripZ());\r
- \r
- const Double_t dpsi = 0., dtheta = 0., dphi = 0.;\r
- const Double_t displacement = 10.;\r
- Int_t iIndex = 0; //let all modules have index=0 in a layer with no LUT\r
- const AliGeomManager::ELayerID iLayer = AliGeomManager::kInvalidLayer;\r
- UShort_t volid = AliGeomManager::LayerToVolUID(iLayer, iIndex);\r
- Int_t i = 0;\r
-\r
- // Alignment for 5 PHOS modules\r
-\r
- new(alobj[i++]) AliAlignObjParams("PHOS/Module1",\r
- volid, 0., 0., 0., 0., 0., 0., kTRUE);\r
- new(alobj[i++]) AliAlignObjParams("PHOS/Module2",\r
- volid, 0., 0., 0., 0., 0., 0., kTRUE);\r
-\r
- Double_t rotMatrix[9] = {0.999992695, -0.00295322, -0.0024267, \r
- 0.002955489, 0.999995199, 0.00093165, \r
- 0.002423942, -0.000938811, 0.99999662};\r
- TGeoRotation rotation;\r
- rotation.SetMatrix(rotMatrix);\r
- Double_t dX=1.25474126, dY=-1.4088643, dZ=-12.856;\r
- AliAlignObjParams * mod3 = \r
- new(alobj[i++]) AliAlignObjParams("PHOS/Module3", volid, dX, dY, dZ, 0., 0., 0., kFALSE);\r
- mod3->SetRotation(rotation);\r
- \r
- new(alobj[i++]) AliAlignObjParams("PHOS/Module4",\r
- volid, 0., 0., 0., 0., 0., 0., kTRUE);\r
- new(alobj[i++]) AliAlignObjParams("PHOS/Module5",\r
- volid, 0., 0., 0., 0., 0., 0., kTRUE);\r
-\r
- const Double_t dx = 0., dy = 0., dz = 0. ;\r
- // Alignment of CPV modules\r
- new(alobj[i++]) AliAlignObjParams("PHOS/Module1/CPV",\r
- volid, dx, dy, dz, dpsi, dtheta, dphi, kTRUE);\r
- new(alobj[i++]) AliAlignObjParams("PHOS/Module2/CPV",\r
- volid, dx, dy, dz, dpsi, dtheta, dphi, kTRUE);\r
- new(alobj[i++]) AliAlignObjParams("PHOS/Module3/CPV",\r
- volid, dx, dy, dz, dpsi, dtheta, dphi, kTRUE);\r
- new(alobj[i++]) AliAlignObjParams("PHOS/Module4/CPV",\r
- volid, dx, dy, dz, dpsi, dtheta, dphi, kTRUE);\r
- new(alobj[i++]) AliAlignObjParams("PHOS/Module5/CPV",\r
- volid, dx, dy, dz, dpsi, dtheta, dphi, kTRUE);\r
- \r
- // Alignment for PHOS cradle\r
- new(alobj[i++]) AliAlignObjParams("PHOS/Cradle0",\r
- volid, 0., 0., -displacement, dpsi, dtheta, dphi, kTRUE);\r
- new(alobj[i++]) AliAlignObjParams("PHOS/Cradle1",\r
- volid, 0., 0., +displacement, dpsi, dtheta, dphi, kTRUE);\r
-\r
- // Alignment for cradle wheels\r
- new(alobj[i++]) AliAlignObjParams("PHOS/Wheel0",\r
- volid, 0., 0., -displacement, dpsi, dtheta, dphi, kTRUE);\r
- new(alobj[i++]) AliAlignObjParams("PHOS/Wheel1",\r
- volid, 0., 0., -displacement, dpsi, dtheta, dphi, kTRUE);\r
- new(alobj[i++]) AliAlignObjParams("PHOS/Wheel2",\r
- volid, 0., 0., +displacement, dpsi, dtheta, dphi, kTRUE);\r
- new(alobj[i++]) AliAlignObjParams("PHOS/Wheel3",\r
- volid, 0., 0., +displacement, dpsi, dtheta, dphi, kTRUE);\r
-\r
- // ************************* 2nd step ***************\r
- if ( TString(gSystem->Getenv("TOCDB")) != TString("kTRUE") ) {\r
- // save on file\r
- const char * fileName = "PHOSfullMisalignment.root";\r
- TFile f(fileName,"RECREATE");\r
- if (!f) {\r
- Error(macroName, "cannot open file for output\n");\r
- return;\r
- }\r
- \r
- Info(macroName,"Saving alignment objects to the file %s", fileName);\r
- f.cd();\r
- f.WriteObject(&alobj,"PHOSAlignObjs","kSingleKey");\r
- f.Close();\r
- }else{\r
- // save in CDB storage\r
- TString storageENV = gSystem->Getenv("STORAGE");\r
- if(!storageENV.BeginsWith("local://") && !storageENV.BeginsWith("alien://")) {\r
- Error(macroName,"STORAGE variable set to %s is not valid. Exiting\n", storageENV.Data());\r
- return;\r
- }\r
- \r
- Info(macroName,"Saving alignment objects in CDB storage %s", storageENV.Data());\r
- AliCDBManager * cdb = AliCDBManager::Instance();\r
- AliCDBStorage * storage = cdb->GetStorage(storageENV.Data());\r
- if (!storage) {\r
- Error(macroName, "Unable to open storage %s\n", storageENV.Data());\r
- return;\r
- }\r
- \r
- AliCDBMetaData md;\r
- md.SetResponsible("Timur Pocheptsov");\r
- md.SetComment("Alignment objects for PHOS module 2; survey in May 2008");\r
- md.SetAliRootVersion(gSystem->Getenv("ARVERSION"));\r
- AliCDBId id("PHOS/Align/Data",0,AliCDBRunRange::Infinity());\r
- storage->Put(&alobj, id, &md);\r
- }\r
-\r
- alobj.Delete();\r
-}\r
+void MakePHOSAlignmentModule2()
+{
+ // Create misalignment object for PHOS module 2
+ // from the survey measurements on P2 in May 2008.
+ // To store alignment in OCDB, define the evnironment variables:
+ // TOCDB=kTRUE
+ // STORAGE="local://$ALICE_ROOT/OCDB"
+ // Author: Timur Pocheptsov, 19.06.2008
+
+ const char * macroName = "MakePHOS2Alignment";
+
+ const AliPHOSGeometry *phosGeom = AliPHOSGeometry::GetInstance("IHEP", "IHEP");
+ if (!phosGeom) {
+ Error(macroName, "Cannot obtain AliPHOSGeometry singleton.\n");
+ return;
+ }
+
+ //Activate CDB storage and load geometry from CDB
+ //I need valid gGeoManager to create local transformations.
+
+ //[Part of code, taken from ITS version of MakexxxFullMisalignment
+ AliCDBManager * cdb = AliCDBManager::Instance();
+ if (!cdb->IsDefaultStorageSet())
+ cdb->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
+ cdb->SetRun(0);
+
+ if (TString(gSystem->Getenv("TOCDB")) == TString("kTRUE")) {
+ const TString storageENV(gSystem->Getenv("STORAGE"));
+ if (!storageENV.BeginsWith("local://") && !storageENV.BeginsWith("alien://")) {
+ Error(macroName, "STORAGE variable set to %s is not valid.\n", storageENV.Data());
+ return;
+ }
+
+ AliCDBStorage * storage = cdb->GetStorage(storageENV.Data());
+ if (!storage) {
+ Error(macroName, "Unable to open storage %s.\n", storageENV.Data());
+ return;
+ }
+
+ AliCDBPath path("GRP","Geometry","Data");
+ AliCDBEntry * entry = storage->Get(path.GetPath(), cdb->GetRun());
+ if (!entry) {
+ Error(macroName,"Could not get the specified CDB entry!");
+ return;
+ }
+
+ entry->SetOwner(0);
+ AliGeomManager::SetGeometry((TGeoManager*) entry->GetObject());
+ }else{
+ AliGeomManager::LoadGeometry("geometry.root"); //load geom from default CDB storage
+ }
+ //end of code taken from ITS version of MakexxxFullMisalignment]
+
+ AliPHOSEMCAGeometry * emca = phosGeom->GetEMCAGeometry();
+ TClonesArray alobj("AliAlignObjParams", 16);// + phosGeom->GetNModules() * emca->GetNStripX() * emca->GetNStripZ());
+
+ const Double_t dpsi = 0., dtheta = 0., dphi = 0.;
+ const Double_t displacement = 10.;
+ Int_t iIndex = 0; //let all modules have index=0 in a layer with no LUT
+ const AliGeomManager::ELayerID iLayer = AliGeomManager::kInvalidLayer;
+ UShort_t volid = AliGeomManager::LayerToVolUID(iLayer, iIndex);
+ Int_t i = 0;
+
+ // Alignment for 5 PHOS modules
+
+ new(alobj[i++]) AliAlignObjParams("PHOS/Module1",
+ volid, 0., 0., 0., 0., 0., 0., kTRUE);
+ new(alobj[i++]) AliAlignObjParams("PHOS/Module2",
+ volid, 0., 0., 0., 0., 0., 0., kTRUE);
+
+ Double_t rotMatrix[9] = {0.999992695, -0.00295322, -0.0024267,
+ 0.002955489, 0.999995199, 0.00093165,
+ 0.002423942, -0.000938811, 0.99999662};
+ TGeoRotation rotation;
+ rotation.SetMatrix(rotMatrix);
+ Double_t dX=1.25474126, dY=-1.4088643, dZ=-12.856;
+ AliAlignObjParams * mod3 =
+ new(alobj[i++]) AliAlignObjParams("PHOS/Module3", volid, dX, dY, dZ, 0., 0., 0., kFALSE);
+ mod3->SetRotation(rotation);
+
+ new(alobj[i++]) AliAlignObjParams("PHOS/Module4",
+ volid, 0., 0., 0., 0., 0., 0., kTRUE);
+ new(alobj[i++]) AliAlignObjParams("PHOS/Module5",
+ volid, 0., 0., 0., 0., 0., 0., kTRUE);
+
+ const Double_t dx = 0., dy = 0., dz = 0. ;
+ // Alignment of CPV modules
+ new(alobj[i++]) AliAlignObjParams("PHOS/Module1/CPV",
+ volid, dx, dy, dz, dpsi, dtheta, dphi, kTRUE);
+ new(alobj[i++]) AliAlignObjParams("PHOS/Module2/CPV",
+ volid, dx, dy, dz, dpsi, dtheta, dphi, kTRUE);
+ new(alobj[i++]) AliAlignObjParams("PHOS/Module3/CPV",
+ volid, dx, dy, dz, dpsi, dtheta, dphi, kTRUE);
+ new(alobj[i++]) AliAlignObjParams("PHOS/Module4/CPV",
+ volid, dx, dy, dz, dpsi, dtheta, dphi, kTRUE);
+ new(alobj[i++]) AliAlignObjParams("PHOS/Module5/CPV",
+ volid, dx, dy, dz, dpsi, dtheta, dphi, kTRUE);
+
+ // Alignment for PHOS cradle
+ new(alobj[i++]) AliAlignObjParams("PHOS/Cradle0",
+ volid, 0., 0., -displacement, dpsi, dtheta, dphi, kTRUE);
+ new(alobj[i++]) AliAlignObjParams("PHOS/Cradle1",
+ volid, 0., 0., +displacement, dpsi, dtheta, dphi, kTRUE);
+
+ // Alignment for cradle wheels
+ new(alobj[i++]) AliAlignObjParams("PHOS/Wheel0",
+ volid, 0., 0., -displacement, dpsi, dtheta, dphi, kTRUE);
+ new(alobj[i++]) AliAlignObjParams("PHOS/Wheel1",
+ volid, 0., 0., -displacement, dpsi, dtheta, dphi, kTRUE);
+ new(alobj[i++]) AliAlignObjParams("PHOS/Wheel2",
+ volid, 0., 0., +displacement, dpsi, dtheta, dphi, kTRUE);
+ new(alobj[i++]) AliAlignObjParams("PHOS/Wheel3",
+ volid, 0., 0., +displacement, dpsi, dtheta, dphi, kTRUE);
+
+ // ************************* 2nd step ***************
+ if ( TString(gSystem->Getenv("TOCDB")) != TString("kTRUE") ) {
+ // save on file
+ const char * fileName = "PHOSfullMisalignment.root";
+ TFile f(fileName,"RECREATE");
+ if (!f) {
+ Error(macroName, "cannot open file for output\n");
+ return;
+ }
+
+ Info(macroName,"Saving alignment objects to the file %s", fileName);
+ f.cd();
+ f.WriteObject(&alobj,"PHOSAlignObjs","kSingleKey");
+ f.Close();
+ }else{
+ // save in CDB storage
+ TString storageENV = gSystem->Getenv("STORAGE");
+ if(!storageENV.BeginsWith("local://") && !storageENV.BeginsWith("alien://")) {
+ Error(macroName,"STORAGE variable set to %s is not valid. Exiting\n", storageENV.Data());
+ return;
+ }
+
+ Info(macroName,"Saving alignment objects in CDB storage %s", storageENV.Data());
+ AliCDBManager * cdb = AliCDBManager::Instance();
+ AliCDBStorage * storage = cdb->GetStorage(storageENV.Data());
+ if (!storage) {
+ Error(macroName, "Unable to open storage %s\n", storageENV.Data());
+ return;
+ }
+
+ AliCDBMetaData md;
+ md.SetResponsible("Timur Pocheptsov");
+ md.SetComment("Alignment objects for PHOS module 2; survey in May 2008");
+ md.SetAliRootVersion(gSystem->Getenv("ARVERSION"));
+ AliCDBId id("PHOS/Align/Data",0,AliCDBRunRange::Infinity());
+ storage->Put(&alobj, id, &md);
+ }
+
+ alobj.Delete();
+}