From 2aebba192153f865e744b531d9258c4fe60bd390 Mon Sep 17 00:00:00 2001 From: kharlov Date: Wed, 27 Sep 2006 19:55:57 +0000 Subject: [PATCH] Alignment object with symbolic volume names are introduced --- PHOS/AliPHOSv0.cxx | 68 +++++++++++++ PHOS/AliPHOSv0.h | 5 + PHOS/macros/AlignmentDB/AliPHOSSetAlignment.C | 98 +++++++++---------- 3 files changed, 122 insertions(+), 49 deletions(-) diff --git a/PHOS/AliPHOSv0.cxx b/PHOS/AliPHOSv0.cxx index 39f488925c0..51663c622df 100644 --- a/PHOS/AliPHOSv0.cxx +++ b/PHOS/AliPHOSv0.cxx @@ -17,6 +17,9 @@ /* History of cvs commits: * * $Log$ + * Revision 1.81 2006/03/04 20:25:56 kharlov + * Set geom parameters from CDB + * * Revision 1.80 2005/06/17 07:39:07 hristov * Removing GetDebug and SetDebug from AliRun and AliModule. Using AliLog for the messages * @@ -44,6 +47,7 @@ #include #include #include +#include // --- Standard library --- @@ -866,6 +870,70 @@ void AliPHOSv0::CreateGeometryforSupport() } +//_____________________________________________________________________________ +void AliPHOSv0::AddAlignableVolumes() const +{ + // + // Create entries for alignable volumes associating the symbolic volume + // name with the corresponding volume path. Needs to be syncronized with + // eventual changes in the geometry + // Alignable volumes are: + // 1) PHOS modules as a whole + // 2) Cradle + // 3) Cradle wheels + // 4) Strip units (group of 2x8 crystals) + + TString volpath, symname; + + // Alignable modules + // Volume path /ALIC_1/PHOS_ => symbolic name /PHOS/Module, =1,2,3,4,5 + + TString physModulePath="/ALIC_1/PHOS_"; + TString symbModuleName="PHOS/Module"; + Int_t nModules = GetGeometry()->GetNModules(); + + for(Int_t iModule=1; iModule<=nModules; iModule++){ + volpath = physModulePath; + volpath += iModule; + symname = symbModuleName; + symname += iModule; + gGeoManager->SetAlignableEntry(symname.Data(),volpath.Data()); + } + + // Alignable cradle walls + // Volume path /ALIC_1/PCRA_ => symbolic name /PHOS/Cradle, =0,1 + + TString physCradlePath="/ALIC_1/PCRA_"; + TString symbCradleName="PHOS/Cradle"; + Int_t nCradles = 2; + + for(Int_t iCradle=0; iCradleSetAlignableEntry(symname.Data(),volpath.Data()); + } + + // Alignable wheels + // Volume path /ALIC_1/PWHE_ => symbolic name /PHOS/Wheel, i=0,1,2,3 + + TString physWheelPath="/ALIC_1/PWHE_"; + TString symbWheelName="PHOS/Wheel"; + Int_t nWheels = 4; + + for(Int_t iWheel=0; iWheelSetAlignableEntry(symname.Data(),volpath.Data()); + } + + // Alignable strip units are not implemented yet (27.09.2006) + +} + //____________________________________________________________________________ Float_t AliPHOSv0::ZMin(void) const { diff --git a/PHOS/AliPHOSv0.h b/PHOS/AliPHOSv0.h index 675f1013930..0a8df6bb6b8 100644 --- a/PHOS/AliPHOSv0.h +++ b/PHOS/AliPHOSv0.h @@ -8,6 +8,9 @@ /* History of cvs commits: * * $Log$ + * Revision 1.43 2005/05/28 14:19:05 schutz + * Compilation warnings fixed by T.P. + * */ //_________________________________________________________________________ @@ -55,6 +58,8 @@ class AliPHOSv0 : public AliPHOS { // void CreateGeometryforPPSD(void) ; // creates the PPSD geometry for GEANT void CreateGeometryforCPV(void) ; // creates the CPV geometry for GEANT void CreateGeometryforSupport(void) ; // creates the Support geometry for GEANT + virtual void AddAlignableVolumes() const; // define sym.names for alignable volumes + virtual Float_t ZMin() const; // overall dimension of the module (min) virtual Float_t ZMax() const; // overall dimension of the module (max) diff --git a/PHOS/macros/AlignmentDB/AliPHOSSetAlignment.C b/PHOS/macros/AlignmentDB/AliPHOSSetAlignment.C index cc57a54a30e..595d14e025f 100644 --- a/PHOS/macros/AlignmentDB/AliPHOSSetAlignment.C +++ b/PHOS/macros/AlignmentDB/AliPHOSSetAlignment.C @@ -69,14 +69,14 @@ void IdealAlignment() AliAlignObj::ELayerID iLayer = AliAlignObj::kInvalidLayer; UShort_t dvoluid = AliAlignObj::LayerToVolUID(iLayer,iIndex); //dummy volume identity - TString basePath = "/ALIC_1/PHOS_"; + TString basePath = "PHOS/Module"; const Int_t nModules=5; for (Int_t iModule = 1; iModule<=nModules; iModule++) { TString newPath = basePath; newPath += iModule; new(alobj[iModule-1]) AliAlignObjAngles(newPath.Data(), - dvoluid, dx, dy, dz, dpsi, dtheta, dphi); + dvoluid, dx, dy, dz, dpsi, dtheta, dphi, kTRUE); } // ************************* 2nd step *************** @@ -88,7 +88,7 @@ void IdealAlignment() AliCDBMetaData *md= new AliCDBMetaData(); md->SetResponsible("Yuri Kharlov"); md->SetComment("Alignment objects for ideal geometry, i.e. applying them to TGeo has to leave geometry unchanged"); - AliCDBId id("PHOS/Align/Data",0,0); + AliCDBId id("PHOS/Align/Data",0,999999); CDB->Put(array,id, md); } @@ -114,32 +114,32 @@ void ResidualAlignment() UShort_t dvoluid = AliAlignObj::LayerToVolUID(iLayer,iIndex); //dummy volume identity // Alignment for 5 PHOS modules - new(alobj[0]) AliAlignObjAngles("/ALIC_1/PHOS_1", - dvoluid, -0.20, -0.1, +0.0, dpsi, dtheta, 0.2); - new(alobj[1]) AliAlignObjAngles("/ALIC_1/PHOS_2", - dvoluid, -0.10, +0.0, -0.2, dpsi, dtheta, 0.2); - new(alobj[2]) AliAlignObjAngles("/ALIC_1/PHOS_3", - dvoluid, 0.05, -0.1, 0.2, dpsi, dtheta, 0.0); - new(alobj[3]) AliAlignObjAngles("/ALIC_1/PHOS_4", - dvoluid, +0.10, -0.0, -0.1, dpsi, dtheta, 0.1); - new(alobj[4]) AliAlignObjAngles("/ALIC_1/PHOS_5", - dvoluid, +0.20, -0.1, 0.1, dpsi, dtheta, 0.2); + new(alobj[0]) AliAlignObjAngles("PHOS/Module1", + dvoluid, -0.20, -0.1, +0.0, dpsi, dtheta, 0.2, kTRUE); + new(alobj[1]) AliAlignObjAngles("PHOS/Module2", + dvoluid, -0.10, +0.0, -0.2, dpsi, dtheta, 0.2, kTRUE); + new(alobj[2]) AliAlignObjAngles("PHOS/Module3", + dvoluid, 0.05, -0.1, 0.2, dpsi, dtheta, 0.0, kTRUE); + new(alobj[3]) AliAlignObjAngles("PHOS/Module4", + dvoluid, +0.10, -0.0, -0.1, dpsi, dtheta, 0.1, kTRUE); + new(alobj[4]) AliAlignObjAngles("PHOS/Module5", + dvoluid, +0.20, -0.1, 0.1, dpsi, dtheta, 0.2, kTRUE); // Alignment for PHOS cradle - new(alobj[5]) AliAlignObjAngles("/ALIC_1/PCRA_0", - dvoluid, 0., 0., -displacement, dpsi, dtheta, dphi); - new(alobj[6]) AliAlignObjAngles("/ALIC_1/PCRA_1", - dvoluid, 0., 0., +displacement, dpsi, dtheta, dphi); + new(alobj[5]) AliAlignObjAngles("PHOS/Cradle0", + dvoluid, 0., 0., -displacement, dpsi, dtheta, dphi, kTRUE); + new(alobj[6]) AliAlignObjAngles("PHOS/Cradle1", + dvoluid, 0., 0., +displacement, dpsi, dtheta, dphi, kTRUE); // Alignment for cradle wheels - new(alobj[7]) AliAlignObjAngles("/ALIC_1/PWHE_0", - dvoluid, 0., 0., -displacement, dpsi, dtheta, dphi); - new(alobj[8]) AliAlignObjAngles("/ALIC_1/PWHE_1", - dvoluid, 0., 0., -displacement, dpsi, dtheta, dphi); - new(alobj[9]) AliAlignObjAngles("/ALIC_1/PWHE_2", - dvoluid, 0., 0., +displacement, dpsi, dtheta, dphi); - new(alobj[10]) AliAlignObjAngles("/ALIC_1/PWHE_3", - dvoluid, 0., 0., +displacement, dpsi, dtheta, dphi); + new(alobj[7]) AliAlignObjAngles("PHOS/Wheel0", + dvoluid, 0., 0., -displacement, dpsi, dtheta, dphi, kTRUE); + new(alobj[8]) AliAlignObjAngles("PHOS/Wheel1", + dvoluid, 0., 0., -displacement, dpsi, dtheta, dphi, kTRUE); + new(alobj[9]) AliAlignObjAngles("PHOS/Wheel2", + dvoluid, 0., 0., +displacement, dpsi, dtheta, dphi, kTRUE); + new(alobj[10]) AliAlignObjAngles("PHOS/Wheel3", + dvoluid, 0., 0., +displacement, dpsi, dtheta, dphi, kTRUE); // ************************* 2nd step *************** // Make CDB storage and put TClonesArray in @@ -150,7 +150,7 @@ void ResidualAlignment() AliCDBMetaData *md= new AliCDBMetaData(); md->SetResponsible("Yuri Kharlov"); md->SetComment("Alignment objects for slightly misaligned geometry, i.e. applying them to TGeo has to distirbes geometry very little (resisual misalignment"); - AliCDBId id("PHOS/Align/Data",200,200); + AliCDBId id("PHOS/Align/Data",1000000,1999999); CDB->Put(array,id, md); } @@ -175,32 +175,32 @@ void FullMisalignment() UShort_t dvoluid = AliAlignObj::LayerToVolUID(iLayer,iIndex); //dummy volume identity // Alignment for 5 PHOS modules - new(alobj[0]) AliAlignObjAngles("/ALIC_1/PHOS_1", - dvoluid, -20., -10., 0., dpsi, dtheta, 5); - new(alobj[1]) AliAlignObjAngles("/ALIC_1/PHOS_2", - dvoluid, -10., 0., -10., dpsi, dtheta, 2); - new(alobj[2]) AliAlignObjAngles("/ALIC_1/PHOS_3", - dvoluid, 5., -10., 10., dpsi, dtheta, 0); - new(alobj[3]) AliAlignObjAngles("/ALIC_1/PHOS_4", - dvoluid, +10., -0., -10., dpsi, dtheta, 2); - new(alobj[4]) AliAlignObjAngles("/ALIC_1/PHOS_5", - dvoluid, +20., -10., 0., dpsi, dtheta, 5); + new(alobj[0]) AliAlignObjAngles("PHOS/Module1", + dvoluid, -20., -10., 0., dpsi, dtheta, 5, kTRUE); + new(alobj[1]) AliAlignObjAngles("PHOS/Module2", + dvoluid, -10., 0., -10., dpsi, dtheta, 2, kTRUE); + new(alobj[2]) AliAlignObjAngles("PHOS/Module3", + dvoluid, 5., -10., 10., dpsi, dtheta, 0, kTRUE); + new(alobj[3]) AliAlignObjAngles("PHOS/Module4", + dvoluid, +10., -0., -10., dpsi, dtheta, 2, kTRUE); + new(alobj[4]) AliAlignObjAngles("PHOS/Module5", + dvoluid, +20., -10., 0., dpsi, dtheta, 5, kTRUE); // Alignment for PHOS cradle - new(alobj[5]) AliAlignObjAngles("/ALIC_1/PCRA_0", - dvoluid, 0., 0., -displacement, dpsi, dtheta, dphi); - new(alobj[6]) AliAlignObjAngles("/ALIC_1/PCRA_1", - dvoluid, 0., 0., +displacement, dpsi, dtheta, dphi); + new(alobj[5]) AliAlignObjAngles("PHOS/Cradle0", + dvoluid, 0., 0., -displacement, dpsi, dtheta, dphi, kTRUE); + new(alobj[6]) AliAlignObjAngles("PHOS/Cradle1", + dvoluid, 0., 0., +displacement, dpsi, dtheta, dphi, kTRUE); // Alignment for cradle wheels - new(alobj[7]) AliAlignObjAngles("/ALIC_1/PWHE_0", - dvoluid, 0., 0., -displacement, dpsi, dtheta, dphi); - new(alobj[8]) AliAlignObjAngles("/ALIC_1/PWHE_1", - dvoluid, 0., 0., -displacement, dpsi, dtheta, dphi); - new(alobj[9]) AliAlignObjAngles("/ALIC_1/PWHE_2", - dvoluid, 0., 0., +displacement, dpsi, dtheta, dphi); - new(alobj[10]) AliAlignObjAngles("/ALIC_1/PWHE_3", - dvoluid, 0., 0., +displacement, dpsi, dtheta, dphi); + new(alobj[7]) AliAlignObjAngles("PHOS/Wheel0", + dvoluid, 0., 0., -displacement, dpsi, dtheta, dphi, kTRUE); + new(alobj[8]) AliAlignObjAngles("PHOS/Wheel1", + dvoluid, 0., 0., -displacement, dpsi, dtheta, dphi, kTRUE); + new(alobj[9]) AliAlignObjAngles("PHOS/Wheel2", + dvoluid, 0., 0., +displacement, dpsi, dtheta, dphi, kTRUE); + new(alobj[10]) AliAlignObjAngles("PHOS/Wheel3", + dvoluid, 0., 0., +displacement, dpsi, dtheta, dphi, kTRUE); // ************************* 2nd step *************** // Make CDB storage and put TClonesArray in @@ -211,6 +211,6 @@ void FullMisalignment() AliCDBMetaData *md= new AliCDBMetaData(); md->SetResponsible("Yuri Kharlov"); md->SetComment("Alignment objects for fully misaligned geometry, i.e. applying them to TGeo has to distirbes geometry very much"); - AliCDBId id("PHOS/Align/Data",100,100); + AliCDBId id("PHOS/Align/Data",2000000,2999999); CDB->Put(array,id, md); } -- 2.39.3