ROOT logo
void MakeSTRUCTFullMisAlignment(){
  // Create TClonesArray of full misalignment objects for all STRUCTures
  // (presently this includes only FRAME)
  // Full alignment objects for FRAME segments are built by
  // averaging in each supermodule the values produced by the
  // ANSYS finite-elements simulation
  //
  const char* macroname = "MakeSTRUCTFullMisAlignment.C";
  TClonesArray *array = new TClonesArray("AliAlignObjParams",20);

  const char* baseSymName ="FRAME/Sector"; //base of symbolic name corresponding to base of path "ALIC_1/B077_1/BSEGMO";
  TString symname;

  // the following hardcoded values have been obtained by taking the output of the ANSYS simulation
  // (finite elements simulation of deformations for given loads) and recalculating the avarege
  // displacement of the center of each space-frame sector
  Double_t dx[18]={0.13375,0.25125,0.2325,0.17,0.1475,0.12625,0.06375,0.0475,0.1775,0.32375,0.35125,0.285,0.205,0.1775,0.1525,0.07625,0.0075,0.01375};
  Double_t dy[18]={-0.0275,0.00125,-0.03625,-0.14375,-0.2,-0.13375,-0.02125,0.015,-0.0175,-0.03125,-0.0325,-0.105,-0.24375,-0.32,-0.25375,-0.1225,-0.04875,-0.04125};

  for(Int_t sm=0; sm<18; sm++){
    symname = baseSymName;
    symname += sm;
    cout<<symname.Data()<<endl;
    ((*array)[sm]) = new AliAlignObjParams(symname.Data(),0,dx[sm],dy[sm],0.,0.,0.,0.,kTRUE);
  }

  if( TString(gSystem->Getenv("TOCDB")) != TString("kTRUE") ){
    // save on file
    const char* filename = "STRUCTfullMisalignment.root";
    TFile f(filename,"RECREATE");
    if(!f){
      Error(macroname,"cannot open file for output\n");
      return;
    }
    Info(macroname,"Saving alignment objects in %s", filename);
    f.cd();
    f.WriteObject(array,"STRUCTAlignObjs","kSingleKey");
    f.Close();
  }else{
    // save in CDB storage
    TString Storage = gSystem->Getenv("STORAGE");
    if(!Storage.BeginsWith("local://") && !Storage.BeginsWith("alien://")) {
      Error(macroname,"STORAGE variable set to %s is not valid. Exiting\n",Storage.Data());
      return;
    }
    Info(macroname,"Saving alignment objects in CDB storage %s",Storage.Data());
    AliCDBManager* cdb = AliCDBManager::Instance();
    AliCDBStorage* storage = cdb->GetStorage(Storage.Data());
    if(!storage){
      Error(macroname,"Unable to open storage %s\n",Storage.Data());
      return;
    }
    AliCDBMetaData* md = new AliCDBMetaData();
    md->SetResponsible("Grosso Raffaele");
    md->SetComment("Full misalignment for FRAME, including dead weight and full weight deformations derived from ANSYS finiteelements simulation: dispmap corrected excel worksheet from Werner Riegler");
    md->SetAliRootVersion(gSystem->Getenv("ARVERSION"));
    AliCDBId id("GRP/Align/Data",0,AliCDBRunRange::Infinity());
    storage->Put(array,id,md);
  }

  array->Delete();

}

 MakeSTRUCTFullMisAlignment.C:1
 MakeSTRUCTFullMisAlignment.C:2
 MakeSTRUCTFullMisAlignment.C:3
 MakeSTRUCTFullMisAlignment.C:4
 MakeSTRUCTFullMisAlignment.C:5
 MakeSTRUCTFullMisAlignment.C:6
 MakeSTRUCTFullMisAlignment.C:7
 MakeSTRUCTFullMisAlignment.C:8
 MakeSTRUCTFullMisAlignment.C:9
 MakeSTRUCTFullMisAlignment.C:10
 MakeSTRUCTFullMisAlignment.C:11
 MakeSTRUCTFullMisAlignment.C:12
 MakeSTRUCTFullMisAlignment.C:13
 MakeSTRUCTFullMisAlignment.C:14
 MakeSTRUCTFullMisAlignment.C:15
 MakeSTRUCTFullMisAlignment.C:16
 MakeSTRUCTFullMisAlignment.C:17
 MakeSTRUCTFullMisAlignment.C:18
 MakeSTRUCTFullMisAlignment.C:19
 MakeSTRUCTFullMisAlignment.C:20
 MakeSTRUCTFullMisAlignment.C:21
 MakeSTRUCTFullMisAlignment.C:22
 MakeSTRUCTFullMisAlignment.C:23
 MakeSTRUCTFullMisAlignment.C:24
 MakeSTRUCTFullMisAlignment.C:25
 MakeSTRUCTFullMisAlignment.C:26
 MakeSTRUCTFullMisAlignment.C:27
 MakeSTRUCTFullMisAlignment.C:28
 MakeSTRUCTFullMisAlignment.C:29
 MakeSTRUCTFullMisAlignment.C:30
 MakeSTRUCTFullMisAlignment.C:31
 MakeSTRUCTFullMisAlignment.C:32
 MakeSTRUCTFullMisAlignment.C:33
 MakeSTRUCTFullMisAlignment.C:34
 MakeSTRUCTFullMisAlignment.C:35
 MakeSTRUCTFullMisAlignment.C:36
 MakeSTRUCTFullMisAlignment.C:37
 MakeSTRUCTFullMisAlignment.C:38
 MakeSTRUCTFullMisAlignment.C:39
 MakeSTRUCTFullMisAlignment.C:40
 MakeSTRUCTFullMisAlignment.C:41
 MakeSTRUCTFullMisAlignment.C:42
 MakeSTRUCTFullMisAlignment.C:43
 MakeSTRUCTFullMisAlignment.C:44
 MakeSTRUCTFullMisAlignment.C:45
 MakeSTRUCTFullMisAlignment.C:46
 MakeSTRUCTFullMisAlignment.C:47
 MakeSTRUCTFullMisAlignment.C:48
 MakeSTRUCTFullMisAlignment.C:49
 MakeSTRUCTFullMisAlignment.C:50
 MakeSTRUCTFullMisAlignment.C:51
 MakeSTRUCTFullMisAlignment.C:52
 MakeSTRUCTFullMisAlignment.C:53
 MakeSTRUCTFullMisAlignment.C:54
 MakeSTRUCTFullMisAlignment.C:55
 MakeSTRUCTFullMisAlignment.C:56
 MakeSTRUCTFullMisAlignment.C:57
 MakeSTRUCTFullMisAlignment.C:58
 MakeSTRUCTFullMisAlignment.C:59
 MakeSTRUCTFullMisAlignment.C:60
 MakeSTRUCTFullMisAlignment.C:61
 MakeSTRUCTFullMisAlignment.C:62
 MakeSTRUCTFullMisAlignment.C:63
 MakeSTRUCTFullMisAlignment.C:64
 MakeSTRUCTFullMisAlignment.C:65