]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/ESD/AliTriggerConfiguration.cxx
Updates in event mixing code for low-pt code
[u/mrichter/AliRoot.git] / STEER / ESD / AliTriggerConfiguration.cxx
index 18730e7cc8973c1f42dff7f7cb6533a7868f9985..3db9ea61c931006e833a8db235d5744b86e10faf 100755 (executable)
@@ -59,7 +59,6 @@
 ///////////////////////////////////////////////////////////////////////////////
 #include <Riostream.h>
 
-#include <TCint.h>
 #include <TFile.h>
 #include <TKey.h>
 #include <TObjArray.h>
@@ -80,6 +79,9 @@
 #include "AliTriggerInteraction.h"
 #include "AliTriggerPFProtection.h"
 
+using std::endl;
+using std::cout;
+using std::ifstream;
 ClassImp(AliTriggerConfiguration)
 
 const TString AliTriggerConfiguration::fgkConfigurationFileName("/data/triggerConfigurations.root");
@@ -230,7 +232,7 @@ Bool_t  AliTriggerConfiguration::AddFunction(AliTriggerInteraction *func)
       AliError("Invalid logical function ! Impossible to add it !");
   }
   else
-    AliError("CTP can handle up to 2 logical functions ! Impossible to add the required interaction !");
+    AliError("CTP can handle up to 4 logical functions ! Impossible to add the required interaction !");
 
   return kFALSE;
 }
@@ -274,12 +276,12 @@ 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+1)) {  //+1 to account for NONE
+  if (fMasks.GetEntries() < (kNMaxMasks)) {  
       fMasks.AddLast( mask );
       return kTRUE;
   }
   else
-    AliError("CTP can handle up to 4 bunch-crossing masks ! Impossible to add the required mask !");
+    AliError("CTP can handle up to 12 bunch-crossing masks ! Impossible to add the required mask !");
 
   return kFALSE;
 }
@@ -339,6 +341,7 @@ TString AliTriggerConfiguration::GetActiveDetectors() const
          activeDet.Append( " " );
          activeDet.Append( ((TObjString*)det->At(k))->String() );
       }
+      delete det;
    }
    return activeDet;
 }
@@ -561,6 +564,7 @@ Bool_t AliTriggerConfiguration::ProcessConfigurationLine(const char* line, Int_t
        // Read inputs
        if (ntokens != 5) {
         AliError(Form("Invalid trigger input syntax (%s)!",strLine.Data()));
+        delete tokens;
         return kFALSE;
        }
        AddInput(((TObjString*)tokens->At(0))->String(),
@@ -573,6 +577,7 @@ Bool_t AliTriggerConfiguration::ProcessConfigurationLine(const char* line, Int_t
        // Read interaction
        if (ntokens != 2) {
         AliError(Form("Invalid trigger interaction syntax (%s)!",strLine.Data()));
+        delete tokens;
         return kFALSE;
        }
        AddInteraction(((TObjString*)tokens->At(0))->String(),
@@ -590,24 +595,32 @@ Bool_t AliTriggerConfiguration::ProcessConfigurationLine(const char* line, Int_t
         }
         else {
           AliError(Form("Invalid trigger descriptor syntax (%s)!",strLine.Data()));
+          delete tokens;
           return kFALSE;
         }
        }
        if (((TObjString*)tokens->At(0))->String().BeginsWith("l0f")) {
         // function
-        AddFunction(((TObjString*)tokens->At(0))->String(),
-                         strLine.ReplaceAll(((TObjString*)tokens->At(0))->String(),""));
+        if(!AddFunction(((TObjString*)tokens->At(0))->String(),
+                        strLine.ReplaceAll(((TObjString*)tokens->At(0))->String(),""))) {
+          delete tokens;
+          return kFALSE;
+        }
        }
        else {
-        AddDescriptor(((TObjString*)tokens->At(0))->String(),
-                           strLine.ReplaceAll(((TObjString*)tokens->At(0))->String(),""));
+        if(!AddDescriptor(((TObjString*)tokens->At(0))->String(),
+                          strLine.ReplaceAll(((TObjString*)tokens->At(0))->String(),""))) {
+          delete tokens;
+          return kFALSE;
+        }
        }
        break;
      case 4:
        {
          if (ntokens < 2) {
            AliError(Form("Invalid trigger cluster syntax (%s)!",strLine.Data()));
-           return kFALSE;
+          delete tokens;
+          return kFALSE;
          }
         if (((TObjString*)tokens->At(1))->String().Atoi() <= 0) {
            AliError(Form("Invalid trigger cluster syntax (%s)!",strLine.Data()));
@@ -631,20 +644,41 @@ Bool_t AliTriggerConfiguration::ProcessConfigurationLine(const char* line, Int_t
           pfp = new AliTriggerPFProtection(((TObjString*)tokens->At(0))->String());
         }
         else {
-           if (ntokens > 13) {
-            AliError(Form("Invalid trigger pfs syntax (%s)!",strLine.Data()));
-            return kFALSE;
-           }
-          pfp = new AliTriggerPFProtection(((TObjString*)tokens->At(0))->String(),
+           if (ntokens == 10){ 
+           pfp = new AliTriggerPFProtection(((TObjString*)tokens->At(0))->String(),
                                            ((TObjString*)tokens->At(1))->String(),
                                            ((TObjString*)tokens->At(2))->String(),
                                            ((TObjString*)tokens->At(3))->String());
-          pfp->SetNa1(((TObjString*)tokens->At(4))->String().Atoi());
-          pfp->SetNa2(((TObjString*)tokens->At(5))->String().Atoi());
-          pfp->SetNb1(((TObjString*)tokens->At(6))->String().Atoi());
-          pfp->SetNb2(((TObjString*)tokens->At(7))->String().Atoi());
-          pfp->SetTa(((TObjString*)tokens->At(8))->String().Atoi());
-          pfp->SetTb(((TObjString*)tokens->At(9))->String().Atoi());
+           pfp->SetNa1(((TObjString*)tokens->At(4))->String().Atoi());
+           pfp->SetNa2(((TObjString*)tokens->At(5))->String().Atoi());
+           pfp->SetNb1(((TObjString*)tokens->At(6))->String().Atoi());
+           pfp->SetNb2(((TObjString*)tokens->At(7))->String().Atoi());
+           pfp->SetTa(((TObjString*)tokens->At(8))->String().Atoi());
+           pfp->SetTb(((TObjString*)tokens->At(9))->String().Atoi());
+         }else if(ntokens == 13){
+           UInt_t pfdef[12];
+           for(Int_t i=0;i<12;i++){
+              TString ss(((TObjString*)tokens->At(i+1))->String());
+              ss.Remove(0,2);
+              UInt_t num=0;
+              for(Int_t j=ss.Length()-1;j>=0;j--){
+               UInt_t nn=ss[j];
+               if(nn >= (UInt_t)'0' && nn <= (UInt_t)'9')nn=nn-(UInt_t)'0'; else 
+               if(nn >= (UInt_t)'A' && nn <= (UInt_t)'F')nn=10+nn-(UInt_t)'A'; else
+               if(nn >= (UInt_t)'a' && nn <= (UInt_t)'f')nn=10+nn-(UInt_t)'a'; else{
+                       AliError(Form("Invalid trigger pfs syntax (%s)!",strLine.Data()));
+                       //return kFALSE;
+               }
+               num=num+(1<<(ss.Length()-1-j)*4)*nn;
+               //cout << ss[j] << " 2 " << nn << " "  << num << endl;
+              }
+              pfdef[i]=num;
+           }   
+           pfp = new AliTriggerPFProtection(((TObjString*)tokens->At(0))->String(),pfdef);
+         }else{
+            AliError(Form("Invalid trigger pfs syntax (%s)!",strLine.Data()));
+            //return kFALSE;
+          }
         }
         AddPFProtection(pfp);
        }
@@ -652,29 +686,48 @@ Bool_t AliTriggerConfiguration::ProcessConfigurationLine(const char* line, Int_t
      case 6:
          if (ntokens > 2) {
           AliError(Form("Invalid trigger bcmasks syntax (%s)!",strLine.Data()));
+          delete tokens;
           return kFALSE;
          }
        if (((TObjString*)tokens->At(0))->String().CompareTo("NONE") == 0)
        {        
-         AddMask(new AliTriggerBCMask(((TObjString*)tokens->At(0))->String()));
+         if(!AddMask(new AliTriggerBCMask(((TObjString*)tokens->At(0))->String()))) {
+          delete tokens;
+          return kFALSE;
+        }
        }
        else {
-        AddMask(((TObjString*)tokens->At(0))->String(),
-                     ((TObjString*)tokens->At(1))->String());
+        if(!AddMask(((TObjString*)tokens->At(0))->String(),((TObjString*)tokens->At(1))->String())) {
+          delete tokens;
+          return kFALSE;
+        }
        }
        break;
      case 7:
        {
-         if ((ntokens < 8) || (ntokens >10)) {
+         if ((ntokens !=8) && (ntokens != 10) && (ntokens != 11)) {
           AliError(Form("Invalid trigger class syntax (%s)!",strLine.Data()));
+          delete tokens;
           return kFALSE;
          }
-         AliTriggerClass *trclass = new AliTriggerClass(this,
-                                                       ((TObjString*)tokens->At(0))->String(),((TObjString*)tokens->At(1))->String().Atoi(),
-                                                       ((TObjString*)tokens->At(2))->String(),((TObjString*)tokens->At(3))->String(),
-                                                       ((TObjString*)tokens->At(4))->String(),((TObjString*)tokens->At(5))->String(),
-                                                       ((TObjString*)tokens->At(6))->String().Atoi(),(Bool_t)(((TObjString*)tokens->At(7))->String().Atoi()));
-        AddClass(trclass);
+        AliTriggerClass *trclass=0;
+        if(ntokens == 8)trclass = new AliTriggerClass(this,
+                       ((TObjString*)tokens->At(0))->String(),((TObjString*)tokens->At(1))->String().Atoi(),
+                       ((TObjString*)tokens->At(2))->String(),((TObjString*)tokens->At(3))->String(),
+                       ((TObjString*)tokens->At(4))->String(),((TObjString*)tokens->At(5))->String(),
+                       ((TObjString*)tokens->At(6))->String().Atoi(),(Bool_t)(((TObjString*)tokens->At(7))->String().Atoi()));
+        else{ trclass = new AliTriggerClass(this,
+                       ((TObjString*)tokens->At(0))->String(),((TObjString*)tokens->At(1))->String().Atoi(),
+                       ((TObjString*)tokens->At(2))->String(),((TObjString*)tokens->At(3))->String(),
+                       ((TObjString*)tokens->At(4))->String(),
+                       ((TObjString*)tokens->At(6))->String().Atoi(),(Bool_t)(((TObjString*)tokens->At(7))->String().Atoi()),
+                       (((TObjString*)tokens->At(8))->String().Atoi()),(((TObjString*)tokens->At(9))->String().Atoi()));
+          if(!trclass->SetMasks(this,((TObjString*)tokens->At(5))->String())) {
+            delete tokens;
+            return kFALSE;
+          }
+        }
+         AddClass(trclass);
        }
      default:
        break;