]>
Commit | Line | Data |
---|---|---|
eeb4307b | 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 | } |