bade3c0e3c552052bf52e30e6fe5a7dcbd1153c4
[u/mrichter/AliRoot.git] / OADB / AliOADBFillingScheme.cxx
1 //-------------------------------------------------------------------------
2 //     OADB container for filling scheme information (BX ids, name ...)
3 //     Author: Michele Floris, CERN
4 //-------------------------------------------------------------------------
5
6 #include "AliOADBFillingScheme.h"
7 #include "TMap.h"
8 #include "AliLog.h"
9 #include "TBrowser.h"
10 #include "TFolder.h"
11 #include <iostream>
12
13 using namespace std;
14
15 ClassImp(AliOADBFillingScheme)
16
17
18 AliOADBFillingScheme::AliOADBFillingScheme() : TNamed("AliOADBFillingScheme", "OADB object storing filling scheme infos"), fFSName(""), fBXIds(0){
19   // default ctor
20
21   
22 }
23 AliOADBFillingScheme::AliOADBFillingScheme(char* name) : TNamed(name, "OADB object storing filling scheme infos"), fFSName(""), fBXIds(0){
24   // ctor
25   Init();
26 }
27
28 void AliOADBFillingScheme::Init() {
29   // initialize pointers
30   fBXIds = new TMap();
31   fFSName = "";
32
33 }
34
35 AliOADBFillingScheme::~AliOADBFillingScheme(){
36   // dtor
37
38   if(fBXIds)           delete fBXIds;
39
40 }
41
42 AliOADBFillingScheme::AliOADBFillingScheme(const AliOADBFillingScheme& cont) {
43   // Copy ctor
44   AliError("To be implemented");
45 }
46
47 AliOADBFillingScheme& AliOADBFillingScheme::operator=(const AliOADBFillingScheme& cont) {
48   //Assignment operator
49   AliError("To be implemented");
50 }
51   
52 // Getters
53
54 const char *  AliOADBFillingScheme::GetBXIDs(const char * beamSide) const 
55 {
56   //  Returns the bunch crossing numbers for the different beam classes. By default this is empty
57
58   if (!strcmp(beamSide, "AC")) {
59
60     TString  bxa =  ((TObjString*)fBXIds->GetValue("A"))->String(); 
61     TString  bxc =  ((TObjString*)fBXIds->GetValue("C"))->String();
62     if(!bxa && !bxc) return "";
63     if(!bxc)         return bxa.Data();
64     if(!bxa)         return bxa.Data();
65     TString bxBoth = bxa.Data();
66     bxBoth += bxc.Data();
67     return bxBoth.Data();
68
69   } 
70
71   TString  bx =  ((TObjString*)fBXIds->GetValue(beamSide))->String(); 
72   if(!bx) return "";
73   return bx.Data();
74   
75 }
76
77 void AliOADBFillingScheme::Browse(TBrowser *b)
78 {
79    // Browse this object.
80    // If b=0, there is no Browse call TObject::Browse(0) instead.
81    //         This means TObject::Inspect() will be invoked indirectly
82
83
84   if (b) {
85     // Creates a folder for each beam type containing the list of corresponding bx ids
86     b->Add(new TObjString(Form("Filling Scheme %s",GetFillingSchemeName())));
87     TIterator * mapIter = fBXIds->MakeIterator();
88     TObjString * key = 0;
89     while ((key = (TObjString*) mapIter->Next())) {
90       TFolder * folder = new TFolder(key->String().Data(), "beam side");
91       TObjString * value = (TObjString*) fBXIds->GetValue(key);
92       TObjArray * tokens = value->String().Tokenize(" ");
93       TIterator * tokIter = tokens->MakeIterator();
94       TObjString * bxNum = 0;
95       while ((bxNum = (TObjString*) tokIter->Next())){
96         folder->Add(bxNum);
97       }
98       b->Add(folder);
99       delete tokIter;
100     }
101     delete mapIter;    
102   }     
103   else
104     TObject::Browse(b);
105 }
106
107 void AliOADBFillingScheme::Print(Option_t* option) const {
108   // Print Class contents
109   // Option is passed to TMap::Print
110   cout << "Filling scheme Name " <<  fFSName.Data() << endl;
111   fBXIds->Print(option);
112 }