if (!AliGeomManager::GetGeometry()) {
// Initialize the geometry manager
AliGeomManager::LoadGeometry("geometry.root");
- AliSysInfo::AddStamp("GetGeometry");
-
-
+ AliSysInfo::AddStamp("GetGeometry");
// // Check that the consistency of symbolic names for the activated subdetectors
// // in the geometry loaded by AliGeomManager
// AliRunLoader* runLoader = LoadRun("READ");
if (fUseVertexFromCDB) {
Double_t vtxPos[3] = {0., 0., 0.};
Double_t vtxSig[3] = {0., 0., 0.};
- AliCDBEntry* entry = AliCDBManager::Instance()->Get("GRP/Calib/MeanVertexSPD");
- AliESDVertex* vertex = dynamic_cast<AliESDVertex*> (entry->GetObject());
- if (vertex) {
- vertex->GetXYZ(vtxPos);
- vertex->GetSigmaXYZ(vtxSig);
- AliInfo("Overwriting Config.C vertex settings !");
- AliInfo(Form("Vertex position from OCDB entry: x = %13.3f, y = %13.3f, z = %13.3f (sigma = %13.3f)\n",
- vtxPos[0], vtxPos[1], vtxPos[2], vtxSig[2]));
-
- AliGenerator *gen = gAlice->GetMCApp()->Generator();
- gen->SetOrigin(vtxPos[0], vtxPos[1], vtxPos[2]); // vertex position
- gen->SetSigmaZ(vtxSig[2]);
+ AliCDBEntry* entry = AliCDBManager::Instance()->Get("GRP/Calib/MeanVertex");
+ if (entry) {
+ AliESDVertex* vertex = dynamic_cast<AliESDVertex*> (entry->GetObject());
+ if (vertex) {
+ if(vertex->GetXRes()>2.8) { // > pipe radius --> it's a dummy object, don't use it
+ entry = AliCDBManager::Instance()->Get("GRP/Calib/MeanVertexSPD");
+ if (entry) vertex = dynamic_cast<AliESDVertex*> (entry->GetObject());
+ }
+ }
+ if (vertex) {
+ vertex->GetXYZ(vtxPos);
+ vertex->GetSigmaXYZ(vtxSig);
+ AliInfo("Overwriting Config.C vertex settings !");
+ AliInfo(Form("Vertex position from OCDB entry: x = %13.3f, y = %13.3f, z = %13.3f (sigma = %13.3f)\n",
+ vtxPos[0], vtxPos[1], vtxPos[2], vtxSig[2]));
+
+ AliGenerator *gen = gAlice->GetMCApp()->Generator();
+ gen->SetOrigin(vtxPos[0], vtxPos[1], vtxPos[2]); // vertex position
+ gen->SetSigmaZ(vtxSig[2]);
+ }
}
}
if (runLoader) for (Int_t iEvent = 0;
iEvent < runLoader->GetNumberOfEvents(); iEvent++) {
char command[256];
- sprintf(command, "rm -r raw%d", iEvent);
+ snprintf(command, 256, "rm -r raw%d", iEvent);
gSystem->Exec(command);
}
delete runLoader;
runLoader->GetEvent(iEvent);
TString baseDir = gSystem->WorkingDirectory();
char dirName[256];
- sprintf(dirName, "raw%d", iEvent);
+ snprintf(dirName, 256, "raw%d", iEvent);
gSystem->MakeDirectory(dirName);
if (!gSystem->ChangeDirectory(dirName)) {
AliError(Form("couldn't change to directory %s", dirName));
char command[256];
// Note the option -s. It is used in order to avoid
// the generation of SOR/EOR events.
- sprintf(command, "dateStream -c -s -D -o %s -# %d -C -run %d",
+ snprintf(command, 256, "dateStream -c -s -D -o %s -# %d -C -run %d",
dateFileName, runLoader->GetNumberOfEvents(),runLoader->GetHeader()->GetRun());
FILE* pipe = gSystem->OpenPipe(command, "w");
ldc += AliDAQ::NumberOfLdcs(iDet) / AliDAQ::NumberOfDdls(iDet);
char rawFileName[256];
- sprintf(rawFileName, "raw%d/%s",
+ snprintf(rawFileName, 256, "raw%d/%s",
iEvent, AliDAQ::DdlFileName(iDet,iDDL));
// check existence and size of raw data file
AliInfo(Form("converting selected by trigger cluster raw data DDL files to DATE file %s", selDateFileName));
- sprintf(command, "dateStream -c -s -D -o %s -# %d -C -run %d",
+ snprintf(command, 256, "dateStream -c -s -D -o %s -# %d -C -run %d",
selDateFileName,selEvents,runLoader->GetHeader()->GetRun());
FILE* pipe2 = gSystem->OpenPipe(command, "w");
ldc += AliDAQ::NumberOfLdcs(iDet) / AliDAQ::NumberOfDdls(iDet);
char rawFileName[256];
- sprintf(rawFileName, "raw%d/%s",
+ snprintf(rawFileName, 256, "raw%d/%s",
iEvent, AliDAQ::DdlFileName(iDet,iDDL));
// check existence and size of raw data file
}
//_____________________________________________________________________________
-Bool_t AliSimulation::ConvertRaw2SDigits(const char* rawDirectory, const char* esdFileName)
+Bool_t AliSimulation::ConvertRaw2SDigits(const char* rawDirectory, const char* esdFileName, Int_t N)
{
//
// Steering routine to convert raw data in directory rawDirectory/ to fake SDigits.
AliRunLoader::Instance()->LoadKinematics("RECREATE");
AliRunLoader::Instance()->LoadTrackRefs("RECREATE");
AliRunLoader::Instance()->LoadHits("all","RECREATE");
+
//
// Save stuff at the beginning of the file to avoid file corruption
AliRunLoader::Instance()->CdGAFile();
AliRunLoader* runLoader = AliRunLoader::Instance();
//
// Open esd file if available
- TFile* esdFile = TFile::Open(esdFileName);
+ TFile* esdFile = 0;
TTree* treeESD = 0;
- AliESDEvent* esd = new AliESDEvent();
- esdFile->GetObject("esdTree", treeESD);
- if (treeESD) esd->ReadFromTree(treeESD);
+ AliESDEvent* esd = 0;
+ if (esdFileName && (strlen(esdFileName)>0)) {
+ esdFile = TFile::Open(esdFileName);
+ if (esdFile) {
+ esd = new AliESDEvent();
+ esdFile->GetObject("esdTree", treeESD);
+ if (treeESD) esd->ReadFromTree(treeESD);
+ }
+ }
//
// Create the RawReader
} else if (!fileName.IsNull()) {
rawReader = new AliRawReaderDate(fileName);
}
+ if (!rawReader) return (kFALSE);
+
// if (!fEquipIdMap.IsNull() && fRawReader)
// fRawReader->LoadEquipmentIdsMap(fEquipIdMap);
//
//
// Get Header
AliHeader* header = runLoader->GetHeader();
- //
- TString detStr = fMakeSDigits;
// Event loop
Int_t nev = 0;
while(kTRUE) {
if (!(rawReader->NextEvent())) break;
+ runLoader->SetEventNumber(nev);
+ runLoader->GetHeader()->Reset(rawReader->GetRunNumber(),
+ nev, nev);
+ runLoader->GetEvent(nev);
+ AliInfo(Form("We are at event %d",nev));
//
// Detector loop
+ TString detStr = fMakeSDigits;
for (iDet = 0; iDet < detArray->GetEntriesFast(); iDet++) {
AliModule* det = (AliModule*) detArray->At(iDet);
if (!det || !det->IsActive()) continue;
if (IsSelected(det->GetName(), detStr)) {
- AliInfo(Form("Calling Raw2SDigits for %s\n", det->GetName()));
+ AliInfo(Form("Calling Raw2SDigits for %s", det->GetName()));
det->Raw2SDigits(rawReader);
rawReader->Reset();
}
} // detectors
-
+
//
// If ESD information available obtain reconstructed vertex and store in header.
mcHeader->SetPrimaryVertex(mcV);
header->Reset(0,nev);
header->SetGenEventHeader(mcHeader);
- printf("***** Saved vertex %f %f %f \n", position[0], position[1], position[2]);
+ AliInfo(Form("***** Saved vertex %f %f %f \n", position[0], position[1], position[2]));
}
- nev++;
//
// Finish the event
runLoader->TreeE()->Fill();
- runLoader->SetNextEvent();
+ AliInfo(Form("Finished event %d",nev));
+ nev++;
+ if (N>0&&nev>=N)
+ break;
} // events
delete rawReader;
{
// run the QA on summable hits, digits or digits
- if(!gAlice) return kFALSE;
+ //if(!gAlice) return kFALSE;
AliQAManager::QAManager()->SetRunLoader(AliRunLoader::Instance()) ;
TString detectorsw("") ;
grpObj->SetBeamEnergyIsSqrtSHalfGeV(); // new format of GRP: store sqrt(s)/2 in GeV
const AliGenerator *gen = gAlice->GetMCApp()->Generator();
+ Int_t a = 0;
+ Int_t z = 0;
+
if (gen) {
- grpObj->SetBeamEnergy(gen->GetEnergyCMS()/2);
TString projectile;
- Int_t a,z;
gen->GetProjectile(projectile,a,z);
TString target;
gen->GetTarget(target,a,z);
beamType.ReplaceAll(" ","");
if (!beamType.CompareTo("-")) {
grpObj->SetBeamType("UNKNOWN");
+ grpObj->SetBeamEnergy(gen->GetEnergyCMS()/2);
}
else {
grpObj->SetBeamType(beamType);
+ if (z != 0) {
+ grpObj->SetBeamEnergy(gen->GetEnergyCMS()/2 * a / z);
+ } else {
+ grpObj->SetBeamEnergy(gen->GetEnergyCMS()/2 );
+ }
// Heavy ion run, the event specie is set to kHighMult
fEventSpecie = AliRecoParam::kHighMult;
if ((strcmp(beamType,"p-p") == 0) ||
grpObj->SetDipoleCurrent(currentDip,(AliGRPObject::Stats)0);
grpObj->SetL3Polarity(factorSol>0 ? 0:1);
grpObj->SetDipolePolarity(factorDip>0 ? 0:1);
- grpObj->SetUniformBMap(field->IsUniform()); // for special MC with k5kGUniform map
+ if (field) grpObj->SetUniformBMap(field->IsUniform()); // for special MC with k5kGUniform map
grpObj->SetPolarityConventionLHC(); // LHC convention +/+ current -> -/- field main components
//
grpObj->SetCavernTemperature(0,(AliGRPObject::Stats)0);