+//_____________________________________________________________________________
+Bool_t AliSimulation::RunGeneratorOnly()
+{
+ // Execute Config.C
+ TInterpreter::EErrorCode interpreterError=TInterpreter::kNoError;
+ gROOT->LoadMacro(fConfigFileName.Data());
+ Long_t interpreterResult=gInterpreter->ProcessLine(gAlice->GetConfigFunction(), &interpreterError);
+ if (interpreterResult!=0 || interpreterError!=TInterpreter::kNoError) {
+ AliFatal(Form("execution of config file \"%s\" failed with error %d", fConfigFileName.Data(), (int)interpreterError));
+ }
+
+ // Setup the runloader and generator, check if everything is OK
+ AliRunLoader* runLoader = AliRunLoader::Instance();
+ AliGenerator* generator = gAlice->GetMCApp()->Generator();
+ if (!runLoader) {
+ AliError(Form("gAlice has no run loader object. "
+ "Check your config file: %s", fConfigFileName.Data()));
+ return kFALSE;
+ }
+ if (!generator) {
+ AliError(Form("gAlice has no generator object. "
+ "Check your config file: %s", fConfigFileName.Data()));
+ return kFALSE;
+ }
+
+ runLoader->LoadKinematics("RECREATE");
+ runLoader->MakeTree("E");
+
+ // Create stack and header
+ runLoader->MakeStack();
+ AliStack* stack = runLoader->Stack();
+ AliHeader* header = runLoader->GetHeader();
+
+ // Intialize generator
+ generator->Init();
+ generator->SetStack(stack);
+
+ // Run main generator loop
+
+ for (Int_t iev=0; iev<fNEvents; iev++)
+ {
+ // Initialize event
+ header->Reset(0,iev);
+ runLoader->SetEventNumber(iev);
+ stack->Reset();
+ runLoader->MakeTree("K");
+
+ // Generate event
+ generator->Generate();
+
+ // Finish event
+ header->SetNprimary(stack->GetNprimary());
+ header->SetNtrack(stack->GetNtrack());
+ stack->FinishEvent();
+ header->SetStack(stack);
+ runLoader->TreeE()->Fill();
+ runLoader->WriteKinematics("OVERWRITE");
+ }
+
+ // Finalize
+ generator->FinishRun();
+ // Write file
+ runLoader->WriteHeader("OVERWRITE");
+ generator->Write();
+ runLoader->Write();
+
+ return kTRUE;
+}
+