3 #ifndef ALIHLTTRIGGERBARRELGEOMMULTIPLICITY_H
4 #define ALIHLTTRIGGERBARRELGEOMMULTIPLICITY_H
5 //* This file is property of and copyright by the ALICE HLT Project *
6 //* ALICE Experiment at CERN, All rights reserved. *
7 //* See cxx source for full Copyright notice *
9 /// @file AliHLTTriggerBarrelGeomMultiplicity.h
10 /// @author Oystein Djuvsland
12 /// @brief HLT trigger component for charged particle multiplicity in
13 /// a geometrical selection of the central barrel.
15 #include "AliHLTTrigger.h"
17 class AliHLTTriggerDecisionParameters;
20 * @class AliHLTTriggerBarrelGeomMultiplicity
21 * HLT trigger component for charged particle multiplicity in the
24 * Triggers on charged particle number in a certain geometrical acceptance
26 * <h2>General properties:</h2>
28 * Component ID: \b BarrelGeomMultiplicityTrigger <br>
29 * Library: \b libAliHLTTrigger.so <br>
30 * Input Data Types: kAliHLTDataTypeESDObject, kAliHLTDataTypeESDTree
31 * kAliHLTDataTypeTrack <br>
32 * Output Data Types: ::kAliHLTAnyDataType <br>
34 * <h2>Mandatory arguments:</h2>
35 * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
36 * \li -triggername <i> n </i> <br>
37 * specifies which configuration object to use for the trigger
39 * <h2>Optional arguments:</h2>
40 * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
41 * \li -geomfile <i> n </i> <br>
42 * specifies root file containing configuration objects
44 * <h2>Configuration:</h2>
45 * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
46 * \li -mintracks <i> n </i> <br>
47 * required number of tracks for a trigger
48 * \li -solenoidBz <i> field </i> <br>
49 * magnetic field needed if the input is not an ESD object
51 * By default, configuration is loaded from OCDB, can be overridden by
52 * component arguments.
54 * <h2>Default CDB entries:</h2>
55 * HLT/ConfigHLT/BarrelGeomMultiplicityTrigger/<triggername>: TObjArray storing the
56 * geometries and readout parameters.
57 * HLT/ConfigHLT/Solenoidbz: TObjString -solenoidBz field
59 * <h2>Performance:</h2>
62 * <h2>Memory consumption:</h2>
65 * <h2>Output size:</h2>
68 * \ingroup alihlt_trigger_components
70 class AliHLTTriggerBarrelGeomMultiplicity : public AliHLTTrigger
74 AliHLTTriggerBarrelGeomMultiplicity();
75 ~AliHLTTriggerBarrelGeomMultiplicity();
77 /// inherited from AliHLTComponent: create an instance
78 virtual AliHLTComponent* Spawn();
80 /// inherited from AliHLTTrigger: name of this trigger
81 virtual const char* GetTriggerName() const;
84 /// inherited from AliHLTComponent: handle the initialization
85 int DoInit(int argc, const char** argv);
87 /// inherited from AliHLTComponent: handle cleanup
90 /// inherited from AliHLTComponent: handle dcs update event
91 int ReadPreprocessorValues(const char* modules);
93 /// inherited from AliHLTComponent, scan one argument and
95 virtual int ScanConfigurationArgument(int argc, const char** argv);
97 // Get the detector geometries from CDB entry
98 virtual int GetDetectorGeomsFromCDBObject(const char *cdbEntry, const char *chainId);
100 // Get the detector geometries from a root file
101 virtual int GetDetectorGeomsFromFile(const char *filename);
103 /// inherited from AliHLTComponent: handle re-configuration event
104 int Reconfigure(const char* cdbEntry = 0, const char* chainId = 0);
108 /// inherited from AliHLTTrigger: calculate the trigger
109 virtual int DoTrigger();
111 /// check whether a track meets the criteria
113 bool CheckCondition(T* track, float b);
115 // check whether a track is in the desired detectors
117 bool IsInDetectors(T* track, float b);
119 // magnetic field (dca estimation for)
122 // minimum number of tracks satisfying the cut
125 // array of (sub-)detectors to trigger on
126 TObjArray *fDetectorArray; // !transient
128 // Trigger decision parameters
129 AliHLTTriggerDecisionParameters *fTriggerDecisionPars; //!transient
132 char *fTriggerName; //!transient
134 // the default configuration entry for this component
135 char* fOCDBEntry; //!transient
137 /** Keep the copy constructor private since it should not be used */
138 AliHLTTriggerBarrelGeomMultiplicity(const AliHLTTriggerBarrelGeomMultiplicity & );
140 /** Keep the assignement operator private since it should not be used */
141 AliHLTTriggerBarrelGeomMultiplicity & operator = (const AliHLTTriggerBarrelGeomMultiplicity &);
143 ClassDef(AliHLTTriggerBarrelGeomMultiplicity, 0);