Correct negation operand
[u/mrichter/AliRoot.git] / GRP / UpdateCDBGRPEntryMC.C
CommitLineData
75958532 1 void UpdateCDBGRPEntryMC() {
2 // produce the GRP entry in CDB
3 // reading MC parameter from Config.C
4
5 AliCDBManager* man = AliCDBManager::Instance();
6 man->SetDefaultStorage("local://$ALICE_ROOT");
7 man->SetRun(0);
8 AliCDBId id(AliQA::GetGRPPath(), 0, AliCDBRunRange::Infinity());
9 AliCDBMetaData *metadata= new AliCDBMetaData();
10
11 // Get root version
12 const char* rootv = gROOT->GetVersion();
13 metadata->SetResponsible("Yves.Schutz@cern.ch");
14 metadata->SetComment("GRP parameters for Monte Carlo");
15
16
17 TMap *mappp = GetGRPList();
18
19 // Printf("Storing in CDB the default values for the GRP %d parameters produced with root %s and AliRoot version %s",list->GetEntries(),rootv,alirootv);
20
21 man->Put(mappp,id,metadata);
22}
23
24TString ParseConfig(char * option)
25{
26 // Parse Config file to retrieve usefull information for the GRP
27
28 ifstream in("Config.C", ios::in) ;
29 if (!in)
30 AliError("Config.C file not found in current path") ;
31
32 TString rv("") ;
33
34 TString soption(option) ;
35
36 string line ;
37 TString sline ;
38
39 // search for the system p-p or Pb-Pb or .....
40 if (soption.Contains("system") || soption.Contains("fAliceBeamType")){
41 while (getline(in, line)) {
42 sline = line ;
43 if (sline.Contains("gAlice->SetTriggerDescriptor"))
44 break ;
45 }
46 TString sarg1 = sline(sline.Index("[")+1, sline.Index("]") - sline.Index("[")-1) ;
47 sarg1 = sarg1.Strip(TString::kLeading) ;
48 sarg1 = sarg1.Strip(TString::kTrailing) ;
49 TString sarg2 = sline(sline.Index("(")+1, sline.Index("[") - sline.Index("(")-1) ;
50 sarg2 = sarg2.Strip(TString::kLeading) ;
51 sarg2 = sarg2.Strip(TString::kTrailing) ;
52 in.seekg(0) ;
53 while (getline(in, line)) {
54 sline = line ;
55 if (sline.Contains(sarg1)) {
56 sarg1 = sline(sline.Index("=")+1, sline.Index(";")-sline.Index("=")-1) ;
57 sarg1 = sarg1.Strip(TString::kLeading) ;
58 sarg1 = sarg1.Strip(TString::kTrailing) ;
59 break ;
60 }
61 }
62 in.seekg(0) ;
63 Int_t index = -1 ;
64 while (getline(in, line)) {
65 sline = line ;
66 if (sline.Contains(sarg1)) {
67 sline = sline.Strip(TString::kLeading) ;
68 Ssiz_t deb = sline.Index(sarg1) ;
69 Ssiz_t kom = sline.Index(",") ;
70 if ( deb == 0 || deb < kom)
71 index = 1 ;
72 else
73 index = 2 ;
74 continue ;
75 }
76 if (sline.Contains(sarg2)) {
77 Ssiz_t deb = sline.First("\"") ;
78 if ( deb == -1 ) {
79 getline(in, line) ;
80 sline = line ;
81 }
82 sline.ReplaceAll("\"", "") ;
83 sline = sline.Strip(TString::kLeading) ;
84 if (index == 1 )
85 rv = sline(0, sline.Index(",")) ;
86 else if (index == 2)
87 rv = sline(sline.Index(",")+1, sline.Length()-sline.Index(",")) ;
88 break ;
89 }
90 }
91 }
92 // get the beam energy
93 else if (soption.Contains("fAliceBeamEnergy")) {
94 while (getline(in, line)) {
95 sline = line ;
96 if ( sline.Contains("->SetEnergyCMS(") ) {
97 rv = sline(sline.Index("(")+1, sline.Index(")")-sline.Index("(")-1) ;
98 break ;
99 }
100 }
101 }
102 // get the number of active detectors
103 else if (soption.Contains("fNumberOfDetectors")) {
104 UShort_t det = 0 ;
105 while (getline(in, line)) {
106 sline = line ;
107 sline.ReplaceAll(" ", "") ;
108 if (sline.Contains("iITS=1") ||
109 sline.Contains("iTPC=1") ||
110 sline.Contains("iTRD=1") ||
111 sline.Contains("iTOF=1") ||
112 sline.Contains("iPHOS=1") ||
113 sline.Contains("iHMPID=1") ||
114 sline.Contains("iEMCAL=1") ||
115 sline.Contains("iMUON=1") ||
116 sline.Contains("iFMD=1") ||
117 sline.Contains("iPMD=1") ||
118 sline.Contains("iT0=1") ||
119 sline.Contains("iVZERO=1") ||
120 sline.Contains("iZDC=1") ||
121 sline.Contains("iACORDE=1"))
122 det++ ;
123 }
124 rv = Form("%d", det) ;
125 }
126 else if (soption.Contains("fL3Current")) {
127 TString sarg ;
128 while (getline(in, line)) {
129 sline = line ;
130 sline.ReplaceAll(" ", "") ;
131 if (sline.Contains("AliMagFMaps*field=newAliMagFMaps(")) {
132 sarg = sline(sline.Last(',')+1, sline.Last(')')-sline.Last(',')-1) ;
133 break ;
134 }
135 }
136 in.seekg(0) ;
137 while (getline(in, line)) {
138 sline = line ;
139 sline.ReplaceAll(" ", "") ;
140 if (sline.Contains(Form("%s=",sarg.Data()))) {
141 sarg = sline(sline.Index("=")+1, sline.Index(";")-sline.Index("=")-1) ;
142 if (sarg == "k5kG")
143 rv = "30000" ;
144 else if (sarg == "k2kG")
145 rv = "12000" ;
146 else if (sarg == "k4kG")
147 rv = "24000";
148 break ;
149 }
150 }
151 }
152 in.close() ;
153 rv.Strip(TString::kLeading) ;
154 rv.Strip() ;
155 return rv ;
156}
157
158//_______________________________________//
159TMap *GetGRPList() {
160
161 TString system = ParseConfig("fAliceBeamType") ;
162 TString fSystem = system;
163 TMap *map = new TMap();
164 map->SetName("MONTECARLO");
165
166 //DAQ
167 map->Add(new TObjString("fRunType"),new TObjString(AliQA::GetRunTypeName(AliQA::kPHYSICS)));
168 map->Add(new TObjString("fAliceStartTime"),new TObjString("0"));
169 map->Add(new TObjString("fAliceStopTime"),new TObjString("9999"));
170 map->Add(new TObjString("fAliceBeamEnergy"),new TObjString(ParseConfig("fAliceBeamEnergy")));
171 map->Add(new TObjString("fAliceBeamType"),new TObjString(system));
172 map->Add(new TObjString("fNumberOfDetectors"),new TObjString(ParseConfig("fNumberOfDetectors")));
7e88424f 173 map->Add(new TObjString("fDetectorMask"),new TObjString("1074790399"));
174 map->Add(new TObjString("fLHCPeriod"),new TObjString("LHC08c"));
75958532 175
176 //DCS
177 map->Add(new TObjString("fLHCState"),new TObjString("0"));
178 map->Add(new TObjString("fLHCCondition"),new TObjString("0"));
179 map->Add(new TObjString("fLHCLuminosity"),new TObjString("0"));
180 map->Add(new TObjString("fBeamIntensity"),new TObjString("0"));
181 map->Add(new TObjString("fL3Current"),new TObjString(ParseConfig("fL3Current")));
182 map->Add(new TObjString("fL3Polarity"),new TObjString("0"));
183 map->Add(new TObjString("fDipoleCurrent"),new TObjString("6000"));
184 map->Add(new TObjString("fDipolePolarity"),new TObjString("0"));
185 map->Add(new TObjString("fCavernTemperature"),new TObjString("0"));
186 map->Add(new TObjString("fCavernPressure"),new TObjString("0"));
187
188 return map;
189}