]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HLT/global/AliHLTGlobalVertexerComponent.h
Revert some of the recent changes (Theo)
[u/mrichter/AliRoot.git] / HLT / global / AliHLTGlobalVertexerComponent.h
CommitLineData
4d5ee3db 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"
15class TH1F;
16class TH2F;
17class AliESDtrack;
18class AliESDVertex;
19class AliTracker;
20class AliESDtrack;
21class AliESDEvent;
22
23/**
24 * @class AliHLTTPCGlobalVertexerComponent
25 * Component for reconstruct primary vertex and V0's
26 */
27class AliHLTGlobalVertexerComponent : public AliHLTProcessor
28{
29public:
d9386025 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
4d5ee3db 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
d9386025 65 static void FillESD( AliESDEvent *event, AliHLTGlobalVertexerData *data ) ;
66
4d5ee3db 67protected:
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 */
d9386025 78 int DoEvent( const AliHLTComponentEventData& evtData,
79 AliHLTComponentTriggerData& trigData );
4d5ee3db 80
81 int Reconfigure(const char* cdbEntry, const char* chainId);
82
83 using AliHLTProcessor::DoEvent;
84
85private:
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 };
4d5ee3db 107
d9386025 108 void FindPrimaryVertex();
109 void FindV0s(vector<pair<int,int> > v0s);
4d5ee3db 110
d9386025 111 int fNTracks; // n of input tracks
4d5ee3db 112 AliESDTrackInfo *fTrackInfos; // information about esd tracks
113 AliKFVertex fPrimaryVtx; // reconstructed KF primary vertex
114
4d5ee3db 115 Int_t fNEvents; // n of processed events
116
608cfbda 117 Bool_t fFitTracksToVertex; // flag to store vertex constrained track parameters
4d5ee3db 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
d9386025 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
9222a93a 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
4d5ee3db 135
136 ClassDef(AliHLTGlobalVertexerComponent, 0);
137
138};
139#endif