]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PHOS/MakePHOSResMisAlignment.C
New AliTRDcluster constructor
[u/mrichter/AliRoot.git] / PHOS / MakePHOSResMisAlignment.C
1 void MakePHOSResMisAlignment(){
2   // Create TClonesArray of residual misalignment objects for PHOS
3   //
4   const AliPHOSGeometry *phosGeom = AliPHOSGeometry::GetInstance("IHEP", "IHEP");
5   if (!phosGeom) {
6     Error("MakePHOSFullMisAlignment", "Cannot obtain AliPHOSGeometry singleton\n");
7     return;
8   }
9
10   AliPHOSEMCAGeometry *emca = phosGeom->GetEMCAGeometry();
11   TClonesArray *array = new TClonesArray("AliAlignObjAngles", 16 + phosGeom->GetNModules() * 
12                                          emca->GetNStripX() * emca->GetNStripZ());
13   TClonesArray &alobj = *array;
14    
15   Double_t dpsi=0., dtheta=0., dphi=0.;
16   Double_t displacement = 0.2;
17   Int_t iIndex=0; // let all modules have index=0 in a layer with no LUT
18   AliGeomManager::ELayerID iLayer = AliGeomManager::kInvalidLayer;
19   UShort_t volid = AliGeomManager::LayerToVolUID(iLayer,iIndex);
20  
21   Int_t i=0 ;
22   // Alignment for 5 PHOS modules
23   new(alobj[i++]) AliAlignObjAngles("PHOS/Module1",
24         volid, -0.20, -0.1, +0.0, dpsi, dtheta, 0.2, kTRUE);
25   new(alobj[i++]) AliAlignObjAngles("PHOS/Module2",
26         volid, -0.10, +0.0, -0.2, dpsi, dtheta, 0.2, kTRUE);
27   new(alobj[i++]) AliAlignObjAngles("PHOS/Module3",
28         volid,  0.05, -0.1,  0.2, dpsi, dtheta, 0.0, kTRUE);
29   new(alobj[i++]) AliAlignObjAngles("PHOS/Module4",
30         volid, +0.10, -0.0, -0.1, dpsi, dtheta, 0.1, kTRUE);
31   new(alobj[i++]) AliAlignObjAngles("PHOS/Module5",
32         volid, +0.20, -0.1,  0.1, dpsi, dtheta, 0.2, kTRUE);
33  
34   Double_t dx=0., dy=0., dz=0. ;
35   // Alignment of CPV modules
36   new(alobj[i++]) AliAlignObjAngles("PHOS/Module1/CPV",
37         volid, dx, dy, dz, dpsi, dtheta, dphi, kTRUE);
38   new(alobj[i++]) AliAlignObjAngles("PHOS/Module2/CPV",
39         volid, dx, dy, dz, dpsi, dtheta, dphi, kTRUE);
40   new(alobj[i++]) AliAlignObjAngles("PHOS/Module3/CPV",
41         volid, dx, dy, dz, dpsi, dtheta, dphi, kTRUE);
42   new(alobj[i++]) AliAlignObjAngles("PHOS/Module4/CPV",
43         volid, dx, dy, dz, dpsi, dtheta, dphi, kTRUE);
44   new(alobj[i++]) AliAlignObjAngles("PHOS/Module5/CPV",
45         volid, dx, dy, dz, dpsi, dtheta, dphi, kTRUE);
46  
47
48   // Alignment for PHOS cradle
49   new(alobj[i++]) AliAlignObjAngles("PHOS/Cradle0",
50         volid, 0., 0., -displacement, dpsi, dtheta, dphi, kTRUE);
51   new(alobj[i++]) AliAlignObjAngles("PHOS/Cradle1",
52         volid, 0., 0., +displacement, dpsi, dtheta, dphi, kTRUE);
53
54   // Alignment for cradle wheels
55   new(alobj[i++])  AliAlignObjAngles("PHOS/Wheel0",
56         volid, 0., 0., -displacement, dpsi, dtheta, dphi, kTRUE);
57   new(alobj[i++])  AliAlignObjAngles("PHOS/Wheel1",
58         volid, 0., 0., -displacement, dpsi, dtheta, dphi, kTRUE);
59   new(alobj[i++])  AliAlignObjAngles("PHOS/Wheel2",
60         volid, 0., 0., +displacement, dpsi, dtheta, dphi, kTRUE);
61   new(alobj[i++]) AliAlignObjAngles("PHOS/Wheel3",
62         volid, 0., 0., +displacement, dpsi, dtheta, dphi, kTRUE);
63
64   AliPHOSSurvey geodesicData("phos_mod3_survey.txt");
65   geodesicData.CreateAliAlignObjAngles(alobj);
66
67   if(!gSystem->Getenv("TOCDB")){
68     // save on file
69     TFile f("PHOSresidualMisalignment.root","RECREATE");
70     if(!f) cerr<<"cannot open file for output\n";
71     f.cd();
72     f.WriteObject(array,"PHOSResidualObjs ","kSingleKey");
73     f.Close();
74   }else{
75     // save in CDB storage
76     const char* Storage = gSystem->Getenv("STORAGE");
77     AliCDBManager *CDB = AliCDBManager::Instance();
78     AliCDBStorage* storage = CDB->GetStorage(Storage);
79     AliCDBMetaData *md= new AliCDBMetaData();
80     md->SetResponsible("Yuri Kharlov");
81     md->SetComment("Alignment objects for slightly misaligned geometry (residual misalignment");
82     md->SetAliRootVersion(gSystem->Getenv("ARVERSION"));
83     AliCDBId id("PHOS/Align/Data",0,9999999);
84     storage->Put(array,id, md);
85   }
86
87   array->Delete();
88
89 }