From: richterm Date: Fri, 10 Jul 2009 23:43:43 +0000 (+0000) Subject: Adding kAliHLTDataTypeTrack as valid input. Conversion of the input data to X-Git-Url: http://git.uio.no/git/?p=u%2Fmrichter%2FAliRoot.git;a=commitdiff_plain;h=f157412612f8a04024d7fbe9fc842c6b13626f42 Adding kAliHLTDataTypeTrack as valid input. Conversion of the input data to AliKalmanFilter objects is done by using AliHLTGlobalBarrelTrack. Adding the correct library dependencies because the trigger lib now needs the Util lib. Added argument scan and default OCDB entry for AliHLTTriggerBarrelMultiplicity component. Correcting compilation warning in AliHLTTriggerAgent. --- diff --git a/HLT/libAliHLTTrigger.pkg b/HLT/libAliHLTTrigger.pkg index 2d8c973a285..447c25e9367 100644 --- a/HLT/libAliHLTTrigger.pkg +++ b/HLT/libAliHLTTrigger.pkg @@ -44,7 +44,7 @@ MODULE_HDRS:= $(CLASS_HDRS) # enable automatic generation. MODULE_DHDR:= AliHLTTriggerLinkDef.h -EINCLUDE := HLT/BASE HLT/trigger HLT/TPCLib +EINCLUDE := HLT/BASE HLT/BASE/util HLT/trigger HLT/TPCLib LIBRARY_DEP := -lHLTbase diff --git a/HLT/trigger/AliHLTTriggerAgent.h b/HLT/trigger/AliHLTTriggerAgent.h index 87412023dc4..3838cd3c79d 100644 --- a/HLT/trigger/AliHLTTriggerAgent.h +++ b/HLT/trigger/AliHLTTriggerAgent.h @@ -105,6 +105,11 @@ class AliHLTTriggerAgent : public AliHLTModuleAgent { int ReleaseProcessedData(const AliHLTUInt8_t* pData, int size); private: + /** copy constructor forbidden */ + AliHLTTriggerDecisionHandler(const AliHLTTriggerDecisionHandler&); + /** assignment operator forbidden */ + AliHLTTriggerDecisionHandler& operator=(const AliHLTTriggerDecisionHandler&); + AliESDEvent* fESD; //! TArrayC* fpData; //! int fSize; //! diff --git a/HLT/trigger/AliHLTTriggerBarrelMultiplicity.cxx b/HLT/trigger/AliHLTTriggerBarrelMultiplicity.cxx index cfcf8063c25..02e87df6a20 100644 --- a/HLT/trigger/AliHLTTriggerBarrelMultiplicity.cxx +++ b/HLT/trigger/AliHLTTriggerBarrelMultiplicity.cxx @@ -31,6 +31,7 @@ #include "AliESDEvent.h" #include "AliHLTTriggerDecision.h" #include "AliHLTDomainEntry.h" +#include "AliHLTGlobalBarrelTrack.h" /** ROOT macro for the implementation of ROOT specific class methods */ ClassImp(AliHLTTriggerBarrelMultiplicity) @@ -48,6 +49,8 @@ AliHLTTriggerBarrelMultiplicity::AliHLTTriggerBarrelMultiplicity() // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt } +const char* AliHLTTriggerBarrelMultiplicity::fgkOCDBEntry="HLT/ConfigHLT/BarrelMultiplicityTrigger"; + AliHLTTriggerBarrelMultiplicity::~AliHLTTriggerBarrelMultiplicity() { // see header file for class documentation @@ -68,22 +71,41 @@ AliHLTComponent* AliHLTTriggerBarrelMultiplicity::Spawn() int AliHLTTriggerBarrelMultiplicity::DoTrigger() { // see header file for class documentation + int iResult=0; + int numberOfTracks=-1; + + // try the ESD as input const TObject* obj = GetFirstInputObject(kAliHLTAllDataTypes, "AliESDEvent"); AliESDEvent* esd = dynamic_cast(const_cast(obj)); TString description; TString ptcut; if (esd != NULL) { + numberOfTracks=0; esd->GetStdContent(); - unsigned int numberOfTracks=0; for (Int_t i = 0; i < esd->GetNumberOfTracks(); i++) { - AliESDtrack* track = esd->GetTrack(i); - if (track && track->Pt() >= fPtMin && - (fPtMax<=fPtMin || track->Pt() < fPtMax)) { - numberOfTracks++; + if (CheckCondition(esd->GetTrack(i))) numberOfTracks++; + } + } + + // try the AliHLTExternal track data as input + if (iResult>=0 && numberOfTracks<0) { + for (const AliHLTComponentBlockData* pBlock=GetFirstInputBlock(kAliHLTDataTypeTrack); + pBlock!=NULL; pBlock=GetNextInputBlock()) { + vector tracks; + if ((iResult=AliHLTGlobalBarrelTrack::ConvertTrackDataArray(reinterpret_cast(pBlock->fPtr), pBlock->fSize, tracks))>0) { + for (vector::iterator element=tracks.begin(); + element!=tracks.end(); element++) { + if (CheckCondition(&(*element))) numberOfTracks++; + } + } else if (iResult<0) { + HLTError("can not extract tracks from data block of type %s (specification %08x) of size %d: error %d", + DataType2Text(pBlock->fDataType).c_str(), pBlock->fSpecification, pBlock->fSize, iResult); } } + } + if (iResult>=0 && numberOfTracks>=0) { if (fPtMax>fPtMin) { ptcut.Form(" %.02f GeV/c <= pt < %.02f GeV/c", fPtMin, fPtMax); } else { @@ -109,10 +131,88 @@ int AliHLTTriggerBarrelMultiplicity::DoTrigger() TriggerEvent(true); return 0; } + description.Form("No tracks matching the tresholds found in the central barrel (min tracks %d, %s)", + fMinTracks, ptcut.Data()); + } else { + description.Form("No input blocks found"); } - description.Form("No tracks matching the tresholds found in the central barrel (min tracks %d, %s)", - fMinTracks, ptcut.Data()); SetDescription(description.Data()); TriggerEvent(false); + return iResult; +} + +template +bool AliHLTTriggerBarrelMultiplicity::CheckCondition(T* track) +{ + // see header file for class documentation + if (track && track->Pt() >= fPtMin && + (fPtMax<=fPtMin || track->Pt() < fPtMax)) { + return true; + } + return false; +} + +int AliHLTTriggerBarrelMultiplicity::DoInit(int argc, const char** argv) +{ + // see header file for class documentation + + // first configure the default + int iResult=ConfigureFromCDBTObjString(fgkOCDBEntry); + + // configure from the command line parameters if specified + if (iResult>=0 && argc>0) + iResult=ConfigureFromArgumentString(argc, argv); + return iResult; +} + +int AliHLTTriggerBarrelMultiplicity::DoDeinit() +{ + // see header file for class documentation return 0; } + +int AliHLTTriggerBarrelMultiplicity::Reconfigure(const char* cdbEntry, const char* /*chainId*/) +{ + // see header file for class documentation + + // configure from the specified antry or the default one + const char* entry=cdbEntry; + if (!entry || entry[0]==0) entry=fgkOCDBEntry; + + return ConfigureFromCDBTObjString(entry); +} + +int AliHLTTriggerBarrelMultiplicity::ScanConfigurationArgument(int argc, const char** argv) +{ + // see header file for class documentation + if (argc<=0) return 0; + int i=0; + TString argument=argv[i]; + + // -maxpt + if (argument.CompareTo("-maxpt")==0) { + if (++i>=argc) return -EPROTO; + argument=argv[i]; + fPtMax=argument.Atof(); + return 2; + } + + // -minpt + if (argument.CompareTo("-minpt")==0) { + if (++i>=argc) return -EPROTO; + argument=argv[i]; + fPtMin=argument.Atof(); + return 2; + } + + // -mintracks + if (argument.CompareTo("-mintracks")==0) { + if (++i>=argc) return -EPROTO; + argument=argv[i]; + fMinTracks=argument.Atoi(); + return 2; + } + + // unknown argument + return -EINVAL; +} diff --git a/HLT/trigger/AliHLTTriggerBarrelMultiplicity.h b/HLT/trigger/AliHLTTriggerBarrelMultiplicity.h index f9aca35544d..4c2a79ba6b6 100644 --- a/HLT/trigger/AliHLTTriggerBarrelMultiplicity.h +++ b/HLT/trigger/AliHLTTriggerBarrelMultiplicity.h @@ -14,6 +14,8 @@ #include "AliHLTTrigger.h" +class AliESDtrack; + /** * @class AliHLTTriggerBarrelMultiplicity * HLT trigger component for charged particle multiplicity in the @@ -32,16 +34,37 @@ class AliHLTTriggerBarrelMultiplicity : public AliHLTTrigger /// inherited from AliHLTComponent: create an instance virtual AliHLTComponent* Spawn(); + protected: + /// inherited from AliHLTComponent: handle the initialization + int DoInit(int argc, const char** argv); + + /// inherited from AliHLTComponent: handle cleanup + int DoDeinit(); + + /// inherited from AliHLTComponent: handle re-configuration event + int Reconfigure(const char* cdbEntry, const char* chainId); + + /// inherited from AliHLTComponent, scan one argument and + /// its parameters + int ScanConfigurationArgument(int argc, const char** argv); + private: /// inherited from AliHLTTrigger: calculate the trigger virtual int DoTrigger(); + /// check whether a track meets the criteria + template + bool CheckCondition(T* track); + /// pt cut, minimum float fPtMin; //! transient /// pt cut, maximum float fPtMax; //! transient /// required number of tracks - unsigned int fMinTracks; //!tracks + int fMinTracks; //!transient + + /// the default configuration entry for this component + static const char* fgkOCDBEntry; //!transient ClassDef(AliHLTTriggerBarrelMultiplicity, 0) }; diff --git a/HLT/trigger/Makefile.am b/HLT/trigger/Makefile.am index 8f2bf38a1a5..4db49dbff65 100644 --- a/HLT/trigger/Makefile.am +++ b/HLT/trigger/Makefile.am @@ -74,7 +74,7 @@ AM_CPPFLAGS = -DMODULE=$(MODULE) \ # using external modules. The AliRoot, ROOT and HLT base libraries # are added by default. # Also the version of the library -#libAliHLTTPC_la_LIBADD = $(top_builddir)/BASE/TPCLib/libAliHLTTPC.la +libAliHLTTrigger_la_LIBADD = $(top_builddir)/BASE/util/libAliHLTUtil.la libAliHLTTrigger_la_LDFLAGS = -L@ROOTLIBDIR@ \ @ROOTLIBS@ \ @HLTBASE_LDFLAGS@ \ diff --git a/OCDB/HLT/ConfigHLT/BarrelMultiplicityTrigger/Run0_999999999_v0_s0.root b/OCDB/HLT/ConfigHLT/BarrelMultiplicityTrigger/Run0_999999999_v0_s0.root new file mode 100644 index 00000000000..83d9510cda0 Binary files /dev/null and b/OCDB/HLT/ConfigHLT/BarrelMultiplicityTrigger/Run0_999999999_v0_s0.root differ