//-*- Mode: C++ -*-
// $Id$
#ifndef ALIHLTTRIGGERBARRELMULTIPLICITY_H
#define ALIHLTTRIGGERBARRELMULTIPLICITY_H
//* This file is property of and copyright by the ALICE HLT Project *
//* ALICE Experiment at CERN, All rights reserved. *
//* See cxx source for full Copyright notice *
/// @file AliHLTTriggerBarrelMultiplicity.h
/// @author Matthias Richter, Jochen Thaeder
/// @date 2009-06-30
/// @brief HLT trigger component for charged particle multiplicity in
/// the central barrel.
#include "AliHLTTrigger.h"
#include "TString.h"
class AliESDtrack;
class AliHLTESDTrackCuts;
/**
* @class AliHLTTriggerBarrelMultiplicity
* HLT trigger component for charged particle multiplicity in the
* central barrel.
*
* Triggers on charged particle number in a certain pt range and geometrical
* acceptance
*
* Multiple instances of this component can serve different trigger
* conditions, i.e. component parameters. The different instances get
* different names, specified by the '-triggername' component argument.
* The configuration is loaded from OCDB entries according to the name, see
* below.
*
*
General properties:
*
* Component ID: \b BarrelMultiplicityTrigger
* Library: \b libAliHLTTrigger.so
* Input Data Types: kAliHLTDataTypeESDObject, kAliHLTDataTypeESDTree
* kAliHLTDataTypeTrack
* Output Data Types: ::kAliHLTAnyDataType
*
* Mandatory arguments:
*
*
* Optional arguments:
*
*
* Configuration:
*
* \li -mintracks n
* required number of tracks for a trigger
* \li -minpt pt
* required minimum pt for a trigger
* \li -maxpt pt
* required maximum pt for a trigger
* \li -min-ldca dca
* minimum longitudinal dca to reference point
* \li -max-ldca dca
* maximum longitudinal dca to reference point
* \li -min-tdca dca
* minimum transverse dca to reference point
* \li -max-tdca dca
* maximum transverse dca to reference point
* \li -triggername name
* The name of this specific trigger.
*
* By default, configuration is loaded from OCDB, can be overridden by
* component arguments.
*
* Default CDB entries:
* HLT/ConfigHLT/BarrelMultiplicityTrigger: TObjString storing the arguments
* HLT/ConfigHLT/: for triggers with specific names
*
* HLT/ConfigHLT/H_._Barrel_pT_Single_._V0001.001
* - TriggerName : H-Barrel_pT_Single-V0001.001
* - ObjectType : AliHLTESDTrackCuts
* HLT/ConfigHLT/H_._Barrel_pT_Single_._V0002.001
* - TriggerName : H-Barrel_pT_Single-V0002.001
* - ObjectType : AliHLTESDTrackCuts
* HLT/ConfigHLT/H_._Barrel_pT_Single_._V0003.001
* - TriggerName : H-Barrel_pT_Single-V0003.001
* - ObjectType : AliHLTESDTrackCuts
*
* Performance:
*
*
* Memory consumption:
*
*
* Output size:
*
*
* \ingroup alihlt_trigger_components
*/
class AliHLTTriggerBarrelMultiplicity : public AliHLTTrigger
{
public:
AliHLTTriggerBarrelMultiplicity();
virtual ~AliHLTTriggerBarrelMultiplicity();
/// inherited from AliHLTTrigger: name of this trigger
virtual const char* GetTriggerName() const;
/// 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: handle dcs update event
int ReadPreprocessorValues(const char* modules);
/// Configure from CDB object, checking if AliHLTESDTrackCuts or TObjString
int ConfigureFromCDBObject(TString cdbPath);
/// inherited from AliHLTComponent, scan one argument and
/// its parameters
int ScanConfigurationArgument(int argc, const char** argv);
private:
/// copy constructor prohibited
AliHLTTriggerBarrelMultiplicity (const AliHLTTriggerBarrelMultiplicity&);
/// assignment operator prohibited
AliHLTTriggerBarrelMultiplicity& operator=(const AliHLTTriggerBarrelMultiplicity&);
/// inherited from AliHLTTrigger: calculate the trigger
virtual int DoTrigger();
/// ESD track cut object
AliHLTESDTrackCuts *fHLTESDTrackCuts; //! transient
/// required number of tracks
int fMinTracks; //!transient
/// Name of the trigger
TString fName; //! transient
/// the default configuration entry for this component
static const char* fgkDefaultOCDBEntry; //!transient
ClassDef(AliHLTTriggerBarrelMultiplicity, 0)
};
#endif //ALIHLTTRIGGERBARRELMULTIPLICITY_H