ROOT logo
//-------------------------------------------------------------------------
//     OADB container for filling scheme information (BX ids, name ...)
//     Author: Michele Floris, CERN
//-------------------------------------------------------------------------

#include "AliOADBFillingScheme.h"
#include "TMap.h"
#include "AliLog.h"
#include "TBrowser.h"
#include "TFolder.h"
#include <iostream>

using namespace std;

ClassImp(AliOADBFillingScheme)


AliOADBFillingScheme::AliOADBFillingScheme() : TNamed("AliOADBFillingScheme", "OADB object storing filling scheme infos"), fFSName(""), fBXIds(0){
  // default ctor

  
}
AliOADBFillingScheme::AliOADBFillingScheme(char* name) : TNamed(name, "OADB object storing filling scheme infos"), fFSName(""), fBXIds(0){
  // ctor
  Init();
}

void AliOADBFillingScheme::Init() {
  // initialize pointers
  fBXIds = new TMap();
  fFSName = "";

}

AliOADBFillingScheme::~AliOADBFillingScheme(){
  // dtor

  if(fBXIds)           delete fBXIds;

}

// AliOADBFillingScheme::AliOADBFillingScheme(const AliOADBFillingScheme& cont) {
//   // Copy ctor
//   AliError("To be implemented");
// }

// AliOADBFillingScheme& AliOADBFillingScheme::operator=(const AliOADBFillingScheme& cont) {
//   //Assignment operator
//   AliError("To be implemented");
// }
  
// Getters

const char *  AliOADBFillingScheme::GetBXIDs(const char * beamSide) const 
{
  //  Returns the bunch crossing numbers for the different beam classes. By default this is empty

  if( !strcmp(beamSide,"ACE") && !(TObjString*)fBXIds->GetValue(beamSide)) 
    AliWarning("Beware, no correction for the BXIDs for ACE");

  if (!strcmp(beamSide, "AC") && !(TObjString*)fBXIds->GetValue(beamSide)) {

    TString  &bxa =  ((TObjString*)fBXIds->GetValue("A"))->String(); 
    TString  &bxc =  ((TObjString*)fBXIds->GetValue("C"))->String();
    if(bxa.IsNull() && bxc.IsNull()) return "";
    if(bxc.IsNull())         return bxa.Data();
    if(bxa.IsNull())         return bxc.Data();
    static TString bxBoth = bxa.Data();
    bxBoth += bxc.Data();
    return bxBoth.Data();

  } 

  if(!(TObjString*)fBXIds->GetValue(beamSide)) return "";

  TString  &bx =  ((TObjString*)fBXIds->GetValue(beamSide))->String(); 
  if(bx.IsNull()) return "";
  return bx.Data();
  
}

void AliOADBFillingScheme::Browse(TBrowser *b)
{
   // Browse this object.
   // If b=0, there is no Browse call TObject::Browse(0) instead.
   //         This means TObject::Inspect() will be invoked indirectly


  if (b) {
    // Creates a folder for each beam type containing the list of corresponding bx ids
    b->Add(new TObjString(Form("Filling Scheme %s",GetFillingSchemeName())));
    TIterator * mapIter = fBXIds->MakeIterator();
    TObjString * key = 0;
    while ((key = (TObjString*) mapIter->Next())) {
      TFolder * folder = new TFolder(key->String().Data(), "beam side");
      TObjString * value = (TObjString*) fBXIds->GetValue(key);
      TObjArray * tokens = value->String().Tokenize(" ");
      TIterator * tokIter = tokens->MakeIterator();
      TObjString * bxNum = 0;
      while ((bxNum = (TObjString*) tokIter->Next())){
	folder->Add(bxNum);
      }
      b->Add(folder);
      delete tokIter;
      delete tokens;
    }
    delete mapIter;    
  }     
  else
    TObject::Browse(b);
}

void AliOADBFillingScheme::Print(Option_t* option) const {
  // Print Class contents
  // Option is passed to TMap::Print
  cout << "Filling scheme Name " <<  fFSName.Data() << option << endl;
  fBXIds->Print(option);
}
 AliOADBFillingScheme.cxx:1
 AliOADBFillingScheme.cxx:2
 AliOADBFillingScheme.cxx:3
 AliOADBFillingScheme.cxx:4
 AliOADBFillingScheme.cxx:5
 AliOADBFillingScheme.cxx:6
 AliOADBFillingScheme.cxx:7
 AliOADBFillingScheme.cxx:8
 AliOADBFillingScheme.cxx:9
 AliOADBFillingScheme.cxx:10
 AliOADBFillingScheme.cxx:11
 AliOADBFillingScheme.cxx:12
 AliOADBFillingScheme.cxx:13
 AliOADBFillingScheme.cxx:14
 AliOADBFillingScheme.cxx:15
 AliOADBFillingScheme.cxx:16
 AliOADBFillingScheme.cxx:17
 AliOADBFillingScheme.cxx:18
 AliOADBFillingScheme.cxx:19
 AliOADBFillingScheme.cxx:20
 AliOADBFillingScheme.cxx:21
 AliOADBFillingScheme.cxx:22
 AliOADBFillingScheme.cxx:23
 AliOADBFillingScheme.cxx:24
 AliOADBFillingScheme.cxx:25
 AliOADBFillingScheme.cxx:26
 AliOADBFillingScheme.cxx:27
 AliOADBFillingScheme.cxx:28
 AliOADBFillingScheme.cxx:29
 AliOADBFillingScheme.cxx:30
 AliOADBFillingScheme.cxx:31
 AliOADBFillingScheme.cxx:32
 AliOADBFillingScheme.cxx:33
 AliOADBFillingScheme.cxx:34
 AliOADBFillingScheme.cxx:35
 AliOADBFillingScheme.cxx:36
 AliOADBFillingScheme.cxx:37
 AliOADBFillingScheme.cxx:38
 AliOADBFillingScheme.cxx:39
 AliOADBFillingScheme.cxx:40
 AliOADBFillingScheme.cxx:41
 AliOADBFillingScheme.cxx:42
 AliOADBFillingScheme.cxx:43
 AliOADBFillingScheme.cxx:44
 AliOADBFillingScheme.cxx:45
 AliOADBFillingScheme.cxx:46
 AliOADBFillingScheme.cxx:47
 AliOADBFillingScheme.cxx:48
 AliOADBFillingScheme.cxx:49
 AliOADBFillingScheme.cxx:50
 AliOADBFillingScheme.cxx:51
 AliOADBFillingScheme.cxx:52
 AliOADBFillingScheme.cxx:53
 AliOADBFillingScheme.cxx:54
 AliOADBFillingScheme.cxx:55
 AliOADBFillingScheme.cxx:56
 AliOADBFillingScheme.cxx:57
 AliOADBFillingScheme.cxx:58
 AliOADBFillingScheme.cxx:59
 AliOADBFillingScheme.cxx:60
 AliOADBFillingScheme.cxx:61
 AliOADBFillingScheme.cxx:62
 AliOADBFillingScheme.cxx:63
 AliOADBFillingScheme.cxx:64
 AliOADBFillingScheme.cxx:65
 AliOADBFillingScheme.cxx:66
 AliOADBFillingScheme.cxx:67
 AliOADBFillingScheme.cxx:68
 AliOADBFillingScheme.cxx:69
 AliOADBFillingScheme.cxx:70
 AliOADBFillingScheme.cxx:71
 AliOADBFillingScheme.cxx:72
 AliOADBFillingScheme.cxx:73
 AliOADBFillingScheme.cxx:74
 AliOADBFillingScheme.cxx:75
 AliOADBFillingScheme.cxx:76
 AliOADBFillingScheme.cxx:77
 AliOADBFillingScheme.cxx:78
 AliOADBFillingScheme.cxx:79
 AliOADBFillingScheme.cxx:80
 AliOADBFillingScheme.cxx:81
 AliOADBFillingScheme.cxx:82
 AliOADBFillingScheme.cxx:83
 AliOADBFillingScheme.cxx:84
 AliOADBFillingScheme.cxx:85
 AliOADBFillingScheme.cxx:86
 AliOADBFillingScheme.cxx:87
 AliOADBFillingScheme.cxx:88
 AliOADBFillingScheme.cxx:89
 AliOADBFillingScheme.cxx:90
 AliOADBFillingScheme.cxx:91
 AliOADBFillingScheme.cxx:92
 AliOADBFillingScheme.cxx:93
 AliOADBFillingScheme.cxx:94
 AliOADBFillingScheme.cxx:95
 AliOADBFillingScheme.cxx:96
 AliOADBFillingScheme.cxx:97
 AliOADBFillingScheme.cxx:98
 AliOADBFillingScheme.cxx:99
 AliOADBFillingScheme.cxx:100
 AliOADBFillingScheme.cxx:101
 AliOADBFillingScheme.cxx:102
 AliOADBFillingScheme.cxx:103
 AliOADBFillingScheme.cxx:104
 AliOADBFillingScheme.cxx:105
 AliOADBFillingScheme.cxx:106
 AliOADBFillingScheme.cxx:107
 AliOADBFillingScheme.cxx:108
 AliOADBFillingScheme.cxx:109
 AliOADBFillingScheme.cxx:110
 AliOADBFillingScheme.cxx:111
 AliOADBFillingScheme.cxx:112
 AliOADBFillingScheme.cxx:113
 AliOADBFillingScheme.cxx:114
 AliOADBFillingScheme.cxx:115
 AliOADBFillingScheme.cxx:116
 AliOADBFillingScheme.cxx:117
 AliOADBFillingScheme.cxx:118