ROOT logo
void MakePHOSAltroMapping(){
  // Create TObjArray of PHOS altro mapping objects.
  // Set the environment variables in order to store it in the OCDB:
  // export TOCDB=kTRUE
  // export STORAGE=local://$ALICE_ROOT/OCDB
  // Then the newly created root file $ALICE_ROOT/OCDB/PHOS/Calib/Mapping
  // should be committed to SVN and submitted to AliEn production manager
  //
  // Yuri Kharlov. 10 September 2009
  // $Id$

  const char* macroname = "MakePHOSAltroMapping.C";

  TObjArray mappingsArray(20);
  
  nModules = 5;
  nRCU     = 4;
  TString path = gSystem->Getenv("ALICE_ROOT");
  path += "/PHOS/mapping/";
  TString path1, path2;
  for(Int_t m = 0; m < nModules; m++) {
    path1 = path;
    path1 += "Mod";
    path1 += m;
    path1 += "RCU";
    for(Int_t i = 0; i < nRCU; i++) {
      path2 = path1;
      path2 += i;
      path2 += ".data";
      Info(macroname,"Mapping file: %s",path2.Data());
      AliAltroMapping *mapping = new AliCaloAltroMapping(path2.Data());
      mappingsArray.Add(mapping);
    }
  }

  if( TString(gSystem->Getenv("TOCDB")) != TString("kTRUE") ){
    // save on file
    const char* filename = "PHOSAltroMapping.root";
    TFile f(filename,"RECREATE");
    if(!f){
      Error(macroname,"cannot open file for output\n");
      return;
    }
    Info(macroname,"Saving altro mapping objects to the file %s", filename);
    f.cd();
    f.WriteObject(&mappingsArray,"PHOSAtroMappings","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 altro mapping 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("Yuri Kharlov");
    md->SetComment("Default ALTRO mapping for PHOS: 20 mapping objects, one per modules per RCU");
    md->SetAliRootVersion(gSystem->Getenv("ARVERSION"));
    AliCDBId id("PHOS/Calib/Mapping",0,AliCDBRunRange::Infinity());
    storage->Put(&mappingsArray,id,md);

    delete md;
  }

  mappingsArray.Delete();

}

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