- adding AliHLTTriggerDecisionParameters to configure the geom trigger from OCDB.
[u/mrichter/AliRoot.git] / HLT / trigger / AliHLTTriggerBarrelGeomMultiplicity.h
1 #ifndef ALIHLTTRIGGERBARRELGEOMMULTIPLICITY_H
2 #define ALIHLTTRIGGERBARRELGEOMMULTIPLICITY_H
3 //* This file is property of and copyright by the ALICE HLT Project        * 
4 //* ALICE Experiment at CERN, All rights reserved.                         *
5 //* See cxx source for full Copyright notice                               *
6
7 /// @file   AliHLTTriggerBarrelGeomMultiplicity.h
8 /// @author Oystein Djuvsland
9 /// @date   2009-10-08
10 /// @brief  HLT trigger component for charged particle multiplicity in
11 ///         a geometrical selection of the central barrel.
12
13 #include "AliHLTTrigger.h"
14 #include "TList.h"
15
16 class AliHLTTriggerDecisionParameters;
17
18 /**
19  * @class  AliHLTTriggerBarrelGeomMultiplicity
20  * HLT trigger component for charged particle multiplicity in the
21  * central barrel.
22  * 
23  * Triggers on charged particle number in a certain pt range.
24  *
25  * <h2>General properties:</h2>
26  *
27  * Component ID: \b BarrelGeomMultiplicityTrigger                             <br>
28  * Library: \b libAliHLTTrigger.so                                        <br>
29  * Input Data Types:  kAliHLTDataTypeESDObject, kAliHLTDataTypeESDTree
30  *                    kAliHLTDataTypeTrack                                <br>
31  * Output Data Types: ::kAliHLTAnyDataType                                <br>
32  *
33  * <h2>Mandatory arguments:</h2>
34  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
35  *
36  * <h2>Optional arguments:</h2>
37  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
38  *
39  * <h2>Configuration:</h2>
40  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
41  * \li -mintracks     <i> n   </i> <br>
42  *      required number of tracks for a trigger
43  * \li  -solenoidBz    <i> field  </i> <br>
44  *      magnetic field needed if the input is not an ESD object
45  *
46  * By default, configuration is loaded from OCDB, can be overridden by
47  * component arguments.
48  *
49  * <h2>Default CDB entries:</h2>
50  * HLT/ConfigHLT/BarrelGeomMultiplicityTrigger: TList storing the detector geometries
51  * HLT/ConfigHLT/Solenoidbz: TObjString -solenoidBz field
52  *
53  * <h2>Performance:</h2>
54  * 
55  *
56  * <h2>Memory consumption:</h2>
57  * 
58  *
59  * <h2>Output size:</h2>
60  * 
61  *
62  * \ingroup alihlt_trigger_components
63  */
64 class AliHLTTriggerBarrelGeomMultiplicity : public AliHLTTrigger
65 {
66  public:
67
68   AliHLTTriggerBarrelGeomMultiplicity();
69   ~AliHLTTriggerBarrelGeomMultiplicity();
70
71   /// inherited from AliHLTComponent: create an instance
72   virtual AliHLTComponent* Spawn();
73
74   /// inherited from AliHLTTrigger: name of this trigger
75   virtual const char* GetTriggerName() const;
76
77  protected:
78   /// inherited from AliHLTComponent: handle the initialization
79   int DoInit(int argc, const char** argv);
80
81   /// inherited from AliHLTComponent: handle cleanup
82   int DoDeinit();
83
84   /// inherited from AliHLTComponent: handle dcs update event
85   int ReadPreprocessorValues(const char* modules);
86
87   /// inherited from AliHLTComponent, scan one argument and
88   /// its parameters
89   virtual int ScanConfigurationArgument(int argc, const char** argv);
90   
91   // Get the detector geometries from CDB entry
92   virtual int GetDetectorGeomsFromCDBObject(const char *cdbEntry, const char *chainId);
93
94   // Get the detector geometries from a root file
95   virtual int GetDetectorGeomsFromFile(const char *filename);
96
97   /// inherited from AliHLTComponent: handle re-configuration event
98   int Reconfigure(const char* cdbEntry = 0, const char* chainId = 0);
99
100  private:
101
102   /// inherited from AliHLTTrigger: calculate the trigger
103   virtual int DoTrigger();
104
105   /// check whether a track meets the criteria  
106   template<class T>
107   bool CheckCondition(T* track, float b);
108
109   // check whether a track is in the desired detectors
110   template<class T>
111   bool IsInDetectors(T* track, float b);
112
113   // magnetic field (dca estimation for)
114   Float_t fSolenoidBz; 
115
116   // minimum number of tracks satisfying the cut
117   Int_t fMinTracks;
118
119   // array of (sub-)detectors to trigger on
120   TObjArray *fDetectorArray; // !transient
121
122   // Trigger decision parameters
123   AliHLTTriggerDecisionParameters *fTriggerDecisionPars; //!transient
124
125   // The trigger name
126   char *fTriggerName; //!transient
127   
128   /// the default configuration entry for this component
129   char* fOCDBEntry; //!transient
130
131
132   ClassDef(AliHLTTriggerBarrelGeomMultiplicity, 0);
133
134 };
135
136 #endif