Porting HLT doxygen documentation to cmake
[u/mrichter/AliRoot.git] / HLT / global / physics / AliHLTMultiplicityCorrelationsComponent.h
1 //-*- Mode: C++ -*-
2 // $Id: AliHLTMultiplicityCorrelationsComponent $
3
4 #ifndef ALIHLTMULTIPLICITYCORRELATIONSCOMPONENT_H
5 #define ALIHLTMULTIPLICITYCORRELATIONSCOMPONENT_H
6
7 /* This file is property of and copyright by the ALICE HLT Project        * 
8  * ALICE Experiment at CERN, All rights reserved.                         *
9  * See cxx source for full Copyright notice                               */
10
11 /** @file    AliHLTMultiplicityCorrelationsComponent.h
12     @author  Jochen Thaeder <jochen@thaeder.de>
13     @brief   Component for Multiplicty Correlations
14 */
15
16 // see below for class documentation
17 // or
18 // refer to README to build package
19 // or
20 // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
21
22 #include "AliHLTProcessor.h"
23
24 class TH1F;
25 class TList;
26
27 class AliESDEvent;
28 class AliESDVZERO;
29 class AliESDtrackCuts;
30 class AliHLTCTPData;
31 class AliHLTMultiplicityCorrelations;
32 class AliHLTGlobalTriggerDecision;
33
34 /**
35  * @class AliHLTMultiplicityCorrelationsComponent
36  * Create Correlations for Multiplicities
37  * 
38  * <h2>General properties:</h2>
39  *
40  * Component ID: \b MultiplicityCorrelations <br>
41  * Library: \b libAliHLTGlobal.so     <br>
42  * Input Data Types:  @ref kAliHLTDataTypeESDObject <br>
43  * Output Data Types: @ref kAliHLTDataTypeTObject|kAliHLTDataOriginHLT <br>
44  *
45  * <h2>Mandatory arguments:</h2>
46  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting --> 
47  *
48  * <h2>Optional arguments:</h2>
49  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
50  *
51  * <h2>Configuration:</h2>
52  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
53  *
54  * \li -minpt    <i> pt  </i> <br>
55  *      minimum pt - pt range
56  * \li -maxpt    <i> pt  </i> <br>
57  *      maximum pt - pt range
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 -etarange    <i> eta  </i> <br>
67  *      +/- eta range
68  *
69  * \li -binningVzero    <i> bins min max  </i> <br>
70  *       bins (Int_t), minBin (Float_t), maxBin (Float_t)
71  * \li -binningTpc      <i> bins min max  </i> <br>
72  *       bins (Int_t), minBin (Float_t), maxBin (Float_t)
73  * \li -binningZdc      <i> bins min max  </i> <br>
74  *       bins (Int_t), minBin (Float_t), maxBin (Float_t)
75  * \li -binningZnp     <i> bins min max  </i> <br>
76  *       bins (Int_t), minBin (Float_t), maxBin (Float_t)
77  * \li -binningZem     <i> bins min max  </i> <br>
78  *       bins (Int_t), minBin (Float_t), maxBin (Float_t)
79  * \li -binningCalo    <i> bins min max  </i> <br>
80  *       bins (Int_t), minBin (Float_t), maxBin (Float_t)
81  *
82  * \li -addTrigger     <i> TriggerClass beginning (eg CPBI1)  </i> <br>
83
84  * <h2>Default CDB entries:</h2>
85  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
86  *
87  * <tt>HLT/ConfigGlobal/MultiplicityCorrelations</tt>
88  * \li -TObjString object holding a string with the configuration parameters
89  *      currently empty 
90  *
91  * <h2>Performance:</h2>
92  *
93  * <h2>Memory consumption:</h2>
94  *
95  * <h2>Input size:</h2>
96  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
97  *
98  * \li pp: 
99  *
100  * <h2>Output size:</h2>
101  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
102  *
103  * \li pp: Average : 
104  *
105  * <h2>Macros Tests</h2>
106  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
107  *
108  * <tt>macros/makeConfigurationObjectMultiplicityCorrelations.C</tt>
109  * \li - Create configuration TObjString
110  *
111  * <tt>macros/HLTMultiplicityCorrelationsTest.C</tt>
112  * \li - Test macro for test in off-line environment
113  *
114  * <tt>macros/runMultiplicityCorrelationsTest.sh</tt>
115  * \li - Run Test macro HLTMultiplicityCorrelationsTest.C
116  *
117  * @ingroup alihlt_global_components
118  */
119 class AliHLTMultiplicityCorrelationsComponent : public AliHLTProcessor {
120 public:
121
122   /*
123    * ---------------------------------------------------------------------------------
124    *                            Constructor / Destructor
125    * ---------------------------------------------------------------------------------
126    */
127
128   /** constructor */
129   AliHLTMultiplicityCorrelationsComponent();
130   
131   /** destructor */
132   virtual ~AliHLTMultiplicityCorrelationsComponent();
133
134   /*
135    * ---------------------------------------------------------------------------------
136    * Public functions to implement AliHLTComponent's interface.
137    * These functions are required for the registration process
138    * ---------------------------------------------------------------------------------
139    */
140
141   /** interface function, see @ref AliHLTComponent for description */
142   const Char_t* GetComponentID();
143
144   /** interface function, see @ref AliHLTComponent for description */
145   void GetInputDataTypes( vector<AliHLTComponentDataType>& list);
146
147   /** interface function, see @ref AliHLTComponent for description */
148   AliHLTComponentDataType GetOutputDataType();
149
150   /** interface function, see @ref AliHLTComponent for description */
151   void GetOutputDataSize( ULong_t& constBase, Double_t& inputMultiplier );
152
153   /** interface function, see @ref AliHLTComponent for description */
154   void GetOCDBObjectDescription( TMap* const targetMap);
155
156   /** interface function, see @ref AliHLTComponent for description */
157   AliHLTComponent* Spawn();
158
159  protected:
160
161   /*
162    * ---------------------------------------------------------------------------------
163    * Protected functions to implement AliHLTComponent's interface.
164    * These functions provide initialization as well as the actual processing
165    * capabilities of the component. 
166    * ---------------------------------------------------------------------------------
167    */
168
169   // AliHLTComponent interface functions
170
171   /** interface function, see @ref AliHLTComponent for description */
172   Int_t DoInit( Int_t argc, const Char_t** argv );
173
174   /** interface function, see @ref AliHLTComponent for description */
175   Int_t DoDeinit();
176
177   /** interface function, see @ref AliHLTComponent for description */
178   Int_t DoEvent( const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData);
179
180   using AliHLTProcessor::DoEvent;
181
182   /** interface function, see @ref AliHLTComponent for description */
183   Int_t ScanConfigurationArgument(Int_t argc, const Char_t** argv);
184
185   /** interface function, see @ref AliHLTComponent for description */
186   Int_t Reconfigure(const Char_t* cdbEntry, const Char_t* chainId);
187
188   /** interface function, see @ref AliHLTComponent for description */
189   Int_t ReadPreprocessorValues(const Char_t* modules);
190  
191   ///////////////////////////////////////////////////////////////////////////////////
192   
193 private:
194
195   /*
196    * ---------------------------------------------------------------------------------
197    * Private functions to implement AliHLTComponent's interface.
198    * These functions provide initialization as well as the actual processing
199    * capabilities of the component. 
200    * ---------------------------------------------------------------------------------
201    */
202
203   /** copy constructor prohibited */
204   AliHLTMultiplicityCorrelationsComponent(const AliHLTMultiplicityCorrelationsComponent&);
205
206   /** assignment operator prohibited */
207   AliHLTMultiplicityCorrelationsComponent& operator=(const AliHLTMultiplicityCorrelationsComponent&);
208
209
210   /*
211    * ---------------------------------------------------------------------------------
212    *                              Helper
213    * ---------------------------------------------------------------------------------
214    */
215
216   /** Set Default Configuartion for track cuts */
217   void SetDefaultConfiguration();
218
219   /** Select event as PhysicsSelection */
220   Bool_t SelectEvent(AliESDEvent *esdEvent, AliESDVZERO* esdV0);
221
222   /** Checks if event was triggered by the selected trigger classes */
223   Bool_t IsEventTriggered();
224   
225   /** Create selection list of triggers to be checked */
226   void CreateTriggerList();
227
228   /*
229    * ---------------------------------------------------------------------------------
230    *                             Members - private
231    * ---------------------------------------------------------------------------------
232    */
233   
234   /** ESD track cuts */
235   AliESDtrackCuts *fESDTrackCuts;             //! transient
236
237   /** correlations object */
238   AliHLTMultiplicityCorrelations *fCorrObj;   //! transient
239
240   /** UID for merging */
241   AliHLTUInt32_t fUID;                        // see above
242
243   /** Centrality estimation histogram */
244   TH1F *fCentHistV0Mpercentile;               // see above
245
246   /** List of possible trigger descriptor */
247   TList *fListTriggerDescriptor;              //! transient
248   
249   /** List of trigger classnames */
250   TList *fListTrigger;                        //! transient
251
252   /** Ptr to CTP data */
253   const AliHLTCTPData *fCTPData;              //! transient
254
255   ClassDef(AliHLTMultiplicityCorrelationsComponent, 0)
256 };
257 #endif