ROOT logo
  void UpdateCDBGRPEntryMC() {
	// produce the GRP entry in CDB 
	// reading MC parameter from Config.C
	
	AliCDBManager* man = AliCDBManager::Instance();
  man->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
  man->SetRun(0);
	AliCDBId id(AliQA::GetGRPPath(), 0, AliCDBRunRange::Infinity());
  AliCDBMetaData *metadata= new AliCDBMetaData();

  // Get root version
  const char* rootv = gROOT->GetVersion();
	metadata->SetResponsible("Yves.Schutz@cern.ch");
	metadata->SetComment("GRP parameters for Monte Carlo");
 
		
	TMap *mappp = GetGRPList();
		
  //  Printf("Storing in CDB the default values for the GRP %d parameters produced with root %s and AliRoot version %s",list->GetEntries(),rootv,alirootv);
	
  man->Put(mappp,id,metadata);
}

TString ParseConfig(char * option)
{
	// Parse Config file to retrieve usefull information for the GRP
	
	ifstream in("Config.C", ios::in) ; 
  if (!in)
		AliError("Config.C file not found in current path") ; 	

	TString rv("") ; 
	
	TString soption(option) ;
	
	string line ; 
	TString sline ; 

	// search for the system p-p or Pb-Pb or ..... 
	if (soption.Contains("system") || soption.Contains("fAliceBeamType")){
		while (getline(in, line)) { 
			sline = line ;		
			if (sline.Contains("AliSimulation::Instance()->SetTriggerConfig")) 
				break ;
		}
		TString sarg1 = sline(sline.Index("[")+1, sline.Index("]") - sline.Index("[")-1) ; 
		sarg1 = sarg1.Strip(TString::kLeading) ; 
		sarg1 = sarg1.Strip(TString::kTrailing) ; 
		TString sarg2 = sline(sline.Index("(")+1, sline.Index("[") - sline.Index("(")-1) ; 
		sarg2 = sarg2.Strip(TString::kLeading) ; 
		sarg2 = sarg2.Strip(TString::kTrailing) ; 
		in.seekg(0) ;
		while (getline(in, line)) {
			sline = line ;
			if (sline.Contains(sarg1)) {
				sarg1 = sline(sline.Index("=")+1, sline.Index(";")-sline.Index("=")-1) ; 
				sarg1 = sarg1.Strip(TString::kLeading) ; 
				sarg1 = sarg1.Strip(TString::kTrailing) ; 
				break ; 
			}
		}
		in.seekg(0) ;
		Int_t index = -1 ; 
		while (getline(in, line)) {
			sline = line ;
			if (sline.Contains(sarg1)) {
				sline = sline.Strip(TString::kLeading) ; 				
				Ssiz_t deb = sline.Index(sarg1) ;
				Ssiz_t kom = sline.Index(",") ; 
				if ( deb == 0 || deb < kom)
					index = 1 ; 
				else 
					index = 2 ; 
				continue ; 
			}
			if (sline.Contains(sarg2)) {
				Ssiz_t deb = sline.First("\"") ; 
				if ( deb == -1 ) {
					getline(in, line) ; 
					sline = line ; 
				}
				sline.ReplaceAll("\"", "") ;
				sline = sline.Strip(TString::kLeading) ; 
				if (index == 1 ) 
					rv = sline(0, sline.Index(",")) ;
				else if (index == 2) 
					rv = sline(sline.Index(",")+1, sline.Length()-sline.Index(",")) ; 
				break ;
			}
		}
	} 
	// get the beam energy
	else if (soption.Contains("fAliceBeamEnergy")) {
		while (getline(in, line)) { 
			sline = line ;		
			if ( sline.Contains("->SetEnergyCMS(") ) {
				rv = sline(sline.Index("(")+1, sline.Index(")")-sline.Index("(")-1) ; 
				break ;		
			}
		}
	}
	// get the number of active detectors
	else if (soption.Contains("fNumberOfDetectors")) {
		UShort_t det = 0 ; 
		while (getline(in, line)) {
			sline = line ; 
			sline.ReplaceAll(" ", "") ; 
			if (sline.Contains("iITS=1") ||
					sline.Contains("iTPC=1") ||
					sline.Contains("iTRD=1") ||
					sline.Contains("iTOF=1") ||			
					sline.Contains("iPHOS=1") ||
					sline.Contains("iHMPID=1") ||
					sline.Contains("iEMCAL=1") ||
					sline.Contains("iMUON=1") ||
					sline.Contains("iFMD=1") ||
					sline.Contains("iPMD=1") ||
					sline.Contains("iT0=1") ||
					sline.Contains("iVZERO=1") ||
					sline.Contains("iZDC=1") ||
					sline.Contains("iACORDE=1"))
				det++ ; 
		}
		rv = Form("%d", det) ; 
	}
	else if (soption.Contains("fL3Current")) {
		TString sarg ;
		while (getline(in, line)) {
			sline = line ; 
			sline.ReplaceAll(" ", "") ; 
			if (sline.Contains("AliMagF*field=newAliMagF(")) {
				sarg = sline(sline.Last(',')+1, sline.Last(')')-sline.Last(',')-1) ; 
				break ; 
			}
		}
		in.seekg(0) ;
		while (getline(in, line)) {
			sline = line ; 
			sline.ReplaceAll(" ", "") ; 
			if (sline.Contains(Form("%s=",sarg.Data()))) {
				sarg = sline(sline.Index("=")+1, sline.Index(";")-sline.Index("=")-1) ;
				if (sarg == "k5kG") 
					rv = "30000" ;
				else if (sarg == "k2kG")
					rv = "12000" ;
				break ; 
			}
		}		
	}
		in.close() ;
		rv.Strip(TString::kLeading) ; 
		rv.Strip() ; 
	return rv ; 
}
	
//_______________________________________//
TMap *GetGRPList() {
 
  TString system = ParseConfig("fAliceBeamType") ;  
	TString fSystem = system;
  TMap *map = new TMap();
  map->SetName("MONTECARLO");

  //DAQ
	map->Add(new TObjString("fRunType"),new TObjString(AliQA::GetRunTypeName(AliQA::kPHYSICS)));
	map->Add(new TObjString("fAliceStartTime"),new TObjString("0"));
  map->Add(new TObjString("fAliceStopTime"),new TObjString("9999"));
	map->Add(new TObjString("fAliceBeamEnergy"),new TObjString(ParseConfig("fAliceBeamEnergy")));
  map->Add(new TObjString("fAliceBeamType"),new TObjString(system));
  map->Add(new TObjString("fNumberOfDetectors"),new TObjString(ParseConfig("fNumberOfDetectors")));
  map->Add(new TObjString("fDetectorMask"),new TObjString("1074790399"));
  map->Add(new TObjString("fLHCPeriod"),new TObjString("LHC08c"));

  //DCS
  map->Add(new TObjString("fLHCState"),new TObjString("0"));
  map->Add(new TObjString("fLHCCondition"),new TObjString("0"));
  map->Add(new TObjString("fLHCLuminosity"),new TObjString("0"));
  map->Add(new TObjString("fBeamIntensity"),new TObjString("0"));
  map->Add(new TObjString("fL3Current"),new TObjString(ParseConfig("fL3Current")));
  map->Add(new TObjString("fL3Polarity"),new TObjString("0"));
  map->Add(new TObjString("fDipoleCurrent"),new TObjString("6000"));
  map->Add(new TObjString("fDipolePolarity"),new TObjString("0"));
  map->Add(new TObjString("fCavernTemperature"),new TObjString("0"));
  map->Add(new TObjString("fCavernPressure"),new TObjString("0"));

  return map;
}
 UpdateCDBGRPEntryMC.C:1
 UpdateCDBGRPEntryMC.C:2
 UpdateCDBGRPEntryMC.C:3
 UpdateCDBGRPEntryMC.C:4
 UpdateCDBGRPEntryMC.C:5
 UpdateCDBGRPEntryMC.C:6
 UpdateCDBGRPEntryMC.C:7
 UpdateCDBGRPEntryMC.C:8
 UpdateCDBGRPEntryMC.C:9
 UpdateCDBGRPEntryMC.C:10
 UpdateCDBGRPEntryMC.C:11
 UpdateCDBGRPEntryMC.C:12
 UpdateCDBGRPEntryMC.C:13
 UpdateCDBGRPEntryMC.C:14
 UpdateCDBGRPEntryMC.C:15
 UpdateCDBGRPEntryMC.C:16
 UpdateCDBGRPEntryMC.C:17
 UpdateCDBGRPEntryMC.C:18
 UpdateCDBGRPEntryMC.C:19
 UpdateCDBGRPEntryMC.C:20
 UpdateCDBGRPEntryMC.C:21
 UpdateCDBGRPEntryMC.C:22
 UpdateCDBGRPEntryMC.C:23
 UpdateCDBGRPEntryMC.C:24
 UpdateCDBGRPEntryMC.C:25
 UpdateCDBGRPEntryMC.C:26
 UpdateCDBGRPEntryMC.C:27
 UpdateCDBGRPEntryMC.C:28
 UpdateCDBGRPEntryMC.C:29
 UpdateCDBGRPEntryMC.C:30
 UpdateCDBGRPEntryMC.C:31
 UpdateCDBGRPEntryMC.C:32
 UpdateCDBGRPEntryMC.C:33
 UpdateCDBGRPEntryMC.C:34
 UpdateCDBGRPEntryMC.C:35
 UpdateCDBGRPEntryMC.C:36
 UpdateCDBGRPEntryMC.C:37
 UpdateCDBGRPEntryMC.C:38
 UpdateCDBGRPEntryMC.C:39
 UpdateCDBGRPEntryMC.C:40
 UpdateCDBGRPEntryMC.C:41
 UpdateCDBGRPEntryMC.C:42
 UpdateCDBGRPEntryMC.C:43
 UpdateCDBGRPEntryMC.C:44
 UpdateCDBGRPEntryMC.C:45
 UpdateCDBGRPEntryMC.C:46
 UpdateCDBGRPEntryMC.C:47
 UpdateCDBGRPEntryMC.C:48
 UpdateCDBGRPEntryMC.C:49
 UpdateCDBGRPEntryMC.C:50
 UpdateCDBGRPEntryMC.C:51
 UpdateCDBGRPEntryMC.C:52
 UpdateCDBGRPEntryMC.C:53
 UpdateCDBGRPEntryMC.C:54
 UpdateCDBGRPEntryMC.C:55
 UpdateCDBGRPEntryMC.C:56
 UpdateCDBGRPEntryMC.C:57
 UpdateCDBGRPEntryMC.C:58
 UpdateCDBGRPEntryMC.C:59
 UpdateCDBGRPEntryMC.C:60
 UpdateCDBGRPEntryMC.C:61
 UpdateCDBGRPEntryMC.C:62
 UpdateCDBGRPEntryMC.C:63
 UpdateCDBGRPEntryMC.C:64
 UpdateCDBGRPEntryMC.C:65
 UpdateCDBGRPEntryMC.C:66
 UpdateCDBGRPEntryMC.C:67
 UpdateCDBGRPEntryMC.C:68
 UpdateCDBGRPEntryMC.C:69
 UpdateCDBGRPEntryMC.C:70
 UpdateCDBGRPEntryMC.C:71
 UpdateCDBGRPEntryMC.C:72
 UpdateCDBGRPEntryMC.C:73
 UpdateCDBGRPEntryMC.C:74
 UpdateCDBGRPEntryMC.C:75
 UpdateCDBGRPEntryMC.C:76
 UpdateCDBGRPEntryMC.C:77
 UpdateCDBGRPEntryMC.C:78
 UpdateCDBGRPEntryMC.C:79
 UpdateCDBGRPEntryMC.C:80
 UpdateCDBGRPEntryMC.C:81
 UpdateCDBGRPEntryMC.C:82
 UpdateCDBGRPEntryMC.C:83
 UpdateCDBGRPEntryMC.C:84
 UpdateCDBGRPEntryMC.C:85
 UpdateCDBGRPEntryMC.C:86
 UpdateCDBGRPEntryMC.C:87
 UpdateCDBGRPEntryMC.C:88
 UpdateCDBGRPEntryMC.C:89
 UpdateCDBGRPEntryMC.C:90
 UpdateCDBGRPEntryMC.C:91
 UpdateCDBGRPEntryMC.C:92
 UpdateCDBGRPEntryMC.C:93
 UpdateCDBGRPEntryMC.C:94
 UpdateCDBGRPEntryMC.C:95
 UpdateCDBGRPEntryMC.C:96
 UpdateCDBGRPEntryMC.C:97
 UpdateCDBGRPEntryMC.C:98
 UpdateCDBGRPEntryMC.C:99
 UpdateCDBGRPEntryMC.C:100
 UpdateCDBGRPEntryMC.C:101
 UpdateCDBGRPEntryMC.C:102
 UpdateCDBGRPEntryMC.C:103
 UpdateCDBGRPEntryMC.C:104
 UpdateCDBGRPEntryMC.C:105
 UpdateCDBGRPEntryMC.C:106
 UpdateCDBGRPEntryMC.C:107
 UpdateCDBGRPEntryMC.C:108
 UpdateCDBGRPEntryMC.C:109
 UpdateCDBGRPEntryMC.C:110
 UpdateCDBGRPEntryMC.C:111
 UpdateCDBGRPEntryMC.C:112
 UpdateCDBGRPEntryMC.C:113
 UpdateCDBGRPEntryMC.C:114
 UpdateCDBGRPEntryMC.C:115
 UpdateCDBGRPEntryMC.C:116
 UpdateCDBGRPEntryMC.C:117
 UpdateCDBGRPEntryMC.C:118
 UpdateCDBGRPEntryMC.C:119
 UpdateCDBGRPEntryMC.C:120
 UpdateCDBGRPEntryMC.C:121
 UpdateCDBGRPEntryMC.C:122
 UpdateCDBGRPEntryMC.C:123
 UpdateCDBGRPEntryMC.C:124
 UpdateCDBGRPEntryMC.C:125
 UpdateCDBGRPEntryMC.C:126
 UpdateCDBGRPEntryMC.C:127
 UpdateCDBGRPEntryMC.C:128
 UpdateCDBGRPEntryMC.C:129
 UpdateCDBGRPEntryMC.C:130
 UpdateCDBGRPEntryMC.C:131
 UpdateCDBGRPEntryMC.C:132
 UpdateCDBGRPEntryMC.C:133
 UpdateCDBGRPEntryMC.C:134
 UpdateCDBGRPEntryMC.C:135
 UpdateCDBGRPEntryMC.C:136
 UpdateCDBGRPEntryMC.C:137
 UpdateCDBGRPEntryMC.C:138
 UpdateCDBGRPEntryMC.C:139
 UpdateCDBGRPEntryMC.C:140
 UpdateCDBGRPEntryMC.C:141
 UpdateCDBGRPEntryMC.C:142
 UpdateCDBGRPEntryMC.C:143
 UpdateCDBGRPEntryMC.C:144
 UpdateCDBGRPEntryMC.C:145
 UpdateCDBGRPEntryMC.C:146
 UpdateCDBGRPEntryMC.C:147
 UpdateCDBGRPEntryMC.C:148
 UpdateCDBGRPEntryMC.C:149
 UpdateCDBGRPEntryMC.C:150
 UpdateCDBGRPEntryMC.C:151
 UpdateCDBGRPEntryMC.C:152
 UpdateCDBGRPEntryMC.C:153
 UpdateCDBGRPEntryMC.C:154
 UpdateCDBGRPEntryMC.C:155
 UpdateCDBGRPEntryMC.C:156
 UpdateCDBGRPEntryMC.C:157
 UpdateCDBGRPEntryMC.C:158
 UpdateCDBGRPEntryMC.C:159
 UpdateCDBGRPEntryMC.C:160
 UpdateCDBGRPEntryMC.C:161
 UpdateCDBGRPEntryMC.C:162
 UpdateCDBGRPEntryMC.C:163
 UpdateCDBGRPEntryMC.C:164
 UpdateCDBGRPEntryMC.C:165
 UpdateCDBGRPEntryMC.C:166
 UpdateCDBGRPEntryMC.C:167
 UpdateCDBGRPEntryMC.C:168
 UpdateCDBGRPEntryMC.C:169
 UpdateCDBGRPEntryMC.C:170
 UpdateCDBGRPEntryMC.C:171
 UpdateCDBGRPEntryMC.C:172
 UpdateCDBGRPEntryMC.C:173
 UpdateCDBGRPEntryMC.C:174
 UpdateCDBGRPEntryMC.C:175
 UpdateCDBGRPEntryMC.C:176
 UpdateCDBGRPEntryMC.C:177
 UpdateCDBGRPEntryMC.C:178
 UpdateCDBGRPEntryMC.C:179
 UpdateCDBGRPEntryMC.C:180
 UpdateCDBGRPEntryMC.C:181
 UpdateCDBGRPEntryMC.C:182
 UpdateCDBGRPEntryMC.C:183
 UpdateCDBGRPEntryMC.C:184
 UpdateCDBGRPEntryMC.C:185
 UpdateCDBGRPEntryMC.C:186
 UpdateCDBGRPEntryMC.C:187
 UpdateCDBGRPEntryMC.C:188