]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/global/AliHLTGlobalVertexerComponent.h
hange of the interfaces.
[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
31   struct AliHLTGlobalVertexerData
32   {
33     int fFitTracksToVertex; // flag 
34     double fPrimP[3]; // prim. vertex parameters
35     double fPrimC[6]; // prim. vertex covariance
36     double fPrimChi2; // prim. vertex chi2
37     int fPrimNContributors; // prim. vertex N contributors
38     int fNPrimTracks; // N of primary tracks
39     int fNV0s; // N of v0s 
40     int fTrackIndices[0]; // list of primary tracks and v0 tracks
41   };
42
43   /** default constructor */
44   AliHLTGlobalVertexerComponent();
45   /** destructor */
46   virtual ~AliHLTGlobalVertexerComponent();
47
48   // Public functions to implement AliHLTComponent's interface.
49   // These functions are required for the registration process
50
51   /** interface function, see AliHLTComponent for description */
52   const char* GetComponentID();
53   /** interface function, see AliHLTComponent for description */
54   void GetInputDataTypes(AliHLTComponentDataTypeList& list);
55   /** interface function, see AliHLTComponent for description */
56   AliHLTComponentDataType GetOutputDataType();
57   /** interface function, see AliHLTComponent for description */
58   int GetOutputDataTypes(AliHLTComponentDataTypeList& tgtList);
59
60   /** interface function, see AliHLTComponent for description */
61   virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
62   /** interface function, see AliHLTComponent for description */
63   AliHLTComponent* Spawn();
64
65   static void FillESD( AliESDEvent *event, AliHLTGlobalVertexerData *data ) ;
66
67 protected:
68
69   // Protected functions to implement AliHLTComponent's interface.
70   // These functions provide initialization as well as the actual processing
71   // capabilities of the component. 
72
73   /** interface function, see AliHLTComponent for description */
74   int DoInit( int argc, const char** argv );
75   /** interface function, see AliHLTComponent for description */
76   int DoDeinit();
77   /** interface function, see AliHLTComponent for description */
78   int DoEvent( const AliHLTComponentEventData& evtData, 
79                AliHLTComponentTriggerData& trigData );
80
81   int Reconfigure(const char* cdbEntry, const char* chainId);
82
83   using AliHLTProcessor::DoEvent;
84   
85 private:
86   /** copy constructor prohibited */
87   AliHLTGlobalVertexerComponent(const AliHLTGlobalVertexerComponent&);
88   /** assignment operator prohibited */
89   AliHLTGlobalVertexerComponent& operator=(const AliHLTGlobalVertexerComponent&);
90   /**
91    * Configure the component.
92    * Parse a string for the configuration arguments and set the component
93    * properties.
94    */ 
95   int Configure(const char* arguments);
96   
97   class AliESDTrackInfo
98     {
99     public:
100       AliESDTrackInfo(): fParticle(),fPrimDeviation(0),fPrimUsedFlag(0),fOK(0){}
101       
102       AliKFParticle fParticle; //* assigned KFParticle
103       Double_t fPrimDeviation; //* deviation from the primary vertex
104       Bool_t fPrimUsedFlag;    //* flag shows that the particle was used for primary vertex fit
105       Bool_t fOK;              //* is the track good enough
106     };
107
108   void FindPrimaryVertex();
109   void FindV0s(vector<pair<int,int> > v0s);
110
111   int fNTracks; // n of input tracks
112   AliESDTrackInfo *fTrackInfos; // information about esd tracks
113   AliKFVertex fPrimaryVtx; // reconstructed KF primary vertex
114
115   Int_t fNEvents; // n of processed events
116
117   Bool_t fFitTracksToVertex; // flag to store vertex constrained track parameters
118   Double_t fConstrainedTrackDeviation; // deviation of a track from prim.vtx <=cut 
119   Double_t fV0DaughterPrimDeviation; // v0: daughters deviation from prim vertex >= cut
120   Double_t fV0PrimDeviation; // v0: v0 deviation from prim vertex <= cut
121   Double_t fV0Chi; // v0: v0 sqrt(chi^2/NDF) <= cut
122   Double_t fV0DecayLengthInSigmas; // v0: v0 decay length/sigma_length >= cut
123
124   Double_t fV0TimeLimit; // time limit in seconds for V0 finder (it has N^2 combinatorics, therefore it can [potentially] block the data flow on some very hot events ) default limit is 10 ms
125
126   Double_t fStatTimeR; // benchmark
127   Double_t fStatTimeC; // benchmark
128   Double_t fStatTimeR1; // benchmark
129   Double_t fStatTimeC1; // benchmark
130   Double_t fStatTimeR2; // benchmark
131   Double_t fStatTimeC2; // benchmark
132   Double_t fStatTimeR3; // benchmark
133   Double_t fStatTimeC3; // benchmark
134   Double_t fStatNEvents;// benchmark
135
136   ClassDef(AliHLTGlobalVertexerComponent, 0);
137
138 };
139 #endif