* Generates default CDB entries in the given CDB storage (local by default)
* \param cdbPath The path to the local storage.
*/
-void CreateDefaultCDBEntries(const char* cdbPath = "local://$ALICE_ROOT/OCDB")
+void CreateDefaultCDBEntries(
+ const char* cdbPath = "local://$ALICE_ROOT/OCDB",
+ float zmiddle = -975.,
+ float bfieldintegral = -3.,
+ int dccut = 50,
+ float roiParamAchamber7 = 0.020,
+ float roiParamBchamber7 = 2.2,
+ float roiParamAchamber8 = 0.023,
+ float roiParamBchamber8 = 2.3,
+ float roiParamAchamber9 = 0.049,
+ float roiParamBchamber9 = 4.8,
+ float roiParamAchamber10 = 0.045,
+ float roiParamBchamber10 = 4.2,
+ float lowptcut = 0.779,
+ float highptcut = 1.755,
+ float lowmasscut = 1.5,
+ float highmasscut = 6.,
+ float chamber7postion = -1276.5,
+ float chamber8postion = -1307.5,
+ float chamber9postion = -1406.6,
+ float chamber10postion = -1437.6,
+ float chamber11postion = -1603.5,
+ float chamber13postion = -1703.5
+ )
{
// Setup the CDB default storage and run number.
AliCDBManager* cdbManager = AliCDBManager::Instance();
return;
}
- Int_t verison = 0;
+ Int_t version = 0;
Int_t firstRun = 0;
Int_t lastRun = AliCDBRunRange::Infinity();
// Create and store the configuration parameters for the trigger reconstructor.
params = new TMap;
params->SetOwner(kTRUE);
- params->Add(new TObjString("zmiddle"), new TObjString("-975"));
- params->Add(new TObjString("bfieldintegral"), new TObjString("3"));
+ char valstr[1024];
+ sprintf(valstr, "%8.8f", zmiddle);
+ params->Add(new TObjString("zmiddle"), new TObjString(valstr));
+ sprintf(valstr, "%8.8f", bfieldintegral);
+ params->Add(new TObjString("bfieldintegral"), new TObjString(valstr));
path = AliHLTMUONConstants::TriggerReconstructorCDBPath();
- id = AliCDBId(path, firstRun, lastRun, verison);
+ id = AliCDBId(path, firstRun, lastRun, version);
metaData = new AliCDBMetaData();
metaData->SetResponsible("dimuon HLT");
metaData->SetComment("Trigger reconstructor configuration parameters for dimuon HLT.");
// Create and store the configuration parameters for the hit reconstructor.
params = new TMap;
params->SetOwner(kTRUE);
- params->Add(new TObjString("dccut"), new TObjString("50"));
+ sprintf(valstr, "%d", dccut);
+ params->Add(new TObjString("dccut"), new TObjString(valstr));
path = AliHLTMUONConstants::HitReconstructorCDBPath();
- id = AliCDBId(path, firstRun, lastRun, verison);
+ id = AliCDBId(path, firstRun, lastRun, version);
metaData = new AliCDBMetaData();
metaData->SetResponsible("dimuon HLT");
metaData->SetComment("Hit reconstructor DC cut parameter for dimuon HLT.");
// Create and store the configuration parameters for the Manso tracker.
params = new TMap;
params->SetOwner(kTRUE);
- params->Add(new TObjString("zmiddle"), new TObjString("-975"));
- params->Add(new TObjString("bfieldintegral"), new TObjString("3"));
- params->Add(new TObjString("roi_paramA_chamber7"), new TObjString("0.016"));
- params->Add(new TObjString("roi_paramB_chamber7"), new TObjString("2.0"));
- params->Add(new TObjString("roi_paramA_chamber8"), new TObjString("0.016"));
- params->Add(new TObjString("roi_paramB_chamber8"), new TObjString("2.0"));
- params->Add(new TObjString("roi_paramA_chamber9"), new TObjString("0.02"));
- params->Add(new TObjString("roi_paramB_chamber9"), new TObjString("3.0"));
- params->Add(new TObjString("roi_paramA_chamber10"), new TObjString("0.02"));
- params->Add(new TObjString("roi_paramB_chamber10"), new TObjString("3.0"));
- params->Add(new TObjString("chamber7postion"), new TObjString("-1274.5"));
- params->Add(new TObjString("chamber8postion"), new TObjString("-1305.5"));
- params->Add(new TObjString("chamber9postion"), new TObjString("-1408.6"));
- params->Add(new TObjString("chamber10postion"), new TObjString("-1439.6"));
- params->Add(new TObjString("chamber11postion"), new TObjString("-1603.5"));
- params->Add(new TObjString("chamber13postion"), new TObjString("-1703.5"));
+ sprintf(valstr, "%8.8f", zmiddle);
+ params->Add(new TObjString("zmiddle"), new TObjString(valstr));
+ sprintf(valstr, "%8.8f", bfieldintegral);
+ params->Add(new TObjString("bfieldintegral"), new TObjString(valstr));
+ sprintf(valstr, "%8.8f", roiParamAchamber7);
+ params->Add(new TObjString("roiParamAchamber7"), new TObjString(valstr));
+ sprintf(valstr, "%8.8f", roiParamBchamber7);
+ params->Add(new TObjString("roiParamBchamber7"), new TObjString(valstr));
+ sprintf(valstr, "%8.8f", roiParamAchamber8);
+ params->Add(new TObjString("roiParamAchamber8"), new TObjString(valstr));
+ sprintf(valstr, "%8.8f", roiParamBchamber8);
+ params->Add(new TObjString("roiParamBchamber8"), new TObjString(valstr));
+ sprintf(valstr, "%8.8f", roiParamAchamber9);
+ params->Add(new TObjString("roiParamAchamber9"), new TObjString(valstr));
+ sprintf(valstr, "%8.8f", roiParamBchamber9);
+ params->Add(new TObjString("roiParamBchamber9"), new TObjString(valstr));
+ sprintf(valstr, "%8.8f", roiParamAchamber10);
+ params->Add(new TObjString("roiParamAchamber10"), new TObjString(valstr));
+ sprintf(valstr, "%8.8f", roiParamBchamber10);
+ params->Add(new TObjString("roiParamBchamber10"), new TObjString(valstr));
+ sprintf(valstr, "%8.8f", chamber7postion);
+ params->Add(new TObjString("chamber7postion"), new TObjString(valstr));
+ sprintf(valstr, "%8.8f", chamber8postion);
+ params->Add(new TObjString("chamber8postion"), new TObjString(valstr));
+ sprintf(valstr, "%8.8f", chamber9postion);
+ params->Add(new TObjString("chamber9postion"), new TObjString(valstr));
+ sprintf(valstr, "%8.8f", chamber10postion);
+ params->Add(new TObjString("chamber10postion"), new TObjString(valstr));
+ sprintf(valstr, "%8.8f", chamber11postion);
+ params->Add(new TObjString("chamber11postion"), new TObjString(valstr));
+ sprintf(valstr, "%8.8f", chamber13postion);
+ params->Add(new TObjString("chamber13postion"), new TObjString(valstr));
path = AliHLTMUONConstants::MansoTrackerFSMCDBPath();
- id = AliCDBId(path, firstRun, lastRun, verison);
+ id = AliCDBId(path, firstRun, lastRun, version);
metaData = new AliCDBMetaData();
metaData->SetResponsible("dimuon HLT");
metaData->SetComment("Manso tracker FSM component configuration parameters for dimuon HLT.");
// Create and store the configuration parameters for the trigger decision cuts.
params = new TMap;
params->SetOwner(kTRUE);
- params->Add(new TObjString("lowptcut"), new TObjString("1"));
- params->Add(new TObjString("highptcut"), new TObjString("2"));
- params->Add(new TObjString("lowmasscut"), new TObjString("2.5"));
- params->Add(new TObjString("highmasscut"), new TObjString("7"));
+ sprintf(valstr, "%8.8f", lowptcut);
+ params->Add(new TObjString("lowptcut"), new TObjString(valstr));
+ sprintf(valstr, "%8.8f", highptcut);
+ params->Add(new TObjString("highptcut"), new TObjString(valstr));
+ sprintf(valstr, "%8.8f", lowmasscut);
+ params->Add(new TObjString("lowmasscut"), new TObjString(valstr));
+ sprintf(valstr, "%8.8f", highmasscut);
+ params->Add(new TObjString("highmasscut"), new TObjString(valstr));
path = AliHLTMUONConstants::DecisionComponentCDBPath();
- id = AliCDBId(path, firstRun, lastRun, verison);
+ id = AliCDBId(path, firstRun, lastRun, version);
metaData = new AliCDBMetaData();
metaData->SetResponsible("dimuon HLT");
metaData->SetComment("Trigger decision cuts for dimuon HLT.");
-// $Id:$
+// $Id$
/**************************************************************************
* This file is property of and copyright by the ALICE HLT Project *
* ALICE Experiment at CERN, All rights reserved. *
#include "AliHLTGlobalTrigger.h"
#include "AliHLTGlobalTriggerConfig.h"
#include "AliHLTTriggerMenu.h"
+#include "AliCDBManager.h"
+#include "AliCDBStorage.h"
+#include "AliCDBEntry.h"
#include "TUUID.h"
#include "TROOT.h"
#include "TRegexp.h"
ClassImp(AliHLTGlobalTriggerComponent)
+const char* AliHLTGlobalTriggerComponent::fgkTriggerMenuCDBPath = "HLT/ConfigHLT/HLTGlobalTrigger";
+
AliHLTGlobalTriggerComponent::AliHLTGlobalTriggerComponent() :
AliHLTTrigger(),
menu = AliHLTGlobalTriggerConfig::Menu();
}
+ // Try load the trigger menu from the CDB if it is not loaded yet with the
+ // -config option
+ if (menu == NULL and AliCDBManager::Instance() != NULL)
+ {
+ AliCDBStorage* store = AliCDBManager::Instance()->GetDefaultStorage();
+ if (store == NULL)
+ {
+ HLTError("Could not get the the default storage for the CDB.");
+ return -EIO;
+ }
+ Int_t version = store->GetLatestVersion(fgkTriggerMenuCDBPath, GetRunNo());
+ Int_t subVersion = store->GetLatestSubVersion(fgkTriggerMenuCDBPath, GetRunNo(), version);
+ AliCDBEntry* entry = AliCDBManager::Instance()->Get(fgkTriggerMenuCDBPath, GetRunNo(), version, subVersion);
+ if (entry == NULL)
+ {
+ HLTError("Could not get the CDB entry for \"%s\".", fgkTriggerMenuCDBPath);
+ return -EIO;
+ }
+ TObject* obj = entry->GetObject();
+ if (obj == NULL)
+ {
+ HLTError("Configuration object for \"%s\" is missing.", fgkTriggerMenuCDBPath);
+ return -ENOENT;
+ }
+ if (obj->IsA() != AliHLTTriggerMenu::Class())
+ {
+ HLTError("Wrong type for configuration object in \"%s\". Found a %s but we expect a AliHLTTriggerMenu.",
+ fgkTriggerMenuCDBPath, obj->ClassName()
+ );
+ return -EPROTO;
+ }
+ menu = dynamic_cast<AliHLTTriggerMenu*>(obj);
+ }
+
if (menu == NULL)
{
HLTError("No trigger menu configuration found or specified.");
}
TRegexp exp("[_a-zA-Z][_a-zA-Z0-9]*");
+ TRegexp hexexp("x[a-fA-F0-9]+");
for (UInt_t i = 0; i < menu->NumberOfItems(); i++)
{
const AliHLTTriggerMenuItem* item = menu->Item(i);
Ssiz_t length = 0;
Ssiz_t pos = exp.Index(str, &length, start);
if (pos == kNPOS) break;
- TString s = str(pos, length);
start = pos+length;
+ // Check if there is a numerical character before the found
+ // regular expression. If so, then the symbol is not a valid one
+ // and should be skipped.
+ if (pos > 0)
+ {
+ bool notValid = false;
+ switch (str[pos-1])
+ {
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ notValid = true;
+ break;
+ default:
+ notValid = false;
+ break;
+ }
+ if (notValid) continue;
+ }
+ TString s = str(pos, length);
+
if (s == "and" or s == "and_eq" or s == "bitand" or s == "bitor" or
s == "compl" or s == "not" or s == "not_eq" or s == "or" or
s == "or_eq" or s == "xor" or s == "xor_eq" or s == "true" or
// Ignore iso646.h and other keywords.
continue;
}
-
+
if (FindSymbol(s.Data(), list) == -1)
{
AliHLTTriggerMenuSymbol newSymbol;
--- /dev/null
+/**************************************************************************
+ * This file is property of and copyright by the ALICE HLT Project *
+ * All rights reserved. *
+ * *
+ * Primary Authors: *
+ * Artur Szostak <artursz@iafrica.com> *
+ * *
+ * 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. *
+ **************************************************************************/
+
+/**
+ * \ingroup macros
+ * \file CreateTriggerMenuCDBEntry.C
+ * \brief Macro for generating the trigger menu CDB entry for the HLT global trigger.
+ *
+ * This macro is used to generate a default CDB entry for the HLT global trigger.
+ * The trigger menu is used by the HLT global trigger as a configuration object.
+ * It is an experts macro so make sure you know what you are doing.
+ *
+ * You can run this macro with defaults using the following shell command:
+ * \code
+ * > aliroot -b -q $ALICE_ROOT/HLT/trigger/CreateTriggerMenuCDBEntry.C
+ * \endcode
+ *
+ * \author Artur Szostak <artursz@iafrica.com>
+ */
+
+#if !defined(__CINT__) || defined(__MAKECINT__)
+#include "AliCDBManager.h"
+#include "AliCDBStorage.h"
+#include "AliCDBEntry.h"
+#include "AliHLTTriggerMenu.h"
+#include "AliHLTGlobalTriggerConfig.h"
+#include "TObjString.h"
+#include "TString.h"
+#include "TSystem.h"
+#include "Riostream.h"
+using std::cerr;
+using std::endl;
+#endif
+
+/**
+ * Generates a default CDB entry for the trigger menu in the given CDB storage
+ * (local by default).
+ * \param cdbPath The path to the default CDB storage.
+ */
+void CreateTriggerMenuCDBEntry(
+ const char* cdbPath = "local://$ALICE_ROOT/OCDB",
+ Int_t version = 0,
+ Int_t firstRun = 0,
+ Int_t lastRun = AliCDBRunRange::Infinity()
+ )
+{
+ gSystem->Load("libAliHLTTrigger.so");
+
+ // Setup the CDB default storage and run number.
+ AliCDBManager* cdbManager = AliCDBManager::Instance();
+ if (cdbManager == NULL)
+ {
+ cerr << "ERROR: Global CDB manager object does not exist." << endl;
+ return;
+ }
+ AliCDBStorage* storage = cdbManager->GetStorage(cdbPath);
+ if (storage == NULL)
+ {
+ cerr << "ERROR: Could not get storage for: " << cdbPath << endl;
+ return;
+ }
+
+ // Create the trigger menu.
+ AliHLTGlobalTriggerConfig config("Default Global Trigger Config");
+ config.AddSymbol("triggerClasses", "AliHLTUInt64_t", "this->GetTriggerClasses()", "0x0", "AliHLTEventSummary");
+ config.AddSymbol("domainAll", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"*******:***\")");
+ config.AddItem("triggerClasses != 0x0", "domainAll", "CTP triggered");
+ TObject* menu = AliHLTGlobalTriggerConfig::Menu()->Clone();
+ menu->Print();
+
+ // Write the trigger menu object to the CDB.
+ AliCDBId id("HLT/ConfigHLT/HLTGlobalTrigger", firstRun, lastRun, version);
+ AliCDBMetaData* metaData = new AliCDBMetaData();
+ metaData->SetResponsible("HLT");
+ metaData->SetComment("Default trigger menu for HLT global trigger.");
+ storage->Put(menu, id, metaData);
+}