]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliCentralTrigger.cxx
Added protections to avoid crashes with Print() when ESDEvent is fetched from the...
[u/mrichter/AliRoot.git] / STEER / AliCentralTrigger.cxx
index 4767bbe3f3e4c79f304f3bd09383aa72e165b782..d20431faa7be79b7276b7e2b2e4bc6f8df3f00da 100644 (file)
@@ -64,6 +64,9 @@ AliCentralTrigger::AliCentralTrigger() :
    TObject(),
    fClassMask(0),
    fClusterMask(0),
+   fL0TriggerInputs(0),
+   fL1TriggerInputs(0),
+   fL2TriggerInputs(0),
    fConfiguration(NULL)
 {
    // Default constructor
@@ -75,6 +78,9 @@ AliCentralTrigger::AliCentralTrigger( TString & config ) :
    TObject(),
    fClassMask(0),
    fClusterMask(0),
+   fL0TriggerInputs(0),
+   fL1TriggerInputs(0),
+   fL2TriggerInputs(0),
    fConfiguration(NULL)
 {
    // Default constructor
@@ -94,6 +100,9 @@ void AliCentralTrigger::DeleteConfiguration()
   // Delete the active configuration
   fClassMask = 0;
   fClusterMask = 0;
+  fL0TriggerInputs = 0;
+  fL1TriggerInputs = 0;
+  fL2TriggerInputs = 0;
   if (fConfiguration) {
     if (IsOwner()) delete fConfiguration;
     fConfiguration = 0x0;
@@ -106,6 +115,9 @@ void AliCentralTrigger::Reset()
    // Reset Class Mask and classes
    fClassMask = 0;
    fClusterMask = 0;
+   fL0TriggerInputs = 0;
+   fL1TriggerInputs = 0;
+   fL2TriggerInputs = 0;
 
    if (fConfiguration) {
      const TObjArray& classesArray = fConfiguration->GetClasses();
@@ -127,7 +139,7 @@ void AliCentralTrigger::MakeBranch( TString name, TTree * tree )
       TBranch* branch = tree->GetBranch( name );
       if( branch == 0x0 ) {
          AliDebug( 1, "Creating new branch" );
-         branch = tree->Branch( name, &(this->fClassMask), "fClassMask/l:fClusterMask/i" );
+         branch = tree->Branch( name, &(this->fClassMask), "fClassMask/l:fClusterMask/i:fL0TriggerInputs/i:fL1TriggerInputs/i:fL2TriggerInputs/s" );
          branch->SetAutoDelete( kFALSE );
       }
       else {
@@ -215,7 +227,6 @@ Bool_t AliCentralTrigger::RunTrigger( AliRunLoader* runLoader, const char *detec
 
    // Process each event
    for( Int_t iEvent = 0; iEvent < runLoader->GetNumberOfEvents(); iEvent++ ) {
-      AliInfo( Form("Processing event %d", iEvent) );
       runLoader->GetEvent( iEvent );
       // Get detectors involve
       TString detStr = GetDetectors();
@@ -269,6 +280,8 @@ Bool_t AliCentralTrigger::RunTrigger( AliRunLoader* runLoader, const char *detec
 
       // Check trigger conditions and create the trigger class mask
       TriggerClasses();
+      // Calculate trigger Input pattern
+      TriggerInputs();
 
       // Clear trigger detectors
       trgdetArray.SetOwner();
@@ -282,7 +295,7 @@ Bool_t AliCentralTrigger::RunTrigger( AliRunLoader* runLoader, const char *detec
 
       // Save trigger mask
       tree->Fill();
-      AliInfo( Form("Trigger Class Mask:0x%X", fClassMask ) );
+      AliDebug(1, Form("Event:%d  Class Mask:0x%X", iEvent,fClassMask ) );
    } // end event loop
 
    Reset();
@@ -294,7 +307,31 @@ Bool_t AliCentralTrigger::RunTrigger( AliRunLoader* runLoader, const char *detec
 
    return kTRUE;
 }
-
+//----------------------------------------------------------------------------
+void AliCentralTrigger::TriggerInputs()
+{
+ // Find which inputs are in configuration
+ // and calculate input pattern
+ fL0TriggerInputs=0;
+ fL1TriggerInputs=0;
+ fL2TriggerInputs=0;
+ if(fConfiguration){
+    const TObjArray& inputsArray = fConfiguration->GetInputs();
+    Int_t ninputs = inputsArray.GetEntriesFast();
+    for( Int_t j=0; j<ninputs; j++ ) {
+      AliTriggerInput* input = (AliTriggerInput*)inputsArray.At( j );
+      if(input->GetValue()){
+       UChar_t level=input->GetLevel();
+            if(level == 0) fL0TriggerInputs |= (input->GetMask());
+       else if(level == 1) fL1TriggerInputs |= (input->GetMask());
+       else if(level == 2) fL2TriggerInputs |= (input->GetMask());
+       else{
+         AliError(Form("Unknown input level:%c:",level));
+       }
+      }
+    }
+ }
+}
 //_____________________________________________________________________________
 ULong64_t AliCentralTrigger::TriggerClasses()
 {