vertex finder moved from GlobalESDConverter to a separate component GlobalVertexer
[u/mrichter/AliRoot.git] / HLT / global / AliHLTGlobalVertexerComponent.h
1 #ifndef ALIHLTGLOBALVERTEXERCOMPONENT_H
2 #define ALIHLTGLOBALVERTEXEROMPONENT_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   AliHLTGlobalVertexerComponent.h
8     @author Sergey Gorbunov
9     @brief  Component for monitor V0 physics
10 */
11
12 #include "AliHLTProcessor.h"
13 #include "AliKFParticle.h"
14 #include "AliKFVertex.h"
15 class TH1F;
16 class TH2F;
17 class AliESDtrack;
18 class AliESDVertex;
19 class AliTracker;
20 class AliESDtrack;
21 class AliESDEvent;
22
23 /**
24  * @class AliHLTTPCGlobalVertexerComponent
25  * Component for reconstruct primary vertex and V0's
26  */
27 class AliHLTGlobalVertexerComponent : public AliHLTProcessor
28 {
29 public:
30   /** default constructor */
31   AliHLTGlobalVertexerComponent();
32   /** destructor */
33   virtual ~AliHLTGlobalVertexerComponent();
34
35   // Public functions to implement AliHLTComponent's interface.
36   // These functions are required for the registration process
37
38   /** interface function, see AliHLTComponent for description */
39   const char* GetComponentID();
40   /** interface function, see AliHLTComponent for description */
41   void GetInputDataTypes(AliHLTComponentDataTypeList& list);
42   /** interface function, see AliHLTComponent for description */
43   AliHLTComponentDataType GetOutputDataType();
44   /** interface function, see AliHLTComponent for description */
45   int GetOutputDataTypes(AliHLTComponentDataTypeList& tgtList);
46
47   /** interface function, see AliHLTComponent for description */
48   virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
49   /** interface function, see AliHLTComponent for description */
50   AliHLTComponent* Spawn();
51
52 protected:
53
54   // Protected functions to implement AliHLTComponent's interface.
55   // These functions provide initialization as well as the actual processing
56   // capabilities of the component. 
57
58   /** interface function, see AliHLTComponent for description */
59   int DoInit( int argc, const char** argv );
60   /** interface function, see AliHLTComponent for description */
61   int DoDeinit();
62   /** interface function, see AliHLTComponent for description */
63   int DoEvent( const AliHLTComponentEventData& /*evtData*/, AliHLTComponentTriggerData& trigData );
64
65   int Reconfigure(const char* cdbEntry, const char* chainId);
66
67   using AliHLTProcessor::DoEvent;
68   
69 private:
70   /** copy constructor prohibited */
71   AliHLTGlobalVertexerComponent(const AliHLTGlobalVertexerComponent&);
72   /** assignment operator prohibited */
73   AliHLTGlobalVertexerComponent& operator=(const AliHLTGlobalVertexerComponent&);
74   /**
75    * Configure the component.
76    * Parse a string for the configuration arguments and set the component
77    * properties.
78    */ 
79   int Configure(const char* arguments);
80   
81   class AliESDTrackInfo
82     {
83     public:
84       AliESDTrackInfo(): fParticle(),fPrimDeviation(0),fPrimUsedFlag(0),fOK(0){}
85       
86       AliKFParticle fParticle; //* assigned KFParticle
87       Double_t fPrimDeviation; //* deviation from the primary vertex
88       Bool_t fPrimUsedFlag;    //* flag shows that the particle was used for primary vertex fit
89       Bool_t fOK;              //* is the track good enough
90     };
91   void SetESD( AliESDEvent *event );
92   void FindPrimaryVertex();
93   void FindV0s();
94
95
96   AliESDEvent *fESD; // pointer to esd event
97   AliESDTrackInfo *fTrackInfos; // information about esd tracks
98   AliKFVertex fPrimaryVtx; // reconstructed KF primary vertex
99
100   TH2F *fHistPrimVertexXY; // primary vertex distribution in XY;
101   TH2F *fHistPrimVertexZX; // primary vertex distribution in ZX;
102   TH2F *fHistPrimVertexZY; // primary vertex distribution in ZY;
103   Int_t fNEvents; // n of processed events
104
105   Bool_t fPlotHistograms;// flag to produce histogramms
106   Bool_t fFillVtxConstrainedTracks; // flag to store vertex constrained track parameters
107   Double_t fConstrainedTrackDeviation; // deviation of a track from prim.vtx <=cut 
108   Double_t fV0DaughterPrimDeviation; // v0: daughters deviation from prim vertex >= cut
109   Double_t fV0PrimDeviation; // v0: v0 deviation from prim vertex <= cut
110   Double_t fV0Chi; // v0: v0 sqrt(chi^2/NDF) <= cut
111   Double_t fV0DecayLengthInSigmas; // v0: v0 decay length/sigma_length >= cut
112
113
114   ClassDef(AliHLTGlobalVertexerComponent, 0);
115
116 };
117 #endif