]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliTriggerConfiguration.cxx
Typo fixed, and removing unused variable.
[u/mrichter/AliRoot.git] / STEER / AliTriggerConfiguration.cxx
index 1658b89941bf88f10f13cfba25d8d4fecb744b10..2c3cbb2efe1d25dc60bac71bd076f14687e98e7c 100755 (executable)
 //
 ///////////////////////////////////////////////////////////////////////////////
 #include <Riostream.h>
-//#include <cstdlib>
 
+#include <TCint.h>
+#include <TFile.h>
+#include <TKey.h>
+#include <TObjArray.h>
+#include <TObjString.h>
 #include <TObject.h>
+#include <TROOT.h>
 #include <TString.h>
-#include <TObjString.h>
-#include <TObjArray.h>
 #include <TSystem.h>
-#include <TKey.h>
-#include <TFile.h>
 
+#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;
   }
@@ -584,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(),""));
@@ -610,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();
@@ -652,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());
@@ -660,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;
          }
@@ -859,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() ) );
@@ -882,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; i<detInp->GetEntriesFast(); i++ ) {
             AliInfo( Form( "Adding input %s", ((AliTriggerInput*)detInp->At(i))->GetName() ) );