New class AliTriggerUtils to solve the cirular dependency between libESD and libSTEER...
authorhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 24 May 2011 13:16:21 +0000 (13:16 +0000)
committerhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 24 May 2011 13:16:21 +0000 (13:16 +0000)
STEER/AliESDHeader.cxx
STEER/AliTriggerConfiguration.cxx
STEER/AliTriggerConfiguration.h
STEER/AliTriggerUtils.cxx [new file with mode: 0644]
STEER/AliTriggerUtils.h [new file with mode: 0644]
STEER/CMakelibSTEER.pkg
STEER/STEERLinkDef.h

index a23ef5a..ef110b7 100644 (file)
@@ -24,6 +24,7 @@
 #include "AliTriggerScalersESD.h"
 #include "AliTriggerScalersRecordESD.h"
 #include "AliTriggerIR.h"
+#include "AliTriggerConfiguration.h"
 #include "AliLog.h" 
 
 ClassImp(AliESDHeader)
index 605bcf6..940bc14 100755 (executable)
 #include <TROOT.h>
 #include <TString.h>
 #include <TSystem.h>
+#include <TMath.h>
 
-#include "AliCDBManager.h"
 #include "AliLog.h"
-#include "AliMC.h"
-#include "AliModule.h"
-#include "AliPDG.h"
-#include "AliRun.h"
-#include "AliRunLoader.h"
 #include "AliTriggerBCMask.h"
 #include "AliTriggerClass.h"
 #include "AliTriggerCluster.h"
@@ -844,116 +839,6 @@ void AliTriggerConfiguration::WriteConfiguration( const char* filename )
 }
 
 //_____________________________________________________________________________
-Bool_t AliTriggerConfiguration::CheckConfiguration( TString& configfile )
-{
-   // To be used on the pre-creation of Configurations to check if the
-   // conditions have valid inputs names.
-   //
-   // Initiate detectors modules from a Config file
-   // Ask to each active module present in the fDetectorCluster
-   // to create a Trigger detector and retrive the inputs from it
-   // to create a list of inputs.
-   // Each condition in the configuration is then checked agains 
-   // the list of inputs
-
-
-   if (!gAlice) {
-      AliError( "no gAlice object. Restart aliroot and try again." );
-      return kFALSE;
-   }
-   if (gAlice->Modules()->GetEntries() > 0) {
-      AliError( "gAlice was already run. Restart aliroot and try again." );
-      return kFALSE;
-   }
-
-   AliInfo( Form( "initializing gAlice with config file %s",
-            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 = AliRunLoader::Instance();
-   if( !runLoader ) {
-      AliError( Form( "gAlice has no run loader object. "
-                      "Check your config file: %s", configfile.Data() ) );
-      return kFALSE;
-   }
-
-   // get the possible inputs to check the condition
-   TObjArray inputs;
-   TObjArray* detArray = runLoader->GetAliRun()->Detectors();
-
-   TString detStr = GetTriggeringModules();
-
-   for( Int_t iDet = 0; iDet < detArray->GetEntriesFast(); iDet++ ) {
-      AliModule* det = (AliModule*) detArray->At(iDet);
-      if( !det || !det->IsActive() ) continue;
-      if( IsSelected( det->GetName(), detStr ) ) {
-         AliInfo( Form( "Creating inputs for %s", det->GetName() ) );
-         AliTriggerDetector* dtrg = det->CreateTriggerDetector();
-         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() ) );
-            inputs.AddLast( detInp->At(i) );
-         }
-      }
-   }
-
-   // check if the condition is compatible with the triggers inputs
-   Int_t ndesc = fClasses.GetEntriesFast();
-   Bool_t check = kTRUE;
-   ULong64_t mask = 0L;
-   for( Int_t j=0; j<ndesc; j++ ) {
-     AliTriggerClass *trclass = (AliTriggerClass*)fClasses.At( j );
-     if( !(trclass->CheckClass( this )) ) check = kFALSE;
-     else {
-       if (trclass->IsActive(this->GetInputs(),this->GetFunctions())) {
-        AliInfo( Form( "Trigger Class (%s) OK, class mask (0x%Lx)",
-                       trclass->GetName(), trclass->GetMask( ) ) );
-       }
-       else {
-        AliWarning( Form( "Trigger Class (%s) is NOT active, class mask (0x%Lx)",
-                          trclass->GetName(), trclass->GetMask( ) ) );
-       }
-     }
-     // check if condition mask is duplicated
-     if( mask & trclass->GetMask() ) {
-       AliError( Form("Class (%s). The class mask (0x%Lx) is ambiguous. It was already defined",
-                     trclass->GetName(), trclass->GetMask()  ) );
-       check = kFALSE;
-     }
-     mask |= trclass->GetMask();
-   }
-
-   return check;
-}
-//_____________________________________________________________________________
 Int_t AliTriggerConfiguration::GetClassIndexFromName(const char* className) const
 {
    //const TObjArray& classes = cfg->GetClasses();
index 6fa82e7..a99069f 100755 (executable)
@@ -94,7 +94,6 @@ public:
 
        //AliTriggerPFProtection*   GetPFProtection(UInt_t index)
        //             { return (index < kNMaxPFProtections) ? (AliTriggerPFProtection*)fPFProtections[index] : NULL; }
-                Bool_t    CheckConfiguration( TString & configfile );
                   void    Print( const Option_t* opt ="" ) const;
 
   //  Configurations Database (root file)
@@ -103,6 +102,7 @@ public:
 
       static AliTriggerConfiguration* LoadConfiguration(TString & des);
       static AliTriggerConfiguration* LoadConfigurationFromString(const char* configuration);
+      Bool_t    IsSelected( TString detName, TString & detectors ) const;
 
       enum {kNMaxInputs = 60}; // CTP handles up to 60 trigger detector inputs
       enum {kNMaxInteractions = 2}; // CTP handles up to two different interactions
@@ -126,7 +126,6 @@ private:
 
       Int_t                fVersion;                          // Configuration format version
 
-                 Bool_t    IsSelected( TString detName, TString & detectors ) const;
    static const TString    fgkConfigurationFileName;        //! name of default configurations file
 
    AliTriggerConfiguration&   operator=(const AliTriggerConfiguration& des);
diff --git a/STEER/AliTriggerUtils.cxx b/STEER/AliTriggerUtils.cxx
new file mode 100644 (file)
index 0000000..5289818
--- /dev/null
@@ -0,0 +1,142 @@
+/**************************************************************************
+ * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ *                                                                        *
+ * Author: The ALICE Off-line Project.                                    *
+ * Contributors are mentioned in the code where appropriate.              *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+
+#include "AliTriggerUtils.h"
+#include "AliTriggerConfiguration.h"
+#include "AliTriggerClass.h"
+#include "AliTriggerInput.h"
+#include "AliRun.h"
+#include "AliRunLoader.h"
+#include "AliCDBManager.h"
+#include "AliPDG.h"
+#include "AliMC.h"
+#include "AliModule.h"
+#include "AliLog.h"
+#include <TROOT.h>
+#include <TInterpreter.h>
+#include <TString.h>
+
+ClassImp(AliTriggerUtils)
+
+//_____________________________________________________________________________
+Bool_t AliTriggerUtils::CheckConfiguration( TString& configfile, AliTriggerConfiguration * cfg )
+{
+   // To be used on the pre-creation of Configurations to check if the
+   // conditions have valid inputs names.
+   //
+   // Initiate detectors modules from a Config file
+   // Ask to each active module present in the fDetectorCluster
+   // to create a Trigger detector and retrive the inputs from it
+   // to create a list of inputs.
+   // Each condition in the configuration is then checked agains 
+   // the list of inputs
+
+
+   if (!gAlice) {
+      AliError( "no gAlice object. Restart aliroot and try again." );
+      return kFALSE;
+   }
+   if (gAlice->Modules()->GetEntries() > 0) {
+      AliError( "gAlice was already run. Restart aliroot and try again." );
+      return kFALSE;
+   }
+
+   AliInfo( Form( "initializing gAlice with config file %s",
+            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 = AliRunLoader::Instance();
+   if( !runLoader ) {
+      AliError( Form( "gAlice has no run loader object. "
+                      "Check your config file: %s", configfile.Data() ) );
+      return kFALSE;
+   }
+
+   // get the possible inputs to check the condition
+   TObjArray inputs;
+   TObjArray* detArray = runLoader->GetAliRun()->Detectors();
+
+   TString detStr = cfg->GetTriggeringModules();
+
+   for( Int_t iDet = 0; iDet < detArray->GetEntriesFast(); iDet++ ) {
+      AliModule* det = (AliModule*) detArray->At(iDet);
+      if( !det || !det->IsActive() ) continue;
+      if( cfg->IsSelected( det->GetName(), detStr ) ) {
+         AliInfo( Form( "Creating inputs for %s", det->GetName() ) );
+         AliTriggerDetector* dtrg = det->CreateTriggerDetector();
+         dtrg->AssignInputs(cfg->GetInputs());
+         TObjArray* detInp = dtrg->GetInputs();
+         for( Int_t i=0; i<detInp->GetEntriesFast(); i++ ) {
+            AliInfo( Form( "Adding input %s", ((AliTriggerInput*)detInp->At(i))->GetName() ) );
+            inputs.AddLast( detInp->At(i) );
+         }
+      }
+   }
+
+   // check if the condition is compatible with the triggers inputs
+   Int_t ndesc = cfg->GetClasses().GetEntriesFast();
+   Bool_t check = kTRUE;
+   ULong64_t mask = 0L;
+   for( Int_t j=0; j<ndesc; j++ ) {
+     AliTriggerClass *trclass = (AliTriggerClass*)cfg->GetClasses().At( j );
+     if( !(trclass->CheckClass( cfg )) ) check = kFALSE;
+     else {
+       if (trclass->IsActive(cfg->GetInputs(),cfg->GetFunctions())) {
+        AliInfo( Form( "Trigger Class (%s) OK, class mask (0x%Lx)",
+                       trclass->GetName(), trclass->GetMask( ) ) );
+       }
+       else {
+        AliWarning( Form( "Trigger Class (%s) is NOT active, class mask (0x%Lx)",
+                          trclass->GetName(), trclass->GetMask( ) ) );
+       }
+     }
+     // check if condition mask is duplicated
+     if( mask & trclass->GetMask() ) {
+       AliError( Form("Class (%s). The class mask (0x%Lx) is ambiguous. It was already defined",
+                     trclass->GetName(), trclass->GetMask()  ) );
+       check = kFALSE;
+     }
+     mask |= trclass->GetMask();
+   }
+
+   return check;
+}
diff --git a/STEER/AliTriggerUtils.h b/STEER/AliTriggerUtils.h
new file mode 100644 (file)
index 0000000..173010b
--- /dev/null
@@ -0,0 +1,23 @@
+#ifndef ALITRIGGERUTILS_H
+#define ALITRIGGERUTILS_H
+
+class AliTriggerConfiguration;
+class TString;
+
+#include <TObject.h>
+
+class AliTriggerUtils: public TObject {
+
+ public:
+
+  AliTriggerUtils() : TObject() {}
+  virtual ~AliTriggerUtils() {}
+  
+  Bool_t CheckConfiguration( TString & configfile, AliTriggerConfiguration * cfg );
+
+
+  ClassDef( AliTriggerUtils, 0 )  // Trigger utilities
+
+    };
+
+#endif
index 06b19ef..88aa355 100644 (file)
@@ -127,6 +127,7 @@ set ( SRCS
     AliCTPInputTimeParams.cxx 
     AliLHCClockPhase.cxx 
     AliLTUConfig.cxx
+    AliTriggerUtils.cxx
     )
 
 string(REPLACE ".cxx" ".h" HDRS  "${SRCS}")
index 9ab2d61..de2d50e 100644 (file)
@@ -68,6 +68,7 @@
 #pragma link C++ class AliCentralTrigger+;
 #pragma link C++ class AliTriggerCluster+;
 #pragma link C++ class AliTriggerPFProtection+;
+#pragma link C++ class AliTriggerUtils+;
 
 #pragma link C++ class AliGeomManager+;
 #pragma link C++ class AliAlignObj+;