]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TRD/MakeTRDZeroMisAlignment.C
Modified file access mode
[u/mrichter/AliRoot.git] / TRD / MakeTRDZeroMisAlignment.C
1 void MakeTRDZeroMisAlignment(){
2   // Create TClonesArray of zero misalignment objects for TRD
3   //
4   const char* macroname = "MakeTRDZeroMisAlignment.C";
5   TClonesArray *array = new TClonesArray("AliAlignObjParams",1000);
6   TClonesArray &alobj = *array;
7    
8   Int_t sActive[18]={0,0,1,1,1,0,1,0,0,0,0,1,1,0,1,1,0,0};
9   Double_t dx=0.,dy=0.,dz=0.,rx=0.,ry=0.,rz=0.;
10
11   Int_t j=0;
12   UShort_t volid;
13   const char *symname;
14
15   // create the supermodules' alignment objects
16   for (Int_t iSect; iSect<18; iSect++) {
17     TString sm_symname(Form("TRD/sm%02d",iSect));
18     if( (TString(gSystem->Getenv("PARTGEOM")) == TString("kTRUE")) && !sActive[iSect] ) continue;
19     new(alobj[j++]) AliAlignObjParams(sm_symname.Data(),0,dx,dy,dz,rx,ry,rz,kTRUE);
20   }
21   
22    // create the chambers' alignment objects
23   Int_t chId;
24   for (Int_t iLayer = AliGeomManager::kTRD1; iLayer <= AliGeomManager::kTRD6; iLayer++) {
25     chId=-1;
26     for (Int_t iSect = 0; iSect < 18; iSect++){
27       for (Int_t iCh = 0; iCh < 5; iCh++) {
28         chId++;
29         volid = AliGeomManager::LayerToVolUID(iLayer,chId);
30       symname = AliGeomManager::SymName(volid);
31         if( (TString(gSystem->Getenv("PARTGEOM")) == TString("kTRUE")) && !sActive[iSect] ) continue;
32       new(alobj[j++]) AliAlignObjParams(symname,volid,dx,dy,dz,rx,ry,rz,kTRUE);
33     }
34   }
35   }
36
37   if( TString(gSystem->Getenv("TOCDB")) != TString("kTRUE") ){
38     // save on file
39     const char* filename = "TRDzeroMisalignment.root";
40     TFile f(filename,"RECREATE");
41     if(!f){
42       Error(macroname,"cannot open file for output\n");
43       return;
44     }
45     Info(macroname,"Saving alignment objects to the file %s", filename);
46     f.cd();
47     f.WriteObject(array,"TRDAlignObjs","kSingleKey");
48     f.Close();
49   }else{
50     // save in CDB storage
51     TString Storage = gSystem->Getenv("STORAGE");
52     if(!Storage.BeginsWith("local://") && !Storage.BeginsWith("alien://")) {
53       Error(macroname,"STORAGE variable set to %s is not valid. Exiting\n",Storage.Data());
54       return;
55     }
56     Info(macroname,"Saving alignment objects in CDB storage %s",
57          Storage.Data());
58     AliCDBManager* cdb = AliCDBManager::Instance();
59     AliCDBStorage* storage = cdb->GetStorage(Storage.Data());
60     if(!storage){
61       Error(macroname,"Unable to open storage %s\n",Storage.Data());
62       return;
63     }
64     AliCDBMetaData* md = new AliCDBMetaData();
65     md->SetResponsible("Dariusz Miskowiec");
66     md->SetComment("Zero misalignment for TRD");
67     md->SetAliRootVersion(gSystem->Getenv("ARVERSION"));
68     AliCDBId id("TRD/Align/Data",0,AliCDBRunRange::Infinity());
69     storage->Put(array,id,md);
70   }
71
72   array->Delete();
73
74 }
75
76