]>
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 | ||
d60ec0a6 | 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 | // } | |
eeb4307b | 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 | ||
a35f543c | 58 | if( !strcmp(beamSide,"ACE") && !(TObjString*)fBXIds->GetValue(beamSide)) |
59 | AliWarning("Beware, no correction for the BXIDs for ACE"); | |
60 | ||
4e3a6556 | 61 | if (!strcmp(beamSide, "AC") && !(TObjString*)fBXIds->GetValue(beamSide)) { |
eeb4307b | 62 | |
9d21bb4a | 63 | TString &bxa = ((TObjString*)fBXIds->GetValue("A"))->String(); |
64 | TString &bxc = ((TObjString*)fBXIds->GetValue("C"))->String(); | |
65 | if(bxa.IsNull() && bxc.IsNull()) return ""; | |
66 | if(bxc.IsNull()) return bxa.Data(); | |
67 | if(bxa.IsNull()) return bxc.Data(); | |
68 | static TString bxBoth = bxa.Data(); | |
eeb4307b | 69 | bxBoth += bxc.Data(); |
70 | return bxBoth.Data(); | |
71 | ||
72 | } | |
73 | ||
4e3a6556 | 74 | if(!(TObjString*)fBXIds->GetValue(beamSide)) return ""; |
75 | ||
9d21bb4a | 76 | TString &bx = ((TObjString*)fBXIds->GetValue(beamSide))->String(); |
77 | if(bx.IsNull()) return ""; | |
eeb4307b | 78 | return bx.Data(); |
79 | ||
80 | } | |
81 | ||
82 | void AliOADBFillingScheme::Browse(TBrowser *b) | |
83 | { | |
84 | // Browse this object. | |
85 | // If b=0, there is no Browse call TObject::Browse(0) instead. | |
86 | // This means TObject::Inspect() will be invoked indirectly | |
87 | ||
88 | ||
89 | if (b) { | |
90 | // Creates a folder for each beam type containing the list of corresponding bx ids | |
91 | b->Add(new TObjString(Form("Filling Scheme %s",GetFillingSchemeName()))); | |
92 | TIterator * mapIter = fBXIds->MakeIterator(); | |
93 | TObjString * key = 0; | |
94 | while ((key = (TObjString*) mapIter->Next())) { | |
95 | TFolder * folder = new TFolder(key->String().Data(), "beam side"); | |
96 | TObjString * value = (TObjString*) fBXIds->GetValue(key); | |
97 | TObjArray * tokens = value->String().Tokenize(" "); | |
98 | TIterator * tokIter = tokens->MakeIterator(); | |
99 | TObjString * bxNum = 0; | |
100 | while ((bxNum = (TObjString*) tokIter->Next())){ | |
101 | folder->Add(bxNum); | |
102 | } | |
103 | b->Add(folder); | |
104 | delete tokIter; | |
09d5920f | 105 | delete tokens; |
eeb4307b | 106 | } |
107 | delete mapIter; | |
108 | } | |
109 | else | |
110 | TObject::Browse(b); | |
111 | } | |
112 | ||
113 | void AliOADBFillingScheme::Print(Option_t* option) const { | |
114 | // Print Class contents | |
115 | // Option is passed to TMap::Print | |
1b94b3b4 | 116 | cout << "Filling scheme Name " << fFSName.Data() << option << endl; |
eeb4307b | 117 | fBXIds->Print(option); |
118 | } |