///////////////////////////////////////////////////////////////////////////////
#include <Riostream.h>
-#include <TCint.h>
#include <TFile.h>
#include <TKey.h>
#include <TObjArray.h>
#include "AliTriggerInteraction.h"
#include "AliTriggerPFProtection.h"
+using std::endl;
+using std::cout;
+using std::ifstream;
ClassImp(AliTriggerConfiguration)
const TString AliTriggerConfiguration::fgkConfigurationFileName("/data/triggerConfigurations.root");
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;
}
{
// 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;
}
activeDet.Append( " " );
activeDet.Append( ((TObjString*)det->At(k))->String() );
}
+ delete det;
}
return activeDet;
}
switch (level) {
case 1:
// Read inputs
- if (ntokens != 5) {
+ if ((ntokens != 5) && (ntokens !=6)) {
AliError(Form("Invalid trigger input syntax (%s)!",strLine.Data()));
+ delete tokens;
return kFALSE;
}
AddInput(((TObjString*)tokens->At(0))->String(),
// Read interaction
if (ntokens != 2) {
AliError(Form("Invalid trigger interaction syntax (%s)!",strLine.Data()));
+ delete tokens;
return kFALSE;
}
AddInteraction(((TObjString*)tokens->At(0))->String(),
}
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()));
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);
}
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;