X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=STEER%2FAliTriggerConfiguration.cxx;h=2c3cbb2efe1d25dc60bac71bd076f14687e98e7c;hb=1c00c47a81904186229de6c308162cb8ece48543;hp=a936afdf3239051219f86765cfe588a34b42ad1f;hpb=909d646ea6cd21cf294a1af50f3e4c8ccaf02f78;p=u%2Fmrichter%2FAliRoot.git diff --git a/STEER/AliTriggerConfiguration.cxx b/STEER/AliTriggerConfiguration.cxx index a936afdf323..2c3cbb2efe1 100755 --- a/STEER/AliTriggerConfiguration.cxx +++ b/STEER/AliTriggerConfiguration.cxx @@ -58,30 +58,32 @@ // /////////////////////////////////////////////////////////////////////////////// #include -//#include +#include +#include +#include +#include +#include #include +#include #include -#include -#include #include -#include -#include +#include "AliCDBManager.h" #include "AliLog.h" +#include "AliMC.h" +#include "AliModule.h" +#include "AliPDG.h" #include "AliRun.h" #include "AliRunLoader.h" -#include "AliModule.h" - -#include "AliTriggerInput.h" -//#include "AliTriggerDetector.h" -#include "AliTriggerInteraction.h" #include "AliTriggerBCMask.h" -#include "AliTriggerCluster.h" -#include "AliTriggerPFProtection.h" -#include "AliTriggerDescriptor.h" #include "AliTriggerClass.h" +#include "AliTriggerCluster.h" #include "AliTriggerConfiguration.h" +#include "AliTriggerDescriptor.h" +#include "AliTriggerInput.h" +#include "AliTriggerInteraction.h" +#include "AliTriggerPFProtection.h" ClassImp(AliTriggerConfiguration) @@ -151,7 +153,7 @@ Bool_t AliTriggerConfiguration::AddInput( AliTriggerInput* input ) return kTRUE; } else { - AliError("CTP can handle up to 50 inputs ! Impossible to add the required input !"); + AliError("CTP can handle up to 60 inputs ! Impossible to add the required input !"); return kFALSE; } } @@ -276,7 +278,7 @@ Bool_t AliTriggerConfiguration::AddMask( AliTriggerBCMask* mask ) { // Add a trigger bunch-crossing mask object to // the list of the trigger bunch-crossing masks - if (fMasks.GetEntries() < kNMaxMasks) { + if (fMasks.GetEntries() < (kNMaxMasks+1)) { //+1 to account for NONE fMasks.AddLast( mask ); return kTRUE; } @@ -550,6 +552,7 @@ Bool_t AliTriggerConfiguration::ProcessConfigurationLine(const char* line, Int_t } strLine.ReplaceAll("*",'!'); + strLine.ReplaceAll("~",'!'); TObjArray *tokens = strLine.Tokenize(" \t"); Int_t ntokens = tokens->GetEntriesFast(); if (ntokens == 0) @@ -583,6 +586,7 @@ Bool_t AliTriggerConfiguration::ProcessConfigurationLine(const char* line, Int_t // Read logical functions and descriptors if (ntokens < 2) { if ((((TObjString*)tokens->At(0))->String().CompareTo("EMPTY") == 0) || + (((TObjString*)tokens->At(0))->String().CompareTo("DTRUE") == 0) || (((TObjString*)tokens->At(0))->String().CompareTo("DEMPTY") == 0)) { AddDescriptor(((TObjString*)tokens->At(0))->String(), strLine.ReplaceAll(((TObjString*)tokens->At(0))->String(),"")); @@ -609,6 +613,10 @@ Bool_t AliTriggerConfiguration::ProcessConfigurationLine(const char* line, Int_t AliError(Form("Invalid trigger cluster syntax (%s)!",strLine.Data())); return kFALSE; } + if (((TObjString*)tokens->At(1))->String().Atoi() <= 0) { + AliError(Form("Invalid trigger cluster syntax (%s)!",strLine.Data())); + return kFALSE; + } TString strTemp; for(Int_t i = 2; i < ntokens; i++) { strTemp += ((TObjString*)tokens->At(i))->String(); @@ -651,7 +659,9 @@ Bool_t AliTriggerConfiguration::ProcessConfigurationLine(const char* line, Int_t return kFALSE; } if (((TObjString*)tokens->At(0))->String().CompareTo("NONE") == 0) - AddMask(new AliTriggerBCMask(((TObjString*)tokens->At(0))->String())); + { + AddMask(new AliTriggerBCMask(((TObjString*)tokens->At(0))->String())); + } else { AddMask(((TObjString*)tokens->At(0))->String(), ((TObjString*)tokens->At(1))->String()); @@ -659,7 +669,7 @@ Bool_t AliTriggerConfiguration::ProcessConfigurationLine(const char* line, Int_t break; case 7: { - if (ntokens != 8) { + if ((ntokens < 8) || (ntokens >10)) { AliError(Form("Invalid trigger class syntax (%s)!",strLine.Data())); return kFALSE; } @@ -858,11 +868,36 @@ Bool_t AliTriggerConfiguration::CheckConfiguration( TString& configfile ) AliInfo( Form( "initializing gAlice with config file %s", configfile.Data() ) ); - StdoutToAliInfo( StderrToAliError( - gAlice->Init( configfile.Data() ); - );); +//_______________________________________________________________________ + gAlice->Announce(); + + gROOT->LoadMacro(configfile.Data()); + gInterpreter->ProcessLine(gAlice->GetConfigFunction()); + + if(AliCDBManager::Instance()->GetRun() >= 0) { + AliRunLoader::Instance()->SetRunNumber(AliCDBManager::Instance()->GetRun()); + } else { + AliWarning("Run number not initialized!!"); + } + + AliRunLoader::Instance()->CdGAFile(); + + AliPDG::AddParticlesToPdgDataBase(); + + gAlice->GetMCApp()->Init(); + + //Must be here because some MCs (G4) adds detectors here and not in Config.C + gAlice->InitLoaders(); + AliRunLoader::Instance()->MakeTree("E"); + 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(); + gAlice->Write(); - AliRunLoader* runLoader = gAlice->GetRunLoader(); + AliRunLoader* runLoader = AliRunLoader::Instance(); if( !runLoader ) { AliError( Form( "gAlice has no run loader object. " "Check your config file: %s", configfile.Data() ) ); @@ -881,7 +916,7 @@ Bool_t AliTriggerConfiguration::CheckConfiguration( TString& configfile ) if( IsSelected( det->GetName(), detStr ) ) { AliInfo( Form( "Creating inputs for %s", det->GetName() ) ); AliTriggerDetector* dtrg = det->CreateTriggerDetector(); - dtrg->CreateInputs(GetInputs()); + dtrg->AssignInputs(GetInputs()); TObjArray* detInp = dtrg->GetInputs(); for( Int_t i=0; iGetEntriesFast(); i++ ) { AliInfo( Form( "Adding input %s", ((AliTriggerInput*)detInp->At(i))->GetName() ) );