* provided "as is" without express or implied warranty. *
**************************************************************************/
-/* $Id$ */
+/* $Id: AliSimulation.cxx 64623 2013-10-21 13:38:58Z rgrosso $ */
///////////////////////////////////////////////////////////////////////////////
// //
// The number of events per file has to be set before the simulation of //
// hits. Otherwise it has no effect. //
// //
+// The trigger configuration is set by the method SetTriggerConfig(X) //
+// X can take three kinds of values //
+// //
+// - The exact string "none" - case insensitive. In this case, not trigger //
+// information is generated from the digits. //
+// - The empty string or "ocdb" - case insensitive. In this case the //
+// trigger configuration is read from OCDB //
+// - Some string - say "p-p" - in which case the configuration is read from //
+// fixed files in $ALICE_ROOT/GRP/CTP/ - say $ALICE_ROOT/GRP/CTP/p-p.cfg //
+// //
+// Default is to read from OCDB. //
+// //
///////////////////////////////////////////////////////////////////////////////
-#include <TCint.h>
#include <TFile.h>
#include <TGeoGlobalMagField.h>
#include <TGeoManager.h>
ClassImp(AliSimulation)
AliSimulation *AliSimulation::fgInstance = 0;
-const char* AliSimulation::fgkDetectorName[AliSimulation::fgkNDetectors] = {"ITS", "TPC", "TRD", "TOF", "PHOS", "HMPID", "EMCAL", "MUON", "FMD", "ZDC", "PMD", "T0", "VZERO", "ACORDE"
-// #ifdef MFT_UPGRADE
-// ,"MFT"
-// #endif
- ,"MFT" // AU
- ,"HLT"
-};
+ const char* AliSimulation::fgkDetectorName[AliSimulation::fgkNDetectors] = {"ITS", "TPC", "TRD",
+ "TOF", "PHOS", "HMPID", "EMCAL", "MUON", "FMD", "ZDC", "PMD", "T0", "VZERO", "ACORDE","AD",
+ "FIT","MFT","HLT"};
//_____________________________________________________________________________
AliSimulation::AliSimulation(const char* configFileName,
AliSysInfo::AddStamp("Hits2Digits");
- // digits -> trigger
- if (!fTriggerConfig.IsNull() && !RunTrigger(fTriggerConfig,fMakeDigits)) {
+ // digits -> trigger. Set trigger configuration to "none" - any
+ // case - to not generate the trigger information. Set the trigger
+ // configuration to some string X to read from file at
+ // $ALICE_ROOT/GRP/CTP/X. Set the trigger configuration to the
+ // empty string or "ocdb" - any case - to read from OCDB.
+ if (!fTriggerConfig.EqualTo("none",TString::kIgnoreCase) &&
+ !RunTrigger(fTriggerConfig,fMakeDigits)) {
if (fStopOnError) return kFALSE;
}
}
AliSysInfo::AddStamp("RunQA");
-
+ //
+ StoreUsedCDBMaps();
+ //
TString snapshotFileOut("");
if(TString(gSystem->Getenv("OCDB_SNAPSHOT_CREATE")) == TString("kTRUE")){
AliInfo(" ******** Creating the snapshot! *********");
AliPDG::AddParticlesToPdgDataBase();
- gMC->SetMagField(TGeoGlobalMagField::Instance()->GetField());
+ TVirtualMC::GetMC()->SetMagField(TGeoGlobalMagField::Instance()->GetField());
gAlice->GetMCApp()->Init();
AliGenerator *gen=gAlice->GetMCApp()->Generator();
gAlice->GetMCApp()->ResetGenerator(gener);
//Prepare MC for Lego Run
- gMC->InitLego();
+ TVirtualMC::GetMC()->InitLego();
//Run Lego Object
AliRunLoader::Instance()->SetNumberOfEventsPerFile(nev);
- gMC->ProcessRun(nev);
+ TVirtualMC::GetMC()->ProcessRun(nev);
// End of this run, close files
FinishRun();
// Details of the format are given in the
// trigger TDR - pages 134 and 135.
AliCTPRawData writer;
- writer.RawData();
+ //writer.RawData();
+ writer.RawDataRun2();
return kTRUE;
}
AliPDG::AddParticlesToPdgDataBase();
- gMC->SetMagField(TGeoGlobalMagField::Instance()->GetField());
+ TVirtualMC::GetMC()->SetMagField(TGeoGlobalMagField::Instance()->GetField());
AliSysInfo::AddStamp("RunSimulation_GetField");
gAlice->GetMCApp()->Init();
AliSysInfo::AddStamp("RunSimulation_InitMCApp");
// Create the Root Tree with one branch per detector
//Hits moved to begin event -> now we are crating separate tree for each event
- gMC->ProcessRun(nEvents);
+ TVirtualMC::GetMC()->ProcessRun(nEvents);
// End of this run, close files
if(nEvents>0) FinishRun();
runLoader->WriteHeader("OVERWRITE");
generator->Write();
runLoader->Write();
+
+ return kTRUE;
}
//_____________________________________________________________________________
AliCodeTimerStart(Form("creating summable digits for %s", det->GetName()));
det->Hits2SDigits();
AliCodeTimerStop(Form("creating summable digits for %s", det->GetName()));
- AliSysInfo::AddStamp(Form("Digit_%s_%d",det->GetName(),eventNr), 0,1, eventNr);
+ AliSysInfo::AddStamp(Form("SDigit_%s_%d",det->GetName(),eventNr), 0,1, eventNr);
}
}
const char* excludeDetectors)
{
// run the digitization and produce digits from sdigits
-
AliCodeTimerAuto("",0)
// initialize CDB storage, run number, set CDB lock
}
detArr.AddLast(digitizer);
AliInfo(Form("Created digitizer from SDigits -> Digits for %s", det->GetName()));
+
}
//
if ((detStr.CompareTo("ALL") != 0) && !detStr.IsNull()) {
digInp.InitEvent(); //this must be after call of Connect Input tress.
if (outRl) outRl->SetEventNumber(eventsCreated-1);
static_cast<AliStream*>(digInp.GetInputStream(0))->ImportgAlice(); // use gAlice of the first input stream
- for (int id=0;id<ndigs;id++) ((AliDigitizer*)detArr[id])->Digitize("");
+ for (int id=0;id<ndigs;id++) {
+ ((AliDigitizer*)detArr[id])->Digitize("");
+ AliSysInfo::AddStamp(Form("Digit_%s_%d",detArr[id]->GetName(),eventsCreated), 0,2, eventsCreated);
+ }
digInp.FinishEvent();
};
digInp.FinishGlobal();
- //
+ //
return kTRUE;
}
AliPDG::AddParticlesToPdgDataBase();
- gMC->SetMagField(TGeoGlobalMagField::Instance()->GetField());
+ TVirtualMC::GetMC()->SetMagField(TGeoGlobalMagField::Instance()->GetField());
gAlice->GetMCApp()->Init();
AliRunLoader::Instance()->CdGAFile();
gAlice->Write(0,TObject::kOverwrite);//write AliRun
AliRunLoader::Instance()->Write(0,TObject::kOverwrite);//write RunLoader itself
-
+ //
if(gAlice->GetMCApp()) gAlice->GetMCApp()->FinishRun();
AliRunLoader::Instance()->Synchronize();
}
else
return 0;
}
+
+//_____________________________________________________________________________
+void AliSimulation::StoreUsedCDBMaps() const
+{
+ // write in galice.root maps with used CDB paths
+ //
+ //
+ AliRunLoader* runLoader = LoadRun();
+ if (!runLoader) {
+ AliError("Failed to open gAlice.root in write mode");
+ return;
+ }
+ //
+ const TMap *cdbMap = AliCDBManager::Instance()->GetStorageMap();
+ const TList *cdbList = AliCDBManager::Instance()->GetRetrievedIds();
+ //
+ TMap *cdbMapCopy = new TMap(cdbMap->GetEntries());
+ cdbMapCopy->SetOwner(1);
+ // cdbMapCopy->SetName("cdbMap");
+ TIter iter(cdbMap->GetTable());
+ //
+ TPair* pair = 0;
+ while((pair = dynamic_cast<TPair*> (iter.Next()))){
+ TObjString* keyStr = dynamic_cast<TObjString*> (pair->Key());
+ TObjString* valStr = dynamic_cast<TObjString*> (pair->Value());
+ if (keyStr && valStr)
+ cdbMapCopy->Add(new TObjString(keyStr->GetName()), new TObjString(valStr->GetName()));
+ }
+ //
+ TList *cdbListCopy = new TList();
+ cdbListCopy->SetOwner(1);
+ // cdbListCopy->SetName("cdbList");
+ //
+ TIter iter2(cdbList);
+
+ AliCDBId* id=0;
+ while((id = dynamic_cast<AliCDBId*> (iter2.Next()))){
+ cdbListCopy->Add(new TObjString(id->ToString().Data()));
+ }
+ //
+ AliRunLoader::Instance()->CdGAFile();
+ gDirectory->WriteObject(cdbMapCopy,"cdbMap","kSingleKey");
+ gDirectory->WriteObject(cdbListCopy,"cdbList","kSingleKey");
+ delete runLoader;
+ //
+ AliInfo(Form("Stored used OCDB entries as TMap %s and TList %s in %s",
+ cdbMapCopy->GetName(),
+ cdbListCopy->GetName(),
+ fGAliceFileName.Data()));
+ //
+}