]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/MakeITSZeroMisAlignment.C
Correction of the Z position of Q2 quadrupole from Chiara Oppedisano
[u/mrichter/AliRoot.git] / ITS / MakeITSZeroMisAlignment.C
1 void MakeITSZeroMisAlignment(){
2   // Create TClonesArray of zero misalignment objects for ITS
3   //
4   TClonesArray *array = new TClonesArray("AliAlignObjParams",4000);
5   TClonesArray &alobj = *array;
6   const char* macroname = "MakeITSZeroMisAlignment.C";
7
8   // Activate CDB storage and load geometry from CDB
9   AliCDBManager* cdb = AliCDBManager::Instance();
10   if(!cdb->IsDefaultStorageSet()) cdb->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
11   cdb->SetRun(0);
12   
13   AliCDBStorage* storage = NULL;
14
15   if(TString(gSystem->Getenv("TOCDB")) == TString("kTRUE")){
16     TString Storage = gSystem->Getenv("STORAGE");
17     if(!Storage.BeginsWith("local://") && !Storage.BeginsWith("alien://")) {
18       Error(macroname,"STORAGE variable set to %s is not valid. Exiting\n",Storage.Data());
19       return;
20     }
21     storage = cdb->GetStorage(Storage.Data());
22     if(!storage){
23       Error(macroname,"Unable to open storage %s\n",Storage.Data());
24       return;
25     }
26     AliCDBPath path("GRP","Geometry","Data");
27     AliCDBEntry *entry = storage->Get(path.GetPath(),cdb->GetRun());
28     if(!entry) Fatal(macroname,"Could not get the specified CDB entry!");
29     entry->SetOwner(0);
30     TGeoManager* geom = (TGeoManager*) entry->GetObject();
31     AliGeomManager::SetGeometry(geom);
32   }else{
33     AliGeomManager::LoadGeometry("geometry.root"); //load geom from default CDB storage
34   }    
35
36   Int_t j = 0;
37
38   //=****************************************
39   // overall ITS misalignment according to survey as reported by Werner Riegler (18/07/2008) 
40   //=****************************************
41   Float_t its_dx     = -0.12;
42   Float_t its_dy     = -0.07;
43   Float_t its_dz     = 0.29;
44   Float_t its_dpsi   = 0.;  
45   Float_t its_dtheta = 0.03;
46   Float_t its_dphi   = 0.04;
47
48   new(alobj[j++]) AliAlignObjParams("ITS", 0, its_dx, its_dy, its_dz, its_dpsi, its_dtheta, its_dphi, kTRUE);
49
50   Double_t dx=0., dy=0., dz=0., dpsi=0., dtheta=0., dphi=0., globalZ=0.;
51
52   for ( Int_t iLayer = AliGeomManager::kSPD1; iLayer <= AliGeomManager::kSSD2; iLayer++) {
53     
54     printf("%i modules in layer %i\n", AliGeomManager::LayerSize(iLayer), iLayer);
55     for (Int_t iModule = 0; iModule < AliGeomManager::LayerSize(iLayer); iModule++) {
56
57       UShort_t volid = AliGeomManager::LayerToVolUID(iLayer,iModule);
58       const char *symname = AliGeomManager::SymName(volid);
59
60       new(alobj[j++]) AliAlignObjParams(symname, volid, dx, dy, dz, dpsi, dtheta, dphi, kTRUE);
61
62     }
63   }
64
65   if( TString(gSystem->Getenv("TOCDB")) != TString("kTRUE") ){
66     // save on file
67     const char* filename = "ITSzeroMisalignment.root";
68     TFile f(filename,"RECREATE");
69     if(!f){
70       Error(macroname,"cannot open file for output\n");
71       return;
72     }
73     Info(macroname,"Saving alignment objects to the file %s", filename);
74     f.cd();
75     f.WriteObject(array,"ITSAlignObjs","kSingleKey");
76     f.Close();
77   }else{
78     // save in CDB storage
79     Info(macroname,"Saving alignment objects in CDB storage %s", Storage.Data());
80     AliCDBMetaData *md= new AliCDBMetaData();
81     md->SetResponsible("Ludovic Gaudichet");
82     md->SetComment("Alignment objects with zero ITS misalignment");
83     md->SetAliRootVersion(gSystem->Getenv("ARVERSION"));
84     AliCDBId id("ITS/Align/Data",0,AliCDBRunRange::Infinity());
85     storage->Put(array,id, md);
86   }
87
88   array->Delete();
89
90 }
91
92