]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/trigger/AliHLTTriggerBarrelMultiplicity.h
make generation of monitoring trigger an optional feature
[u/mrichter/AliRoot.git] / HLT / trigger / AliHLTTriggerBarrelMultiplicity.h
1 //-*- Mode: C++ -*-
2 // $Id$
3 #ifndef ALIHLTTRIGGERBARRELMULTIPLICITY_H
4 #define ALIHLTTRIGGERBARRELMULTIPLICITY_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                               *
8
9 /// @file   AliHLTTriggerBarrelMultiplicity.h
10 /// @author Matthias Richter
11 /// @date   2009-06-30
12 /// @brief  HLT trigger component for charged particle multiplicity in
13 ///         the central barrel.
14
15 #include "AliHLTTrigger.h"
16 #include "TString.h"
17
18 class AliESDtrack;
19
20 /**
21  * @class  AliHLTTriggerBarrelMultiplicity
22  * HLT trigger component for charged particle multiplicity in the
23  * central barrel.
24  * 
25  * Triggers on charged particle number in a certain pt range and geometrical
26  * acceptance
27  * 
28  * Multiple instances of this component can serve different trigger
29  * conditions, i.e. component parameters. The different instances get
30  * different names, specified by the '-triggername' component argument.
31  * The configuration is loaded from OCDB entries according to the name, see
32  * below.
33  *
34  * <h2>General properties:</h2>
35  *
36  * Component ID: \b BarrelMultiplicityTrigger                             <br>
37  * Library: \b libAliHLTTrigger.so                                        <br>
38  * Input Data Types:  kAliHLTDataTypeESDObject, kAliHLTDataTypeESDTree
39  *                    kAliHLTDataTypeTrack                                <br>
40  * Output Data Types: ::kAliHLTAnyDataType                                <br>
41  *
42  * <h2>Mandatory arguments:</h2>
43  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
44  *
45  * <h2>Optional arguments:</h2>
46  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
47  *
48  * <h2>Configuration:</h2>
49  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
50  * \li -mintracks     <i> n   </i> <br>
51  *      required number of tracks for a trigger
52  * \li -minpt    <i> pt  </i> <br>
53  *      required minimum pt for a trigger
54  * \li -maxpt    <i> pt  </i> <br>
55  *      required maximum pt for a trigger
56  * \li -dca-reference    <i> x,y,z  </i> <br>
57  *      reference point for the transverse and longitudinal dca cut
58  * \li -min-ldca    <i> dca  </i> <br>
59  *      minimum longitudinal dca to reference point
60  * \li -max-ldca    <i> dca  </i> <br>
61  *      maximum longitudinal dca to reference point
62  * \li -min-tdca    <i> dca  </i> <br>
63  *      minimum transverse dca to reference point
64  * \li -max-tdca    <i> dca  </i> <br>
65  *      maximum transverse dca to reference point
66  * \li  -triggername    <i> name  </i> <br>
67  *      The name of this specific trigger.
68  *
69  * By default, configuration is loaded from OCDB, can be overridden by
70  * component arguments.
71  *
72  * <h2>Default CDB entries:</h2>
73  * HLT/ConfigHLT/BarrelMultiplicityTrigger: TObjString storing the arguments <br>
74  * HLT/ConfigHLT/<name>: for triggers with specific names
75  *
76  * <h2>Performance:</h2>
77  * 
78  *
79  * <h2>Memory consumption:</h2>
80  * 
81  *
82  * <h2>Output size:</h2>
83  * 
84  *
85  * \ingroup alihlt_trigger_components
86  */
87 class AliHLTTriggerBarrelMultiplicity : public AliHLTTrigger
88 {
89  public:
90   AliHLTTriggerBarrelMultiplicity();
91   ~AliHLTTriggerBarrelMultiplicity();
92
93   /// inherited from AliHLTTrigger: name of this trigger
94   virtual const char* GetTriggerName() const;
95   /// inherited from AliHLTComponent: create an instance
96   virtual AliHLTComponent* Spawn();
97
98  protected:
99   /// inherited from AliHLTComponent: handle the initialization
100   int DoInit(int argc, const char** argv);
101
102   /// inherited from AliHLTComponent: handle cleanup
103   int DoDeinit();
104
105   /// inherited from AliHLTComponent: handle re-configuration event
106   int Reconfigure(const char* cdbEntry, const char* chainId);
107
108   /// inherited from AliHLTComponent: handle dcs update event
109   int ReadPreprocessorValues(const char* modules);
110
111   /// inherited from AliHLTComponent, scan one argument and
112   /// its parameters
113   int ScanConfigurationArgument(int argc, const char** argv);
114
115  private:
116
117   /// inherited from AliHLTTrigger: calculate the trigger
118   virtual int DoTrigger();
119
120   /// check whether a track meets the criteria
121   template<class T>
122   bool CheckCondition(T* track, float b);
123
124   /// pt cut, minimum
125   float fPtMin; //! transient
126   /// pt cut, maximum
127   float fPtMax; //! transient
128   /// required number of tracks
129   int fMinTracks; //!transient
130
131   /// number of coordinates for the DCA reference point
132   const static short fgkDCAReferenceSize=3;
133   /// reference point for the transverse and longitudinal dca cut
134   float fDCAReference[fgkDCAReferenceSize];
135   /// minimum longitudinal dca to reference point
136   float fMinLDca; //!transient
137   /// maximum longitudinal dca to reference point
138   float fMaxLDca; //!transient
139   /// minimum transverse dca to reference point
140   float fMinTDca; //!transient
141   /// maximum transverse dca to reference point
142   float fMaxTDca; //!transient
143   /// magnetic field (dca estimation for)
144   float fSolenoidBz; //!transient
145   /// name of the trigger
146   TString fName; //!transient
147
148   /// the default configuration entry for this component
149   static const char* fgkDefaultOCDBEntry; //!transient
150
151   ClassDef(AliHLTTriggerBarrelMultiplicity, 0)
152 };
153 #endif //ALIHLTTRIGGERBARRELMULTIPLICITY_H