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